diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2023-03-15 10:40:52 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-15 10:40:52 +0100 |
commit | d964ceed34454ef759dec0c21dd9763ce2605977 (patch) | |
tree | afc18f7f860ec222cd1af4570f585699dc6aebe6 | |
parent | 772568949a67767f06784e8e9350c487f36bf2e2 (diff) | |
parent | fb584b65d2a35ff266205f636504c2d964536de1 (diff) |
Merge pull request #26428 from vespa-engine/bratseth/deprecate-creator
Deprecate creator
4 files changed, 25 insertions, 21 deletions
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/Item.java b/container-search/src/main/java/com/yahoo/prelude/query/Item.java index 8c154072a42..4f770ef6add 100644 --- a/container-search/src/main/java/com/yahoo/prelude/query/Item.java +++ b/container-search/src/main/java/com/yahoo/prelude/query/Item.java @@ -67,6 +67,7 @@ public abstract class Item implements Cloneable { } // These must match the definitions in searchlib/src/vespa/searchlib/parsequery/item_creator.h + @Deprecated // TODO: Remove on Vespa 9 public enum ItemCreator { ORIG(0), @@ -141,9 +142,8 @@ public abstract class Item implements Cloneable { public abstract String getName(); /** - * Sets whether this is a filter term. - * This indicates that the term origins from the filter parameter in the search API. - * The search backend does not handle filter terms any different than non-filter terms. + * Sets whether this is a filter term. Filter terms are treated just like other terms except that + * they will not be highlighted in dynamic summaries. */ public void setFilter(boolean filter) { if (filter) { @@ -158,12 +158,22 @@ public abstract class Item implements Cloneable { return creator == ItemCreator.FILTER; } - /** Returns the item creator value. */ + /** + * Returns the item creator value. + * + * @deprecated use isFilter(boolean) + */ + @Deprecated // TODO: Remove on Vespa 9 public ItemCreator getCreator() { return creator; } - /** Sets the item creator value. */ + /** + * Sets the item creator value. + * + * @deprecated use setFilter(boolean) + */ + @Deprecated // TODO: Remove on Vespa 9 public void setCreator(ItemCreator creator) { this.creator = creator; } diff --git a/container-search/src/main/java/com/yahoo/prelude/querytransform/RecallSearcher.java b/container-search/src/main/java/com/yahoo/prelude/querytransform/RecallSearcher.java index 98a8e5af00d..2c7d78c0671 100644 --- a/container-search/src/main/java/com/yahoo/prelude/querytransform/RecallSearcher.java +++ b/container-search/src/main/java/com/yahoo/prelude/querytransform/RecallSearcher.java @@ -100,22 +100,17 @@ public class RecallSearcher extends Searcher { * Returns the first word item contained in the given item tree that is an instance of {@link WordItem} with the * given word value. * - * @param root The root of the tree to check. - * @param value The word to look for. - * @return The first node found. + * @param root the root of the tree to check + * @param value the word to look for + * @return the first node found */ private static WordItem findOrigWordItem(Item root, String value) { Deque<Item> stack = new ArrayDeque<>(); stack.push(root); while (!stack.isEmpty()) { Item item = stack.pop(); - if (item.getCreator() == Item.ItemCreator.ORIG && - item instanceof WordItem word) - { - if (word.getWord().equals(value)) { - return word; - } - } + if (! item.isFilter() && item instanceof WordItem word && word.getWord().equals(value)) + return word; if (item instanceof CompositeItem lst) { for (Iterator<Item> it = lst.getItemIterator(); it.hasNext();) { stack.push(it.next()); @@ -128,16 +123,15 @@ public class RecallSearcher extends Searcher { /** * Marks all filter terms in the given query tree as unranked. * - * @param root The root of the tree to update. + * @param root the root of the tree to update */ private static void updateFilterTerms(Item root) { Deque<Item> stack = new ArrayDeque<>(); stack.push(root); while (!stack.isEmpty()) { Item item = stack.pop(); - if (item.getCreator() == Item.ItemCreator.FILTER) { + if (item.isFilter()) item.setRanked(false); - } if (item instanceof CompositeItem lst) { for (Iterator<Item> it = lst.getItemIterator(); it.hasNext();) { stack.push(it.next()); diff --git a/container-search/src/main/java/com/yahoo/prelude/querytransform/StemmingSearcher.java b/container-search/src/main/java/com/yahoo/prelude/querytransform/StemmingSearcher.java index 9bebaf98665..6aa262ca49e 100644 --- a/container-search/src/main/java/com/yahoo/prelude/querytransform/StemmingSearcher.java +++ b/container-search/src/main/java/com/yahoo/prelude/querytransform/StemmingSearcher.java @@ -375,7 +375,7 @@ public class StemmingSearcher extends Searcher { private void copyAttributes(Item blockAsItem, Item replacement) { copyWeight(blockAsItem, replacement); - replacement.setCreator(blockAsItem.getCreator()); + replacement.setFilter(blockAsItem.isFilter()); replacement.setRanked(blockAsItem.isRanked()); replacement.setPositionData(blockAsItem.usePositionData()); } diff --git a/container-search/src/main/java/com/yahoo/search/querytransform/RangeQueryOptimizer.java b/container-search/src/main/java/com/yahoo/search/querytransform/RangeQueryOptimizer.java index 55a9afa5531..152f91b5f9a 100644 --- a/container-search/src/main/java/com/yahoo/search/querytransform/RangeQueryOptimizer.java +++ b/container-search/src/main/java/com/yahoo/search/querytransform/RangeQueryOptimizer.java @@ -61,8 +61,7 @@ public class RangeQueryOptimizer extends Searcher { List<FieldRange> fieldRanges = null; for (Iterator<Item> i = and.getItemIterator(); i.hasNext(); ) { Item item = i.next(); - if ( ! (item instanceof IntItem)) continue; - IntItem intItem = (IntItem)item; + if ( ! (item instanceof IntItem intItem)) continue; if (intItem.getHitLimit() != 0) continue; // each such op gets a different partial set: Cannot be optimized if (intItem.getFromLimit().equals(intItem.getToLimit())) continue; // don't optimize searches for single numbers if (indexFacts.getIndex(intItem.getIndexName()).isMultivalue()) continue; // May match different values in each range @@ -96,6 +95,7 @@ public class RangeQueryOptimizer extends Searcher { } /** Represents the ranges searched in a single field */ + @SuppressWarnings("deprecation") private static final class FieldRange { private Range range = new Range(new Limit(Double.NEGATIVE_INFINITY, false), new Limit(Double.POSITIVE_INFINITY, false)); |