diff options
author | Jon Bratseth <bratseth@gmail.com> | 2022-08-16 12:58:33 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2022-08-16 12:58:33 +0200 |
commit | 6cc84e06d7d24e68c83ba5a3550e64d9fb917096 (patch) | |
tree | c5fad27f6aa64791d1379181d6ceb063fc855d75 /container-search/src/main/java/com/yahoo/prelude/query | |
parent | cf579cd8d957b1bb2992d7a86830fbca3a64f82b (diff) |
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.
Diffstat (limited to 'container-search/src/main/java/com/yahoo/prelude/query')
9 files changed, 30 insertions, 18 deletions
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())) { |