diff options
author | karowan <karowan55@gmail.com> | 2021-02-05 04:01:17 -0800 |
---|---|---|
committer | karowan <karowan55@gmail.com> | 2021-02-05 04:01:17 -0800 |
commit | 7df3b74ff4ce129739c142d75f43f0c24b939edf (patch) | |
tree | 0e036d18b4c1b2bd0415fdc704ebf9b0d935a5b8 /container-search | |
parent | f4ad7f18427f9c775d66106acb88808a0b518ab0 (diff) |
optimized item replacement
Diffstat (limited to 'container-search')
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/querytransform/WeakAndReplacementSearcher.java | 10 |
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; } |