hunt-searchengine-0.3.0.0: src/Hunt/Common/RawResult.hs
-- ----------------------------------------------------------------------------
{- |
Module : Hunt.Index.Common.RawResult
Copyright : Copyright (C) 2011 Sebastian M. Schlatt, Timo B. Huebel, Uwe Schmidt
License : MIT
Maintainer : Timo B. Huebel (tbh@holumbus.org)
Stability : experimental
Portability: none portable
The raw result of index queries.
-}
-- ----------------------------------------------------------------------------
module Hunt.Common.RawResult
where
import Data.Map (Map)
import qualified Data.Map as M
import Hunt.Common.BasicTypes
import Hunt.Common.DocIdMap (DocIdMap)
import qualified Hunt.Common.DocIdMap as DM
import Hunt.Common.Occurrences
import Hunt.Common.Positions
-- ------------------------------------------------------------
-- | The raw result returned when searching the index.
type RawResult = [(Word, Occurrences)]
type RawScoredResult = [(Word, (Score, Occurrences))]
-- ------------------------------------------------------------
-- | Transform the raw result into a tree structure ordered by word.
resultByWord :: Context -> RawResult -> Map Word (Map Context Occurrences)
resultByWord c
= M.fromList . map (\ (w, o) -> (w, M.singleton c o))
-- | Transform the raw result into a tree structure ordered by document.
resultByDocument :: Context -> RawResult -> DocIdMap (Map Context (Map Word Positions))
resultByDocument c os
= DM.map transform $
DM.unionsWith (flip $ (:) . head) (map insertWords os)
where
insertWords (w, o) = DM.map (\p -> [(w, p)]) o
transform w = M.singleton c (M.fromList w)
-- ------------------------------------------------------------