Tantivy 0.10.0 is released.
Tantivy is a search engine library inspired by Lucene. It is already fast.
I think it is fair to say this release does not contain any major changes, considering the amount of time since last release.
Life have been pretty busy, and a large amount of my tantivy time is spent answering emails/issues/messages nowadays. Fortunately, tantivy now has a lot of contributors that can help polish the project into a great search engine library.
Kudos to @hntd187, @petr-tik, @fdb-hiroshima, @kompass, @uvd, and @drusellers for the great work! Thanks also to all of the patreons : Colin, Florian, Frederik, Nate, Sanghyeon, Stephen and Zane!
Any kind of support -communication, code, patreon- really helps tantivy!
Here goes the changelog :
Tantivy 0.10.0
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(@pmasure l) -
Added an ASCII folding filter (@drusellers)
-
Bugfix in
query.countin presence of deletes (@pmasurel) -
Added
.explain(...)inQueryandWeightto (@pmasurel) -
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 o f panicking. - Fast fields are now preloaded when the
SegmentReaderis created. IndexMetais now public. (@hntd187)IndexWriteradd_document,delete_term.IndexWriterisSync, making i t possible to use it with aArc<RwLock<IndexWriter>>.add_documentanddelete_termcan only require a read lock. (@pmasurel)- 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 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.


