diff options
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.java | 33 |
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); + } } } |