summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-04-26 23:45:09 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2021-04-26 23:45:09 +0200
commit2be11f2d5c6f21dd292c20e3d35faaad70815793 (patch)
treee40da701c2414cd8dbbb9fbe3941f25e2404ba6d
parentcb860b594152af5fdf22ec7f8db6d96299daffdb (diff)
In the case that the first item in a rank item evaluated to false it would be removed, amking the next the first.
That is correct behaviour for all, but the first item. If the first is false, the whole rank will be false.
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/querytransform/QueryRewrite.java1
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/querytransform/test/QueryRewriteTestCase.java4
2 files changed, 4 insertions, 1 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 5a936d42ccc..329e886c3d3 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
@@ -186,6 +186,7 @@ public class QueryRewrite {
} else if ((item instanceof AndItem) || (item instanceof NearItem)) {
return Recall.RECALLS_NOTHING;
} else if (item instanceof RankItem) {
+ if (i == 0) return Recall.RECALLS_NOTHING;
item.removeItem(i);
} else {
throw new UnsupportedOperationException(item.getClass().getName());
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 36137abd9b8..6143682c028 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
@@ -89,8 +89,10 @@ public class QueryRewriteTestCase {
@Test
public void testRestrictRank() {
- assertRewritten("sddocname:per&filter=abc", "espen", "|abc");
+ assertRewritten("sddocname:per&filter=abc", "espen", "NULL");
assertRewritten("sddocname:per&filter=abc", "per", "RANK sddocname:per |abc");
+ assertRewritten("sddocname:per RANK bar", "per", "RANK sddocname:per bar");
+ assertRewritten("sddocname:per RANK bar", "espen", "NULL");
}
private static Query query(String queryString, String restrict) {