aboutsummaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo
diff options
context:
space:
mode:
Diffstat (limited to 'container-search/src/main/java/com/yahoo')
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/parser/AllParser.java1
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/parser/SimpleParser.java1
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/querytransform/QueryRewrite.java8
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/Model.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/YqlParser.java4
5 files changed, 7 insertions, 9 deletions
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/parser/AllParser.java b/container-search/src/main/java/com/yahoo/prelude/query/parser/AllParser.java
index 80a2320b039..8cc820d8f76 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/parser/AllParser.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/parser/AllParser.java
@@ -55,7 +55,6 @@ public class AllParser extends SimpleParser {
CompositeItem and = null;
NotItem not = null; // Store negatives here as we go
Item current;
-
// Find all items
do {
current = negativeItem();
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/parser/SimpleParser.java b/container-search/src/main/java/com/yahoo/prelude/query/parser/SimpleParser.java
index 020d93d951c..27bce6bd027 100644
--- a/container-search/src/main/java/com/yahoo/prelude/query/parser/SimpleParser.java
+++ b/container-search/src/main/java/com/yahoo/prelude/query/parser/SimpleParser.java
@@ -51,7 +51,6 @@ abstract class SimpleParser extends StructuredParser {
Item topLevelItem = null;
NotItem not = null;
Item item = null;
-
do {
item = positiveItem();
if (item != null) {
diff --git a/container-search/src/main/java/com/yahoo/prelude/querytransform/QueryRewrite.java b/container-search/src/main/java/com/yahoo/prelude/querytransform/QueryRewrite.java
index 09be9b3728b..bf814eef057 100644
--- a/container-search/src/main/java/com/yahoo/prelude/querytransform/QueryRewrite.java
+++ b/container-search/src/main/java/com/yahoo/prelude/querytransform/QueryRewrite.java
@@ -14,6 +14,7 @@ import com.yahoo.prelude.query.OrItem;
import com.yahoo.prelude.query.RankItem;
import com.yahoo.prelude.query.SimpleIndexedItem;
import com.yahoo.prelude.query.SubstringItem;
+import com.yahoo.prelude.query.WeakAndItem;
import com.yahoo.search.Query;
import com.yahoo.search.query.Model;
import com.yahoo.search.result.Hit;
@@ -26,8 +27,6 @@ public class QueryRewrite {
private enum Recall { RECALLS_EVERYTHING, RECALLS_NOTHING, UNKNOWN_RECALL }
- // ------------------- Start public API
-
/**
* Optimize multiple NotItems under and or by collapsing them in to one and leaving
* the positive ones behind in its place and moving itself with the original and as its positive item
@@ -49,6 +48,7 @@ public class QueryRewrite {
return;
}
Item root = query.getModel().getQueryTree().getRoot();
+
if (optimizeByRestrict(root, query.getModel().getRestrict().iterator().next()) == Recall.RECALLS_NOTHING) {
query.getModel().getQueryTree().setRoot(new NullItem());
}
@@ -170,7 +170,7 @@ public class QueryRewrite {
if ((item instanceof OrItem) || (item instanceof EquivItem)) {
removeOtherNonrankedChildren(item, i);
recall = Recall.RECALLS_EVERYTHING;
- } else if ((item instanceof AndItem) || (item instanceof NearItem)) {
+ } else if ((item instanceof AndItem) || (item instanceof NearItem) || (item instanceof WeakAndItem)) {
if ( ! isRanked(item.getItem(i))) {
item.removeItem(i);
}
@@ -183,7 +183,7 @@ public class QueryRewrite {
case RECALLS_NOTHING:
if ((item instanceof OrItem) || (item instanceof EquivItem)) {
item.removeItem(i);
- } else if ((item instanceof AndItem) || (item instanceof NearItem)) {
+ } else if ((item instanceof AndItem) || (item instanceof NearItem) || (item instanceof WeakAndItem)) {
return Recall.RECALLS_NOTHING;
} else if (item instanceof RankItem) {
if (i == 0) return Recall.RECALLS_NOTHING;
diff --git a/container-search/src/main/java/com/yahoo/search/query/Model.java b/container-search/src/main/java/com/yahoo/search/query/Model.java
index 1b12f3f3bb8..dbaab3045bf 100644
--- a/container-search/src/main/java/com/yahoo/search/query/Model.java
+++ b/container-search/src/main/java/com/yahoo/search/query/Model.java
@@ -86,7 +86,7 @@ public class Model implements Cloneable {
private Locale locale = null;
private QueryTree queryTree = null; // The query tree to execute. This is lazily created from the program
private String defaultIndex = null;
- private Query.Type type = Query.Type.ALL;
+ private Query.Type type = Query.Type.WEAKAND;
private Query parent;
private Set<String> sources = new LinkedHashSet<>();
private Set<String> restrict = new LinkedHashSet<>();
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 15e3b7aab14..a149ae9323a 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
@@ -740,7 +740,7 @@ public class YqlParser implements Parser {
if (allowEmpty && (wordData == null || wordData.isEmpty())) return new NullItem();
String grammar = getAnnotation(ast, USER_INPUT_GRAMMAR, String.class,
- Query.Type.ALL.toString(), "grammar for handling user input");
+ Query.Type.WEAKAND.toString(), "grammar for handling user input");
String defaultIndex = getAnnotation(ast, USER_INPUT_DEFAULT_INDEX,
String.class, "default", "default index for user input terms");
Language language = decideParsingLanguage(ast, wordData);
@@ -1448,7 +1448,7 @@ public class YqlParser implements Parser {
"setting for whether to use substring match of input data");
boolean exact = exactMatch != null ? exactMatch : indexFactsSession.getIndex(indexNameExpander.expand(field)).isExact();
String grammar = getAnnotation(ast, USER_INPUT_GRAMMAR, String.class,
- Query.Type.ALL.toString(), "grammar for handling word input");
+ Query.Type.WEAKAND.toString(), "grammar for handling word input");
Preconditions.checkArgument((prefixMatch ? 1 : 0) +
(substrMatch ? 1 : 0) + (suffixMatch ? 1 : 0) < 2,
"Only one of prefix, substring and suffix can be set.");