summaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'container-search/src/main/java')
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/parser/AbstractParser.java9
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/parser/AdvancedParser.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/parser/AllParser.java8
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/parser/AnyParser.java4
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/parser/PhraseParser.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/parser/SimpleParser.java12
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/parser/StructuredParser.java8
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/parser/TokenizeParser.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/parser/WebParser.java4
9 files changed, 33 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..9f57512f657 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
@@ -133,6 +133,9 @@ public abstract class AbstractParser implements CustomParser {
IndexFacts.Session indexFacts, String defaultIndexName, Parsable parsable) {
if (queryToParse == null) return null;
+ if (defaultIndexName != null)
+ defaultIndexName = indexFacts.getCanonicName(defaultIndexName);
+
tokenize(queryToParse, defaultIndexName, indexFacts, parsingLanguage);
if (parsingLanguage == null && parsable != null) {
@@ -143,7 +146,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 +225,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())) {