Portability | unportable |
---|---|
Stability | unstable |
Maintainer | pbrisbin@gmail.com |
- data SearchResult a = SearchResult {
- searchRank :: Double
- searchResult :: a
- class Search a where
- preference :: SearchResult a -> SearchResult a -> Ordering
- match :: Text -> a -> Maybe (SearchResult a)
- search :: Search a => Text -> [a] -> [SearchResult a]
- search_ :: Search a => Text -> [a] -> [a]
- weightedSearch :: Search a => (a -> Double) -> Text -> [a] -> [SearchResult a]
- weightedSearch_ :: Search a => (a -> Double) -> Text -> [a] -> [a]
- class TextSearch a where
- keywordMatch :: TextSearch a => Text -> a -> Maybe (SearchResult a)
Documentation
data SearchResult a Source
A ranked search result
SearchResult | |
|
Any item can be searched by providing a
function.
match
preference :: SearchResult a -> SearchResult a -> OrderingSource
If two results have the same rank, optionally lend preference to one. The greater value will appear first.
match :: Text -> a -> Maybe (SearchResult a)Source
Given a search term and some a
, provide Just
a ranked
result or Nothing
.
search :: Search a => Text -> [a] -> [SearchResult a]Source
Excute a search on a list of a
s and rank the results
weightedSearch :: Search a => (a -> Double) -> Text -> [a] -> [SearchResult a]Source
Add (or remove) weight from items that have certian properties.
weightedSearch_ :: Search a => (a -> Double) -> Text -> [a] -> [a]Source
search helpers
class TextSearch a whereSource
Being a member of this class means defining the way to represent your type as pure text so it can be searched by keyword, etc.
keywordMatch :: TextSearch a => Text -> a -> Maybe (SearchResult a)Source
Search term is interpreted as keywords. Results are ranked by the number of words that appear in the source text, a rank of 0 returns Nothing.