Skip to content

Commit 8b26cf8

Browse files
Fix FVH boost issue (#15442)
1 parent 7e0da7f commit 8b26cf8

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

lucene/highlighter/src/java/org/apache/lucene/search/vectorhighlight/FieldPhraseList.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ public void addIfNoOverlap(WeightedPhraseInfo wpi) {
177177
// The result is that all informations in TermInfo are lost and not available for further
178178
// operations.
179179
existWpi.getTermsInfos().addAll(wpi.getTermsInfos());
180+
existWpi.boost += wpi.getBoost(); // 累加 boost
180181
return;
181182
}
182183
}

lucene/highlighter/src/test/org/apache/lucene/search/vectorhighlight/TestFieldPhraseList.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,25 @@ public void testToffsComparisonConsistency() {
267267
assertConsistentLessThan(d, b);
268268
assertConsistentLessThan(d, c);
269269
}
270+
public void testMergeOverlappingWeightedPhraseInfoAccumulateBoost() {
271+
LinkedList<TermInfo> infos1 = new LinkedList<>();
272+
infos1.add(new TermInfo("中国", 0, 2, 0, 0));
273+
infos1.add(new TermInfo("经济", 3, 5, 1, 1));
274+
WeightedPhraseInfo wpi1 = new WeightedPhraseInfo(infos1, 2.0f);
275+
276+
LinkedList<TermInfo> infos2 = new LinkedList<>();
277+
infos2.add(new TermInfo("经济", 3, 5, 1, 1));
278+
infos2.add(new TermInfo("发展", 6, 8, 2, 2));
279+
WeightedPhraseInfo wpi2 = new WeightedPhraseInfo(infos2, 3.0f);
280+
281+
// trigger merge
282+
WeightedPhraseInfo merged =
283+
new WeightedPhraseInfo(java.util.List.of(wpi1, wpi2));
284+
285+
assertEquals(5.0f, merged.getBoost(), 0.0001f);
286+
}
287+
288+
270289

271290
private WeightedPhraseInfo newInfo(int startOffset, int endOffset, float boost) {
272291
LinkedList<TermInfo> infos = new LinkedList<>();

0 commit comments

Comments
 (0)