aboutsummaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/prelude/query/parser/StructuredParser.java
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@verizonmedia.com>2020-03-03 11:25:39 +0100
committerJon Bratseth <bratseth@verizonmedia.com>2020-03-03 11:25:39 +0100
commita277132980a9bf55e705bb72f079f11d48fbf030 (patch)
tree56426d0ee8702393718440da747ae39b78cec9ad /container-search/src/main/java/com/yahoo/prelude/query/parser/StructuredParser.java
parentbe75fa67a640d2c3a71536dca1253637d8dce708 (diff)
Revert "Revert "Bratseth/phrase segmenting feature flag""
This reverts commit c72315a338a02858c8371d3d70fe091c43b672dd.
Diffstat (limited to 'container-search/src/main/java/com/yahoo/prelude/query/parser/StructuredParser.java')
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/parser/StructuredParser.java17
1 files changed, 14 insertions, 3 deletions
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 5e292a06b0f..9ba6c1a8101 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
@@ -442,9 +442,9 @@ abstract class StructuredParser extends AbstractParser {
Item item = null;
try {
- if (!tokens.currentIs(WORD)
- && ((!tokens.currentIs(NUMBER) && !tokens.currentIs(MINUS)
- && !tokens.currentIs(UNDERSCORE)) || (!submodes.url && !submodes.site))) {
+ if ( ! tokens.currentIs(WORD)
+ && ((!tokens.currentIs(NUMBER) && !tokens.currentIs(MINUS)
+ && !tokens.currentIs(UNDERSCORE)) || (!submodes.url && !submodes.site))) {
return null;
}
Token word = tokens.next();
@@ -557,6 +557,7 @@ abstract class StructuredParser extends AbstractParser {
if (composite != null) {
composite.addItem(word);
+ connectLastTermsIn(composite);
} else if (firstWord != null) {
if (submodes.site || submodes.url) {
UriItem uriItem = new UriItem();
@@ -584,6 +585,7 @@ abstract class StructuredParser extends AbstractParser {
}
composite.addItem(firstWord);
composite.addItem(word);
+ connectLastTermsIn(composite);
} else if (word instanceof PhraseItem) {
composite = (PhraseItem)word;
} else {
@@ -654,6 +656,15 @@ abstract class StructuredParser extends AbstractParser {
}
}
+ private void connectLastTermsIn(CompositeItem composite) {
+ int items = composite.items().size();
+ if (items < 2) return;
+ Item nextToLast = composite.items().get(items - 2);
+ Item last = composite.items().get(items - 1);
+ if ( ! (nextToLast instanceof TermItem)) return;
+ ((TermItem)nextToLast).setConnectivity(last, 1);
+ }
+
private boolean addStartMarking() {
if (submodes.explicitAnchoring() && tokens.currentIs(HAT)) {
tokens.skip();