packages feed

full-text-search 0.2.1.1 → 0.2.1.3

raw patch · 4 files changed

+133/−22 lines, 4 filesdep ~Cabaldep ~arraydep ~basePVP ok

version bump matches the API change (PVP)

Dependency ranges changed: Cabal, array, base, split, tasty, tasty-quickcheck, text, tokenize

API changes (from Hackage documentation)

Files

Data/SearchEngine/DocIdSet.hs view
@@ -1,6 +1,7 @@-{-# LANGUAGE BangPatterns, GeneralizedNewtypeDeriving #-}+{-# LANGUAGE BangPatterns, GeneralizedNewtypeDeriving, MultiParamTypeClasses,+             TypeFamilies #-} module Data.SearchEngine.DocIdSet (-    DocId(..),+    DocId(DocId),     DocIdSet(..),     null,     size,@@ -19,10 +20,10 @@ import Data.Word import qualified Data.Vector.Unboxed         as Vec import qualified Data.Vector.Unboxed.Mutable as MVec-import qualified Data.Vector.Generic.Base    as VecGen-import qualified Data.Vector.Unboxed.Base    as VecBase-import qualified Data.Vector.Generic.Mutable as VecMut+import qualified Data.Vector.Generic         as GVec+import qualified Data.Vector.Generic.Mutable as GMVec import Control.Monad.ST+import Control.Monad (liftM) import qualified Data.Set as Set import Data.List (foldl', sortBy) import Data.Function (on)@@ -30,10 +31,8 @@ import Prelude hiding (null)  -newtype DocId = DocId Word32-  deriving (Eq, Ord, Show, Enum, Bounded, Vec.Unbox,-            VecGen.Vector VecBase.Vector,-            VecMut.MVector VecBase.MVector)+newtype DocId = DocId { unDocId :: Word32 }+  deriving (Eq, Ord, Show, Enum, Bounded)  newtype DocIdSet = DocIdSet (Vec.Vector DocId)   deriving (Eq, Show)@@ -147,4 +146,57 @@                           EQ -> do MVec.write out i x                                    go (Vec.tail xs) (Vec.tail ys) (i+1)                           LT ->    go (Vec.tail xs)           ys   i++------------------------------------------------------------------------------+-- verbose Unbox instances+--++instance MVec.Unbox DocId++newtype instance MVec.MVector s DocId = MV_DocId (MVec.MVector s Word32)++instance GMVec.MVector MVec.MVector DocId where+    basicLength          (MV_DocId v) = GMVec.basicLength v+    basicUnsafeSlice i l (MV_DocId v) = MV_DocId (GMVec.basicUnsafeSlice i l v)+    basicUnsafeNew     l              = MV_DocId `liftM` GMVec.basicUnsafeNew l+    basicUnsafeReplicate l x          = MV_DocId `liftM` GMVec.basicUnsafeReplicate l (unDocId x)+    basicUnsafeRead  (MV_DocId v) i   = DocId `liftM`    GMVec.basicUnsafeRead v i+    basicUnsafeWrite (MV_DocId v) i x = GMVec.basicUnsafeWrite v i (unDocId x)+    basicClear       (MV_DocId v)     = GMVec.basicClear v+    basicSet         (MV_DocId v) x   = GMVec.basicSet v (unDocId x)+    basicUnsafeGrow  (MV_DocId v) l   = MV_DocId `liftM` GMVec.basicUnsafeGrow v l+    basicUnsafeCopy  (MV_DocId v) (MV_DocId v') = GMVec.basicUnsafeCopy v v'+    basicUnsafeMove  (MV_DocId v) (MV_DocId v') = GMVec.basicUnsafeMove v v'+    basicOverlaps    (MV_DocId v) (MV_DocId v') = GMVec.basicOverlaps   v v'+    {-# INLINE basicLength #-}+    {-# INLINE basicUnsafeSlice #-}+    {-# INLINE basicOverlaps #-}+    {-# INLINE basicUnsafeNew #-}+    {-# INLINE basicUnsafeReplicate #-}+    {-# INLINE basicUnsafeRead #-}+    {-# INLINE basicUnsafeWrite #-}+    {-# INLINE basicClear #-}+    {-# INLINE basicSet #-}+    {-# INLINE basicUnsafeCopy #-}+    {-# INLINE basicUnsafeMove #-}+    {-# INLINE basicUnsafeGrow #-}++newtype instance Vec.Vector DocId = V_DocId (Vec.Vector Word32)++instance GVec.Vector Vec.Vector DocId where+    basicUnsafeFreeze (MV_DocId mv)  = V_DocId  `liftM` GVec.basicUnsafeFreeze mv+    basicUnsafeThaw   (V_DocId  v)   = MV_DocId `liftM` GVec.basicUnsafeThaw v+    basicLength       (V_DocId  v)   = GVec.basicLength v+    basicUnsafeSlice i l (V_DocId v) = V_DocId (GVec.basicUnsafeSlice i l v)+    basicUnsafeIndexM (V_DocId  v) i = DocId `liftM` GVec.basicUnsafeIndexM v i+    basicUnsafeCopy   (MV_DocId mv)+                      (V_DocId  v)   = GVec.basicUnsafeCopy mv v+    elemseq           (V_DocId  v) x = GVec.elemseq v (unDocId x)+    {-# INLINE basicUnsafeFreeze #-}+    {-# INLINE basicUnsafeThaw #-}+    {-# INLINE basicLength #-}+    {-# INLINE basicUnsafeSlice #-}+    {-# INLINE basicUnsafeIndexM #-}+    {-# INLINE basicUnsafeCopy #-}+    {-# INLINE elemseq #-} 
Data/SearchEngine/TermBag.hs view
@@ -1,6 +1,7 @@-{-# LANGUAGE BangPatterns, GeneralizedNewtypeDeriving #-}+{-# LANGUAGE BangPatterns, GeneralizedNewtypeDeriving, MultiParamTypeClasses,+             TypeFamilies #-} module Data.SearchEngine.TermBag (-    TermId(..), TermCount,+    TermId(TermId), TermCount,     TermBag,     size,     fromList,@@ -13,20 +14,18 @@  import qualified Data.Vector.Unboxed         as Vec import qualified Data.Vector.Unboxed.Mutable as MVec-import qualified Data.Vector.Generic.Base    as VecGen-import qualified Data.Vector.Unboxed.Base    as VecBase-import qualified Data.Vector.Generic.Mutable as VecMut+import qualified Data.Vector.Generic         as GVec+import qualified Data.Vector.Generic.Mutable as GMVec import Control.Monad.ST+import Control.Monad (liftM) import qualified Data.Map as Map import Data.Word (Word32, Word8) import Data.Bits import Data.List (sortBy, foldl') import Data.Function (on) -newtype TermId = TermId Word32-  deriving (Eq, Ord, Show, Enum,-            Vec.Unbox, VecGen.Vector VecBase.Vector,-            VecMut.MVector VecBase.MVector)+newtype TermId = TermId { unTermId :: Word32 }+  deriving (Eq, Ord, Show, Enum)  instance Bounded TermId where   minBound = TermId 0@@ -207,3 +206,57 @@                                    go (Vec.tail xs) (Vec.tail ys) (i+1)                           LT -> do MVec.write out i x                                    go (Vec.tail xs)           ys  (i+1)++------------------------------------------------------------------------------+-- verbose Unbox instances+--++instance MVec.Unbox TermId++newtype instance MVec.MVector s TermId = MV_TermId (MVec.MVector s Word32)++instance GMVec.MVector MVec.MVector TermId where+    basicLength          (MV_TermId v) = GMVec.basicLength v+    basicUnsafeSlice i l (MV_TermId v) = MV_TermId (GMVec.basicUnsafeSlice i l v)+    basicUnsafeNew     l              = MV_TermId `liftM` GMVec.basicUnsafeNew l+    basicUnsafeReplicate l x          = MV_TermId `liftM` GMVec.basicUnsafeReplicate l (unTermId x)+    basicUnsafeRead  (MV_TermId v) i   = TermId `liftM`    GMVec.basicUnsafeRead v i+    basicUnsafeWrite (MV_TermId v) i x = GMVec.basicUnsafeWrite v i (unTermId x)+    basicClear       (MV_TermId v)     = GMVec.basicClear v+    basicSet         (MV_TermId v) x   = GMVec.basicSet v (unTermId x)+    basicUnsafeGrow  (MV_TermId v) l   = MV_TermId `liftM` GMVec.basicUnsafeGrow v l+    basicUnsafeCopy  (MV_TermId v) (MV_TermId v') = GMVec.basicUnsafeCopy v v'+    basicUnsafeMove  (MV_TermId v) (MV_TermId v') = GMVec.basicUnsafeMove v v'+    basicOverlaps    (MV_TermId v) (MV_TermId v') = GMVec.basicOverlaps   v v'+    {-# INLINE basicLength #-}+    {-# INLINE basicUnsafeSlice #-}+    {-# INLINE basicOverlaps #-}+    {-# INLINE basicUnsafeNew #-}+    {-# INLINE basicUnsafeReplicate #-}+    {-# INLINE basicUnsafeRead #-}+    {-# INLINE basicUnsafeWrite #-}+    {-# INLINE basicClear #-}+    {-# INLINE basicSet #-}+    {-# INLINE basicUnsafeCopy #-}+    {-# INLINE basicUnsafeMove #-}+    {-# INLINE basicUnsafeGrow #-}++newtype instance Vec.Vector TermId = V_TermId (Vec.Vector Word32)++instance GVec.Vector Vec.Vector TermId where+    basicUnsafeFreeze (MV_TermId mv)  = V_TermId  `liftM` GVec.basicUnsafeFreeze mv+    basicUnsafeThaw   (V_TermId  v)   = MV_TermId `liftM` GVec.basicUnsafeThaw v+    basicLength       (V_TermId  v)   = GVec.basicLength v+    basicUnsafeSlice i l (V_TermId v) = V_TermId (GVec.basicUnsafeSlice i l v)+    basicUnsafeIndexM (V_TermId  v) i = TermId `liftM` GVec.basicUnsafeIndexM v i+    basicUnsafeCopy   (MV_TermId mv)+                      (V_TermId  v)   = GVec.basicUnsafeCopy mv v+    elemseq           (V_TermId  v) x = GVec.elemseq v (unTermId x)+    {-# INLINE basicUnsafeFreeze #-}+    {-# INLINE basicUnsafeThaw #-}+    {-# INLINE basicLength #-}+    {-# INLINE basicUnsafeSlice #-}+    {-# INLINE basicUnsafeIndexM #-}+    {-# INLINE basicUnsafeCopy #-}+    {-# INLINE elemseq #-}+
changelog view
@@ -1,3 +1,9 @@+0.2.1.3 Duncan Coutts <duncan@well-typed.com> May 2015+        * Compatibility with GHC 7.10 (no API changes)++0.2.1.2 Adam Gundry <adam@well-typed.com> July 2014+        * Compatibility with GHC 7.8 (no API changes)+ 0.2.1.1 Duncan Coutts <duncan@well-typed.com> May 2014         * Fix for NaN scores with a doc field that is empty for all docs         * Add instance Show NoFeatures
full-text-search.cabal view
@@ -1,5 +1,5 @@ name:                full-text-search-version:             0.2.1.1+version:             0.2.1.3 synopsis:            In-memory full text search engine description:         An in-memory full text search engine library. It lets you                      run full-text queries on a collection of your documents.@@ -77,11 +77,11 @@                        RecordWildCards,                        GeneralizedNewtypeDeriving,                        ScopedTypeVariables-  build-depends:       base       >=4.5  && <4.7,-                       array      >=0.4  && <0.5,+  build-depends:       base       >=4.5  && <4.9,+                       array      >=0.4  && <0.6,                        vector     >=0.10 && <0.11,                        containers >=0.4  && <0.6,-                       text       >=0.11 && <1.2+                       text       >=0.11 && <1.3   default-language:    Haskell2010   ghc-options:         -Wall -funbox-strict-fields