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);
}