summaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/search/yql
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2022-10-13 14:28:43 +0200
committerJon Bratseth <bratseth@gmail.com>2022-10-13 14:28:43 +0200
commit6d0910f9acfc5025c7855916f58497694e7faa2a (patch)
treef714e59ff555940dfa302ad28d46593d33d45cb3 /container-search/src/main/java/com/yahoo/search/yql
parentfdd9b30418bfde52377a4589adfa32aa8deba0ee (diff)
Propagate targetHits
Diffstat (limited to 'container-search/src/main/java/com/yahoo/search/yql')
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/YqlParser.java16
1 files changed, 11 insertions, 5 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/yql/YqlParser.java b/container-search/src/main/java/com/yahoo/search/yql/YqlParser.java
index 72cb102760a..5670e8a7dfd 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/YqlParser.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/YqlParser.java
@@ -132,8 +132,9 @@ public class YqlParser implements Parser {
private static final String USER_INPUT_DEFAULT_INDEX = "defaultIndex";
private static final String USER_INPUT_GRAMMAR = "grammar";
public static final String USER_INPUT_LANGUAGE = "language";
- private static final String USER_INPUT_RAW = "raw";
- private static final String USER_INPUT_SEGMENT = "segment";
+ private static final String USER_INPUT_GRAMMAR_RAW = "raw";
+ private static final String USER_INPUT_GRAMMAR_SEGMENT = "segment";
+ private static final String USER_INPUT_GRAMMAR_WEAKAND = "weakAnd";
private static final String USER_INPUT = "userInput";
private static final String USER_QUERY = "userQuery";
private static final String NON_EMPTY = "nonEmpty";
@@ -722,14 +723,19 @@ public class YqlParser implements Parser {
String.class, "default", "default index for user input terms");
Language language = decideParsingLanguage(ast, wordData);
Item item;
- if (USER_INPUT_RAW.equals(grammar)) {
+ if (USER_INPUT_GRAMMAR_RAW.equals(grammar)) {
item = instantiateWordItem(defaultIndex, wordData, ast, null, SegmentWhen.NEVER, true, language);
- } else if (USER_INPUT_SEGMENT.equals(grammar)) {
+ } else if (USER_INPUT_GRAMMAR_SEGMENT.equals(grammar)) {
item = instantiateWordItem(defaultIndex, wordData, ast, null, SegmentWhen.ALWAYS, false, language);
} else {
item = parseUserInput(grammar, defaultIndex, wordData, language, allowEmpty);
propagateUserInputAnnotations(ast, item);
}
+
+ // Set grammar-specific annotations
+ if (USER_INPUT_GRAMMAR_WEAKAND.equals(grammar) && item instanceof WeakAndItem weakAndItem) {
+ weakAndItem.setN(getAnnotation(ast, TARGET_HITS, Integer.class, WeakAndItem.defaultN, "'targetHits' (N) for weak and"));
+ }
return item;
}
@@ -1428,7 +1434,7 @@ public class YqlParser implements Parser {
wordItem = new WordItem(wordData, fromQuery);
break;
case POSSIBLY:
- if (shouldSegment(field, fromQuery) && ! grammar.equals(USER_INPUT_RAW)) {
+ if (shouldSegment(field, fromQuery) && ! grammar.equals(USER_INPUT_GRAMMAR_RAW)) {
wordItem = segment(field, ast, wordData, fromQuery, parent, language);
} else {
wordItem = new WordItem(wordData, fromQuery);