aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-03-15 10:40:52 +0100
committerGitHub <noreply@github.com>2023-03-15 10:40:52 +0100
commitd964ceed34454ef759dec0c21dd9763ce2605977 (patch)
treeafc18f7f860ec222cd1af4570f585699dc6aebe6
parent772568949a67767f06784e8e9350c487f36bf2e2 (diff)
parentfb584b65d2a35ff266205f636504c2d964536de1 (diff)
Merge pull request #26428 from vespa-engine/bratseth/deprecate-creator
Deprecate creator
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/Item.java20
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/querytransform/RecallSearcher.java20
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/querytransform/StemmingSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/querytransform/RangeQueryOptimizer.java4
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));