23 releases (8 breaking)

0.9.1 Mar 28, 2019
0.8.2 Feb 14, 2019
0.8.0 Dec 26, 2018
0.7.1 Nov 2, 2018
0.1.1 Aug 14, 2016

#2 in Database implementations

Download history 604/week @ 2018-12-20 367/week @ 2018-12-27 362/week @ 2019-01-03 457/week @ 2019-01-10 407/week @ 2019-01-17 430/week @ 2019-01-24 269/week @ 2019-01-31 159/week @ 2019-02-07 266/week @ 2019-02-14 352/week @ 2019-02-21 340/week @ 2019-02-28 144/week @ 2019-03-07 191/week @ 2019-03-14 664/week @ 2019-03-21 417/week @ 2019-03-28

1,462 downloads per month
Used in 6 crates

MIT license

1MB
27K SLoC

Build Status codecov Join the chat at https://gitter.im/tantivy-search/tantivy License: MIT Build status Say Thanks!

Tantivy

Tantivy is a full text search engine library written in rust.

It is closer to Apache Lucene than to Elasticsearch and Apache 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.

Features

  • Full-text search
  • Configurable tokenizer. (stemming available for 17 latin languages. Third party support for Chinese (tantivy-jieba and cang-jie) and Japanese
  • Fast (check out the 🐎 ✨ benchmark ✨ 🐎)
  • Tiny startup time (<10ms), perfect for command line tools
  • BM25 scoring (the same as lucene)
  • Natural query language (michael AND jackson) OR "king of pop"
  • 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
  • Text, i64, u64, dates and hierarchical facet fields
  • LZ4 compressed document store
  • Range queries
  • Faceted search
  • Configurable indexing (optional term frequency and position indexing)
  • Cheesy logo with a horse

Non-features

  • Distributed search is out of the scope of tantivy. That being said, tantivy is meant as a library upon which one could build a distributed search. Serializable/mergeable collector state for instance, are within the scope of tantivy.

Supported OS and compiler

Tantivy works on stable rust (>= 1.27) and supports Linux, MacOS and Windows.

Getting started

Compiling

Development

Tantivy compiles on stable rust but requires Rust >= 1.27. To check out and run tests, you can simply run :

git clone https://github.com/tantivy-search/tantivy.git
cd tantivy
cargo build

Running tests

Some tests will not run with just cargo test because of fail-rs. To run the tests exhaustively, run ./run-tests.sh.

Contribute

Send me an email (paul.masurel at gmail.com) if you want to contribute to tantivy.

Dependencies

~16MB
~190K SLoC