summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2022-06-10 00:29:33 +0200
committerJon Bratseth <bratseth@gmail.com>2022-06-10 00:29:33 +0200
commit1e985eac62bb7cfb3d182362ffe97f70dfcea8fa (patch)
treea45d8eb5f9cb59f50569b931b2a86c92337e18bc /container-search
parente5f034271514570b4590a3fa76c91dbdb1f7515f (diff)
Handle lone children
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/querytransform/QueryRewrite.java4
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/querytransform/test/QueryRewriteTestCase.java1
2 files changed, 3 insertions, 2 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 bf814eef057..3af9b756e52 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
@@ -171,7 +171,7 @@ public class QueryRewrite {
removeOtherNonrankedChildren(item, i);
recall = Recall.RECALLS_EVERYTHING;
} else if ((item instanceof AndItem) || (item instanceof NearItem) || (item instanceof WeakAndItem)) {
- if ( ! isRanked(item.getItem(i))) {
+ if ( ! isRanked(item.getItem(i)) && item.items().size() > 1) {
item.removeItem(i);
}
} else if (item instanceof RankItem) {
@@ -181,7 +181,7 @@ public class QueryRewrite {
}
break;
case RECALLS_NOTHING:
- if ((item instanceof OrItem) || (item instanceof EquivItem)) {
+ if ((item instanceof OrItem) || (item instanceof EquivItem) && item.items().size() > 1) {
item.removeItem(i);
} else if ((item instanceof AndItem) || (item instanceof NearItem) || (item instanceof WeakAndItem)) {
return Recall.RECALLS_NOTHING;
diff --git a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/QueryRewriteTestCase.java b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/QueryRewriteTestCase.java
index 626c145875c..b8c5244fb98 100644
--- a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/QueryRewriteTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/QueryRewriteTestCase.java
@@ -29,6 +29,7 @@ public class QueryRewriteTestCase {
Query query = new Query("?query=sddocname:music");
query.getModel().setRestrict("music");
QueryRewrite.optimizeByRestrict(query);
+ assertEquals("WEAKAND(100) sddocname:music", query.getModel().getQueryTree().toString());
}
@Test