cabal-version: 3.0
name: full-text-search
version: 0.2.2.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.
Features:
* Keyword queries and auto-complete\/auto-suggest queries.
* Can search over any type of \"document\".
(You explain how to extract search terms from them.)
* Supports documents with multiple fields
(e.g. title, body)
* Supports documents with non-term features
(e.g. quality score, page rank)
* Uses the state of the art BM25F ranking function
* Adjustable ranking parameters (including field weights
and non-term feature scores)
* In-memory but quite compact. It does not keep a copy of
your original documents.
* Quick incremental index updates, making it possible to
keep your text search in-sync with your data.
It is independent of the document type, so you have to
write the document-specific parts: extracting search terms
and any stop words, case-normalisation or stemming. This
is quite easy using libraries such as
<https://hackage.haskell.org/package/tokenize tokenize> and
<https://hackage.haskell.org/package/snowball snowball>.
The source package includes a demo to illustrate how to
use the library. The demo is a simplified version of how
the library is used in the
<https://hackage.haskell.org/package/hackage-server hackage-server>
where it provides the backend for the package search feature.
bug-reports: https://github.com/well-typed/full-text-search/issues
license: BSD-3-Clause
license-file: LICENSE
author: Duncan Coutts
maintainer: Duncan Coutts <duncan@well-typed.com>,
Adam Gundry <adam@well-typed.com>
copyright: 2013-2014 Duncan Coutts, 2014 Well-Typed LLP,
2014-2023 IRIS Connect Ltd.
category: Data, Text, Search
build-type: Simple
extra-doc-files: changelog
tested-with: GHC ==9.2.8 || ==9.4.8 || ==9.6.6 || ==9.8.2 || ==9.10.1 || ==9.12.1
source-repository head
type: git
location: git@github.com:well-typed/full-text-search.git
flag build-search-demo
default: False
description: Build a little program illustrating the use of the library
manual: True
common base-deps
build-depends: base >=4.16 && <4.22,
array >=0.4 && <0.6,
vector >=0.11 && <0.14,
containers >=0.4 && <0.8,
text >=0.11 && <2.2
library
import: base-deps
exposed-modules: Data.SearchEngine,
Data.SearchEngine.BM25F
other-modules: Data.SearchEngine.Types,
Data.SearchEngine.Update,
Data.SearchEngine.Query,
Data.SearchEngine.Autosuggest,
Data.SearchEngine.SearchIndex,
Data.SearchEngine.DocFeatVals,
Data.SearchEngine.TermBag,
Data.SearchEngine.DocTermIds,
Data.SearchEngine.DocIdSet
hs-source-dirs: src
other-extensions: BangPatterns,
NamedFieldPuns,
RecordWildCards,
GeneralizedNewtypeDeriving,
ScopedTypeVariables
default-language: Haskell2010
ghc-options: -Wall -funbox-strict-fields
executable search-demo
main-is: Main.hs
other-modules: PackageSearch
ExtractNameTerms
ExtractDescriptionTerms
PackageIndexUtils
-- support code for package descriptions:
HaddockHtml
HaddockLex
HaddockParse
HaddockTypes
hs-source-dirs: demo
if !flag(build-search-demo)
buildable: False
else
build-depends: full-text-search,
base,
text,
containers,
array,
tokenize >= 0.1 && <0.4,
snowball >= 1.0 && <1.1,
transformers >= 0.5 && <0.6,
split >= 0.2 && <0.3,
Cabal >= 1.14 && <3.15,
bytestring >= 0.12 && <0.13,
filepath >= 1.5 && <1.6,
directory >= 1.3 && <1.5,
tar >= 0.6 && <0.7,
time >= 1.14 && <1.15,
mtl >= 2.2 && <2.4
build-tool-depends: alex:alex, happy:happy
default-language: Haskell2010
other-extensions: GeneralizedNewtypeDeriving
ghc-options: -Wall
test-suite qc-props
import: base-deps
type: exitcode-stdio-1.0
main-is: Main.hs
hs-source-dirs: src, tests
build-depends: QuickCheck ==2.*,
tasty >=0.8,
tasty-quickcheck >=0.8
other-modules: Test.Data.SearchEngine.TermBag,
Test.Data.SearchEngine.DocIdSet,
Data.SearchEngine.DocTermIds,
Data.SearchEngine.DocIdSet,
Data.SearchEngine.TermBag
default-language: Haskell2010
ghc-options: -Wall