Tantivy is a full-text search engine library inspired by Apache Lucene and written in Rust
Tantivy is a full text search engine library written in Rust.
Tantivy is, in fact, strongly inspired by Lucene's design.
The following benchmark break downs performance for different type of queries / collection.
Your mileage WILL vary depending on the nature of queries and their load.
(michael AND jackson) OR "king of pop")
Tantivy works on stable Rust (>= 1.27) and supports Linux, MacOS, and Windows.
tantivy-cliis 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 walks you through getting a wikipedia search engine up and running in a few minutes.
There are many ways to support this project.
We use the GitHub Pull Request workflow: reference a GitHub ticket and/or include a comprehensive commit message when opening a PR.
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
Some tests will not run with just
cargo testbecause of
fail-rs. To run the tests exhaustively, run
You might find it useful to step through the programme with a debugger.
Make sure you haven't run
cargo cleanafter the most recent
cargo buildto guarantee that the
target/directory exists. Use this bash script to find the name of the most recent debug build of Tantivy and run it under
find target/debug/ -maxdepth 1 -executable -type f -name "tantivy*" -printf '%TY-%Tm-%Td %TT %p\n' | sort -r | cut -d " " -f 3 | xargs -I RECENT_DBG_TANTIVY rust-gdb RECENT_DBG_TANTIVY
Now that you are in
rust-gdb, you can set breakpoints on lines and methods that match your source code and run the debug executable with flags that you normally pass to
cargo testlike this:
$gdb run --test-threads 1 --test $NAME_OF_TEST
rustccompiles everything in the
examples/directory in debug mode. This makes it easy for you to make examples to reproduce bugs:
rust-gdb target/debug/examples/$EXAMPLE_NAME $ gdb run