Tantivy is a full text search engine library written in rust.
It is closer to Lucene than to Elastic Search and Solr in the sense it is not an off-the-shelf search engine server, but rather a crate that can be used to build such a search engine.
Tantivy is, in fact, strongly inspired by Lucene's design.
- Full-text search
- Tiny startup time (<10ms), perfect for command line tools
- BM25 scoring (the same as lucene)
- Basic query language (
+michael +jackson
) - Phrase queries search ("michael jackson"`)
- Incremental indexing
- Multithreaded indexing (indexing English Wikipedia takes < 3 minutes on my desktop)
- Mmap directory
- SIMD integer compression when the platform/CPU includes the SSE2 instruction set.
- Single valued and multivalued u64 and i64 fast fields (equivalent of doc values in Lucene)
&[u8]
fast fields- LZ4 compressed document store
- Range queries
- Faceted search
- Configurable indexing (optional term frequency and position indexing
- Cheesy logo with a horse
- Distributed search and will not be in the scope of tantivy.
Tantivy works on stable rust (>= 1.27) and supports Linux, MacOS and Windows.
- tantivy's simple search example
- tantivy-cli and its tutorial.
tantivy-cli
is an actual command line interface that makes it easy for you to create a search engine, index documents and search via the CLI or a small server with a REST API. It will walk you through getting a wikipedia search engine up and running in a few minutes. - [reference doc]
Tantivy compiles on stable rust but requires Rust >= 1.27
.
To check out and run tests, you can simply run :
git clone git@github.com:tantivy-search/tantivy.git
cd tantivy
cargo build
Send me an email (paul.masurel at gmail.com) if you want to contribute to tantivy.