PackageTrack
Sign in Get early access

tantivy-common

common traits and utility functions used by multiple tantivy subcrates

0.11.0 17M downloads/mo #2318 most downloaded on crates.io quickwit-oss/tantivy

What this package is like to depend on

Last release 4 months ago

31 Mar 2026

Ships fairly regularly

a new release about every 6 months

Some releases are documented

notes for 4 of 10 stable releases

Nothing withdrawn

no release was ever pulled

5 years old

10 releases · first in 2021

1 release in the last 12 months

see the full history below

Release timeline

10 releases · Aug 2021 to Mar 2026
2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 10
  1. 0.11.0 31 Mar 2026
    Release notes
    • Added f64 field. Internally reuse u64 code the same way i64 does (@fdb-hiroshima)
    • Various bugfixes in the query parser.
      • Better handling of hyphens in query parser. (#609)
      • Better handling of whitespaces.
    • Closes #498 - add support for Elastic-style unbounded range queries for alphanumeric types eg. "title:>hello", "weight:>=70.5", "height:<200" (@petr-tik)
    • API change around Box<BoxableTokenizer>. See detail in #629
    • Avoid rebuilding Regex automaton whenever a regex query is reused. #639 (@brainlock)
    • Add footer with some metadata to index files. #605 (@fdb-hiroshima)
    • Add a method to check the compatibility of the footer in the index with the running version of tantivy (@petr-tik)
    • TopDocs collector: ensure stable sorting on equal score. #671 (@brainlock)
    • Added handling of pre-tokenized text fields (#642), which will enable users to load tokens created outside tantivy. See usage in examples/pre_tokenized_text. (@kkoziara)
    • Fix crash when committing multiple times with deleted documents. #681 (@brainlock)

    How to update?

    • The index format is changed. You are required to reindex your data to use tantivy 0.11.
    • Box<dyn BoxableTokenizer> has been replaced by a BoxedTokenizer struct.
    • Regex are now compiled when the RegexQuery instance is built. As a result, it can now return an error and handling the Result is required.
    • tantivy::version() now returns a Version object. This object implements ToString()
    Open source →
  2. 0.10.0 20 Aug 2025
    Release notes

    Tantivy 0.10.0 index format is compatible with the index format in 0.9.0.

    • Added an API to easily tweak or entirely replace the default score. See TopDocs::tweak_scoreand TopScore::custom_score (@fulmicoton)
    • Added an ASCII folding filter (@drusellers)
    • Bugfix in query.count in presence of deletes (@fulmicoton)
    • Added .explain(...) in Query and Weight to (@fulmicoton)
    • Added an efficient way to delete_all_documents in IndexWriter (@petr-tik). All segments are simply removed.

    Minor

    • Switched to Rust 2018 (@uvd)
    • Small simplification of the code. Calling .freq() or .doc() when .advance() has never been called on segment postings should panic from now on.
    • Tokens exceeding u16::max_value() - 4 chars are discarded silently instead of panicking.
    • Fast fields are now preloaded when the SegmentReader is created.
    • IndexMeta is now public. (@hntd187)
    • IndexWriter add_document, delete_term. IndexWriter is Sync, making it possible to use it with a Arc<RwLock<IndexWriter>>. add_document and delete_term can only require a read lock. (@fulmicoton)
    • Introducing Opstamp as an expressive type alias for u64. (@petr-tik)
    • Stamper now relies on AtomicU64 on all platforms (@petr-tik)
    • Bugfix - Files get deleted slightly earlier
    • Compilation resources improved (@fdb-hiroshima)

    How to update?

    Your program should be usable as is.

    Fast fields

    Fast fields used to be accessed directly from the SegmentReader. The API changed, you are now required to acquire your fast field reader via the segment_reader.fast_fields(), and use one of the typed method:

    • .u64(), .i64() if your field is single-valued ;
    • .u64s(), .i64s() if your field is multi-valued ;
    • .bytes() if your field is bytes fast field.
    Open source →
  3. 0.9.0 09 Apr 2025
    Release notes

    0.9.0 index format is not compatible with the previous index format.

    • MAJOR BUGFIX : Some Mmap objects were being leaked, and would never get released. (@fulmicoton)
    • Removed most unsafe (@fulmicoton)
    • Indexer memory footprint improved. (VInt comp, inlining the first block. (@fulmicoton)
    • Stemming in other language possible (@pentlander)
    • Segments with no docs are deleted earlier (@barrotsteindev)
    • Added grouped add and delete operations. They are guaranteed to happen together (i.e. they cannot be split by a commit). In addition, adds are guaranteed to happen on the same segment. (@elbow-jason)
    • Removed INT_STORED and INT_INDEXED. It is now possible to use STORED and INDEXED for int fields. (@fulmicoton)
    • Added DateTime field (@barrotsteindev)
    • Added IndexReader. By default, index is reloaded automatically upon new commits (@fulmicoton)
    • SIMD linear search within blocks (@fulmicoton)

    How to update ?

    tantivy 0.9 brought some API breaking change. To update from tantivy 0.8, you will need to go through the following steps.

    • schema::INT_INDEXED and schema::INT_STORED should be replaced by schema::INDEXED and schema::INT_STORED.

    • The index now does not hold the pool of searcher anymore. You are required to create an intermediary object called IndexReader for this.

      // create the reader. You typically need to create 1 reader for the entire
      // lifetime of you program.
      let reader = index.reader()?;
      
      // Acquire a searcher (previously `index.searcher()`) is now written:
      let searcher = reader.searcher();
      
      // With the default setting of the reader, you are not required to
      // call `index.load_searchers()` anymore.
      //
      // The IndexReader will pick up that change automatically, regardless
      // of whether the update was done in a different process or not.
      // If this behavior is not wanted, you can create your reader with
      // the `ReloadPolicy::Manual`, and manually decide when to reload the index
      // by calling `reader.reload()?`.
      
      
    Open source →
  4. 0.7.0 12 Apr 2024

    Nothing published for this version

  5. 0.6.0 01 Sep 2023

    Nothing published for this version

  6. 0.5.0 09 Jun 2023

    Nothing published for this version

  7. 0.4.0 12 Dec 2022
    Release notes
    • Raise the limit of number of fields (previously 256 fields) (@fulmicoton)
    • Removed u32 fields. They are replaced by u64 and i64 fields (#65) (@fulmicoton)
    • Optimized skip in SegmentPostings (#130) (@lnicola)
    • Replacing rustc_serialize by serde. Kudos to benchmark@KodrAus and @lnicola
    • Using error-chain (@KodrAus)
    • QueryParser: (@fulmicoton)
      • Explicit error returned when searched for a term that is not indexed
      • Searching for a int term via the query parser was broken (age:1)
      • Searching for a non-indexed field returns an explicit Error
      • Phrase query for non-tokenized field are not tokenized by the query parser.
    • Faster/Better indexing (@fulmicoton)
      • using murmurhash2
      • faster merging
      • more memory efficient fast field writer (@lnicola )
      • better handling of collisions
      • lesser memory usage
    • Added API, most notably to iterate over ranges of terms (@fulmicoton)
    • Bugfix that was preventing to unmap segment files, on index drop (@fulmicoton)
    • Made the doc! macro public (@fulmicoton)
    • Added an alternative implementation of the streaming dictionary (@fulmicoton)
    Open source →
  8. 0.3.0 25 May 2022

    Nothing published for this version

  9. 0.2.0 09 Mar 2022

    Nothing published for this version

  10. 0.1.0 25 Aug 2021

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive