diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-04-26 23:45:09 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2021-04-26 23:45:09 +0200 |
commit | 2be11f2d5c6f21dd292c20e3d35faaad70815793 (patch) | |
tree | e40da701c2414cd8dbbb9fbe3941f25e2404ba6d | |
parent | cb860b594152af5fdf22ec7f8db6d96299daffdb (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.java | 1 | ||||
-rw-r--r-- | container-search/src/test/java/com/yahoo/prelude/querytransform/test/QueryRewriteTestCase.java | 4 |
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) { |