summaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/prelude/query/parser/AnyParser.java
diff options
context:
space:
mode:
Diffstat (limited to 'container-search/src/main/java/com/yahoo/prelude/query/parser/AnyParser.java')
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/parser/AnyParser.java33
1 files changed, 25 insertions, 8 deletions
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 b714a1d8b34..dd836e9c8e1 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
@@ -35,12 +35,21 @@ public class AnyParser extends SimpleParser {
return anyItems(true);
}
+ Item parseFilter(String filter, Language queryLanguage, Set<String> searchDefinitions) {
+ return parseFilter(filter, queryLanguage, environment.getIndexFacts().newSession(searchDefinitions, Collections.emptySet()));
+ }
+
Item parseFilter(String filter, Language queryLanguage, IndexFacts.Session indexFacts) {
+ Item filterRoot;
+
setState(queryLanguage, indexFacts);
tokenize(filter, null, indexFacts, queryLanguage);
- Item filterRoot = anyItems(true);
- if (filterRoot == null) return null;
+ filterRoot = anyItems(true);
+
+ if (filterRoot == null) {
+ return null;
+ }
markAllTermsAsFilters(filterRoot);
return filterRoot;
@@ -52,10 +61,18 @@ public class AnyParser extends SimpleParser {
try {
tokens.skipMultiple(PLUS);
- if ( ! tokens.skipMultiple(MINUS)) return null;
- if (tokens.currentIsNoIgnore(SPACE)) return null;
- item = indexableItem();
+ if (!tokens.skipMultiple(MINUS)) {
+ return null;
+ }
+
+ if (tokens.currentIsNoIgnore(SPACE)) {
+ return null;
+ }
+
+ if (item == null) {
+ item = indexableItem();
+ }
if (item == null) {
item = compositeItem();
@@ -71,13 +88,13 @@ public class AnyParser extends SimpleParser {
}
}
}
- if (item != null)
+ if (item!=null)
item.setProtected(true);
-
return item;
} finally {
- if (item == null)
+ if (item == null) {
tokens.setPosition(position);
+ }
}
}