diff options
author | Jon Bratseth <bratseth@gmail.com> | 2022-06-09 22:31:44 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2022-06-09 22:31:44 +0200 |
commit | 0a13efef3049551299950226e461a3b275bf6962 (patch) | |
tree | 5e7737d973cee7a8d09aa51bcdb6809e7636e688 /container-search/src/main/java/com/yahoo/prelude/querytransform | |
parent | 2a256fc1481f8460d519ccf3d9db6ed6e59ca452 (diff) |
Support WeakAnd in QueryRewrite
Diffstat (limited to 'container-search/src/main/java/com/yahoo/prelude/querytransform')
-rw-r--r-- | container-search/src/main/java/com/yahoo/prelude/querytransform/QueryRewrite.java | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/container-search/src/main/java/com/yahoo/prelude/querytransform/QueryRewrite.java b/container-search/src/main/java/com/yahoo/prelude/querytransform/QueryRewrite.java index 09be9b3728b..bf814eef057 100644 --- a/container-search/src/main/java/com/yahoo/prelude/querytransform/QueryRewrite.java +++ b/container-search/src/main/java/com/yahoo/prelude/querytransform/QueryRewrite.java @@ -14,6 +14,7 @@ import com.yahoo.prelude.query.OrItem; import com.yahoo.prelude.query.RankItem; import com.yahoo.prelude.query.SimpleIndexedItem; import com.yahoo.prelude.query.SubstringItem; +import com.yahoo.prelude.query.WeakAndItem; import com.yahoo.search.Query; import com.yahoo.search.query.Model; import com.yahoo.search.result.Hit; @@ -26,8 +27,6 @@ public class QueryRewrite { private enum Recall { RECALLS_EVERYTHING, RECALLS_NOTHING, UNKNOWN_RECALL } - // ------------------- Start public API - /** * Optimize multiple NotItems under and or by collapsing them in to one and leaving * the positive ones behind in its place and moving itself with the original and as its positive item @@ -49,6 +48,7 @@ public class QueryRewrite { return; } Item root = query.getModel().getQueryTree().getRoot(); + if (optimizeByRestrict(root, query.getModel().getRestrict().iterator().next()) == Recall.RECALLS_NOTHING) { query.getModel().getQueryTree().setRoot(new NullItem()); } @@ -170,7 +170,7 @@ public class QueryRewrite { if ((item instanceof OrItem) || (item instanceof EquivItem)) { removeOtherNonrankedChildren(item, i); recall = Recall.RECALLS_EVERYTHING; - } else if ((item instanceof AndItem) || (item instanceof NearItem)) { + } else if ((item instanceof AndItem) || (item instanceof NearItem) || (item instanceof WeakAndItem)) { if ( ! isRanked(item.getItem(i))) { item.removeItem(i); } @@ -183,7 +183,7 @@ public class QueryRewrite { case RECALLS_NOTHING: if ((item instanceof OrItem) || (item instanceof EquivItem)) { item.removeItem(i); - } else if ((item instanceof AndItem) || (item instanceof NearItem)) { + } else if ((item instanceof AndItem) || (item instanceof NearItem) || (item instanceof WeakAndItem)) { return Recall.RECALLS_NOTHING; } else if (item instanceof RankItem) { if (i == 0) return Recall.RECALLS_NOTHING; |