You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by so...@apache.org on 2021/09/01 12:19:19 UTC

[lucene] branch main updated: LUCENE-10063: test fixes relating to SimpleTextKnnVectorsReader (#273)

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

sokolov pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/lucene.git


The following commit(s) were added to refs/heads/main by this push:
     new e3e54c9  LUCENE-10063: test fixes relating to SimpleTextKnnVectorsReader (#273)
e3e54c9 is described below

commit e3e54c95c93b7da84c14e2efdd4714cd310a16ba
Author: Michael Sokolov <so...@falutin.net>
AuthorDate: Wed Sep 1 08:19:11 2021 -0400

    LUCENE-10063: test fixes relating to SimpleTextKnnVectorsReader (#273)
---
 .../lucene/codecs/simpletext/SimpleTextKnnVectorsReader.java   | 10 ++++------
 .../org/apache/lucene/index/BaseKnnVectorsFormatTestCase.java  |  5 +++--
 2 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextKnnVectorsReader.java b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextKnnVectorsReader.java
index 3a384c5..a3b9436 100644
--- a/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextKnnVectorsReader.java
+++ b/lucene/codecs/src/java/org/apache/lucene/codecs/simpletext/SimpleTextKnnVectorsReader.java
@@ -148,18 +148,16 @@ public class SimpleTextKnnVectorsReader extends KnnVectorsReader {
     VectorValues values = getVectorValues(field);
     if (target.length != values.dimension()) {
       throw new IllegalArgumentException(
-          "incorrect dimension for field "
-              + field
-              + "; expected "
-              + values.dimension()
-              + " but target has "
-              + target.length);
+          "vector dimensions differ: " + target.length + "!=" + values.dimension());
     }
     FieldInfo info = readState.fieldInfos.fieldInfo(field);
     VectorSimilarityFunction vectorSimilarity = info.getVectorSimilarityFunction();
     HitQueue topK = new HitQueue(k, false);
     int doc;
     while ((doc = values.nextDoc()) != DocIdSetIterator.NO_MORE_DOCS) {
+      if (acceptDocs != null && acceptDocs.get(doc) == false) {
+        continue;
+      }
       float[] vector = values.vectorValue();
       float score = vectorSimilarity.compare(vector, target);
       if (vectorSimilarity.reversed) {
diff --git a/lucene/test-framework/src/java/org/apache/lucene/index/BaseKnnVectorsFormatTestCase.java b/lucene/test-framework/src/java/org/apache/lucene/index/BaseKnnVectorsFormatTestCase.java
index 4efc537..22fc2e1 100644
--- a/lucene/test-framework/src/java/org/apache/lucene/index/BaseKnnVectorsFormatTestCase.java
+++ b/lucene/test-framework/src/java/org/apache/lucene/index/BaseKnnVectorsFormatTestCase.java
@@ -859,10 +859,11 @@ public abstract class BaseKnnVectorsFormatTestCase extends BaseIndexFileFormatTe
           }
           // assert that searchNearestVectors returns the expected number of documents, in
           // descending score order
-          int k = random().nextInt(numDoc / 2);
+          int size = ctx.reader().getVectorValues(fieldName).size();
+          int k = random().nextInt(size / 2 + 1);
           TopDocs results =
               ctx.reader().searchNearestVectors(fieldName, randomVector(dimension), k, liveDocs);
-          assertEquals(k, results.scoreDocs.length);
+          assertEquals(Math.min(k, size), results.scoreDocs.length);
           for (int i = 0; i < k - 1; i++) {
             assertTrue(results.scoreDocs[i].score >= results.scoreDocs[i + 1].score);
           }