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

Reply via email to