From 6cc84e06d7d24e68c83ba5a3550e64d9fb917096 Mon Sep 17 00:00:00 2001 From: Jon Bratseth Date: Tue, 16 Aug 2022 12:58:33 +0200 Subject: Revert "Merge pull request #23669 from vespa-engine/revert-23581-userinput-does-not-use-defaultIndex-while-resolving-indexableitem" This reverts commit d8a38777428495670078d23cd86863829ca8018d, reversing changes made to aa89c25d0ed2e8b0390ef62c6e55feecdd4c7815. --- .../java/com/yahoo/prelude/query/parser/AbstractParser.java | 6 +++--- .../java/com/yahoo/prelude/query/parser/AdvancedParser.java | 2 +- .../main/java/com/yahoo/prelude/query/parser/AllParser.java | 8 ++++---- .../main/java/com/yahoo/prelude/query/parser/AnyParser.java | 4 ++-- .../java/com/yahoo/prelude/query/parser/PhraseParser.java | 2 +- .../java/com/yahoo/prelude/query/parser/SimpleParser.java | 12 ++++++++---- .../com/yahoo/prelude/query/parser/StructuredParser.java | 8 ++++++++ .../java/com/yahoo/prelude/query/parser/TokenizeParser.java | 2 +- .../main/java/com/yahoo/prelude/query/parser/WebParser.java | 4 ++-- 9 files changed, 30 insertions(+), 18 deletions(-) (limited to 'container-search/src/main/java/com/yahoo/prelude/query') diff --git a/container-search/src/main/java/com/yahoo/prelude/query/parser/AbstractParser.java b/container-search/src/main/java/com/yahoo/prelude/query/parser/AbstractParser.java index 586d1d32d57..55001ae5915 100644 --- a/container-search/src/main/java/com/yahoo/prelude/query/parser/AbstractParser.java +++ b/container-search/src/main/java/com/yahoo/prelude/query/parser/AbstractParser.java @@ -143,7 +143,7 @@ public abstract class AbstractParser implements CustomParser { } setState(parsingLanguage, indexFacts); - Item root = parseItems(); + Item root = parseItems(defaultIndexName); if (filterToParse != null) { AnyParser filterParser = new AnyParser(environment); if (root == null) { @@ -222,8 +222,8 @@ public abstract class AbstractParser implements CustomParser { if (tokenOrNull == null) return false; return kind.equals(tokenOrNull.kind); } - - protected abstract Item parseItems(); + + protected abstract Item parseItems(String defaultIndexName); /** * Assigns the default index to query terms having no default index. The diff --git a/container-search/src/main/java/com/yahoo/prelude/query/parser/AdvancedParser.java b/container-search/src/main/java/com/yahoo/prelude/query/parser/AdvancedParser.java index 690fc67af7e..3358075d670 100644 --- a/container-search/src/main/java/com/yahoo/prelude/query/parser/AdvancedParser.java +++ b/container-search/src/main/java/com/yahoo/prelude/query/parser/AdvancedParser.java @@ -20,7 +20,7 @@ public class AdvancedParser extends StructuredParser { super(environment); } - protected Item parseItems() { + protected Item parseItems(String defaultIndexName) { return advancedItems(true); } diff --git a/container-search/src/main/java/com/yahoo/prelude/query/parser/AllParser.java b/container-search/src/main/java/com/yahoo/prelude/query/parser/AllParser.java index 545bb8e777f..09caa72ca59 100644 --- a/container-search/src/main/java/com/yahoo/prelude/query/parser/AllParser.java +++ b/container-search/src/main/java/com/yahoo/prelude/query/parser/AllParser.java @@ -41,16 +41,16 @@ public class AllParser extends SimpleParser { } @Override - protected Item parseItems() { + protected Item parseItems(String defaultIndexName) { int position = tokens.getPosition(); try { - return parseItemsBody(); + return parseItemsBody(defaultIndexName); } finally { tokens.setPosition(position); } } - protected Item parseItemsBody() { + protected Item parseItemsBody(String defaultIndexName) { // Algorithm: Collect positive, negative, and and'ed items, then combine. CompositeItem and = null; NotItem not = null; // Store negatives here as we go @@ -65,7 +65,7 @@ public class AllParser extends SimpleParser { current = positiveItem(); if (current == null) - current = indexableItem(); + current = indexableItem(defaultIndexName); if (current == null) current = compositeItem(); diff --git a/container-search/src/main/java/com/yahoo/prelude/query/parser/AnyParser.java b/container-search/src/main/java/com/yahoo/prelude/query/parser/AnyParser.java index e22043c6b8f..f4ff769ad05 100644 --- a/container-search/src/main/java/com/yahoo/prelude/query/parser/AnyParser.java +++ b/container-search/src/main/java/com/yahoo/prelude/query/parser/AnyParser.java @@ -31,8 +31,8 @@ public class AnyParser extends SimpleParser { super(environment); } - protected Item parseItems() { - return anyItems(true); + protected Item parseItems(String defaultIndexName) { + return anyItems(true, defaultIndexName); } Item parseFilter(String filter, Language queryLanguage, IndexFacts.Session indexFacts) { diff --git a/container-search/src/main/java/com/yahoo/prelude/query/parser/PhraseParser.java b/container-search/src/main/java/com/yahoo/prelude/query/parser/PhraseParser.java index 75edf9fbf5c..72eb56dd0fb 100644 --- a/container-search/src/main/java/com/yahoo/prelude/query/parser/PhraseParser.java +++ b/container-search/src/main/java/com/yahoo/prelude/query/parser/PhraseParser.java @@ -16,7 +16,7 @@ public class PhraseParser extends AbstractParser { super(environment); } - protected Item parseItems() { + protected Item parseItems(String defaultIndex) { return forcedPhrase(); } diff --git a/container-search/src/main/java/com/yahoo/prelude/query/parser/SimpleParser.java b/container-search/src/main/java/com/yahoo/prelude/query/parser/SimpleParser.java index 27bce6bd027..fafbf55a522 100644 --- a/container-search/src/main/java/com/yahoo/prelude/query/parser/SimpleParser.java +++ b/container-search/src/main/java/com/yahoo/prelude/query/parser/SimpleParser.java @@ -33,12 +33,12 @@ abstract class SimpleParser extends StructuredParser { * If there's a explicit composite and some other terms, * a rank terms combines them */ - protected Item anyItems(boolean topLevel) { + protected Item anyItems(boolean topLevel, String defaultIndexName) { int position = tokens.getPosition(); Item item = null; try { - item = anyItemsBody(topLevel); + item = anyItemsBody(topLevel, defaultIndexName); return item; } finally { if (item == null) { @@ -47,7 +47,11 @@ abstract class SimpleParser extends StructuredParser { } } - private Item anyItemsBody(boolean topLevel) { + protected Item anyItems(boolean topLevel) { + return anyItems(topLevel, null); + } + + private Item anyItemsBody(boolean topLevel, String defaultIndexName) { Item topLevelItem = null; NotItem not = null; Item item = null; @@ -88,7 +92,7 @@ abstract class SimpleParser extends StructuredParser { } if (item == null) { - item = indexableItem(); + item = indexableItem(defaultIndexName); if (item != null) { if (topLevelItem == null) { topLevelItem = item; diff --git a/container-search/src/main/java/com/yahoo/prelude/query/parser/StructuredParser.java b/container-search/src/main/java/com/yahoo/prelude/query/parser/StructuredParser.java index f993c7a9e02..c668cf66447 100644 --- a/container-search/src/main/java/com/yahoo/prelude/query/parser/StructuredParser.java +++ b/container-search/src/main/java/com/yahoo/prelude/query/parser/StructuredParser.java @@ -7,6 +7,7 @@ import com.yahoo.search.query.parser.ParserEnvironment; import java.util.ArrayList; import java.util.List; +import java.util.Objects; import static com.yahoo.prelude.query.parser.Token.Kind.*; @@ -52,11 +53,18 @@ abstract class StructuredParser extends AbstractParser { } protected Item indexableItem() { + return indexableItem(null); + } + + protected Item indexableItem(String defaultIndexName) { int position = tokens.getPosition(); Item item = null; try { String indexName = indexPrefix(); + if (Objects.isNull(indexName)) { + indexName = defaultIndexName; + } setSubmodeFromIndex(indexName, indexFacts); item = number(); diff --git a/container-search/src/main/java/com/yahoo/prelude/query/parser/TokenizeParser.java b/container-search/src/main/java/com/yahoo/prelude/query/parser/TokenizeParser.java index dbbc321d057..eefbe5fa0d0 100644 --- a/container-search/src/main/java/com/yahoo/prelude/query/parser/TokenizeParser.java +++ b/container-search/src/main/java/com/yahoo/prelude/query/parser/TokenizeParser.java @@ -22,7 +22,7 @@ public final class TokenizeParser extends AbstractParser { } @Override - protected Item parseItems() { + protected Item parseItems(String defaultIndex) { WeakAndItem weakAnd = new WeakAndItem(); Token token; while (null != (token = tokens.next())) { diff --git a/container-search/src/main/java/com/yahoo/prelude/query/parser/WebParser.java b/container-search/src/main/java/com/yahoo/prelude/query/parser/WebParser.java index d7c7dec4798..40497d94a6d 100644 --- a/container-search/src/main/java/com/yahoo/prelude/query/parser/WebParser.java +++ b/container-search/src/main/java/com/yahoo/prelude/query/parser/WebParser.java @@ -28,7 +28,7 @@ public class WebParser extends AllParser { } @Override - protected Item parseItemsBody() { + protected Item parseItemsBody(String defaultIndexName) { // Algorithm: Collect positive, negative, and'ed and or'ed elements, then combine. CompositeItem and = null; OrItem or = null; @@ -45,7 +45,7 @@ public class WebParser extends AllParser { current = positiveItem(); if (current == null) - current = indexableItem(); + current = indexableItem(defaultIndexName); if (current != null) { if (and != null && (current instanceof WordItem) && "OR".equals(((WordItem)current).getRawWord())) { -- cgit v1.2.3