tantivy-bitpacker
Tantivy-sub crate: bitpacking
0.10.0
17M downloads/mo
#2326 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 7 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 · Jun 2021 to Mar 2026Releases
latest 10-
0.10.031 Mar 2026Release notes
Open source →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_scoreandTopScore::custom_score(@fulmicoton) - Added an ASCII folding filter (@drusellers)
- Bugfix in
query.countin presence of deletes (@fulmicoton) - Added
.explain(...)inQueryandWeightto (@fulmicoton) - Added an efficient way to
delete_all_documentsinIndexWriter(@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() - 4chars are discarded silently instead of panicking. - Fast fields are now preloaded when the
SegmentReaderis created. IndexMetais now public. (@hntd187)IndexWriteradd_document,delete_term.IndexWriterisSync, making it possible to use it with aArc<RwLock<IndexWriter>>.add_documentanddelete_termcan only require a read lock. (@fulmicoton)- Introducing
Opstampas an expressive type alias foru64. (@petr-tik) - Stamper now relies on
AtomicU64on 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 thesegment_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.
- Added an API to easily tweak or entirely replace the
default score. See
-
0.9.020 Aug 2025Release notes
Open source →0.9.0 index format is not compatible with the previous index format.
- MAJOR BUGFIX :
Some
Mmapobjects 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_STOREDandINT_INDEXED. It is now possible to useSTOREDandINDEXEDfor 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_INDEXEDandschema::INT_STOREDshould be replaced byschema::INDEXEDandschema::INT_STORED. -
The index now does not hold the pool of searcher anymore. You are required to create an intermediary object called
IndexReaderfor 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()?`.
- MAJOR BUGFIX :
Some
-
0.8.009 Apr 2025Release notes
Open source →No change in the index format
- API Breaking change in the collector API. (@jwolfe, @fulmicoton)
- Multithreaded search (@jwolfe, @fulmicoton)
-
0.6.012 Apr 2024Nothing published for this version
-
0.5.001 Sep 2023Nothing published for this version
-
0.4.009 Jun 2023Release notes
Open source →- 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)
-
0.3.012 Dec 2022Nothing published for this version
-
0.2.025 May 2022Nothing published for this version
-
0.1.125 Aug 2021Nothing published for this version
-
0.1.007 Jun 2021Nothing published for this version