Safe Haskell | Safe-Infered |
---|
Implements full text indexation (indexText
) and text search(contains
), as an addition to
the query language implemented in IndexQuery
it also can index the lists of elements in a field (with indexList
)
so that it is possible to ask for the registers that contains a given element
in the given field (with containsElem
)
An example of full text search:
data Doc= Doc{title, body :: String} deriving (Read,Show, Typeable) instance Indexable Doc where key Doc{title=t}= t instance Serializable Doc where serialize= pack . show deserialize= read . unpack main= do indexText body T.pack let doc= Doc{title= title, body= hola que tal estamos} rdoc <- atomically $ newDBRef doc r1 <- atomically $ select title $ bodycontains
hola que tal print r1 atomically $ writeDBRef rdoc doc{ body= que tal} r <- atomically $ select title $ bodycontains
hola que tal print r if r1 == [title doc] then print OK else print FAIL if r== [] then print OK else print FAIL
- indexText :: (IResource a, Typeable a, Typeable b) => (a -> b) -> (b -> Text) -> IO ()
- indexList :: (IResource a, Typeable a, Typeable b) => (a -> b) -> (b -> [Text]) -> IO ()
- contains :: (IResource a, Typeable a, Typeable b) => (a -> b) -> String -> STM [DBRef a]
- containsElem :: (IResource a, Typeable a, Typeable b) => (a -> b) -> String -> STM [DBRef a]
Documentation
:: (IResource a, Typeable a, Typeable b) | |
=> (a -> b) | field to index |
-> (b -> Text) | method to convert the field content to Text (for example |
-> IO () |
start a trigger to index the contents of a register field