You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ch...@apache.org on 2025/06/17 11:15:48 UTC
svn commit: r77596 [2/17] - in /dev/lucene/lucene-9.12.2-RC1-rev-5a26234c834e4a33fd612ef8d13111ac0f0a1263: ./ lucene/ lucene/changes/ lucene/maven/ lucene/maven/org/ lucene/maven/org/apache/ lucene/maven/org/apache/lucene/ lucene/maven/org/apache/lucen...
Added: dev/lucene/lucene-9.12.2-RC1-rev-5a26234c834e4a33fd612ef8d13111ac0f0a1263/lucene/changes/Changes.html
==============================================================================
--- dev/lucene/lucene-9.12.2-RC1-rev-5a26234c834e4a33fd612ef8d13111ac0f0a1263/lucene/changes/Changes.html (added)
+++ dev/lucene/lucene-9.12.2-RC1-rev-5a26234c834e4a33fd612ef8d13111ac0f0a1263/lucene/changes/Changes.html Tue Jun 17 11:15:39 2025
@@ -0,0 +1,20930 @@
+<!--
+**********************************************************
+** WARNING: This file is generated from CHANGES.txt by the
+** Perl script 'changes2html.pl'.
+** Do *not* edit this file!
+**********************************************************
+
+****************************************************************************
+* Licensed to the Apache Software Foundation (ASF) under one or more
+* contributor license agreements. See the NOTICE file distributed with
+* this work for additional information regarding copyright ownership.
+* The ASF licenses this file to You under the Apache License, Version 2.0
+* (the "License"); you may not use this file except in compliance with
+* the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+****************************************************************************
+-->
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <title>Lucene Change Log</title>
+ <link rel="stylesheet" href="ChangesFancyStyle.css" title="Fancy">
+ <link rel="alternate stylesheet" href="ChangesSimpleStyle.css" title="Simple">
+ <link rel="alternate stylesheet" href="ChangesFixedWidthStyle.css" title="Fixed Width">
+ <META http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+ <SCRIPT>
+ function toggleList(id) {
+ listStyle = document.getElementById(id + '.list').style;
+ anchor = document.getElementById(id);
+ if (listStyle.display == 'none') {
+ listStyle.display = 'block';
+ anchor.title = 'Click to collapse';
+ location.href = '#' + id;
+ } else {
+ listStyle.display = 'none';
+ anchor.title = 'Click to expand';
+ }
+ var expandButton = document.getElementById('expand.button');
+ expandButton.disabled = false;
+ var collapseButton = document.getElementById('collapse.button');
+ collapseButton.disabled = false;
+ }
+
+ function collapseAll() {
+ var unorderedLists = document.getElementsByTagName("ul");
+ for (var i = 0; i < unorderedLists.length; i++) {
+ if (unorderedLists[i].className != 'bulleted-list')
+ unorderedLists[i].style.display = "none";
+ else
+ unorderedLists[i].style.display = "block";
+ }
+ var orderedLists = document.getElementsByTagName("ol");
+ for (var i = 0; i < orderedLists.length; i++)
+ orderedLists[i].style.display = "none";
+ var olderList = document.getElementById("older.list");
+ olderList.style.display = "none";
+ var anchors = document.getElementsByTagName("a");
+ for (var i = 0 ; i < anchors.length; i++) {
+ if (anchors[i].id != '')
+ anchors[i].title = 'Click to expand';
+ }
+ var collapseButton = document.getElementById('collapse.button');
+ collapseButton.disabled = true;
+ var expandButton = document.getElementById('expand.button');
+ expandButton.disabled = false;
+ }
+
+ function expandAll() {
+ var unorderedLists = document.getElementsByTagName("ul");
+ for (var i = 0; i < unorderedLists.length; i++)
+ unorderedLists[i].style.display = "block";
+ var orderedLists = document.getElementsByTagName("ol");
+ for (var i = 0; i < orderedLists.length; i++)
+ orderedLists[i].style.display = "block";
+ var olderList = document.getElementById("older.list");
+ olderList.style.display = "block";
+ var anchors = document.getElementsByTagName("a");
+ for (var i = 0 ; i < anchors.length; i++) {
+ if (anchors[i].id != '')
+ anchors[i].title = 'Click to collapse';
+ }
+ var expandButton = document.getElementById('expand.button');
+ expandButton.disabled = true;
+ var collapseButton = document.getElementById('collapse.button');
+ collapseButton.disabled = false;
+
+ }
+
+ var newerRegex = new RegExp("^(?:v9\\\\.12\\\\.2|v9\\\\.12\\\\.1)");
+ function isOlder(listId) {
+ return ! newerRegex.test(listId);
+ }
+
+ function escapeMeta(s) {
+ return s.replace(/(?=[.*+?^${}()|[\]\/\\])/g, '\\');
+ }
+
+ function shouldExpand(currentList, currentAnchor, listId) {
+ var listName = listId.substring(0, listId.length - 5);
+ var parentRegex = new RegExp("^" + escapeMeta(listName) + "\\.");
+ return currentList == listId
+ || (isOlder(currentAnchor) && listId == 'older.list')
+ || parentRegex.test(currentAnchor);
+ }
+
+ function collapse() {
+ /* Collapse all but the first and second releases. */
+ var unorderedLists = document.getElementsByTagName("ul");
+ var currentAnchor = location.hash.substring(1);
+ var currentList = currentAnchor + ".list";
+
+ for (var i = 0; i < unorderedLists.length; i++) {
+ var list = unorderedLists[i];
+ /* Collapse the current item, unless either the current item is one of
+ * the first two releases, or the current URL has a fragment and the
+ * fragment refers to the current item or one of its ancestors.
+ */
+ if (list.id != 'v9.12.2.list'
+ && list.id != 'v9.12.1.list'
+ && list.className != 'bulleted-list'
+ && (currentAnchor == ''
+ || ! shouldExpand(currentList, currentAnchor, list.id))) {
+ list.style.display = "none";
+ }
+ }
+ var orderedLists = document.getElementsByTagName("ol");
+ for (var i = 0; i < orderedLists.length; i++) {
+ var list = orderedLists[i];
+ /* Collapse the current item, unless the current URL has a fragment
+ * and the fragment refers to the current item or one of its ancestors.
+ */
+ if (currentAnchor == ''
+ || ! shouldExpand(currentList, currentAnchor, list.id)) {
+ list.style.display = "none";
+ }
+ }
+ var olderList = document.getElementById("older.list");
+ olderList.style.display = "none";
+ /* Add "Click to collapse/expand" tooltips to the release/section headings */
+ var anchors = document.getElementsByTagName("a");
+ for (var i = 0 ; i < anchors.length; i++) {
+ var anchor = anchors[i];
+ if (anchor.id != '') {
+ if (anchor.id == 'v9.12.2' || anchor.id == 'v9.12.1') {
+ anchor.title = 'Click to collapse';
+ } else {
+ anchor.title = 'Click to expand';
+ }
+ }
+ }
+
+ /* Insert "Expand All" and "Collapse All" buttons */
+ var buttonsParent = document.getElementById('buttons.parent');
+ var expandButton = document.createElement('button');
+ expandButton.appendChild(document.createTextNode('Expand All'));
+ expandButton.onclick = function() { expandAll(); }
+ expandButton.id = 'expand.button';
+ buttonsParent.appendChild(expandButton);
+ var collapseButton = document.createElement('button');
+ collapseButton.appendChild(document.createTextNode('Collapse All'));
+ collapseButton.onclick = function() { collapseAll(); }
+ collapseButton.id = 'collapse.button';
+ buttonsParent.appendChild(collapseButton);
+ }
+
+ window.onload = collapse;
+ </SCRIPT>
+</head>
+<body>
+
+<h1>Lucene Change Log</h1>
+
+<div id="buttons.parent"></div>
+
+ <p>For more information on past and future Lucene versions, please see:
+<a href="http://s.apache.org/luceneversions">http://s.apache.org/luceneversions</a>
+</p>
+<h2><a id="v9.12.2" href="javascript:toggleList('v9.12.2')">Release 9.12.2 </a></h2>
+<ul id="v9.12.2.list">
+ <li><a id="v9.12.2.bug_fixes" href="javascript:toggleList('v9.12.2.bug_fixes')">Bug Fixes</a> (4)
+ <ol id="v9.12.2.bug_fixes.list">
+ <li><a href="https://github.com/apache/lucene/pull/14654">GITHUB#14654</a>: ValueSource.fromDoubleValuesSource(dvs).getSortField() would throw errors when
+used if the DoubleValuesSource needed scores.
+<br /><span class="attrib">(David Smiley)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/14527">GITHUB#14527</a>, <a href="https://github.com/apache/lucene/pull/14765">GITHUB#14765</a>: Reduce NeighborArray heap memory.
+<br /><span class="attrib">(weizijun, Ben Trent)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/14732">GITHUB#14732</a>: Fix IndexSortSortedNumericDocValuesRangeQuery for int sort
+<br /><span class="attrib">(Mayya Sharipova)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/14436">GITHUB#14436</a>: Disable connectedComponents logic in HNSW graph building. Relates to <a href="https://github.com/apache/lucene/pull/14214">GITHUB#14214</a>, <a href="https://github.com/apache/lucene/pull/12627">GITHUB#12627</a>, <a href="https://github.com/apache/lucene/pull/13566">GITHUB#13566</a>.
+<br /><span class="attrib">(Ben Trent)</span></li>
+ </ol>
+ </li>
+</ul>
+<h2><a id="v9.12.1" href="javascript:toggleList('v9.12.1')">Release 9.12.1 [2024-12-13]</a></h2>
+<ul id="v9.12.1.list">
+ <li><a id="v9.12.1.bug_fixes" href="javascript:toggleList('v9.12.1.bug_fixes')">Bug Fixes</a> (6)
+ <ol id="v9.12.1.bug_fixes.list">
+ <li><a href="https://github.com/apache/lucene/pull/13947">GITHUB#13947</a>: Fix ord-to-doc mapping when searching Lucene 9.0.0 hnsw indices
+<br /><span class="attrib">(Michael Sokolov, Ben Trent)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13867">GITHUB#13867</a>: Fix backwards compatibility bug that caused 9.12.0 to
+incorrectly throw IllegalStateException when trying to open an
+IndexReader on an index created with quantized (int4, int7, int8)
+KNN vectors using Lucene99HnswScalarQuantizedVectorsFormat. This
+was an accidental backwards compatibility break: such indices should
+be readable and writable by any future 9.x and 10.x Lucene releases.
+But note that int8 compression was buggy and can no longer be
+written but can be read from an existing index.
+<br /><span class="attrib">(Ionut
+Anghelcovici, Michael McCandless)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13841">GITHUB#13841</a>: Improve Tessellatorlogic when two holes share the same vertex with the polygon which was failing
+in valid polygons.
+<br /><span class="attrib">(Ignacio Vera)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13986">GITHUB#13986</a>: Allow easier configuration of the Panama Vectorization provider with
+newer Java versions. Set the `org.apache.lucene.vectorization.upperJavaFeatureVersion`
+system property to increase the set of Java versions that Panama Vectorization will
+provide optimized implementations for.
+<br /><span class="attrib">(Chris Hegarty)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/14008">GITHUB#14008</a>: Counts provided by taxonomy facets in addition to another aggregation are now returned together with
+their corresponding ordinals.
+<br /><span class="attrib">(Paul King)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/14027">GITHUB#14027</a>: Make SegmentInfos#readCommit(Directory, String, int) public
+<br /><span class="attrib">(Luca Cavanna)</span></li>
+ </ol>
+ </li>
+ <li><a id="v9.12.1.api_changes" href="javascript:toggleList('v9.12.1.api_changes')">API Changes</a> (1)
+ <ol id="v9.12.1.api_changes.list">
+ <li><a href="https://github.com/apache/lucene/pull/13845">GITHUB#13845</a>: Add missing with-discountOverlaps Similarity constructor variants.
+<br /><span class="attrib">(Pierre Salagnac, Christine Poerschke, Robert Muir)</span></li>
+ </ol>
+ </li>
+</ul>
+<h2><a id="older" href="javascript:toggleList('older')">Older Releases</a></h2>
+<div id="older.list">
+<h3><a id="v9.12.0" href="javascript:toggleList('v9.12.0')">Release 9.12.0 [2024-09-28]</a></h3>
+<ul id="v9.12.0.list">
+ <li><a id="v9.12.0.security_fixes" href="javascript:toggleList('v9.12.0.security_fixes')">Security Fixes</a> (1)
+ <ol id="v9.12.0.security_fixes.list">
+ <li>Deserialization of Untrusted Data vulnerability in Apache Lucene Replicator - CVE-2024-45772
+<br /><span class="attrib">(Summ3r from Vidar-Team, Robert Muir, Paul Irwin)</span></li>
+ </ol>
+ </li>
+ <li><a id="v9.12.0.api_changes" href="javascript:toggleList('v9.12.0.api_changes')">API Changes</a> (9)
+ <ol id="v9.12.0.api_changes.list">
+ <li><a href="https://github.com/apache/lucene/pull/13806">GITHUB#13806</a>: Add TermInSetQuery#getBytesRefIterator to be able to iterate over query terms.
+<br /><span class="attrib">(Christoph Büscher)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13469">GITHUB#13469</a>: Expose FlatVectorsFormat as a first-class format; can be configured using a custom Codec.
+<br /><span class="attrib">(Michael Sokolov)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13612">GITHUB#13612</a>: Hunspell: add Suggester#proceedPastRep to avoid losing relevant suggestions.
+<br /><span class="attrib">(Peter Gromov)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13603">GITHUB#13603</a>: Introduced `IndexSearcher#searchLeaf(LeafReaderContext, Weight, Collector)` protected method to
+facilitate customizing per-leaf behavior of search without requiring to override
+`search(LeafReaderContext[], Weight, Collector)` which requires overriding the entire loop across the leaves
+<br /><span class="attrib">(Luca Cavanna)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13559">GITHUB#13559</a>: Add BitSet#nextSetBit(int, int) to get the index of the first set bit in range.
+<br /><span class="attrib">(Egor Potemkin)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13568">GITHUB#13568</a>: Add DoubleValuesSource#toSortableLongDoubleValuesSource and
+MultiDoubleValuesSource#toSortableMultiLongValuesSource methods.
+<br /><span class="attrib">(Shradha Shankar)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13568">GITHUB#13568</a>, <a href="https://github.com/apache/lucene/pull/13750">GITHUB#13750</a>: Add DrillSideways#search method that supports any CollectorManagers for drill-sideways dimensions
+or drill-down.
+<br /><span class="attrib">(Egor Potemkin)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13737">GITHUB#13737</a>: Deprecate the FacetsCollector#search utility methods and add new corresponding method to
+FacetsCollectorManager that accept a FacetsCollectorManager as last argument in place of a Collector.
+<br /><span class="attrib">(Luca Cavanna)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13794">GITHUB#13794</a>: Deprecate BulkScorer#score(LeafCollector collector, Bits acceptDocs) in favour of
+BulkScorer#score(LeafCollector collector, Bits acceptDocs, int min, int max). The method will be removed in the next
+major version. Replace usages with the latter, providing 0 as min and DocIdSetIterator.NO_MORE_DOCS as max in case
+the entire segment should be scored. Subclasses that override the method should instead override its replacement.
+<br /><span class="attrib">(Luca Cavanna)</span></li>
+ </ol>
+ </li>
+ <li><a id="v9.12.0.new_features" href="javascript:toggleList('v9.12.0.new_features')">New Features</a> (5)
+ <ol id="v9.12.0.new_features.list">
+ <li><a href="https://github.com/apache/lucene/pull/13430">GITHUB#13430</a>: Allow configuring the search concurrency via
+TieredMergePolicy#setTargetSearchConcurrency. This in-turn instructs the
+merge policy to try to have at least this number of segments on the highest
+tier.
+<br /><span class="attrib">(Adrien Grand, Carlos Delgado)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13517">GITHUB#13517</a>: Allow configuring the search concurrency on LogDocMergePolicy
+and LogByteSizeMergePolicy via a new #setTargetConcurrency setter.
+<br /><span class="attrib">(Adrien Grand)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13568">GITHUB#13568</a>: Add sandbox facets module to compute facets while collecting.
+<br /><span class="attrib">(Egor Potemkin, Shradha Shankar)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13678">GITHUB#13678</a>: Add support JDK 23 to the Panama Vectorization Provider.
+<br /><span class="attrib">(Chris Hegarty)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13689">GITHUB#13689</a>: Add a new faceting feature, dynamic range facets, which automatically picks a balanced set of numeric
+ranges based on the distribution of values that occur across all hits. For use cases that have a highly variable
+numeric doc values field, such as "price" in an e-commerce application, this facet method is powerful as it allows the
+presented ranges to adapt depending on what hits the query actually matches. This is in contrast to existing range
+faceting that requires the application to provide the specific fixed ranges up front.
+<br /><span class="attrib">(Yuting Gan, Greg Miller,
+Stefan Vodita)</span></li>
+ </ol>
+ </li>
+ <li><a id="v9.12.0.improvements" href="javascript:toggleList('v9.12.0.improvements')">Improvements</a> (10)
+ <ol id="v9.12.0.improvements.list">
+ <li><a href="https://github.com/apache/lucene/pull/13475">GITHUB#13475</a>: Re-enable intra-merge parallelism except for terms, norms, and doc values.
+Related to <a href="https://github.com/apache/lucene/pull/13478">GITHUB#13478</a>.
+<br /><span class="attrib">(Ben Trent)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13548">GITHUB#13548</a>: Refactor and javadoc update for KNN vector writer classes.
+<br /><span class="attrib">(Patrick Zhai)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13562">GITHUB#13562</a>: Add Intervals.regexp and Intervals.range methods to produce IntervalsSource
+for regexp and range queries.
+<br /><span class="attrib">(Mayya Sharipova)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13625">GITHUB#13625</a>: Remove BitSet#nextSetBit code duplication.
+<br /><span class="attrib">(Greg Miller)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13285">GITHUB#13285</a>: Early terminate graph searches of AbstractVectorSimilarityQuery to follow timeout set from
+IndexSearcher#setTimeout(QueryTimeout).
+<br /><span class="attrib">(Kaival Parikh)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13633">GITHUB#13633</a>: Add ability to read/write knn vector values to a MemoryIndex.
+<br /><span class="attrib">(Ben Trent)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12627">GITHUB#12627</a>: patch HNSW graphs to improve reachability of all nodes from entry points
+<p>
+</li>
+ <li><a href="https://github.com/apache/lucene/pull/13201">GITHUB#13201</a>: Better cost estimation on MultiTermQuery over few terms.
+<br /><span class="attrib">(Michael Froh)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13735">GITHUB#13735</a>: Migrate monitor package usage of deprecated IndexSearcher#search(Query, Collector)
+to IndexSearcher#search(Query, CollectorManager).
+<br /><span class="attrib">(Greg Miller)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13746">GITHUB#13746</a>: Introduce ProfilerCollectorManager to parallelize search when using ProfilerCollector.
+<br /><span class="attrib">(Luca Cavanna)</span></li>
+ </ol>
+ </li>
+ <li><a id="v9.12.0.optimizations" href="javascript:toggleList('v9.12.0.optimizations')">Optimizations</a> (18)
+ <ol id="v9.12.0.optimizations.list">
+ <li><a href="https://github.com/apache/lucene/pull/13439">GITHUB#13439</a>: Avoid unnecessary memory allocation in PackedLongValues#Iterator.
+<br /><span class="attrib">(Zhang Chao)</span></li>
+ <li>GITHUB##13425: Rewrite SortedNumericDocValuesRangeQuery to MatchNoDocsQuery when the upper bound is smaller than the
+lower bound.
+<br /><span class="attrib">(Ioana Tagirta)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13322">GITHUB#13322</a>: Implement Weight#count for vector values in the FieldExistsQuery.
+<br /><span class="attrib">(Pan Guixin)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13454">GITHUB#13454</a>: MultiTermQuery returns null ScoreSupplier in cases where
+no query terms are present in the index segment
+<br /><span class="attrib">(Mayya Sharipova)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13431">GITHUB#13431</a>: Replace TreeMap and use compiled Patterns in Japanese UserDictionary.
+<br /><span class="attrib">(Bruno Roustant)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12941">GITHUB#12941</a>: Don't preserve auxiliary buffer contents in LSBRadixSorter if it grows.
+<br /><span class="attrib">(Stefan Vodita)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13175">GITHUB#13175</a>: Stop double-checking priority queue inserts in some FacetCount classes.
+<br /><span class="attrib">(Jakub Slowinski)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13538">GITHUB#13538</a>: Slightly reduce heap usage for HNSW and scalar quantized vector writers.
+<br /><span class="attrib">(Ben Trent)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12100">GITHUB#12100</a>: WordBreakSpellChecker.suggestWordBreaks now does a breadth first search, allowing it to return
+better matches with fewer evaluations
+<br /><span class="attrib">(hossman)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13582">GITHUB#13582</a>: Stop requiring MaxScoreBulkScorer's outer window from having at
+least INNER_WINDOW_SIZE docs.
+<br /><span class="attrib">(Adrien Grand)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13570">GITHUB#13570</a>, <a href="https://github.com/apache/lucene/pull/13574">GITHUB#13574</a>, <a href="https://github.com/apache/lucene/pull/13535">GITHUB#13535</a>: Avoid performance degradation with closing shared Arenas.
+Closing many individual index files can potentially lead to a degradation in execution performance.
+Index files are mmapped one-to-one with the JDK's foreign shared Arena. The JVM deoptimizes the top
+few frames of all threads when closing a shared Arena (see JDK-8335480). We mitigate this situation
+when running with JDK 21 and greater, by 1) using a confined Arena where appropriate, and 2) grouping
+files from the same segment to a single shared Arena.
+A system property has been added that allows to control the total maximum number of mmapped files
+that may be associated with a single shared Arena. For example, to set the max number of permits to
+256, pass the following on the command line
+<ul class="bulleted-list">
+<li class="bulleted-list">
+Dorg.apache.lucene.store.MMapDirectory.sharedArenaMaxPermits=256. Setting a value of 1 associates
+</li>
+</ul>
+a single file to a single shared arena.
+<br /><span class="attrib">(Chris Hegarty, Michael Gibney, Uwe Schindler)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13585">GITHUB#13585</a>: Lucene912PostingsFormat, the new default postings format, now
+only has 2 levels of skip data, which are inlined into postings instead of
+being stored at the end of postings lists. This translates into better
+performance for queries that need skipping such as conjunctions.
+<br /><span class="attrib">(Adrien Grand)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13581">GITHUB#13581</a>: OnHeapHnswGraph no longer allocates a lock for every graph node
+<br /><span class="attrib">(Mike Sokolov)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13636">GITHUB#13636</a>, <a href="https://github.com/apache/lucene/pull/13658">GITHUB#13658</a>: Optimizations to the decoding logic of blocks of
+postings.
+<br /><span class="attrib">(Adrien Grand, Uwe Schindler, Greg Miller)</span></li>
+ <li>GITHUB##13644: Improve NumericComparator competitive iterator logic by comparing the missing value with the top
+value even after the hit queue is full
+<br /><span class="attrib">(Pan Guixin)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13587">GITHUB#13587</a>: Use Max WAND optimizations with ToParentBlockJoinQuery when using ScoreMode.Max
+<br /><span class="attrib">(Mike Pellegrini)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13742">GITHUB#13742</a>: Reorder checks in LRUQueryCache#count
+<br /><span class="attrib">(Shubham Chaudhary)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13697">GITHUB#13697</a>: Add a bulk scorer to ToParentBlockJoinQuery, which delegates to the bulk scorer of the child query.
+ This should speed up query evaluation when the child query has a specialized bulk scorer, such as disjunctive queries.
+<br /><span class="attrib">(Mike Pellegrini)</span></li>
+ </ol>
+ </li>
+ <li><a id="v9.12.0.changes_in_runtime_behavior" href="javascript:toggleList('v9.12.0.changes_in_runtime_behavior')">Changes in runtime behavior</a> (1)
+ <ol id="v9.12.0.changes_in_runtime_behavior.list">
+ <li><a href="https://github.com/apache/lucene/pull/13472">GITHUB#13472</a>: When an executor is provided to the IndexSearcher constructor, the searcher now executes tasks on the
+thread that invoked a search as well as its configured executor. Users should reduce the executor's thread-count by 1
+to retain the previous level of parallelism. Moreover, it is now possible to start searches from the same executor
+that is configured in the IndexSearcher without risk of deadlocking. A separate executor for starting searches is no
+longer required.
+<br /><span class="attrib">(Armin Braun)</span></li>
+ </ol>
+ </li>
+ <li><a id="v9.12.0.bug_fixes" href="javascript:toggleList('v9.12.0.bug_fixes')">Bug Fixes</a> (12)
+ <ol id="v9.12.0.bug_fixes.list">
+ <li><a href="https://github.com/apache/lucene/pull/13498">GITHUB#13498</a>: Avoid performance regression by constructing lazily the PointTree in NumericComparator,
+<br /><span class="attrib">(Ignacio Vera)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13384">GITHUB#13384</a>: Fix highlighter to use longer passages instead of shorter individual terms.
+<br /><span class="attrib">(Zack Kendall)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13463">GITHUB#13463</a>: Address bug in MultiLeafKnnCollector causing #minCompetitiveSimilarity to stay artificially low in
+some corner cases.
+<br /><span class="attrib">(Greg Miller)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13553">GITHUB#13553</a>: Correct RamUsageEstimate for scalar quantized knn vector formats so that raw vectors are correctly
+accounted for.
+<br /><span class="attrib">(Ben Trent)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13615">GITHUB#13615</a>: Correct scalar quantization when used in conjunction with COSINE similarity. Vectors are normalized
+before quantization to ensure the cosine similarity is correctly calculated.
+<br /><span class="attrib">(Ben Trent)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13627">GITHUB#13627</a>: Fix race condition on flush for DWPT seqNo generation.
+<br /><span class="attrib">(Ben Trent, Ao Li)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13646">GITHUB#13646</a>: Fix rare test bug in TestLongValueFacetCounts that was introduced in 9.6.
+<br /><span class="attrib">(Greg Miller)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13691">GITHUB#13691</a>: Fix incorrect exponent value in explain of SigmoidFunction.
+<br /><span class="attrib">(Owais Kazi)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13703">GITHUB#13703</a>: Fix bug in LatLonPoint queries where narrow polygons close to latitude 90 don't
+match any points due to an Integer overflow.
+<br /><span class="attrib">(Ignacio Vera)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13641">GITHUB#13641</a>: Unify how KnnFormats handle missing fields and correctly handle missing vector fields when
+merging segments.
+<br /><span class="attrib">(Ben Trent)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13519">GITHUB#13519</a>: 8 bit scalar vector quantization is no longer
+supported: it was buggy starting in 9.11 (<a href="https://github.com/apache/lucene/pull/13197">GITHUB#13197</a>). 4 and 7
+bit quantization are still supported. Existing (9.x) Lucene indices
+that previously used 8 bit quantization can still be read/searched
+but the results from `KNN*VectorQuery` are silently buggy. Further
+8 bit quantized vector indexing into such (9.11) indices is not
+permitted, so your path forward if you wish to continue using the
+same 9.11 index is to index additional vectors into the same field
+with either 4 or 7 bit quantization (or no quantization), and ensure
+all older (9.11 written) segments are rewritten either via
+`IndexWriter.forceMerge` or
+`IndexWriter.addIndexes(CodecReader...)`, or reindexing entirely.
+<p>
+</li>
+ <li><a href="https://github.com/apache/lucene/pull/13799">GITHUB#13799</a>: Disable intra-merge parallelism for all structures but kNN vectors.
+<br /><span class="attrib">(Ben Trent)</span></li>
+ </ol>
+ </li>
+ <li><a id="v9.12.0.build" href="javascript:toggleList('v9.12.0.build')">Build</a> (1)
+ <ol id="v9.12.0.build.list">
+ <li><a href="https://github.com/apache/lucene/pull/13695">GITHUB#13695</a>, <a href="https://github.com/apache/lucene/pull/13696">GITHUB#13696</a>: Fix Gradle build sometimes gives spurious "unreferenced license file" warnings.
+<br /><span class="attrib">(Uwe Schindler)</span></li>
+ </ol>
+ </li>
+ <li><a id="v9.12.0.other" href="javascript:toggleList('v9.12.0.other')">Other</a> (2)
+ <ol id="v9.12.0.other.list">
+ <li><a href="https://github.com/apache/lucene/pull/13720">GITHUB#13720</a>: Add float comparison based on unit of least precision and use it to stop test failures caused by float
+summation not being associative in IEEE 754.
+<br /><span class="attrib">(Alex Herbert, Stefan Vodita)</span></li>
+ <li>Remove code triggering forbidden-apis regarding Java serialization.
+<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
+ </ol>
+ </li>
+</ul>
+<h3><a id="v9.11.1" href="javascript:toggleList('v9.11.1')">Release 9.11.1 [2024-06-27]</a></h3>
+<ul id="v9.11.1.list">
+ <li><a id="v9.11.1.bug_fixes" href="javascript:toggleList('v9.11.1.bug_fixes')">Bug Fixes</a> (5)
+ <ol id="v9.11.1.bug_fixes.list">
+ <li><a href="https://github.com/apache/lucene/pull/13498">GITHUB#13498</a>: Avoid performance regression by constructing lazily the PointTree in NumericComparator.
+<br /><span class="attrib">(Ignacio Vera)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13501">GITHUB#13501</a>, <a href="https://github.com/apache/lucene/pull/13478">GITHUB#13478</a>: Remove intra-merge parallelism for everything except HNSW graph merges.
+<br /><span class="attrib">(Ben Trent)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13498">GITHUB#13498</a>, <a href="https://github.com/apache/lucene/pull/13340">GITHUB#13340</a>: Allow adding a parent field to an index with no fields
+<br /><span class="attrib">(Michael Sokolov)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12431">GITHUB#12431</a>: Fix IndexOutOfBoundsException thrown in DefaultPassageFormatter
+by unordered matches.
+<br /><span class="attrib">(Stephane Campinas)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13493">GITHUB#13493</a>: StringValueFacetCounts stops throwing NPE when faceting over an empty match-set.
+<br /><span class="attrib">(Grebennikov Roman,
+Stefan Vodita)</span></li>
+ </ol>
+ </li>
+</ul>
+<h3><a id="v9.11.0" href="javascript:toggleList('v9.11.0')">Release 9.11.0 [2024-06-06]</a></h3>
+<ul id="v9.11.0.list">
+ <li><a id="v9.11.0.api_changes" href="javascript:toggleList('v9.11.0.api_changes')">API Changes</a> (2)
+ <ol id="v9.11.0.api_changes.list">
+ <li><a href="https://github.com/apache/lucene/pull/13145">GITHUB#13145</a>: Deprecate ByteBufferIndexInput as it will be removed in Lucene 10.0.
+<br /><span class="attrib">(Uwe Schindler)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13422">GITHUB#13422</a>: an explicit dependency on the HPPC library is removed in favor of an internal repackaged copy in
+oal.internal.hppc. If you relied on HPPC as a transitive dependency, you'll have to add it to your project explicitly.
+The HPPC classes now bundled in Lucene core are internal and will have restricted access in future releases, please do
+not use them.
+<br /><span class="attrib">(Bruno Roustant, Dawid Weiss, Uwe Schindler, Chris Hegarty)</span></li>
+ </ol>
+ </li>
+ <li><a id="v9.11.0.new_features" href="javascript:toggleList('v9.11.0.new_features')">New Features</a> (9)
+ <ol id="v9.11.0.new_features.list">
+ <li><a href="https://github.com/apache/lucene/pull/13125">GITHUB#13125</a>: Recursive graph bisection is now supported on indexes that have blocks, as long as
+they configure a parent field via `IndexWriterConfig#setParentField`.
+<br /><span class="attrib">(Adrien Grand)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12915">GITHUB#12915</a>: Add new token filters for Japanese sutegana (æ¨ã¦ä»®å). This introduces JapaneseHiraganaUppercaseFilter
+and JapaneseKatakanaUppercaseFilter.
+<br /><span class="attrib">(Dai Sugimori)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13196">GITHUB#13196</a>, <a href="https://github.com/apache/lucene/pull/13222">GITHUB#13222</a>: Add support for posix_madvise to MMapDirectory: If running on
+Linux/macOS and Java 21 or later, MMapDirectory uses IOContext to pass suitable MADV flags to
+kernel of operating system. In particular, merging now passes POSIX_MADV_SEQUENTIAL to the readers
+that are being merged, and searching passes POSIX_MADV_RANDOM to vector data files - including
+quantized vector data files, HNSW graphs, stored fields data files and term vectors data files.
+This may improve paging logic especially when working with large indexes under memory pressure.
+<br /><span class="attrib">(Uwe Schindler, Chris Hegarty, Robert Muir, Adrien Grand)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13197">GITHUB#13197</a>: Expand support for new scalar bit levels for HNSW vectors. This includes 4-bit vectors and an option
+to compress them to gain a 50% reduction in memory usage.
+<br /><span class="attrib">(Ben Trent)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13268">GITHUB#13268</a>: Add ability for UnifiedHighlighter to highlight a field based on combined matches from multiple fields.
+<br /><span class="attrib">(Mayya Sharipova, Jim Ferenczi)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13288">GITHUB#13288</a>: Make HNSW and Flat storage vector formats easier to extend with new FlatVectorScorer interface. Add
+new Hnsw format for binary quantized vectors.
+<br /><span class="attrib">(Ben Trent)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13181">GITHUB#13181</a>: Add new VectorScorer interface to vector value iterators. This allows for vector codecs to supply
+simpler and more optimized vector scoring when iterating vector values directly.
+<br /><span class="attrib">(Ben Trent)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13414">GITHUB#13414</a>: Counts are always available in the result when using taxonomy facets.
+<br /><span class="attrib">(Stefan Vodita)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13445">GITHUB#13445</a>: Add new option when calculating scalar quantiles. The new option of setting `confidenceInterval` to
+`0` will now dynamically determine the quantiles through a grid search over multiple quantiles calculated
+by multiple intervals.
+<br /><span class="attrib">(Ben Trent)</span></li>
+ </ol>
+ </li>
+ <li><a id="v9.11.0.improvements" href="javascript:toggleList('v9.11.0.improvements')">Improvements</a> (14)
+ <ol id="v9.11.0.improvements.list">
+ <li><a href="https://github.com/apache/lucene/pull/13092">GITHUB#13092</a>: `static final Map` constants have been made immutable
+<br /><span class="attrib">(Dmitry Cherniachenko)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13041">GITHUB#13041</a>: TokenizedPhraseQueryNode code cleanup
+<br /><span class="attrib">(Dmitry Cherniachenko)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13087">GITHUB#13087</a>: Changed `static final Set` constants to be immutable. Among others it affected
+ScandinavianNormalizer.ALL_FOLDINGS set with public access.
+<br /><span class="attrib">(Dmitry Cherniachenko)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13155">GITHUB#13155</a>: Hunspell: allow ignoring exceptions on duplicate ICONV/OCONV mappings
+<br /><span class="attrib">(Peter Gromov)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13156">GITHUB#13156</a>: Hunspell: don't proceed with other suggestions if we found good REP ones
+<br /><span class="attrib">(Peter Gromov)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13066">GITHUB#13066</a>: Support getMaxScore of DisjunctionSumScorer for non top level scoring clause
+<br /><span class="attrib">(Shintaro Murakami)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13124">GITHUB#13124</a>: MergeScheduler can now provide an executor for intra-merge parallelism. The first
+implementation is the ConcurrentMergeScheduler and the Lucene99HnswVectorsFormat will use it if no other
+executor is provided.
+<br /><span class="attrib">(Ben Trent)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13239">GITHUB#13239</a>: Upgrade icu4j to version 74.2.
+<br /><span class="attrib">(Robert Muir)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13202">GITHUB#13202</a>: Early terminate graph and exact searches of AbstractKnnVectorQuery to follow timeout set from
+IndexSearcher#setTimeout(QueryTimeout).
+<br /><span class="attrib">(Kaival Parikh)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12966">GITHUB#12966</a>: Move most of the responsibility from TaxonomyFacets implementations to TaxonomyFacets itself.
+This reduces code duplication and enables future development.
+<br /><span class="attrib">(Stefan Vodita)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13362">GITHUB#13362</a>: Add sub query explanations to DisjunctionMaxQuery, if the overall query didn't match.
+<br /><span class="attrib">(Tim Grein)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13385">GITHUB#13385</a>: Add Intervals.noIntervals() method to produce an empty IntervalsSource.
+(Aniketh Jain, Uwe Schindler, Alan Woodward))
+<p>
+</li>
+ <li><a href="https://github.com/apache/lucene/pull/13276">GITHUB#13276</a>: UnifiedHighlighter: new 'passageSortComparator' option to allow sorting other than offset order.
+<br /><span class="attrib">(Seunghan Jung)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13429">GITHUB#13429</a>: Hunspell: speed up "compress"; minimize the number of the generated entries; don't even consider "forbidden" entries anymore
+<br /><span class="attrib">(Peter Gromov)</span></li>
+ </ol>
+ </li>
+ <li><a id="v9.11.0.optimizations" href="javascript:toggleList('v9.11.0.optimizations')">Optimizations</a> (24)
+ <ol id="v9.11.0.optimizations.list">
+ <li><a href="https://github.com/apache/lucene/pull/13306">GITHUB#13306</a>: Use RWLock to access LRUQueryCache to reduce contention.
+<br /><span class="attrib">(Boice Huang)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13252">GITHUB#13252</a>: Replace handwritten loops compare with Arrays.compareUnsigned in SegmentTermsEnum.
+<br /><span class="attrib">(zhouhui)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12996">GITHUB#12996</a>: Reduce ArrayUtil#grow in decompress.
+<br /><span class="attrib">(Zhang Chao)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13115">GITHUB#13115</a>: Short circuit queued flush check when flush on update is disabled
+<br /><span class="attrib">(Prabhat Sharma)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13085">GITHUB#13085</a>: Remove unnecessary toString() / substring() calls to save some String allocations
+<br /><span class="attrib">(Dmitry Cherniachenko)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13121">GITHUB#13121</a>: Speedup multi-segment HNSW graph search for diversifying child kNN queries. Builds on <a href="https://github.com/apache/lucene/pull/12962">GITHUB#12962</a>.
+<br /><span class="attrib">(Ben Trent)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13184">GITHUB#13184</a>: Make the HitQueue size more appropriate for KNN exact search
+<br /><span class="attrib">(Pan Guixin)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13199">GITHUB#13199</a>: Speed up dynamic pruning by breaking point estimation when threshold get exceeded.
+<br /><span class="attrib">(Guo Feng)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13203">GITHUB#13203</a>: Speed up writeGroupVInts
+<br /><span class="attrib">(Zhang Chao)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13224">GITHUB#13224</a>: Use singleton for all-zeros DirectMonotonicReader.Meta
+<br /><span class="attrib">(Armin Braun)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13232">GITHUB#13232</a> : Introduce singleton for PackedInts.NullReader of size 256
+<br /><span class="attrib">(Armin Braun)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/11888">GITHUB#11888</a>: Binary search the BlockTree terms dictionary entries when all suffixes have the same length
+in a leaf block, speeding up cases like primary key lookup on an id field when all ids are the same length.
+<br /><span class="attrib">(zhouhui)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13149">GITHUB#13149</a>: Made PointRangeQuery faster, for some segment sizes, by reducing the amount of virtual calls to
+IntersectVisitor::visit(int).
+<br /><span class="attrib">(Anton Hägerstrand)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12966">GITHUB#12966</a>: FloatTaxonomyFacets can now collect values into a sparse structure, like IntTaxonomyFacets already
+could.
+<br /><span class="attrib">(Stefan Vodita)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13284">GITHUB#13284</a>: Per-field doc values and knn vectors readers now use a HashMap internally instead of
+a TreeMap.
+<br /><span class="attrib">(Adrien Grand)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13321">GITHUB#13321</a>: Improve compressed int4 quantized vector search by utilizing SIMD inline with the decompression
+process.
+<br /><span class="attrib">(Ben Trent)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12408">GITHUB#12408</a>: Lazy initialization improvements for Facets implementations when there are segments with no hits
+to count.
+<br /><span class="attrib">(Greg Miller)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13327">GITHUB#13327</a>: Reduce memory usage of field maps in FieldInfos and BlockTree TermsReader.
+<br /><span class="attrib">(Bruno Roustant, David Smiley)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13339">GITHUB#13339</a>: Add a MemorySegment Vector scorer - for scoring without copying on-heap
+<br /><span class="attrib">(Chris Hegarty)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13368">GITHUB#13368</a>: Replace Map<Integer, Object> by primitive IntObjectHashMap.
+<br /><span class="attrib">(Bruno Roustant)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13392">GITHUB#13392</a>: Replace Map<Long, Object> by primitive LongObjectHashMap.
+<br /><span class="attrib">(Bruno Roustant)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13400">GITHUB#13400</a>: Replace Set<Integer> by IntHashSet and Set<Long> by LongHashSet.
+<br /><span class="attrib">(Bruno Roustant)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13406">GITHUB#13406</a>: Replace List<Integer> by IntArrayList and List<Long> by LongArrayList.
+<br /><span class="attrib">(Bruno Roustant)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13420">GITHUB#13420</a>: Replace Map<Character> by CharObjectHashMap and Set<Character> by CharHashSet.
+<br /><span class="attrib">(Bruno Roustant)</span></li>
+ </ol>
+ </li>
+ <li><a id="v9.11.0.bug_fixes" href="javascript:toggleList('v9.11.0.bug_fixes')">Bug Fixes</a> (16)
+ <ol id="v9.11.0.bug_fixes.list">
+ <li><a href="https://github.com/apache/lucene/pull/13105">GITHUB#13105</a>: Fix ByteKnnVectorFieldSource & FloatKnnVectorFieldSource to work correctly when a segment does not contain
+any docs with vectors
+<br /><span class="attrib">(hossman)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13017">GITHUB#13017</a>: Fix DV update files referenced by merge will be deleted by concurrent flush.
+<br /><span class="attrib">(Jialiang Guo)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13145">GITHUB#13145</a>: Detect MemorySegmentIndexInput correctly in NRTSuggester.
+<br /><span class="attrib">(Uwe Schindler)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13154">GITHUB#13154</a>: Hunspell GeneratingSuggester: ensure there are never more than 100 roots to process
+<br /><span class="attrib">(Peter Gromov)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13162">GITHUB#13162</a>: Fix NPE when LeafReader return null VectorValues
+<br /><span class="attrib">(Pan Guixin)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13169">GITHUB#13169</a>: Fix potential race condition in DocumentsWriter & DocumentsWriterDeleteQueue
+<br /><span class="attrib">(Ben Trent)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13204">GITHUB#13204</a>: Fix equals/hashCode of IOContext.
+<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13206">GITHUB#13206</a>: Subtract deleted file size from the cache size of NRTCachingDirectory.
+<br /><span class="attrib">(Jean-François Boeuf)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12966">GITHUB#12966</a>: Aggregation facets no longer assume that aggregation values are positive.
+<br /><span class="attrib">(Stefan Vodita)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13356">GITHUB#13356</a>: Ensure negative scores are not returned from scalar quantization scorer.
+<br /><span class="attrib">(Ben Trent)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13366">GITHUB#13366</a>: Disallow NaN and Inf values in scalar quantization and better handle extreme cases.
+<br /><span class="attrib">(Ben Trent)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13369">GITHUB#13369</a>: Fix NRT opening failure when soft deletes are enabled and the document fails to index before a point
+field is written
+<br /><span class="attrib">(Ben Trent)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13378">GITHUB#13378</a>: Fix points writing with no values
+<br /><span class="attrib">(Chris Hegarty)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13374">GITHUB#13374</a>: Fix bug in SQ when just a single vector present in a segment
+<br /><span class="attrib">(Chris Hegarty)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13376">GITHUB#13376</a>: Fix integer overflow exception in postings encoding as group-varint.
+<br /><span class="attrib">(Zhang Chao, Guo Feng)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13421">GITHUB#13421</a>: Fixes TestOrdinalMap.testRamBytesUsed for multiple default PackedInts.NullReader instances.
+<br /><span class="attrib">(Amir Raza)</span></li>
+ </ol>
+ </li>
+ <li><a id="v9.11.0.build" href="javascript:toggleList('v9.11.0.build')">Build</a> (1)
+ <ol id="v9.11.0.build.list">
+ <li>Upgrade forbiddenapis to version 3.7 and ASM for APIJAR extraction to 9.7.
+<br /><span class="attrib">(Uwe Schindler)</span></li>
+ </ol>
+ </li>
+ <li><a id="v9.11.0.other" href="javascript:toggleList('v9.11.0.other')">Other</a> (3)
+ <ol id="v9.11.0.other.list">
+ <li><a href="https://github.com/apache/lucene/pull/13068">GITHUB#13068</a>: Replace numerous `brToString(BytesRef)` copies with a `ToStringUtils` method
+<br /><span class="attrib">(Dmitry Cherniachenko)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13077">GITHUB#13077</a>: Add public getter for SynonymQuery#field
+<br /><span class="attrib">(Andrey Bozhko)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13393">GITHUB#13393</a>: Add support for reloading the SPI for KnnVectorsFormat class
+<br /><span class="attrib">(Navneet Verma)</span></li>
+ </ol>
+ </li>
+</ul>
+<h3><a id="v9.10.0" href="javascript:toggleList('v9.10.0')">Release 9.10.0 [2024-02-20]</a></h3>
+<ul id="v9.10.0.list">
+ <li><a id="v9.10.0.api_changes" href="javascript:toggleList('v9.10.0.api_changes')">API Changes</a> (4)
+ <ol id="v9.10.0.api_changes.list">
+ <li><a href="https://github.com/apache/lucene/pull/12243">GITHUB#12243</a>: Mark TermInSetQuery ctors with varargs terms as @Deprecated. SortedSetDocValuesField#newSlowSetQuery,
+SortedDocValuesField#newSlowSetQuery, KeywordField#newSetQuery now take a collection of terms as a param.
+<br /><span class="attrib">(Jakub Slowinski)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/11041">GITHUB#11041</a>: Deprecate IndexSearch#search(Query, Collector) in favor of
+IndexSearcher#search(Query, CollectorManager) for TopFieldCollectorManager
+and TopScoreDocCollectorManager.
+<br /><span class="attrib">(Zach Chen, Adrien Grand, Michael McCandless, Greg Miller, Luca Cavanna)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12854">GITHUB#12854</a>: Mark DrillSideways#createDrillDownFacetsCollector as @Deprecated.
+<br /><span class="attrib">(Greg Miller)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12624">GITHUB#12624</a>, <a href="https://github.com/apache/lucene/pull/12831">GITHUB#12831</a>: Allow FSTCompiler to stream to any DataOutput while building, and
+make compile() only return the FSTMetadata. For on-heap (default) use case, please use
+FST.fromFSTReader(fstMetadata, fstCompiler.getFSTReader()) to create the FST.
+<br /><span class="attrib">(Anh Dung Bui)</span></li>
+ </ol>
+ </li>
+ <li><a id="v9.10.0.new_features" href="javascript:toggleList('v9.10.0.new_features')">New Features</a> (4)
+ <ol id="v9.10.0.new_features.list">
+ <li><a href="https://github.com/apache/lucene/pull/12679">GITHUB#12679</a>: Add support for similarity-based vector searches using [Byte|Float]VectorSimilarityQuery. Uses a new
+VectorSimilarityCollector to find all vectors scoring above a `resultSimilarity` while traversing the HNSW graph till
+better-scoring nodes are available, or the best candidate is below a score of `traversalSimilarity` in the lowest
+level.
+<br /><span class="attrib">(Aditya Prakash, Kaival Parikh)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12829">GITHUB#12829</a>: For indices newly created as of 9.10.0 onwards, IndexWriter preserves document blocks indexed via
+IndexWriter#addDocuments or IndexWriter#updateDocuments also when index sorting is configured. Document blocks are
+maintained alongside their parent documents during sort and merge. IndexWriterConfig accepts a parent field that is used
+to maintain block orders if index sorting is used. Note, this is fully optional in Lucene 9.x while will be mandatory for
+indices that use document blocks together with index sorting as of 10.0.0.
+<br /><span class="attrib">(Simon Willnauer)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12336">GITHUB#12336</a>: Index additional data per facet label in the taxonomy.
+<br /><span class="attrib">(Shai Erera, Egor Potemkin, Mike McCandless,
+Stefan Vodita)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12706">GITHUB#12706</a>: Add support for the final release of Java foreign memory API in Java 22 (and later).
+Lucene's MMapDirectory will now mmap Lucene indexes in chunks of 16 GiB (instead of 1 GiB) starting
+from Java 19. Indexes closed while queries are running can no longer crash the JVM.
+Support for vectorized implementations of VectorUtil based on jdk.incubator.vector APIs was added
+for exactly Java 22. Therefore, applications started with command line parameter
+"java --add-modules jdk.incubator.vector" will automatically use the new vectorized implementations
+if running on a supported platform (Java 20/21/22 on x86 CPUs with AVX2 or later or ARM NEON CPUs).
+This is an opt-in feature and requires explicit Java command line flag! When enabled, Lucene logs
+a notice using java.util.logging. Please test thoroughly and report bugs/slowness to Lucene's mailing
+list.
+<br /><span class="attrib">(Uwe Schindler, Chris Hegarty)</span></li>
+ </ol>
+ </li>
+ <li><a id="v9.10.0.improvements" href="javascript:toggleList('v9.10.0.improvements')">Improvements</a> (7)
+ <ol id="v9.10.0.improvements.list">
+ <li><a href="https://github.com/apache/lucene/pull/12870">GITHUB#12870</a>: Tighten synchronized loop in DirectoryTaxonomyReader#getOrdinal.
+<br /><span class="attrib">(Stefan Vodita)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12812">GITHUB#12812</a>: Avoid overflows and false negatives in int slice buffer filled-with-zeros assertion.
+<br /><span class="attrib">(Stefan Vodita)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12910">GITHUB#12910</a>: Refactor around NeighborArray to make it more self-contained.
+<br /><span class="attrib">(Patrick Zhai)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12999">GITHUB#12999</a>: Use Automaton for SurroundQuery prefix/pattern matching
+<br /><span class="attrib">(Michael Gibney)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13043">GITHUB#13043</a>: Support getMaxScore of ConjunctionScorer for non top level scoring clause.
+<br /><span class="attrib">(Shintaro Murakami)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13055">GITHUB#13055</a>: Make DEFAULT_STOP_TAGS in KoreanPartOfSpeechStopFilter immutable
+<br /><span class="attrib">(Dmitry Cherniachenko)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/888">GITHUB#888</a>: Use native byte order varhandles to spare CPU's byte swapping.
+Tests are running with random byte order to ensure that the order does not affect correctness
+of code. Native order was enabled for LZ4 compression.
+<br /><span class="attrib">(Uwe Schindler)</span></li>
+ </ol>
+ </li>
+ <li><a id="v9.10.0.optimizations" href="javascript:toggleList('v9.10.0.optimizations')">Optimizations</a> (11)
+ <ol id="v9.10.0.optimizations.list">
+ <li><a href="http://issues.apache.org/jira/browse/LUCENE-10366">LUCENE-10366</a>: Override readVInt() and readVLong() in ByteBufferDataInput to help Hotspot inline method.
+<br /><span class="attrib">(Guo Feng)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12839">GITHUB#12839</a>: Introduce method to grow arrays up to a given upper limit and use it to reduce overallocation for
+DirectoryTaxonomyReader#getBulkOrdinals.
+<br /><span class="attrib">(Stefan Vodita)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12841">GITHUB#12841</a>: Move group-varint encoding/decoding logic to DataOutput/DataInput.
+<br /><span class="attrib">(Adrien Grand, Zhang Chao, Uwe Schindler)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12997">GITHUB#12997</a> Avoid reset BlockDocsEnum#freqBuffer when indexHasFreq is false.
+<br /><span class="attrib">(Zhang Chao, Adrien Grand)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12989">GITHUB#12989</a>: Split taxonomy facet arrays across reusable chunks of elements to reduce allocations.
+<br /><span class="attrib">(Michael Froh, Stefan Vodita)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13033">GITHUB#13033</a>: PointRangeQuery now exits earlier on segments whose values
+don't intersect with the query range. When a PointRangeQuery is a required
+clause of a boolean query, this helps save work on other required clauses of
+the same boolean query.
+<br /><span class="attrib">(Adrien Grand)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13026">GITHUB#13026</a>: ReqOptSumScorer will now propagate minimum competitive scores
+to the optional clause if the required clause doesn't score. In practice,
+this will help boolean queries that consist of a mix OF FILTER clauses and
+SHOULD clauses.
+<br /><span class="attrib">(Adrien Grand)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13052">GITHUB#13052</a>: Avoid set.removeAll(list) O(n^2) performance trap in the UpgradeIndexMergePolicy
+<br /><span class="attrib">(Dmitry Cherniachenko)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13036">GITHUB#13036</a> Optimize counts on two clause term disjunctions.
+<br /><span class="attrib">(Adrien Grand, Johannes Fredén)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12962">GITHUB#12962</a>: Speedup concurrent multi-segment HNWS graph search
+<br /><span class="attrib">(Mayya Sharipova, Tom Veasey)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13090">GITHUB#13090</a>: Prevent humongous allocations in ScalarQuantizer when building quantiles.
+<br /><span class="attrib">(Ben Trent)</span></li>
+ </ol>
+ </li>
+ <li><a id="v9.10.0.bug_fixes" href="javascript:toggleList('v9.10.0.bug_fixes')">Bug Fixes</a> (7)
+ <ol id="v9.10.0.bug_fixes.list">
+ <li><a href="https://github.com/apache/lucene/pull/12866">GITHUB#12866</a>: Prevent extra similarity computation for single-level HNSW graphs.
+<br /><span class="attrib">(Kaival Parikh)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12558">GITHUB#12558</a>: Ensure #finish is called on all drill-sideways FacetsCollectors even when no hits are scored.
+<br /><span class="attrib">(Greg Miller)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12920">GITHUB#12920</a>: Address bug in TestDrillSideways#testCollectionTerminated that could occasionally cause the test to
+fail with certain random seeds.
+<br /><span class="attrib">(Greg Miller)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12885">GITHUB#12885</a>: Fixed the bug that JapaneseReadingFormFilter cannot convert some hiragana to romaji.
+<br /><span class="attrib">(Takuma Kuramitsu)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12287">GITHUB#12287</a>: Fix a bug in ShapeTestUtil.
+<br /><span class="attrib">(Heemin Kim)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13031">GITHUB#13031</a>: ScorerSupplier created by QueryProfilerWeight will propagate topLevelScoringClause to the sub ScorerSupplier.
+<br /><span class="attrib">(Shintaro Murakami)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13059">GITHUB#13059</a>: Fixed missing IndicNormalization and DecimalDigit filters in TeluguAnalyzer normalization
+<br /><span class="attrib">(Dmitry Cherniachenko)</span></li>
+ </ol>
+ </li>
+ <li><a id="v9.10.0.build" href="javascript:toggleList('v9.10.0.build')">Build</a> (1)
+ <ol id="v9.10.0.build.list">
+ <li><a href="https://github.com/apache/lucene/pull/12931">GITHUB#12931</a>, <a href="https://github.com/apache/lucene/pull/12936">GITHUB#12936</a>, <a href="https://github.com/apache/lucene/pull/12937">GITHUB#12937</a>: Improve source file validation to detect incorrect
+UTF-8 sequences and forbid U+200B; enable errorprone DisableUnicodeInCode check.
+<br /><span class="attrib">(Robert Muir, Uwe Schindler)</span></li>
+ </ol>
+ </li>
+ <li><a id="v9.10.0.other" href="javascript:toggleList('v9.10.0.other')">Other</a> (5)
+ <ol id="v9.10.0.other.list">
+ <li><a href="https://github.com/apache/lucene/pull/11023">GITHUB#11023</a>: Removing some dead code in CheckIndex.
+<br /><span class="attrib">(Jakub Slowinski)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/11023">GITHUB#11023</a>: Removing @lucene.experimental tags in testXXX methods in CheckIndex.
+<br /><span class="attrib">(Jakub Slowinski)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12934">GITHUB#12934</a>: Cleaning up old references to Lucene/Solr.
+<br /><span class="attrib">(Jakub Slowinski)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12967">GITHUB#12967</a>, <a href="https://github.com/apache/lucene/pull/13038">GITHUB#13038</a>, <a href="https://github.com/apache/lucene/pull/13040">GITHUB#13040</a>, <a href="https://github.com/apache/lucene/pull/13042">GITHUB#13042</a>, <a href="https://github.com/apache/lucene/pull/13047">GITHUB#13047</a>, <a href="https://github.com/apache/lucene/pull/13048">GITHUB#13048</a>, <a href="https://github.com/apache/lucene/pull/13049">GITHUB#13049</a>, <a href="https://github.com/apache/lucene/pull/13050">GITHUB#13050</a>, <a href="https://github.com/apache/lucene/pull/13051">GITHUB#13051</a>, <a href="https://github.com/apache/lucene/pull/13039">GITHUB#13039</a>:
+Code cleanups and optimizations.
+<br /><span class="attrib">(Dmitry Cherniachenko)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13053">GITHUB#13053</a>: Minor AnyQueryNode code cleanup
+<br /><span class="attrib">(Dmitry Cherniachenko)</span></li>
+ </ol>
+ </li>
+</ul>
+<h3><a id="v9.9.2" href="javascript:toggleList('v9.9.2')">Release 9.9.2 [2024-01-29]</a></h3>
+<ul id="v9.9.2.list">
+ <li><a id="v9.9.2.bug_fixes" href="javascript:toggleList('v9.9.2.bug_fixes')">Bug Fixes</a> (2)
+ <ol id="v9.9.2.bug_fixes.list">
+ <li><a href="https://github.com/apache/lucene/pull/13027">GITHUB#13027</a>: Fix NPE when sampling for quantization in Lucene99HnswScalarQuantizedVectorsFormat
+<br /><span class="attrib">(Ben Trent)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/13014">GITHUB#13014</a>: Rollback the tmp storage of BytesRefHash to -1 after sort
+<br /><span class="attrib">(Guo Feng)</span></li>
+ </ol>
+ </li>
+</ul>
+<h3><a id="v9.9.1" href="javascript:toggleList('v9.9.1')">Release 9.9.1 [2023-12-16]</a></h3>
+<ul id="v9.9.1.list">
+ <li><a id="v9.9.1.bug_fixes" href="javascript:toggleList('v9.9.1.bug_fixes')">Bug Fixes</a> (2)
+ <ol id="v9.9.1.bug_fixes.list">
+ <li><a href="https://github.com/apache/lucene/pull/12898">GITHUB#12898</a>: JVM SIGSEGV crash when compiling computeCommonPrefixLengthAndBuildHistogram
+<br /><span class="attrib">(Chris Hegarty)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12900">GITHUB#12900</a>: Push and pop OutputAccumulator as IntersectTermsEnumFrames are pushed and popped
+<br /><span class="attrib">(Guo Feng, Mike McCandless)</span></li>
+ </ol>
+ </li>
+</ul>
+<h3><a id="v9.9.0" href="javascript:toggleList('v9.9.0')">Release 9.9.0 [2023-12-04]</a></h3>
+<ul id="v9.9.0.list">
+ <li><a id="v9.9.0.api_changes" href="javascript:toggleList('v9.9.0.api_changes')">API Changes</a> (13)
+ <ol id="v9.9.0.api_changes.list">
+ <li><a href="https://github.com/apache/lucene/pull/12578">GITHUB#12578</a>: Deprecate IndexSearcher#getExecutor in favour of executing concurrent tasks using
+the TaskExecutor that the searcher holds, retrieved via IndexSearcher#getTaskExecutor
+<br /><span class="attrib">(Luca Cavanna)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12556">GITHUB#12556</a>: StoredFieldVisitor has a new expert method StoredFieldVisitor#binaryField(FieldInfo, DataInput, int)
+that allows implementors to read binary values directly from the DataInput without having to allocate a byte[].
+The default implementation allocates an ew byte array and call StoredFieldVisitor#binaryField(FieldInfo, byte[]).
+<br /><span class="attrib">(Ignacio Vera)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12592">GITHUB#12592</a>: Add RandomAccessInput#length method to the RandomAccessInput interface. In addition deprecate
+ByteBuffersDataInput#size in favour of this new method.
+<br /><span class="attrib">(Ignacio Vera)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12718">GITHUB#12718</a>: Make IndexSearcher#getSlices final as it is not expected to be overridden
+<br /><span class="attrib">(Luca Cavanna)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12427">GITHUB#12427</a>: Automata#makeStringUnion #makeBinaryStringUnion now accept Iterable<BytesRef> instead of
+Collection<BytesRef>. They also now explicitly throw IllegalArgumentException if input data is not properly sorted
+instead of relying on assert.
+<br /><span class="attrib">(Shubham Chaudhary)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12180">GITHUB#12180</a>: Add TaxonomyReader#getBulkOrdinals method to more efficiently retrieve facet ordinals for multiple
+FacetLabel at once.
+<br /><span class="attrib">(Egor Potemkin)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12816">GITHUB#12816</a>: Add HumanReadableQuery which takes a description parameter for debugging purposes.
+<br /><span class="attrib">(Jakub Slowinski)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12646">GITHUB#12646</a>, <a href="https://github.com/apache/lucene/pull/12690">GITHUB#12690</a>: Move FST#addNode to FSTCompiler to avoid a circular dependency
+between FST and FSTCompiler
+<br /><span class="attrib">(Anh Dung Bui)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12709">GITHUB#12709</a>: Consolidate FSTStore and BytesStore in FST. Created FSTReader which contains the common methods
+of the two
+<br /><span class="attrib">(Anh Dung Bui)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12735">GITHUB#12735</a>: Remove FSTCompiler#getTermCount() and FSTCompiler.UnCompiledNode#inputCount
+<br /><span class="attrib">(Anh Dung Bui)</span></li>
+ <li>GITHUB-12695: Remove public constructor of FSTCompiler. Please use FSTCompiler.Builder
+instead.
+<br /><span class="attrib">(Juan M. Caicedo)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12799">GITHUB#12799</a>: Make TaskExecutor constructor public and use TaskExecutor for concurrent
+HNSW graph build.
+<br /><span class="attrib">(Shubham Chaudhary)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12758">GITHUB#12758</a>, <a href="https://github.com/apache/lucene/pull/12803">GITHUB#12803</a>: Remove FST constructor with DataInput for metadata. Please
+use the constructor with FSTMetadata instead.
+<br /><span class="attrib">(Anh Dung Bui)</span></li>
+ </ol>
+ </li>
+ <li><a id="v9.9.0.new_features" href="javascript:toggleList('v9.9.0.new_features')">New Features</a> (5)
+ <ol id="v9.9.0.new_features.list">
+ <li><a href="https://github.com/apache/lucene/pull/12548">GITHUB#12548</a>: Added similarityToQueryVector API to compute vector similarity scores
+with DoubleValuesSource.
+<br /><span class="attrib">(Shubham Chaudhary)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12685">GITHUB#12685</a>: Lucene now records if documents have been indexed as blocks in SegmentInfo. This is recorded on a per
+segment basis and maintained across merges. The property is exposed via LeafReaderMetadata.
+<br /><span class="attrib">(Simon Willnauer)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12582">GITHUB#12582</a>: Add int8 scalar quantization to the HNSW vector format. This optionally allows for more compact lossy
+storage for the vectors, requiring about 75% memory for fast HNSW search.
+<br /><span class="attrib">(Ben Trent)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12660">GITHUB#12660</a>: HNSW graph now can be merged with multiple thread. Configurable in Lucene99HnswVectorsFormat.
+<br /><span class="attrib">(Patrick Zhai)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12729">GITHUB#12729</a>: Add new Lucene99FlatVectorsFormat for writing vectors in a flat format and refactor
+Lucene99HnswVectorsFormat to reuse the flat format. Added new Lucene99HnswQuantizedVectorsFormat that uses
+quantized vectors for its flat storage.
+<br /><span class="attrib">(Ben Trent)</span></li>
+ </ol>
+ </li>
+ <li><a id="v9.9.0.improvements" href="javascript:toggleList('v9.9.0.improvements')">Improvements</a> (16)
+ <ol id="v9.9.0.improvements.list">
+ <li><a href="https://github.com/apache/lucene/pull/12523">GITHUB#12523</a>: TaskExecutor waits for all tasks to complete before returning when Exceptions
+are thrown during concurrent operations
+<br /><span class="attrib">(Michael Peterson)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12574">GITHUB#12574</a>: Make TaskExecutor public so that it can be retrieved from the searcher and used
+outside of the o.a.l.search package
+<br /><span class="attrib">(Luca Cavanna)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12603">GITHUB#12603</a>: Simplify the TaskExecutor API by exposing a single invokeAll method that takes a
+collection of callables, executes them and returns their results
+<br /><span class="attrib">(Luca Cavanna)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12606">GITHUB#12606</a>: Create a TaskExecutor when an executor is not provided to the IndexSearcher, in
+order to simplify consumer's code
+<br /><span class="attrib">(Luca Cavanna)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12676">GITHUB#12676</a>: Improve logging of vector support if vector module was enabled but Java version
+is too old. It also logs partial vectorization support if old CPU or disabled AVX.
+<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12677">GITHUB#12677</a>: Better detect vector module in non-default setups (e.g., custom module layers).
+<br /><span class="attrib">(Uwe Schindler)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12634">GITHUB#12634</a>, <a href="https://github.com/apache/lucene/pull/12632">GITHUB#12632</a>, <a href="https://github.com/apache/lucene/pull/12680">GITHUB#12680</a>, <a href="https://github.com/apache/lucene/pull/12681">GITHUB#12681</a>, <a href="https://github.com/apache/lucene/pull/12731">GITHUB#12731</a>, <a href="https://github.com/apache/lucene/pull/12737">GITHUB#12737</a>: Speed up
+Panama vector support and test improvements.
+<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12586">GITHUB#12586</a>: Remove over-counting of deleted terms.
+<br /><span class="attrib">(Guo Feng)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12705">GITHUB#12705</a>, <a href="https://github.com/apache/lucene/pull/12705">GITHUB#12705</a>, <a href="https://github.com/apache/lucene/pull/12785">GITHUB#12785</a>: Improve handling of NullPointerException and
+IllegalStateException in MMapDirectory's IndexInputs. Also makes sure to close master
+MemorySegmentIndexInput while not throwing IllegalStateException (retry in spin loop).
+Also improve TestMmapDirectory.testAceWithThreads to run faster and use less resources.
+<br /><span class="attrib">(Uwe Schindler, Maurizio Cimadamore, Michael Sokolov)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12689">GITHUB#12689</a>: TaskExecutor to cancel all tasks on exception to avoid needless computation.
+<br /><span class="attrib">(Luca Cavanna)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12754">GITHUB#12754</a>: Refactor lookup of Hotspot VM options and do not initialize constants with NULL
+if SecurityManager prevents access.
+<br /><span class="attrib">(Uwe Schindler)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12801">GITHUB#12801</a>: Remove possible contention on a ReentrantReadWriteLock in
+Monitor which could result in searches waiting for commits.
+<br /><span class="attrib">(Davis Cook)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/11277">GITHUB#11277</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-10241">LUCENE-10241</a>: Upgrade to OpenNLP to 1.9.4.
+<br /><span class="attrib">(Jeff Zemerick)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12542">GITHUB#12542</a>: FSTCompiler can now approximately limit how much RAM it uses to share
+suffixes during FST construction using the suffixRAMLimitMB method. Larger values
+result in a more minimal FST (more common suffixes are shard). Pass
+Double.POSITIVE_INFINITY to use as much RAM as is needed to create a purely
+minimal FST. Inspired by this Rust FST implemention:
+<a href="https://blog.burntsushi.net/transducers">https://blog.burntsushi.net/transducers</a>
+<br /><span class="attrib">(Mike McCandless)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12738">GITHUB#12738</a>: NodeHash now stores the FST nodes data instead of just node addresses
+<br /><span class="attrib">(Anh Dung Bui)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12847">GITHUB#12847</a>: Test2BFST now reports the time it took to build the FST and the real FST size
+<br /><span class="attrib">(Anh Dung Bui)</span></li>
+ </ol>
+ </li>
+ <li><a id="v9.9.0.optimizations" href="javascript:toggleList('v9.9.0.optimizations')">Optimizations</a> (26)
+ <ol id="v9.9.0.optimizations.list">
+ <li><a href="https://github.com/apache/lucene/pull/12183">GITHUB#12183</a>: Make TermStates#build concurrent.
+<br /><span class="attrib">(Shubham Chaudhary)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12573">GITHUB#12573</a>: Use radix sort to speed up the sorting of deleted terms.
+<br /><span class="attrib">(Guo Feng)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12382">GITHUB#12382</a>: Faster top-level conjunctions on term queries when sorting by
+descending score.
+<br /><span class="attrib">(Adrien Grand)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12591">GITHUB#12591</a>: Use stable radix sort to speed up the sorting of update terms.
+<br /><span class="attrib">(Guo Feng)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12587">GITHUB#12587</a>: Use radix sort to speed up the sorting of terms in TermInSetQuery.
+<br /><span class="attrib">(Guo Feng)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12604">GITHUB#12604</a>: Estimate the block size of FST BytesStore in BlockTreeTermsWriter
+to reduce GC load during indexing.
+<br /><span class="attrib">(Guo Feng)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12623">GITHUB#12623</a>: Use a MergeSorter taking advantage of extra storage for StableMSBRadixSorter.
+<br /><span class="attrib">(Guo Feng)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12631">GITHUB#12631</a>: Write MSB VLong for better outputs sharing in block tree index, decreasing ~14% size
+of .tip file.
+<br /><span class="attrib">(Guo Feng)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12668">GITHUB#12668</a>: ImpactsEnums now decode frequencies lazily like PostingsEnums.
+<br /><span class="attrib">(Adrien Grand)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12651">GITHUB#12651</a>: Use 2d array for OnHeapHnswGraph representation.
+<br /><span class="attrib">(Patrick Zhai)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12653">GITHUB#12653</a>: Optimize computing number of levels in MultiLevelSkipListWriter#bufferSkip.
+<br /><span class="attrib">(Shubham Chaudhary)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12589">GITHUB#12589</a>: Disjunctions now sometimes run as conjunctions when the minimum
+competitive score requires multiple clauses to match.
+<br /><span class="attrib">(Adrien Grand)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12710">GITHUB#12710</a>: Use Arrays#mismatch for Outputs#common operations.
+<br /><span class="attrib">(Guo Feng)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12712">GITHUB#12712</a>: Speed up sorting postings file with an offline radix sorter in BPIndexReader.
+<br /><span class="attrib">(Guo Feng)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12702">GITHUB#12702</a>: Disable suffix sharing for block tree index, making writing the terms dictionary index faster
+and less RAM hungry, while making the index a bit (~1.X% for the terms index file on wikipedia).
+<br /><span class="attrib">(Guo Feng, Mike McCandless)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12726">GITHUB#12726</a>: Return the same input vector if its a unit vector in VectorUtil#l2normalize.
+<br /><span class="attrib">(Shubham Chaudhary)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12719">GITHUB#12719</a>: Top-level conjunctions that are not sorted by score now have a
+specialized bulk scorer.
+<br /><span class="attrib">(Adrien Grand)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12696">GITHUB#12696</a>: Change Postings back to using FOR in Lucene99PostingsFormat. Freqs, positions and offset keep using PFOR.
+<br /><span class="attrib">(Jakub Slowinski)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/1052">GITHUB#1052</a>: Faster merging of terms enums.
+<br /><span class="attrib">(Adrien Grand)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/11903">GITHUB#11903</a>: Faster sort on high-cardinality string fields.
+<br /><span class="attrib">(Adrien Grand)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12381">GITHUB#12381</a>: Skip docs with DocValues in NumericLeafComparator.
+<br /><span class="attrib">(Lu Xugang, Adrien Grand)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12784">GITHUB#12784</a>: Cache buckets to speed up BytesRefHash#sort.
+<br /><span class="attrib">(Guo Feng)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12806">GITHUB#12806</a>: Utilize exact kNN search when gathering k >= numVectors in a segment
+<br /><span class="attrib">(Ben Trent)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12782">GITHUB#12782</a>: Use group-varint encoding for the tail of postings.
+<br /><span class="attrib">(Adrien Grand, Zhang Chao)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12748">GITHUB#12748</a>: Specialize arc store for continuous label in FST.
+<br /><span class="attrib">(Guo Feng, Chao Zhang)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12825">GITHUB#12825</a>, <a href="https://github.com/apache/lucene/pull/12834">GITHUB#12834</a>: Hunspell: improved dictionary loading performance, allowed in-memory entry sorting.
+<br /><span class="attrib">(Peter Gromov)</span></li>
+ </ol>
+ </li>
+ <li><a id="v9.9.0.changes_in_runtime_behavior" href="javascript:toggleList('v9.9.0.changes_in_runtime_behavior')">Changes in runtime behavior</a> (3)
+ <ol id="v9.9.0.changes_in_runtime_behavior.list">
+ <li><a href="https://github.com/apache/lucene/pull/12569">GITHUB#12569</a>: Prevent concurrent tasks from parallelizing execution further which could cause deadlock
+<br /><span class="attrib">(Luca Cavanna)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12765">GITHUB#12765</a>: Disable vectorization on VMs that are not Hotspot-based.
+<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12552">GITHUB#12552</a>: Make FSTPostingsFormat load FSTs off-heap.
+<br /><span class="attrib">(Tony X)</span></li>
+ </ol>
+ </li>
+ <li><a id="v9.9.0.bug_fixes" href="javascript:toggleList('v9.9.0.bug_fixes')">Bug Fixes</a> (11)
+ <ol id="v9.9.0.bug_fixes.list">
+ <li><a href="https://github.com/apache/lucene/pull/12654">GITHUB#12654</a>: TestIndexWriterOnVMError.testUnknownError times out (fixes potential IndexWriter
+deadlock with tragic exceptions).
+<br /><span class="attrib">(Benjamin Trent, Dawid Weiss, Simon Willnauer)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12614">GITHUB#12614</a>: Make LRUQueryCache respect Accountable queries on eviction and consistency check
+<br /><span class="attrib">(Grigoriy Troitskiy)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/11556">GITHUB#11556</a>: HTMLStripCharFilter fails on '>' or '<' characters in attribute values.
+<br /><span class="attrib">(Elliot Lin)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12698">GITHUB#12698</a>: Fix IndexOutOfBoundsException when saving FSTStore-backed FST with different DataOutput for metadata
+<br /><span class="attrib">(Anh Dung Bui)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12642">GITHUB#12642</a>: Ensure #finish only gets called once on the base collector during drill-sideways
+<br /><span class="attrib">(Greg Miller)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12682">GITHUB#12682</a>: Scorer should sum up scores into a double.
+<br /><span class="attrib">(Shubham Chaudhary)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12727">GITHUB#12727</a>: Ensure negative scores are not returned by vector similarity functions
+<br /><span class="attrib">(Ben Trent)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12736">GITHUB#12736</a>: Fix NullPointerException when Monitor.getQuery cannot find the requested queryId
+<br /><span class="attrib">(Davis Cook)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12770">GITHUB#12770</a>: Stop exploring HNSW graph if scores are not getting better.
+<br /><span class="attrib">(Ben Trent)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12640">GITHUB#12640</a>: Ensure #finish is called on all drill-sideways collectors even if one throws a
+CollectionTerminatedException
+<br /><span class="attrib">(Greg Miller)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12626">GITHUB#12626</a>: Fix segmentInfos replace to set userData
+<br /><span class="attrib">(Shibi Balamurugan, Uwe Schindler, Marcus Eagan, Michael Froh)</span></li>
+ </ol>
+ </li>
+ <li><a id="v9.9.0.build" href="javascript:toggleList('v9.9.0.build')">Build</a> (5)
+ <ol id="v9.9.0.build.list">
+ <li><a href="https://github.com/apache/lucene/pull/12752">GITHUB#12752</a>: tests.multiplier could be omitted in test failure reproduce lines (esp. in
+nightly mode).
+<br /><span class="attrib">(Dawid Weiss)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12742">GITHUB#12742</a>: JavaCompile tasks may be in up-to-date state when modular dependencies have changed
+leading to odd runtime errors
+<br /><span class="attrib">(Chris Hostetter, Dawid Weiss)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12612">GITHUB#12612</a>: Upgrade forbiddenapis to version 3.6 and ASM for APIJAR extraction to 9.6.
+<br /><span class="attrib">(Uwe Schindler)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12655">GITHUB#12655</a>: Upgrade to Gradle 8.4
+<br /><span class="attrib">(Kevin Risden)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12845">GITHUB#12845</a>: Only enable support for tests.profile if jdk.jfr module is available
+in Gradle runtime.
+<br /><span class="attrib">(Uwe Schindler)</span></li>
+ </ol>
+ </li>
+ <li><a id="v9.9.0.other" href="javascript:toggleList('v9.9.0.other')">Other</a> (5)
+ <ol id="v9.9.0.other.list">
+ <li><a href="https://github.com/apache/lucene/pull/12817">GITHUB#12817</a>: Add demo for faceting with StringValueFacetCounts over KeywordField and SortedDocValuesField.
+<br /><span class="attrib">(Stefan Vodita)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12657">GITHUB#12657</a>: Internal refactor of HNSW graph merging
+<br /><span class="attrib">(Ben Trent)</span>.
+<p>
+</li>
+ <li><a href="https://github.com/apache/lucene/pull/12625">GITHUB#12625</a>: Refactor ByteBlockPool so it is just a "shift/mask big array".
+<br /><span class="attrib">(Ignacio Vera)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/6675">GITHUB#6675</a>: Various improvements related to ByteBlockPool. Slice functionality on top of ByteBlockPool moved to its
+own class, ByteSlicePool. ByteBlockPool's array of buffers is made private. There are new exceptions for buffer index
+overflows and slices that are too large. Some bits of code are simplified. Documentation is updated and expanded.
+<br /><span class="attrib">(Stefan Vodita)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12762">GITHUB#12762</a>: Refactor BKD HeapPointWriter to hide the internal data structure.
+<br /><span class="attrib">(Ignacio Vera)</span></li>
+ </ol>
+ </li>
+</ul>
+<h3><a id="v9.8.0" href="javascript:toggleList('v9.8.0')">Release 9.8.0 [2023-09-28]</a></h3>
+<ul id="v9.8.0.list">
+ <li><a id="v9.8.0.api_changes" href="javascript:toggleList('v9.8.0.api_changes')">API Changes</a> (3)
+ <ol id="v9.8.0.api_changes.list">
+ <li><a href="https://github.com/apache/lucene/pull/12554">GITHUB#12554</a>: Allow FilteredDocIdSetIterator.match(doc) to throw IOException
+<br /><span class="attrib">(Gokul Manoj)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/11248">GITHUB#11248</a>: IntBlockPool's SliceReader, SliceWriter, and all int slice functionality are moved out to MemoryIndex.
+<br /><span class="attrib">(Stefan Vodita)</span></li>
+ <li><a href="https://github.com/apache/lucene/pull/12436">GITHUB#12436</a>: Move max vector dims limit to Codec
+<br /><span class="attrib">(Mayya Sharipova)</span></li>
+ </ol>
+ </li>
+ <li><a id="v9.8.0.new_features" href="javascript:toggleList('v9.8.0.new_features')">New Features</a> (6)
+ <ol id="v9.8.0.new_features.list">
+ <li><a href="https://github.com/apache/lucene/pull/12380">GITHUB#12380</a>: Introduced LeafCollector#finish, a hook that runs after
+collection has finished running on a leaf.
+<br /><span class="attrib">(Adrien Grand)</span></li>
[... 19815 lines stripped ...]