diff options
author | Jon Bratseth <bratseth@oath.com> | 2021-04-26 23:59:53 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-26 23:59:53 +0200 |
commit | 26678df50e601dff1ddda1133d328e2b3d2e7ff9 (patch) | |
tree | e40da701c2414cd8dbbb9fbe3941f25e2404ba6d | |
parent | cb860b594152af5fdf22ec7f8db6d96299daffdb (diff) | |
parent | 2be11f2d5c6f21dd292c20e3d35faaad70815793 (diff) |
Merge pull request #17610 from vespa-engine/balder/correct-rank-restrict-optimisation
In the case that the first item in a rank item evaluated to false it …
-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) { |