You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ju...@apache.org on 2023/02/13 22:08:08 UTC

[lucene] branch jtibshirani/max-score updated (b2b2fd828ad -> ca0e4d967cf)

This is an automated email from the ASF dual-hosted git repository.

julietibs pushed a change to branch jtibshirani/max-score
in repository https://gitbox.apache.org/repos/asf/lucene.git


 discard b2b2fd828ad Simplify max score for kNN vector queries
     add e14327288e6 Documenting that IndexReaderContext#leaves() will never return a null value and remove the null checks from the method calls (#12034)
     add cc29102a24a Create new KnnByteVectorField and KnnVectorsReader#getByteVectorValues(String) (#12064)
     add 56ec51e558c Cut over Lucene Demo from LongPoint to LongField. (#12052)
     add a8ef03d9799 Never throttle creation of compound files. (#12070)
     add d3d9ab0044b Drop wrong assertion in TestBooleanQuery.testQueryMatchesCount (#12051)
     add 84778549afa Allow reusing indexed binary fields. (#12053)
     add 525a11091ca Revert "Allow reusing indexed binary fields. (#12053)"
     add 9ab324d2bed Allow reusing indexed binary fields. (#12053)
     add 59b17452aaf Fix exponential runtime for Boolean#rewrite (#12072)
     add 729fedcbac6 Speed up 1D BKD merging. (#12079)
     add aaab028266d Speed up DocIdMerger on sorted indexes. (#12081)
     add 102622842bf Enhance XXXField#newRangeQuery (#12078)
     add 90a5a714483 fix typo in changelog
     add b5062a28581 MultiCollector shouldn't report that scores are needed when they're not. (#12083)
     add 8ca05967e8f remove non-NRT replication support (#12038)
     add e06f8c2e8b8 Update to error-prone 2.17 (#12056)
     add 4f33aa85152 Upgrade to errorprone 2.18 (#12086)
     add fc7b937affe Don't throw UOE when highlighting FieldExistsQuery (#12088)
     add 4fe8424925c Graduate DocValuesNumbersQuery from lucene/sandbox to newSlowSetQuery() (#12087)
     add 318b002e0b9 fix typo in KoreanNumberFilter (#12045)
     add dc33ade76d3 Remove UTF8TaxonomyWriterCache (#12092)
     add a9fd21b6afa Same bound with fallbackQuery (#12084)
     add fa5dcbad9fb update releaseWizard.py to support offline gpg key (#12085)
     add 519adcc9548 Fix failure in TestIndexSortSortedNumericDocValuesRangeQuery.testCountBoundary (#12098)
     add 9007f746a39 WordBreakSpellChecker now correctly respects maxEvaluations (#12077)
     add 77eca4bb388 Introduce getters for KnnVectorQuery(#12029)
     add de94fa97fb7 Remove binaryValue() on VectorValues and ByteVectorValues. (#12101)
     add f8ee8526968 add missing changelog for #12064
     add 45944002161 Replace BytesRef usages in byte vectors API with byte[] (#12102)
     add f5bd28662f8 Remove BytesRef usage from SortingCodeReader
     add 832552e0ac6 buildAndPushRelease should optionally pause before assembleRelease (#12095)
     add d4006c0362a remove username from MANIFEST.MF in build artifacts (#12096)
     add 92e67ec626b Rename vector float classes and methods (#12105)
     add 25623a63bf2 format changelog entry and add missing author name
     add ce8eaf138c4 MemoryIndex should not fail integer fields that enable doc values. (#12109)
     add 95e2cfcc1e6 Remove deprecated float vector classes and methods (#12107)
     add 5a51ce1d5d4 SimpleText codec to support writing byte vectors (#12111)
     add d1fa52e62f0 Fix flaky TestHnswByteVectorGraph.testSortedAndUnsortedIndicesReturnSameResults test (#12110)
     add 72c8b334a00 Add missing LUCENE_9_5_0 version
     add 59da15b0e56 Add minor version 9.6.0
     add 2bd87b79090 Fix formatting of Version.java
     add 102a4de32f4 DOAP changes for release 9.5.0
     add 73e2ae2705e Add back-compat indices for 9.5.0
     add d7d07c453f9 Release wizard: update folder name in stage artifacts command (#12117)
     add ce433e54491 Remove VectorUtil#toBytesRef (#12121)
     add 57397f0caba Adjust return type for VectorUtil methods (#12122)
     add f9cb6a3b42f GITHUB-11868: Add FilterIndexInput and FilterIndexOutput wrapper classes (#11958)
     add 5acca826330 Reduce bloom filter size by using the optimal count for hash functions. (#11900)
     add d591c9c37ad Always generate a polygon that has no self intersections (#12124)
     add 4bbc273a437 Add `FeatureQuery` weight caching in non-scoring case (#12118)
     add c2bef381d1e Fix TestFeatureField#testBasicsNonScoringCase test (#12130)
     add 96136b42821 Improve document API for stored fields. (#12116)
     add 684f31ef06d Fix ambiguous links. (#12116)
     add a6bceb7cf00 Remove useless abstractions in DocValues-based queries (#12127)
     add 10d9c7440b9 Speed up docvalues set query by making use of sortedness (#12128)
     add 0bc41356955 Speedup sandbox/DocValuesTermsQuery (#12129)
     add 02b202866c6 Add CHANGES.txt for #12129
     add 8564da434d8 Generate gradle.properties from gradlew (#12131)
     add 57403e26e05 Simplify LongHashSet by completely removing java.util.Set APIs (#12133)
     add bc09c2a0d97 Add tests for size() and contains() to LongHashSet; fix size bug with MISSING (#12134)
     add 8b572f074e4 Fix nightly compatibility tests after #12116.
     add d69326408ce Fix javadoc references.
     add ab074d54839 Introduce a new `KeywordField`. (#12054)
     add 776149f0f69 Reuse HNSW graph for intialization during merge (#12050)
     add f38d51ee89b Don't wrap readers when checking for term vector access in test (#12136)
     add 7baa01b3c2f Force merge into a single segment before getting the directory reader (#12138)
     new ca0e4d967cf Simplify max score for kNN vector queries

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (b2b2fd828ad)
            \
             N -- N -- N   refs/heads/jtibshirani/max-score (ca0e4d967cf)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .github/workflows/distribution.yml                 |   3 -
 .github/workflows/gradle-precommit.yml             |  10 +-
 .github/workflows/hunspell.yml                     |   3 -
 NOTICE.txt                                         |   3 -
 .../lucene/gradle/GradlePropertiesGenerator.java   |  72 +++
 dev-tools/doap/lucene.rdf                          |   8 +
 dev-tools/scripts/buildAndPushRelease.py           |   9 +-
 dev-tools/scripts/releaseWizard.py                 |   4 +-
 dev-tools/scripts/releaseWizard.yaml               |   4 +-
 dev-tools/scripts/smokeTestRelease.py              |   3 -
 gradle/generation/local-settings.gradle            |  81 +--
 gradle/java/jar-manifest.gradle                    |   2 +-
 gradle/template.gradle.properties                  | 106 ++++
 gradle/validation/error-prone.gradle               |  12 +-
 gradle/validation/gradlew-scripts-tweaked.gradle   |   4 +-
 gradlew                                            |  13 +-
 gradlew.bat                                        |  15 +-
 help/localSettings.txt                             |  60 +-
 lucene/CHANGES.txt                                 |  99 ++-
 lucene/MIGRATE.md                                  |   9 +
 .../miscellaneous/TestFixBrokenOffsetsFilter.java  |  10 +-
 .../lucene/analysis/ko/KoreanNumberFilter.java     |  10 +-
 .../lucene90/Lucene90HnswGraphBuilder.java         |  17 +-
 .../lucene90/Lucene90HnswVectorsReader.java        |  52 +-
 .../lucene90/Lucene90OnHeapHnswGraph.java          |   2 +-
 .../lucene91/Lucene91HnswVectorsReader.java        |  56 +-
 .../lucene91/Lucene91OnHeapHnswGraph.java          |   4 +-
 .../lucene92/Lucene92HnswVectorsReader.java        |  21 +-
 ...orValues.java => OffHeapFloatVectorValues.java} |  62 +-
 .../lucene94/ExpandingVectorValues.java            |  49 --
 .../lucene94/Lucene94HnswVectorsReader.java        |  45 +-
 ...torValues.java => OffHeapByteVectorValues.java} |  80 +--
 ...orValues.java => OffHeapFloatVectorValues.java} |  62 +-
 .../store/EndiannessReverserIndexInput.java        |  90 +--
 .../store/EndiannessReverserIndexOutput.java       |  67 +-
 .../store/EndiannessReverserUtil.java              |   4 +-
 .../Lucene50CompressingStoredFieldsWriter.java     |  96 ++-
 .../lucene90/Lucene90HnswVectorsWriter.java        |  37 +-
 .../lucene91/Lucene91HnswGraphBuilder.java         |  17 +-
 .../lucene91/Lucene91HnswVectorsWriter.java        |  35 +-
 .../lucene92/Lucene92HnswVectorsWriter.java        |  44 +-
 .../lucene94/Lucene94HnswVectorsWriter.java        | 164 +++--
 .../backward_index/TestBackwardsCompatibility.java |  21 +-
 .../lucene/backward_index/index.9.5.0-cfs.zip      | Bin 0 -> 17679 bytes
 .../lucene/backward_index/index.9.5.0-nocfs.zip    | Bin 0 -> 17703 bytes
 .../apache/lucene/backward_index/sorted.9.5.0.zip  | Bin 0 -> 139941 bytes
 .../lucene/codecs/bloom/BloomFilterFactory.java    |   4 +-
 .../codecs/bloom/BloomFilteringPostingsFormat.java |  13 +-
 .../codecs/bloom/DefaultBloomFilterFactory.java    |   2 +-
 .../org/apache/lucene/codecs/bloom/FuzzySet.java   | 129 ++--
 .../apache/lucene/codecs/bloom/HashFunction.java   |   2 +-
 .../apache/lucene/codecs/bloom/MurmurHash2.java    | 101 ---
 .../apache/lucene/codecs/bloom/MurmurHash64.java   |  85 +++
 .../simpletext/SimpleTextKnnVectorsReader.java     | 180 ++++--
 .../simpletext/SimpleTextKnnVectorsWriter.java     |  39 +-
 .../simpletext/SimpleTextStoredFieldsWriter.java   | 140 ++--
 .../lucene/codecs/BufferingKnnVectorsWriter.java   | 343 ++++++----
 .../lucene/codecs/KnnFieldVectorsWriter.java       |   2 +-
 .../org/apache/lucene/codecs/KnnVectorsFormat.java |  15 +-
 .../org/apache/lucene/codecs/KnnVectorsReader.java |  19 +-
 .../org/apache/lucene/codecs/KnnVectorsWriter.java | 242 +++++--
 .../apache/lucene/codecs/StoredFieldsWriter.java   | 120 ++--
 .../Lucene90CompressingStoredFieldsWriter.java     |  96 ++-
 .../codecs/lucene95/ExpandingVectorValues.java     |  47 --
 .../codecs/lucene95/Lucene95HnswVectorsReader.java |  45 +-
 .../codecs/lucene95/Lucene95HnswVectorsWriter.java | 340 ++++++++--
 ...torValues.java => OffHeapByteVectorValues.java} |  80 +--
 ...orValues.java => OffHeapFloatVectorValues.java} |  72 +--
 .../codecs/perfield/PerFieldKnnVectorsFormat.java  |  20 +-
 .../org/apache/lucene/document/DoubleField.java    |  65 +-
 .../org/apache/lucene/document/FeatureQuery.java   |   9 +
 .../src/java/org/apache/lucene/document/Field.java |  77 ++-
 .../java/org/apache/lucene/document/FieldType.java |   8 +-
 .../org/apache/lucene/document/FloatField.java     |  65 +-
 .../java/org/apache/lucene/document/IntField.java  |  81 ++-
 .../org/apache/lucene/document/KeywordField.java   | 188 ++++++
 ...KnnVectorField.java => KnnByteVectorField.java} | 114 +---
 ...nnVectorField.java => KnnFloatVectorField.java} | 103 +--
 .../java/org/apache/lucene/document/LongField.java |  76 ++-
 .../org/apache/lucene/document}/LongHashSet.java   | 116 ++--
 .../lucene/document/NumericDocValuesField.java     |  43 +-
 .../lucene/document/SortedDocValuesField.java      |  23 +-
 .../document/SortedNumericDocValuesField.java      |  45 +-
 .../document/SortedNumericDocValuesRangeQuery.java |  15 +-
 ...ry.java => SortedNumericDocValuesSetQuery.java} |  90 ++-
 .../lucene/document/SortedSetDocValuesField.java   |  25 +-
 .../document/SortedSetDocValuesRangeQuery.java     |  17 +-
 .../document/SortedSetDocValuesSetQuery.java       | 209 ++++++
 .../org/apache/lucene/document/StoredValue.java    | 190 ++++++
 .../org/apache/lucene/document/StringField.java    |  33 +
 .../java/org/apache/lucene/document/TextField.java |  22 +
 .../{VectorValues.java => ByteVectorValues.java}   |  23 +-
 .../java/org/apache/lucene/index/CheckIndex.java   | 160 +++--
 .../java/org/apache/lucene/index/CodecReader.java  |  25 +-
 .../java/org/apache/lucene/index/DocIDMerger.java  |  21 +-
 .../apache/lucene/index/DocValuesLeafReader.java   |  10 +-
 .../lucene/index/ExitableDirectoryReader.java      | 113 +++-
 .../java/org/apache/lucene/index/FieldInfos.java   |   2 +-
 .../org/apache/lucene/index/FilterLeafReader.java  |  11 +-
 .../apache/lucene/index/FilterVectorValues.java    |  70 --
 .../{VectorValues.java => FloatVectorValues.java}  |  21 +-
 .../apache/lucene/index/IndexReaderContext.java    |   3 +-
 .../java/org/apache/lucene/index/IndexWriter.java  |   5 +-
 .../org/apache/lucene/index/IndexableField.java    |   7 +
 .../org/apache/lucene/index/IndexingChain.java     |  33 +-
 .../java/org/apache/lucene/index/LeafReader.java   |  17 +-
 .../apache/lucene/index/ParallelLeafReader.java    |  14 +-
 .../org/apache/lucene/index/PrefixCodedTerms.java  |   2 +-
 .../lucene/index/SlowCodecReaderWrapper.java       |  12 +-
 .../apache/lucene/index/SortingCodecReader.java    | 102 +--
 .../lucene/index/SortingStoredFieldsConsumer.java  |  81 +--
 .../apache/lucene/index/StoredFieldsConsumer.java  |  26 +-
 .../java/org/apache/lucene/index/TermStates.java   |   8 +-
 .../lucene/index/VectorSimilarityFunction.java     |  12 +-
 .../lucene/search/AbstractKnnVectorQuery.java      |  22 +
 .../org/apache/lucene/search/BlendedTermQuery.java |   8 +-
 .../org/apache/lucene/search/BooleanQuery.java     |  13 +-
 .../apache/lucene/search/ConstantScoreQuery.java   |   2 +-
 .../org/apache/lucene/search/FieldExistsQuery.java |  18 +-
 .../IndexSortSortedNumericDocValuesRangeQuery.java |  19 +-
 .../apache/lucene/search/KnnByteVectorQuery.java   |  37 +-
 ...nnVectorQuery.java => KnnFloatVectorQuery.java} |  22 +-
 .../org/apache/lucene/search/MultiCollector.java   |   8 +-
 .../org/apache/lucene/search/PointInSetQuery.java  |  84 ++-
 .../org/apache/lucene/search/VectorScorer.java     |  74 ++-
 .../lucene/store/ByteBuffersIndexOutput.java       |   4 +
 .../org/apache/lucene/store/FilterIndexInput.java  |  90 +++
 .../org/apache/lucene/store/FilterIndexOutput.java |  84 +++
 .../lucene/store/RateLimitedIndexOutput.java       |  33 +-
 .../java/org/apache/lucene/util/VectorUtil.java    |  38 +-
 .../src/java/org/apache/lucene/util/Version.java   |  14 +
 .../java/org/apache/lucene/util/bkd/BKDWriter.java |   8 +-
 .../org/apache/lucene/util/hnsw/HnswGraph.java     |  94 ++-
 .../apache/lucene/util/hnsw/HnswGraphBuilder.java  | 149 ++++-
 .../apache/lucene/util/hnsw/HnswGraphSearcher.java |  26 +-
 .../apache/lucene/util/hnsw/OnHeapHnswGraph.java   | 109 ++--
 .../lucene/util/hnsw/RandomAccessVectorValues.java |  19 +-
 .../TestCompressingStoredFieldsFormat.java         |  49 --
 .../perfield/TestPerFieldKnnVectorsFormat.java     |  10 +-
 .../lucene/document/BaseXYShapeTestCase.java       |   2 +-
 .../apache/lucene/document/TestFeatureField.java   |  93 ++-
 .../test/org/apache/lucene/document/TestField.java | 277 +++++---
 .../apache/lucene/document/TestKeywordField.java   | 125 ++++
 .../document/TestLongDistanceFeatureQuery.java     |  19 +-
 .../apache/lucene/document}/TestLongHashSet.java   |  75 ++-
 .../apache/lucene/document/TestManyKnnDocs.java    |   6 +-
 .../lucene/document/TestPerFieldConsistency.java   |   2 +-
 .../document/TestSortedSetDocValuesSetQuery.java}  |  95 ++-
 .../TestAllFilesDetectMismatchedChecksum.java      |   4 +-
 .../lucene/index/TestAllFilesDetectTruncation.java |   4 +-
 .../org/apache/lucene/index/TestCheckIndex.java    |   6 +-
 .../apache/lucene/index/TestDocValuesIndexing.java |  18 +-
 .../apache/lucene/index/TestDocumentWriter.java    |   4 +-
 .../lucene/index/TestExitableDirectoryReader.java  |  14 +-
 .../org/apache/lucene/index/TestFieldReuse.java    |   6 +
 .../apache/lucene/index/TestFilterIndexInput.java  |  95 +++
 .../org/apache/lucene/index/TestIndexInput.java    |  22 +-
 .../org/apache/lucene/index/TestIndexWriter.java   |  43 +-
 .../lucene/index/TestIndexWriterExceptions.java    |  12 +-
 .../apache/lucene/index/TestIndexableField.java    |  17 +
 .../test/org/apache/lucene/index/TestKnnGraph.java | 103 +--
 .../apache/lucene/index/TestLazyProxSkipping.java  |  41 +-
 .../lucene/index/TestMultiLevelSkipList.java       |  35 +-
 .../test/org/apache/lucene/index/TestPayloads.java |  11 +-
 .../apache/lucene/index/TestPayloadsOnVectors.java |  12 +-
 .../lucene/index/TestSegmentToThreadMapping.java   |  10 +-
 .../lucene/index/TestSortingCodecReader.java       |   8 +-
 .../test/org/apache/lucene/index/TestTerms.java    |   6 +-
 .../lucene/search/BaseKnnVectorQueryTestCase.java  |  32 +-
 .../org/apache/lucene/search/TestBooleanQuery.java |   3 -
 .../apache/lucene/search/TestBooleanRewrites.java  | 100 +++
 .../apache/lucene/search/TestDocValuesQueries.java |  97 +++
 .../apache/lucene/search/TestFieldExistsQuery.java |  10 +-
 .../lucene/search/TestIndexOrDocValuesQuery.java   |   6 +-
 ...tIndexSortSortedNumericDocValuesRangeQuery.java |  22 +-
 .../lucene/search/TestKnnByteVectorQuery.java      |  25 +-
 ...ctorQuery.java => TestKnnFloatVectorQuery.java} |  26 +-
 .../apache/lucene/search/TestMultiCollector.java   |  17 +
 .../apache/lucene/search/TestSortOptimization.java |  44 +-
 .../lucene/search/TestSortedNumericSortField.java  |  41 +-
 .../lucene/search/TestSortedSetSortField.java      |  30 +-
 .../org/apache/lucene/search/TestVectorScorer.java |  14 +-
 .../apache/lucene/store/TestFilterIndexOutput.java |  67 ++
 .../org/apache/lucene/util/TestVectorUtil.java     |  80 +--
 ...orValues.java => AbstractMockVectorValues.java} |  68 +-
 .../{TestHnswGraph.java => HnswGraphTestCase.java} | 702 ++++++++++++++-------
 .../apache/lucene/util/hnsw/KnnGraphTester.java    |  59 +-
 .../lucene/util/hnsw/MockByteVectorValues.java     |  66 ++
 .../apache/lucene/util/hnsw/MockVectorValues.java  |  88 +--
 .../lucene/util/hnsw/TestHnswByteVectorGraph.java  | 143 +++++
 .../lucene/util/hnsw/TestHnswFloatVectorGraph.java | 162 +++++
 .../java/org/apache/lucene/demo/IndexFiles.java    |  19 +-
 .../java/org/apache/lucene/demo/SearchFiles.java   |   6 +-
 .../directory/DirectoryTaxonomyWriter.java         |  13 +-
 .../writercache/UTF8TaxonomyWriterCache.java       | 174 -----
 .../org/apache/lucene/facet/SlowDirectory.java     |  74 +--
 .../directory/TestConcurrentFacetedIndexing.java   |   5 +-
 .../directory/TestDirectoryTaxonomyWriter.java     |  10 +-
 .../writercache/TestUTF8TaxonomyWriterCache.java   | 127 ----
 .../search/highlight/TermVectorLeafReader.java     |  13 +-
 .../highlight/WeightedSpanTermExtractor.java       |   3 +
 .../lucene/search/highlight/TestHighlighter.java   |  12 +
 .../uhighlight/TestUnifiedHighlighterTermVec.java  |  22 +-
 lucene/licenses/commons-logging-1.2.jar.sha1       |   1 -
 lucene/licenses/commons-logging-LICENSE-ASL.txt    | 202 ------
 lucene/licenses/commons-logging-NOTICE.txt         |   6 -
 lucene/licenses/httpclient-4.5.13.jar.sha1         |   1 -
 lucene/licenses/httpclient-LICENSE-ASL.txt         | 182 ------
 lucene/licenses/httpclient-NOTICE.txt              |   8 -
 lucene/licenses/httpcore-4.4.13.jar.sha1           |   1 -
 lucene/licenses/httpcore-LICENSE-ASL.txt           | 182 ------
 lucene/licenses/httpcore-NOTICE.txt                |   8 -
 lucene/licenses/javax.servlet-LICENSE-CDDL.txt     | 124 ----
 lucene/licenses/javax.servlet-NOTICE.txt           |   2 -
 lucene/licenses/javax.servlet-api-3.1.0.jar.sha1   |   1 -
 lucene/licenses/jetty-LICENSE-ASL.txt              | 202 ------
 lucene/licenses/jetty-NOTICE.txt                   | 111 ----
 .../jetty-continuation-9.4.41.v20210516.jar.sha1   |   1 -
 .../licenses/jetty-http-9.4.41.v20210516.jar.sha1  |   1 -
 lucene/licenses/jetty-io-9.4.41.v20210516.jar.sha1 |   1 -
 .../jetty-server-9.4.41.v20210516.jar.sha1         |   1 -
 .../jetty-servlet-9.4.41.v20210516.jar.sha1        |   1 -
 .../licenses/jetty-util-9.4.41.v20210516.jar.sha1  |   1 -
 .../jetty-util-ajax-9.4.41.v20210516.jar.sha1      |   1 -
 .../apache/lucene/index/memory/MemoryIndex.java    |  14 +-
 .../lucene/index/memory/TestMemoryIndex.java       |  48 ++
 .../apache/lucene/misc/document/LazyDocument.java  |   6 +
 .../lucene/misc/store/ByteTrackingIndexOutput.java |  61 +-
 lucene/replicator/build.gradle                     |  14 -
 lucene/replicator/src/java/module-info.java        |   6 -
 .../IndexAndTaxonomyReplicationHandler.java        | 213 -------
 .../replicator/IndexAndTaxonomyRevision.java       | 223 -------
 .../lucene/replicator/IndexInputInputStream.java   |  89 ---
 .../lucene/replicator/IndexReplicationHandler.java | 292 ---------
 .../apache/lucene/replicator/IndexRevision.java    | 142 -----
 .../apache/lucene/replicator/LocalReplicator.java  | 251 --------
 .../replicator/PerSessionDirectoryFactory.java     |  58 --
 .../lucene/replicator/ReplicationClient.java       | 412 ------------
 .../org/apache/lucene/replicator/Replicator.java   |  68 --
 .../org/apache/lucene/replicator/Revision.java     |  67 --
 .../org/apache/lucene/replicator/RevisionFile.java |  56 --
 .../lucene/replicator/SessionExpiredException.java |  50 --
 .../org/apache/lucene/replicator/SessionToken.java | 105 ---
 .../lucene/replicator/http/HttpClientBase.java     | 293 ---------
 .../lucene/replicator/http/HttpReplicator.java     | 109 ----
 .../lucene/replicator/http/ReplicationService.java | 202 ------
 .../lucene/replicator/http/package-info.java       |  19 -
 .../org/apache/lucene/replicator/package-info.java |  71 ---
 .../lucene/replicator/ReplicatorTestCase.java      | 158 -----
 .../TestIndexAndTaxonomyReplicationClient.java     | 481 --------------
 .../replicator/TestIndexAndTaxonomyRevision.java   | 173 -----
 .../replicator/TestIndexReplicationClient.java     | 356 -----------
 .../lucene/replicator/TestIndexRevision.java       | 156 -----
 .../lucene/replicator/TestLocalReplicator.java     | 200 ------
 .../apache/lucene/replicator/TestSessionToken.java |  62 --
 .../lucene/replicator/http/ReplicationServlet.java |  47 --
 .../lucene/replicator/http/TestHttpReplicator.java | 165 -----
 .../sandbox/search/DocValuesNumbersQuery.java      | 152 -----
 .../lucene/sandbox/search/DocValuesTermsQuery.java | 238 -------
 .../sandbox/search/TestDocValuesNumbersQuery.java  | 203 ------
 .../sandbox/search/TestFieldCacheTermsFilter.java  |  81 ---
 .../lucene/search/spell/WordBreakSpellChecker.java |  22 +-
 .../search/suggest/fst/FSTCompletionBuilder.java   |   2 +-
 .../search/spell/TestWordBreakSpellChecker.java    |  32 +
 .../asserting/AssertingKnnVectorsFormat.java       |  28 +-
 .../asserting/AssertingStoredFieldsFormat.java     |  36 +-
 .../codecs/cranky/CrankyStoredFieldsFormat.java    |  46 +-
 .../tests/index/BaseFieldInfoFormatTestCase.java   |   4 +-
 .../tests/index/BaseIndexFileFormatTestCase.java   |  52 +-
 .../tests/index/BaseKnnVectorsFormatTestCase.java  | 292 +++++----
 .../lucene/tests/index/MergeReaderWrapper.java     |  15 +-
 .../org/apache/lucene/tests/search/QueryUtils.java |  13 +-
 .../lucene/tests/store/CorruptingIndexOutput.java  |  22 +-
 .../lucene/tests/store/MockIndexInputWrapper.java  |  51 +-
 .../lucene/tests/store/MockIndexOutputWrapper.java |  43 +-
 .../apache/lucene/tests/util/LuceneTestCase.java   |   3 +-
 .../lucene/tests/util/ThrottledIndexOutput.java    |  48 +-
 versions.lock                                      |  11 -
 versions.props                                     |   7 +-
 279 files changed, 7025 insertions(+), 10753 deletions(-)
 create mode 100644 buildSrc/src/main/java/org/apache/lucene/gradle/GradlePropertiesGenerator.java
 create mode 100644 gradle/template.gradle.properties
 rename lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene92/{OffHeapVectorValues.java => OffHeapFloatVectorValues.java} (77%)
 delete mode 100644 lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene94/ExpandingVectorValues.java
 copy lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene94/{OffHeapVectorValues.java => OffHeapByteVectorValues.java} (75%)
 rename lucene/backward-codecs/src/java/org/apache/lucene/backward_codecs/lucene94/{OffHeapVectorValues.java => OffHeapFloatVectorValues.java} (78%)
 create mode 100644 lucene/backward-codecs/src/test/org/apache/lucene/backward_index/index.9.5.0-cfs.zip
 create mode 100644 lucene/backward-codecs/src/test/org/apache/lucene/backward_index/index.9.5.0-nocfs.zip
 create mode 100644 lucene/backward-codecs/src/test/org/apache/lucene/backward_index/sorted.9.5.0.zip
 delete mode 100644 lucene/codecs/src/java/org/apache/lucene/codecs/bloom/MurmurHash2.java
 create mode 100644 lucene/codecs/src/java/org/apache/lucene/codecs/bloom/MurmurHash64.java
 delete mode 100644 lucene/core/src/java/org/apache/lucene/codecs/lucene95/ExpandingVectorValues.java
 copy lucene/core/src/java/org/apache/lucene/codecs/lucene95/{OffHeapVectorValues.java => OffHeapByteVectorValues.java} (75%)
 rename lucene/core/src/java/org/apache/lucene/codecs/lucene95/{OffHeapVectorValues.java => OffHeapFloatVectorValues.java} (75%)
 create mode 100644 lucene/core/src/java/org/apache/lucene/document/KeywordField.java
 copy lucene/core/src/java/org/apache/lucene/document/{KnnVectorField.java => KnnByteVectorField.java} (51%)
 rename lucene/core/src/java/org/apache/lucene/document/{KnnVectorField.java => KnnFloatVectorField.java} (57%)
 rename lucene/{sandbox/src/java/org/apache/lucene/sandbox/search => core/src/java/org/apache/lucene/document}/LongHashSet.java (57%)
 copy lucene/core/src/java/org/apache/lucene/document/{SortedNumericDocValuesRangeQuery.java => SortedNumericDocValuesSetQuery.java} (60%)
 create mode 100644 lucene/core/src/java/org/apache/lucene/document/SortedSetDocValuesSetQuery.java
 create mode 100644 lucene/core/src/java/org/apache/lucene/document/StoredValue.java
 copy lucene/core/src/java/org/apache/lucene/index/{VectorValues.java => ByteVectorValues.java} (69%)
 delete mode 100644 lucene/core/src/java/org/apache/lucene/index/FilterVectorValues.java
 rename lucene/core/src/java/org/apache/lucene/index/{VectorValues.java => FloatVectorValues.java} (71%)
 rename lucene/{sandbox/src/java/org/apache/lucene/sandbox => core/src/java/org/apache/lucene}/search/IndexSortSortedNumericDocValuesRangeQuery.java (96%)
 rename lucene/core/src/java/org/apache/lucene/search/{KnnVectorQuery.java => KnnFloatVectorQuery.java} (83%)
 create mode 100644 lucene/core/src/java/org/apache/lucene/store/FilterIndexInput.java
 create mode 100644 lucene/core/src/java/org/apache/lucene/store/FilterIndexOutput.java
 create mode 100644 lucene/core/src/test/org/apache/lucene/document/TestKeywordField.java
 rename lucene/{sandbox/src/test/org/apache/lucene/sandbox/search => core/src/test/org/apache/lucene/document}/TestLongHashSet.java (53%)
 rename lucene/{sandbox/src/test/org/apache/lucene/sandbox/search/TestDocValuesTermsQuery.java => core/src/test/org/apache/lucene/document/TestSortedSetDocValuesSetQuery.java} (68%)
 create mode 100644 lucene/core/src/test/org/apache/lucene/index/TestFilterIndexInput.java
 rename lucene/{sandbox/src/test/org/apache/lucene/sandbox => core/src/test/org/apache/lucene}/search/TestIndexSortSortedNumericDocValuesRangeQuery.java (98%)
 rename lucene/core/src/test/org/apache/lucene/search/{TestKnnVectorQuery.java => TestKnnFloatVectorQuery.java} (87%)
 create mode 100644 lucene/core/src/test/org/apache/lucene/store/TestFilterIndexOutput.java
 copy lucene/core/src/test/org/apache/lucene/util/hnsw/{MockVectorValues.java => AbstractMockVectorValues.java} (52%)
 rename lucene/core/src/test/org/apache/lucene/util/hnsw/{TestHnswGraph.java => HnswGraphTestCase.java} (55%)
 create mode 100644 lucene/core/src/test/org/apache/lucene/util/hnsw/MockByteVectorValues.java
 create mode 100644 lucene/core/src/test/org/apache/lucene/util/hnsw/TestHnswByteVectorGraph.java
 create mode 100644 lucene/core/src/test/org/apache/lucene/util/hnsw/TestHnswFloatVectorGraph.java
 delete mode 100644 lucene/facet/src/java/org/apache/lucene/facet/taxonomy/writercache/UTF8TaxonomyWriterCache.java
 delete mode 100644 lucene/facet/src/test/org/apache/lucene/facet/taxonomy/writercache/TestUTF8TaxonomyWriterCache.java
 delete mode 100644 lucene/licenses/commons-logging-1.2.jar.sha1
 delete mode 100644 lucene/licenses/commons-logging-LICENSE-ASL.txt
 delete mode 100644 lucene/licenses/commons-logging-NOTICE.txt
 delete mode 100644 lucene/licenses/httpclient-4.5.13.jar.sha1
 delete mode 100644 lucene/licenses/httpclient-LICENSE-ASL.txt
 delete mode 100644 lucene/licenses/httpclient-NOTICE.txt
 delete mode 100644 lucene/licenses/httpcore-4.4.13.jar.sha1
 delete mode 100644 lucene/licenses/httpcore-LICENSE-ASL.txt
 delete mode 100644 lucene/licenses/httpcore-NOTICE.txt
 delete mode 100644 lucene/licenses/javax.servlet-LICENSE-CDDL.txt
 delete mode 100644 lucene/licenses/javax.servlet-NOTICE.txt
 delete mode 100644 lucene/licenses/javax.servlet-api-3.1.0.jar.sha1
 delete mode 100644 lucene/licenses/jetty-LICENSE-ASL.txt
 delete mode 100644 lucene/licenses/jetty-NOTICE.txt
 delete mode 100644 lucene/licenses/jetty-continuation-9.4.41.v20210516.jar.sha1
 delete mode 100644 lucene/licenses/jetty-http-9.4.41.v20210516.jar.sha1
 delete mode 100644 lucene/licenses/jetty-io-9.4.41.v20210516.jar.sha1
 delete mode 100644 lucene/licenses/jetty-server-9.4.41.v20210516.jar.sha1
 delete mode 100644 lucene/licenses/jetty-servlet-9.4.41.v20210516.jar.sha1
 delete mode 100644 lucene/licenses/jetty-util-9.4.41.v20210516.jar.sha1
 delete mode 100644 lucene/licenses/jetty-util-ajax-9.4.41.v20210516.jar.sha1
 delete mode 100644 lucene/replicator/src/java/org/apache/lucene/replicator/IndexAndTaxonomyReplicationHandler.java
 delete mode 100644 lucene/replicator/src/java/org/apache/lucene/replicator/IndexAndTaxonomyRevision.java
 delete mode 100644 lucene/replicator/src/java/org/apache/lucene/replicator/IndexInputInputStream.java
 delete mode 100644 lucene/replicator/src/java/org/apache/lucene/replicator/IndexReplicationHandler.java
 delete mode 100644 lucene/replicator/src/java/org/apache/lucene/replicator/IndexRevision.java
 delete mode 100644 lucene/replicator/src/java/org/apache/lucene/replicator/LocalReplicator.java
 delete mode 100644 lucene/replicator/src/java/org/apache/lucene/replicator/PerSessionDirectoryFactory.java
 delete mode 100644 lucene/replicator/src/java/org/apache/lucene/replicator/ReplicationClient.java
 delete mode 100644 lucene/replicator/src/java/org/apache/lucene/replicator/Replicator.java
 delete mode 100644 lucene/replicator/src/java/org/apache/lucene/replicator/Revision.java
 delete mode 100644 lucene/replicator/src/java/org/apache/lucene/replicator/RevisionFile.java
 delete mode 100644 lucene/replicator/src/java/org/apache/lucene/replicator/SessionExpiredException.java
 delete mode 100644 lucene/replicator/src/java/org/apache/lucene/replicator/SessionToken.java
 delete mode 100644 lucene/replicator/src/java/org/apache/lucene/replicator/http/HttpClientBase.java
 delete mode 100644 lucene/replicator/src/java/org/apache/lucene/replicator/http/HttpReplicator.java
 delete mode 100644 lucene/replicator/src/java/org/apache/lucene/replicator/http/ReplicationService.java
 delete mode 100644 lucene/replicator/src/java/org/apache/lucene/replicator/http/package-info.java
 delete mode 100644 lucene/replicator/src/java/org/apache/lucene/replicator/package-info.java
 delete mode 100644 lucene/replicator/src/test/org/apache/lucene/replicator/ReplicatorTestCase.java
 delete mode 100644 lucene/replicator/src/test/org/apache/lucene/replicator/TestIndexAndTaxonomyReplicationClient.java
 delete mode 100644 lucene/replicator/src/test/org/apache/lucene/replicator/TestIndexAndTaxonomyRevision.java
 delete mode 100644 lucene/replicator/src/test/org/apache/lucene/replicator/TestIndexReplicationClient.java
 delete mode 100644 lucene/replicator/src/test/org/apache/lucene/replicator/TestIndexRevision.java
 delete mode 100644 lucene/replicator/src/test/org/apache/lucene/replicator/TestLocalReplicator.java
 delete mode 100644 lucene/replicator/src/test/org/apache/lucene/replicator/TestSessionToken.java
 delete mode 100644 lucene/replicator/src/test/org/apache/lucene/replicator/http/ReplicationServlet.java
 delete mode 100644 lucene/replicator/src/test/org/apache/lucene/replicator/http/TestHttpReplicator.java
 delete mode 100644 lucene/sandbox/src/java/org/apache/lucene/sandbox/search/DocValuesNumbersQuery.java
 delete mode 100644 lucene/sandbox/src/java/org/apache/lucene/sandbox/search/DocValuesTermsQuery.java
 delete mode 100644 lucene/sandbox/src/test/org/apache/lucene/sandbox/search/TestDocValuesNumbersQuery.java
 delete mode 100644 lucene/sandbox/src/test/org/apache/lucene/sandbox/search/TestFieldCacheTermsFilter.java


[lucene] 01/01: Simplify max score for kNN vector queries

Posted by ju...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

julietibs pushed a commit to branch jtibshirani/max-score
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit ca0e4d967cf1d854379e243a8bba40e47951e4d8
Author: Julie Tibshirani <ju...@sourcegraph.com>
AuthorDate: Mon Feb 13 13:43:10 2023 -0800

    Simplify max score for kNN vector queries
    
    The helper class DocAndScoreQuery implements advanceShallow to help skip
    non-competitive documents. This method doesn't actually keep track of where it
    has advanced, which means it can do extra work.
    
    Overall the complexity here didn't seem worth it, given the low cost of
    collecting matching kNN docs. This PR switches to a simpler approach, which uses
    a fixed upper bound on the max score.
---
 .../lucene/search/AbstractKnnVectorQuery.java      | 26 +++-------
 .../lucene/search/BaseKnnVectorQueryTestCase.java  | 58 +++++-----------------
 .../lucene/search/TestKnnFloatVectorQuery.java     | 24 ++++-----
 3 files changed, 29 insertions(+), 79 deletions(-)

diff --git a/lucene/core/src/java/org/apache/lucene/search/AbstractKnnVectorQuery.java b/lucene/core/src/java/org/apache/lucene/search/AbstractKnnVectorQuery.java
index 41264d94b1a..b3163b39ca6 100644
--- a/lucene/core/src/java/org/apache/lucene/search/AbstractKnnVectorQuery.java
+++ b/lucene/core/src/java/org/apache/lucene/search/AbstractKnnVectorQuery.java
@@ -192,12 +192,14 @@ abstract class AbstractKnnVectorQuery extends Query {
     Arrays.sort(topK.scoreDocs, Comparator.comparingInt(a -> a.doc));
     int[] docs = new int[len];
     float[] scores = new float[len];
+    float maxScore = 0.0f;
     for (int i = 0; i < len; i++) {
       docs[i] = topK.scoreDocs[i].doc;
       scores[i] = topK.scoreDocs[i].score;
+      maxScore = Math.max(maxScore, scores[i]);
     }
     int[] segmentStarts = findSegmentStarts(reader, docs);
-    return new DocAndScoreQuery(k, docs, scores, segmentStarts, reader.getContext().id());
+    return new DocAndScoreQuery(k, docs, scores, maxScore, segmentStarts, reader.getContext().id());
   }
 
   private int[] findSegmentStarts(IndexReader reader, int[] docs) {
@@ -266,6 +268,7 @@ abstract class AbstractKnnVectorQuery extends Query {
     private final int k;
     private final int[] docs;
     private final float[] scores;
+    private final float maxScore;
     private final int[] segmentStarts;
     private final Object contextIdentity;
 
@@ -283,10 +286,11 @@ abstract class AbstractKnnVectorQuery extends Query {
      *     query
      */
     DocAndScoreQuery(
-        int k, int[] docs, float[] scores, int[] segmentStarts, Object contextIdentity) {
+        int k, int[] docs, float[] scores, float maxScore, int[] segmentStarts, Object contextIdentity) {
       this.k = k;
       this.docs = docs;
       this.scores = scores;
+      this.maxScore = maxScore;
       this.segmentStarts = segmentStarts;
       this.contextIdentity = contextIdentity;
     }
@@ -347,11 +351,6 @@ abstract class AbstractKnnVectorQuery extends Query {
 
             @Override
             public float getMaxScore(int docId) {
-              docId += context.docBase;
-              float maxScore = 0;
-              for (int idx = Math.max(0, upTo); idx < upper && docs[idx] <= docId; idx++) {
-                maxScore = Math.max(maxScore, scores[idx]);
-              }
               return maxScore * boost;
             }
 
@@ -360,19 +359,6 @@ abstract class AbstractKnnVectorQuery extends Query {
               return scores[upTo] * boost;
             }
 
-            @Override
-            public int advanceShallow(int docid) {
-              int start = Math.max(upTo, lower);
-              int docidIndex = Arrays.binarySearch(docs, start, upper, docid + context.docBase);
-              if (docidIndex < 0) {
-                docidIndex = -1 - docidIndex;
-              }
-              if (docidIndex >= upper) {
-                return NO_MORE_DOCS;
-              }
-              return docs[docidIndex];
-            }
-
             /**
              * move the implementation of docID() into a differently-named method so we can call it
              * from DocIDSetIterator.docID() even though this class is anonymous
diff --git a/lucene/core/src/test/org/apache/lucene/search/BaseKnnVectorQueryTestCase.java b/lucene/core/src/test/org/apache/lucene/search/BaseKnnVectorQueryTestCase.java
index af91b19444b..fa3c8a918f6 100644
--- a/lucene/core/src/test/org/apache/lucene/search/BaseKnnVectorQueryTestCase.java
+++ b/lucene/core/src/test/org/apache/lucene/search/BaseKnnVectorQueryTestCase.java
@@ -244,36 +244,6 @@ abstract class BaseKnnVectorQueryTestCase extends LuceneTestCase {
     }
   }
 
-  public void testAdvanceShallow() throws IOException {
-    try (Directory d = newDirectory()) {
-      try (IndexWriter w = new IndexWriter(d, new IndexWriterConfig())) {
-        for (int j = 0; j < 5; j++) {
-          Document doc = new Document();
-          doc.add(getKnnVectorField("field", new float[] {j, j}));
-          w.addDocument(doc);
-        }
-      }
-      try (IndexReader reader = DirectoryReader.open(d)) {
-        IndexSearcher searcher = new IndexSearcher(reader);
-        AbstractKnnVectorQuery query = getKnnVectorQuery("field", new float[] {2, 3}, 3);
-        Query dasq = query.rewrite(searcher);
-        Scorer scorer =
-            dasq.createWeight(searcher, ScoreMode.COMPLETE, 1).scorer(reader.leaves().get(0));
-        // before advancing the iterator
-        assertEquals(1, scorer.advanceShallow(0));
-        assertEquals(1, scorer.advanceShallow(1));
-        assertEquals(NO_MORE_DOCS, scorer.advanceShallow(10));
-
-        // after advancing the iterator
-        scorer.iterator().advance(2);
-        assertEquals(2, scorer.advanceShallow(0));
-        assertEquals(2, scorer.advanceShallow(2));
-        assertEquals(3, scorer.advanceShallow(3));
-        assertEquals(NO_MORE_DOCS, scorer.advanceShallow(10));
-      }
-    }
-  }
-
   public void testScoreEuclidean() throws IOException {
     float[][] vectors = new float[5][];
     for (int j = 0; j < 5; j++) {
@@ -291,9 +261,6 @@ abstract class BaseKnnVectorQueryTestCase extends LuceneTestCase {
       assertEquals(-1, scorer.docID());
       expectThrows(ArrayIndexOutOfBoundsException.class, scorer::score);
 
-      // test getMaxScore
-      assertEquals(0, scorer.getMaxScore(-1), 0);
-      assertEquals(0, scorer.getMaxScore(0), 0);
       // This is 1 / ((l2distance((2,3), (2, 2)) = 1) + 1) = 0.5
       assertEquals(1 / 2f, scorer.getMaxScore(2), 0);
       assertEquals(1 / 2f, scorer.getMaxScore(Integer.MAX_VALUE), 0);
@@ -304,6 +271,7 @@ abstract class BaseKnnVectorQueryTestCase extends LuceneTestCase {
       assertEquals(1 / 6f, scorer.score(), 0);
       assertEquals(3, it.advance(3));
       assertEquals(1 / 2f, scorer.score(), 0);
+
       assertEquals(NO_MORE_DOCS, it.advance(4));
       expectThrows(ArrayIndexOutOfBoundsException.class, scorer::score);
     }
@@ -330,32 +298,30 @@ abstract class BaseKnnVectorQueryTestCase extends LuceneTestCase {
         assertEquals(-1, scorer.docID());
         expectThrows(ArrayIndexOutOfBoundsException.class, scorer::score);
 
-        // test getMaxScore
-        assertEquals(0, scorer.getMaxScore(-1), 0);
-        /* maxAtZero = ((2,3) * (1, 1) = 5) / (||2, 3|| * ||1, 1|| = sqrt(26)), then
+        /* score0 = ((2,3) * (1, 1) = 5) / (||2, 3|| * ||1, 1|| = sqrt(26)), then
          * normalized by (1 + x) /2.
          */
-        float maxAtZero =
+        float score0 =
             (float) ((1 + (2 * 1 + 3 * 1) / Math.sqrt((2 * 2 + 3 * 3) * (1 * 1 + 1 * 1))) / 2);
-        assertEquals(maxAtZero, scorer.getMaxScore(0), 0.001);
 
-        /* max at 2 is actually the score for doc 1 which is the highest (since doc 1 vector (2, 4)
-         * is the closest to (2, 3)). This is ((2,3) * (2, 4) = 16) / (||2, 3|| * ||2, 4|| = sqrt(260)), then
+        /* score1 = ((2,3) * (2, 4) = 16) / (||2, 3|| * ||2, 4|| = sqrt(260)), then
          * normalized by (1 + x) /2
          */
-        float expected =
+        float score1 =
             (float) ((1 + (2 * 2 + 3 * 4) / Math.sqrt((2 * 2 + 3 * 3) * (2 * 2 + 4 * 4))) / 2);
-        assertEquals(expected, scorer.getMaxScore(2), 0);
-        assertEquals(expected, scorer.getMaxScore(Integer.MAX_VALUE), 0);
+
+        // doc 1 happens to have the maximum score
+        assertEquals(score1, scorer.getMaxScore(2), 0.0001);
+        assertEquals(score1, scorer.getMaxScore(Integer.MAX_VALUE), 0.0001);
 
         DocIdSetIterator it = scorer.iterator();
         assertEquals(3, it.cost());
         assertEquals(0, it.nextDoc());
         // doc 0 has (1, 1)
-        assertEquals(maxAtZero, scorer.score(), 0.0001);
+        assertEquals(score0, scorer.score(), 0.0001);
         assertEquals(1, it.advance(1));
-        assertEquals(expected, scorer.score(), 0);
-        assertEquals(2, it.nextDoc());
+        assertEquals(score1, scorer.score(), 0.0001);
+
         // since topK was 3
         assertEquals(NO_MORE_DOCS, it.advance(4));
         expectThrows(ArrayIndexOutOfBoundsException.class, scorer::score);
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestKnnFloatVectorQuery.java b/lucene/core/src/test/org/apache/lucene/search/TestKnnFloatVectorQuery.java
index 4091586cd06..9569ef26b26 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestKnnFloatVectorQuery.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestKnnFloatVectorQuery.java
@@ -126,32 +126,30 @@ public class TestKnnFloatVectorQuery extends BaseKnnVectorQueryTestCase {
         assertEquals(-1, scorer.docID());
         expectThrows(ArrayIndexOutOfBoundsException.class, scorer::score);
 
-        // test getMaxScore
-        assertEquals(0, scorer.getMaxScore(-1), 0);
-        /* maxAtZero = ((2,3) * (1, 1) = 5) / (||2, 3|| * ||1, 1|| = sqrt(26)), then
+        /* score0 = ((2,3) * (1, 1) = 5) / (||2, 3|| * ||1, 1|| = sqrt(26)), then
          * normalized by (1 + x) /2.
          */
-        float maxAtZero =
+        float score0 =
             (float) ((1 + (2 * 1 + 3 * 1) / Math.sqrt((2 * 2 + 3 * 3) * (1 * 1 + 1 * 1))) / 2);
-        assertEquals(maxAtZero, scorer.getMaxScore(0), 0.001);
 
-        /* max at 2 is actually the score for doc 1 which is the highest (since doc 1 vector (2, 4)
-         * is the closest to (2, 3)). This is ((2,3) * (2, 4) = 16) / (||2, 3|| * ||2, 4|| = sqrt(260)), then
+        /* score1 = ((2,3) * (2, 4) = 16) / (||2, 3|| * ||2, 4|| = sqrt(260)), then
          * normalized by (1 + x) /2
          */
-        float expected =
+        float score1 =
             (float) ((1 + (2 * 2 + 3 * 4) / Math.sqrt((2 * 2 + 3 * 3) * (2 * 2 + 4 * 4))) / 2);
-        assertEquals(expected, scorer.getMaxScore(2), 0);
-        assertEquals(expected, scorer.getMaxScore(Integer.MAX_VALUE), 0);
+
+        // doc 1 happens to have the max score
+        assertEquals(score1, scorer.getMaxScore(2), 0.0001);
+        assertEquals(score1, scorer.getMaxScore(Integer.MAX_VALUE), 0.0001);
 
         DocIdSetIterator it = scorer.iterator();
         assertEquals(3, it.cost());
         assertEquals(0, it.nextDoc());
         // doc 0 has (1, 1)
-        assertEquals(maxAtZero, scorer.score(), 0.0001);
+        assertEquals(score0, scorer.score(), 0.0001);
         assertEquals(1, it.advance(1));
-        assertEquals(expected, scorer.score(), 0);
-        assertEquals(2, it.nextDoc());
+        assertEquals(score1, scorer.score(), 0.0001);
+
         // since topK was 3
         assertEquals(NO_MORE_DOCS, it.advance(4));
         expectThrows(ArrayIndexOutOfBoundsException.class, scorer::score);