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_score
andTopScore::custom_score
(@pmasure l) -
Added an ASCII folding filter (@drusellers)
-
Bugfix in
query.count
in presence of deletes (@pmasurel) -
Added
.explain(...)
inQuery
andWeight
to (@pmasurel) -
Added an efficient way to
delete_all_documents
inIndexWriter
(@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 o f panicking. - Fast fields are now preloaded when the
SegmentReader
is created. IndexMeta
is now public. (@hntd187)IndexWriter
add_document
,delete_term
.IndexWriter
isSync
, making i t possible to use it with aArc<RwLock<IndexWriter>>
.add_document
anddelete_term
can only require a read lock. (@pmasurel)- Introducing
Opstamp
as an expressive type alias foru64
. (@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.