summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorkarowan <karowan55@gmail.com>2021-02-05 04:01:17 -0800
committerkarowan <karowan55@gmail.com>2021-02-05 04:01:17 -0800
commit7df3b74ff4ce129739c142d75f43f0c24b939edf (patch)
tree0e036d18b4c1b2bd0415fdc704ebf9b0d935a5b8 /container-search
parentf4ad7f18427f9c775d66106acb88808a0b518ab0 (diff)
optimized item replacement
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/search/querytransform/WeakAndReplacementSearcher.java10
1 files changed, 7 insertions, 3 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/querytransform/WeakAndReplacementSearcher.java b/container-search/src/main/java/com/yahoo/search/querytransform/WeakAndReplacementSearcher.java
index 647780fa676..4380a81c638 100644
--- a/container-search/src/main/java/com/yahoo/search/querytransform/WeakAndReplacementSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/querytransform/WeakAndReplacementSearcher.java
@@ -44,14 +44,18 @@ public class WeakAndReplacementSearcher extends Searcher {
return item;
}
CompositeItem compositeItem = (CompositeItem) item;
- if (item instanceof OrItem) {
+ if (compositeItem instanceof OrItem) {
WeakAndItem newItem = new WeakAndItem(hits);
- newItem.setWeight(item.getWeight());
+ newItem.setWeight(compositeItem.getWeight());
compositeItem.items().forEach(newItem::addItem);
compositeItem = newItem;
}
for (int i = 0; i < compositeItem.getItemCount(); i++) {
- compositeItem.setItem(i, replaceOrItems(compositeItem.getItem(i), hits));
+ Item subItem = compositeItem.getItem(i);
+ Item replacedItem = replaceOrItems(subItem, hits);
+ if (replacedItem != subItem) {
+ compositeItem.setItem(i, replacedItem);
+ }
}
return compositeItem;
}