diff options
author | Jon Bratseth <bratseth@yahoo-inc.com> | 2017-10-17 14:25:58 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@yahoo-inc.com> | 2017-10-17 14:27:13 +0200 |
commit | 1c5f99e21b7d1fdd949c619137241c3dd3a901e0 (patch) | |
tree | b5a23056c518e01b30c33126ec061994a16460a5 /container-search/src/main/java/com/yahoo/prelude/querytransform | |
parent | 2a44d80a70ab5669bc40eed95753ffdea01ea760 (diff) |
Don't remove OR terms which contributes to rank
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.java | 72 |
1 files changed, 29 insertions, 43 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 be61ca709d1..61c41c7dc45 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 @@ -41,8 +41,6 @@ public class QueryRewrite { /** * Optimizes the given query tree based on its {@link Model#getRestrict()} parameter, if any. - * - * @param query to optimize. */ public static void optimizeByRestrict(Query query) { if (query.getModel().getRestrict().size() != 1) { @@ -56,8 +54,6 @@ public class QueryRewrite { /** * Collapses all single-child {@link CompositeItem}s into their parent item. - * - * @param query The query whose composites to collapse. */ public static void collapseSingleComposites(Query query) { Item oldRoot = query.getModel().getQueryTree().getRoot(); @@ -70,8 +66,6 @@ public class QueryRewrite { /** * Replaces and {@link SimpleIndexedItem} searching in the {@link Hit#SDDOCNAME_FIELD} with an item * appropriate for the search node. - * - * @param query the query to rewrite. */ public static void rewriteSddocname(Query query) { Item oldRoot = query.getModel().getQueryTree().getRoot(); @@ -156,53 +150,45 @@ public class QueryRewrite { for (int i = item.getItemCount(); --i >= 1; ) { Item child = item.getItem(i); switch (optimizeByRestrict(child, restrictParam)) { - case RECALLS_EVERYTHING: - return Recall.RECALLS_NOTHING; - case RECALLS_NOTHING: - item.removeItem(i); - break; + case RECALLS_EVERYTHING: + return Recall.RECALLS_NOTHING; + case RECALLS_NOTHING: + item.removeItem(i); + break; } } return Recall.UNKNOWN_RECALL; } private static Recall optimizeCompositeItemByRestrict(CompositeItem item, String restrictParam) { + Recall recall = Recall.UNKNOWN_RECALL; for (int i = item.getItemCount(); --i >= 0; ) { switch (optimizeByRestrict(item.getItem(i), restrictParam)) { - case RECALLS_EVERYTHING: - if ((item instanceof OrItem) || (item instanceof EquivItem)) { - retainChild(item, i); - return Recall.RECALLS_EVERYTHING; - } else if ((item instanceof AndItem) || (item instanceof NearItem)) { - item.removeItem(i); - } else if (item instanceof RankItem) { - // empty - } else { - throw new UnsupportedOperationException(item.getClass().getName()); - } - break; - case RECALLS_NOTHING: - if ((item instanceof OrItem) || (item instanceof EquivItem)) { - item.removeItem(i); - } else if ((item instanceof AndItem) || (item instanceof NearItem)) { - return Recall.RECALLS_NOTHING; - } else if (item instanceof RankItem) { - item.removeItem(i); - } else { - throw new UnsupportedOperationException(item.getClass().getName()); - } - break; + case RECALLS_EVERYTHING: + if ((item instanceof OrItem) || (item instanceof EquivItem)) { + recall = Recall.RECALLS_EVERYTHING; + } else if ((item instanceof AndItem) || (item instanceof NearItem)) { + item.removeItem(i); + } else if (item instanceof RankItem) { + // empty + } else { + throw new UnsupportedOperationException(item.getClass().getName()); + } + break; + case RECALLS_NOTHING: + if ((item instanceof OrItem) || (item instanceof EquivItem)) { + item.removeItem(i); + } else if ((item instanceof AndItem) || (item instanceof NearItem)) { + return Recall.RECALLS_NOTHING; + } else if (item instanceof RankItem) { + item.removeItem(i); + } else { + throw new UnsupportedOperationException(item.getClass().getName()); + } + break; } } - return Recall.UNKNOWN_RECALL; - } - - private static void retainChild(CompositeItem item, int childIdx) { - Item child = item.removeItem(childIdx); - for (int i = item.getItemCount(); --i >= 0; ) { - item.removeItem(i); - } - item.addItem(child); + return recall; } private static Item collapseSingleComposites(Item item) { |