aboutsummaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/prelude/querytransform
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@verizonmedia.com>2020-02-03 13:20:27 +0100
committerJon Bratseth <bratseth@verizonmedia.com>2020-02-03 13:20:27 +0100
commitee7cccc90c0857e95898fe4cea21b875e2b6c85b (patch)
treee119433d7fec600321c920dac4f6309001c6e747 /container-search/src/main/java/com/yahoo/prelude/querytransform
parent2bd58b013477ff190b6a678666de5e3cee922ad9 (diff)
Don't remove ranked terms when recalling all
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.java21
1 files changed, 20 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 84c793a6df1..e35994eb2ab 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
@@ -4,6 +4,8 @@ package com.yahoo.prelude.querytransform;
import com.yahoo.prelude.query.AndItem;
import com.yahoo.prelude.query.CompositeItem;
import com.yahoo.prelude.query.EquivItem;
+import com.yahoo.prelude.query.HasIndexItem;
+import com.yahoo.prelude.query.IndexedItem;
import com.yahoo.prelude.query.Item;
import com.yahoo.prelude.query.NearItem;
import com.yahoo.prelude.query.NotItem;
@@ -169,7 +171,9 @@ public class QueryRewrite {
removeOtherNonrankedChildren(item, i);
recall = Recall.RECALLS_EVERYTHING;
} else if ((item instanceof AndItem) || (item instanceof NearItem)) {
- item.removeItem(i);
+ if ( ! isRanked(item.getItem(i))) {
+ item.removeItem(i);
+ }
} else if (item instanceof RankItem) {
// empty
} else {
@@ -200,6 +204,21 @@ public class QueryRewrite {
parent.removeItem(i);
}
}
+
+ private static boolean isRanked(Item item) {
+ if (item instanceof CompositeItem) {
+ boolean isRanked = false;
+ for (Item child : ((CompositeItem)item).items())
+ isRanked |= isRanked(child);
+ return isRanked;
+ }
+ else if (item instanceof HasIndexItem && Hit.SDDOCNAME_FIELD.equals(((HasIndexItem)item).getIndexName())) {
+ return false; // No point in ranking by sddocname
+ }
+ else {
+ return item.isRanked();
+ }
+ }
private static Item collapseSingleComposites(Item item) {
if (!(item instanceof CompositeItem)) {