summaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/prelude/query/parser/AdvancedParser.java
diff options
context:
space:
mode:
Diffstat (limited to 'container-search/src/main/java/com/yahoo/prelude/query/parser/AdvancedParser.java')
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/parser/AdvancedParser.java70
1 files changed, 33 insertions, 37 deletions
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 22bdf145e90..8f98763a838 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
@@ -31,7 +31,8 @@ public class AdvancedParser extends StructuredParser {
super(environment);
}
- protected Item parseItems(String defaultIndexName) {
+ @Override
+ protected Item parseItems() {
return advancedItems(true);
}
@@ -64,45 +65,40 @@ public class AdvancedParser extends StructuredParser {
boolean expectingOperator = false;
do {
- item = null;
-
+ item = indexableItem().getFirst();
if (item == null) {
- item = indexableItem();
- if (item == null) {
- item = compositeItem();
- itemIsComposite = true;
- } else {
- itemIsComposite = false;
- }
- if (item != null) {
- Item newTop = null;
+ item = compositeItem();
+ itemIsComposite = true;
+ } else {
+ itemIsComposite = false;
+ }
+ if (item != null) {
+ Item newTop = null;
- if (expectingOperator) {
- newTop = handleAdvancedOperator(topLevelItem, item,
- topLevelIsClosed);
- }
- if (newTop != null) { // Operator found
- topLevelIsClosed = false;
- expectingOperator = false;
- topLevelItem = newTop;
- } else if (topLevelItem == null) {
- topLevelItem = item;
- if (itemIsComposite) {
- topLevelIsClosed = true;
- }
- expectingOperator = true;
- } else if (topLevelItem instanceof CompositeItem && !(topLevelItem instanceof SegmentItem)) {
- ((CompositeItem) topLevelItem).addItem(item);
- expectingOperator = true;
- } else {
- AndItem and = new AndItem();
-
- and.addItem(topLevelItem);
- and.addItem(item);
- topLevelItem = and;
- topLevelIsClosed = false;
- expectingOperator = true;
+ if (expectingOperator) {
+ newTop = handleAdvancedOperator(topLevelItem, item, topLevelIsClosed);
+ }
+ if (newTop != null) { // Operator found
+ topLevelIsClosed = false;
+ expectingOperator = false;
+ topLevelItem = newTop;
+ } else if (topLevelItem == null) {
+ topLevelItem = item;
+ if (itemIsComposite) {
+ topLevelIsClosed = true;
}
+ expectingOperator = true;
+ } else if (topLevelItem instanceof CompositeItem && !(topLevelItem instanceof SegmentItem)) {
+ ((CompositeItem) topLevelItem).addItem(item);
+ expectingOperator = true;
+ } else {
+ AndItem and = new AndItem();
+
+ and.addItem(topLevelItem);
+ and.addItem(item);
+ topLevelItem = and;
+ topLevelIsClosed = false;
+ expectingOperator = true;
}
}