The Lucene PMC is pleased to announce the release of Apache Lucene 10.6.0.

Apache Lucene is a high-performance, full-featured search engine library 
written entirely in Java. It is a technology suitable for nearly any 
application that requires structured search, full-text search, faceting, 
nearest-neighbor search across high-dimensionality vectors, spell correction or 
query suggestions.

This release contains numerous bug fixes, optimizations, and improvements, some 
of which are highlighted below. The release is available for immediate download 
at:

https://lucene.apache.org/core/downloads.html

Lucene 10.6.0 Release Highlights:
Highlights

Doc-values updates:
Incremental updates are written as sparse delta overlays instead of rewriting 
the whole column. This is on by default, and 
IndexWriterConfig#setMaxDocValuesOverlays(0) disables it.
SORTED_NUMERIC fields can now also be updated in place (with a single value).
Vector search:
New sandboxed de-duplicating HNSW formats that store each distinct vector once.
Faster HNSW merge-reuse, with graph repair running in parallel.
Merges can be aborted promptly (IndexWriter#rollback no longer blocks on a full 
graph build).
Vectorized uint4 unpacking for scalar quantization.
Merge I/O: merges open their own file mappings and advise sequential reads. 
This leaves the access advice that searches use unchanged.
Query performance:
Faster bulk scoring, including MUST_NOT handling and MaxScoreBulkScorer 
filtering.
Faster doc-values range queries (SIMD, GCD-aware).
Faster string sorting.
Bulk live-docs masking.
New features

StableTflSimilarity estimates term rarity from term length and document length 
instead of corpus statistics.
CaseFoldingFilter does Unicode simple case folding without the ICU module.
Thai analysis additions: user dictionary and char, normalization and repeat 
filters.
BinaryDocValues#binaryValues for bulk retrieval.
Notable fixes

TopFieldCollector returned wrong results when a MultiReader combined indexes 
with different index sorts.
DocValuesRangeIterator.docIDRunEnd() returned wrong run boundaries, so range 
and ordinal-set queries could skip or mis-score documents.
BitSetIterator#docIDRunEnd() had quadratic cost over long runs of set bits, 
which has slowed DenseConjunctionBulkScorer since 10.5.0.
Byte-vector dot products and square distances stayed several times slower for 
the life of the JVM once both signed and unsigned variants had been used.
The HNSW merge base graph was chosen by comparing the wrong counts. It now 
compares live vector counts.
A join-score float accumulation bug caused intermittent failures.
IBSimilarity with DistributionSPL could produce negative scores.
API changes

ReaderUtil.partitionByLeaf is redesigned. It now takes an int[] of doc IDs and 
returns a PartitionedHits record.
Added KnnVectorsReader.getVectorCount.
Please read CHANGES.txt for a full list of new features and changes:

https://lucene.apache.org/core/10_6_0/changes/Changes.html


Attachment: signature.asc
Description: Message signed with OpenPGP

Reply via email to