You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ge...@apache.org on 2025/10/10 15:18:05 UTC
(lucene) 01/02: Use BulkSimScorer on MultiNormsLeafSimScorer (#15101)
This is an automated email from the ASF dual-hosted git repository.
gesong pushed a commit to branch branch_10x
in repository https://gitbox.apache.org/repos/asf/lucene.git
commit d0826192b34f673e34ae467e6351daef12292b30
Author: Samuel.G <so...@gmail.com>
AuthorDate: Fri Aug 22 23:25:33 2025 +0900
Use BulkSimScorer on MultiNormsLeafSimScorer (#15101)
---
.../org/apache/lucene/search/MultiNormsLeafSimScorer.java | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/lucene/core/src/java/org/apache/lucene/search/MultiNormsLeafSimScorer.java b/lucene/core/src/java/org/apache/lucene/search/MultiNormsLeafSimScorer.java
index 5c797ad881c..65609921bc9 100644
--- a/lucene/core/src/java/org/apache/lucene/search/MultiNormsLeafSimScorer.java
+++ b/lucene/core/src/java/org/apache/lucene/search/MultiNormsLeafSimScorer.java
@@ -26,6 +26,7 @@ import java.util.Set;
import org.apache.lucene.index.LeafReader;
import org.apache.lucene.index.NumericDocValues;
import org.apache.lucene.search.CombinedFieldQuery.FieldAndWeight;
+import org.apache.lucene.search.similarities.Similarity.BulkSimScorer;
import org.apache.lucene.search.similarities.Similarity.SimScorer;
import org.apache.lucene.util.ArrayUtil;
import org.apache.lucene.util.LongsRef;
@@ -49,6 +50,7 @@ final class MultiNormsLeafSimScorer {
}
private final SimScorer scorer;
+ private final BulkSimScorer bulkScorer;
private final NumericDocValues norms;
private long[] normValues = LongsRef.EMPTY_LONGS;
@@ -60,6 +62,7 @@ final class MultiNormsLeafSimScorer {
boolean needsScores)
throws IOException {
this.scorer = Objects.requireNonNull(scorer);
+ this.bulkScorer = scorer.asBulkSimScorer();
if (needsScores) {
final List<NumericDocValues> normsList = new ArrayList<>();
final List<Float> weightList = new ArrayList<>();
@@ -123,15 +126,11 @@ final class MultiNormsLeafSimScorer {
* @see SimScorer#score(float, long)
*/
public void scoreRange(DocAndFloatFeatureBuffer buffer) throws IOException {
- if (normValues.length < buffer.size) {
- normValues = ArrayUtil.growNoCopy(normValues, buffer.size);
- }
+ normValues = ArrayUtil.growNoCopy(normValues, buffer.size);
for (int i = 0; i < buffer.size; i++) {
normValues[i] = getNormValue(buffer.docs[i]);
}
- for (int i = 0; i < buffer.size; i++) {
- buffer.features[i] = scorer.score(buffer.features[i], normValues[i]);
- }
+ bulkScorer.score(buffer.size, buffer.features, normValues, buffer.features);
}
/**