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/14 18:24:04 UTC
[lucene] 01/01: Improve DocAndScoreQuery#toString
This is an automated email from the ASF dual-hosted git repository.
julietibs pushed a commit to branch jtibshirani/doc-score-query
in repository https://gitbox.apache.org/repos/asf/lucene.git
commit 64829a553c363df753059f7add4f2c839a534c31
Author: Julie Tibshirani <ju...@sourcegraph.com>
AuthorDate: Tue Feb 14 10:14:14 2023 -0800
Improve DocAndScoreQuery#toString
Tiny improvements to DocAndScoreQuery:
* Make toString more informative
* Remove unnecessary 'k' parameter
---
.../org/apache/lucene/search/AbstractKnnVectorQuery.java | 14 +++++---------
.../apache/lucene/search/BaseKnnVectorQueryTestCase.java | 8 ++++----
2 files changed, 9 insertions(+), 13 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..7a061ef268b 100644
--- a/lucene/core/src/java/org/apache/lucene/search/AbstractKnnVectorQuery.java
+++ b/lucene/core/src/java/org/apache/lucene/search/AbstractKnnVectorQuery.java
@@ -197,7 +197,7 @@ abstract class AbstractKnnVectorQuery extends Query {
scores[i] = topK.scoreDocs[i].score;
}
int[] segmentStarts = findSegmentStarts(reader, docs);
- return new DocAndScoreQuery(k, docs, scores, segmentStarts, reader.getContext().id());
+ return new DocAndScoreQuery(docs, scores, segmentStarts, reader.getContext().id());
}
private int[] findSegmentStarts(IndexReader reader, int[] docs) {
@@ -263,7 +263,6 @@ abstract class AbstractKnnVectorQuery extends Query {
/** Caches the results of a KnnVector search: a list of docs and their scores */
static class DocAndScoreQuery extends Query {
- private final int k;
private final int[] docs;
private final float[] scores;
private final int[] segmentStarts;
@@ -272,7 +271,6 @@ abstract class AbstractKnnVectorQuery extends Query {
/**
* Constructor
*
- * @param k the number of documents requested
* @param docs the global docids of documents that match, in ascending order
* @param scores the scores of the matching documents
* @param segmentStarts the indexes in docs and scores corresponding to the first matching
@@ -282,9 +280,7 @@ abstract class AbstractKnnVectorQuery extends Query {
* @param contextIdentity an object identifying the reader context that was used to build this
* query
*/
- DocAndScoreQuery(
- int k, int[] docs, float[] scores, int[] segmentStarts, Object contextIdentity) {
- this.k = k;
+ DocAndScoreQuery(int[] docs, float[] scores, int[] segmentStarts, Object contextIdentity) {
this.docs = docs;
this.scores = scores;
this.segmentStarts = segmentStarts;
@@ -302,9 +298,9 @@ abstract class AbstractKnnVectorQuery extends Query {
public Explanation explain(LeafReaderContext context, int doc) {
int found = Arrays.binarySearch(docs, doc + context.docBase);
if (found < 0) {
- return Explanation.noMatch("not in top " + k);
+ return Explanation.noMatch("not in top docs");
}
- return Explanation.match(scores[found] * boost, "within top " + k);
+ return Explanation.match(scores[found] * boost, "within top docs");
}
@Override
@@ -405,7 +401,7 @@ abstract class AbstractKnnVectorQuery extends Query {
@Override
public String toString(String field) {
- return "DocAndScore[" + k + "]";
+ return "DocAndScore[" + docs[0] + ", ...][" + scores[0] + ", ...]";
}
@Override
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..65f532fa7a0 100644
--- a/lucene/core/src/test/org/apache/lucene/search/BaseKnnVectorQueryTestCase.java
+++ b/lucene/core/src/test/org/apache/lucene/search/BaseKnnVectorQueryTestCase.java
@@ -379,13 +379,13 @@ abstract class BaseKnnVectorQueryTestCase extends LuceneTestCase {
assertTrue(matched.isMatch());
assertEquals(1 / 2f, matched.getValue());
assertEquals(0, matched.getDetails().length);
- assertEquals("within top 3", matched.getDescription());
+ assertEquals("within top docs", matched.getDescription());
Explanation nomatch = searcher.explain(query, 4);
assertFalse(nomatch.isMatch());
assertEquals(0f, nomatch.getValue());
assertEquals(0, matched.getDetails().length);
- assertEquals("not in top 3", nomatch.getDescription());
+ assertEquals("not in top docs", nomatch.getDescription());
}
}
}
@@ -407,13 +407,13 @@ abstract class BaseKnnVectorQueryTestCase extends LuceneTestCase {
assertTrue(matched.isMatch());
assertEquals(1 / 2f, matched.getValue());
assertEquals(0, matched.getDetails().length);
- assertEquals("within top 3", matched.getDescription());
+ assertEquals("within top docs", matched.getDescription());
Explanation nomatch = searcher.explain(query, 4);
assertFalse(nomatch.isMatch());
assertEquals(0f, nomatch.getValue());
assertEquals(0, matched.getDetails().length);
- assertEquals("not in top 3", nomatch.getDescription());
+ assertEquals("not in top docs", nomatch.getDescription());
}
}
}