summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-10-21 18:02:08 +0200
committerGitHub <noreply@github.com>2021-10-21 18:02:08 +0200
commitc6b1d441fd9ee02e6213ed4b240b721ac1bb4666 (patch)
tree5e26420309d8eb71a1457484dacfbfb311d76ddb /container-search
parente67760622daa2a26290a4d6f05f5ec73a9a827da (diff)
parent66f1b3f9e0df0c18043ff357597fee30737bd1f0 (diff)
Merge branch 'master' into balder/upper-limit-before-commit
Diffstat (limited to 'container-search')
-rw-r--r--container-search/abi-spec.json18
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java8
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/query/TrueItem.java41
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/Group.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/VespaSerializer.java12
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/YqlParser.java6
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/cluster/ClusterSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/yql/VespaSerializerTestCase.java3
-rw-r--r--container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java5
9 files changed, 87 insertions, 10 deletions
diff --git a/container-search/abi-spec.json b/container-search/abi-spec.json
index fc642ca7b22..d191659f085 100644
--- a/container-search/abi-spec.json
+++ b/container-search/abi-spec.json
@@ -1605,6 +1605,24 @@
],
"fields": []
},
+ "com.yahoo.prelude.query.TrueItem": {
+ "superClass": "com.yahoo.prelude.query.Item",
+ "interfaces": [],
+ "attributes": [
+ "public"
+ ],
+ "methods": [
+ "public void <init>()",
+ "public void setIndexName(java.lang.String)",
+ "public com.yahoo.prelude.query.Item$ItemType getItemType()",
+ "public java.lang.String getName()",
+ "protected void appendHeadingString(java.lang.StringBuilder)",
+ "public int encode(java.nio.ByteBuffer)",
+ "public int getTermCount()",
+ "protected void appendBodyString(java.lang.StringBuilder)"
+ ],
+ "fields": []
+ },
"com.yahoo.prelude.query.UriItem": {
"superClass": "com.yahoo.prelude.query.PhraseItem",
"interfaces": [],
diff --git a/container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java b/container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java
index a2decd8c42f..99de33aca94 100644
--- a/container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java
@@ -5,7 +5,6 @@ import com.google.inject.Inject;
import com.yahoo.component.ComponentId;
import com.yahoo.component.chain.dependencies.After;
import com.yahoo.component.provider.ComponentRegistry;
-import com.yahoo.container.QrConfig;
import com.yahoo.container.QrSearchersConfig;
import com.yahoo.container.core.documentapi.VespaDocumentAccess;
import com.yahoo.container.handler.VipStatus;
@@ -34,6 +33,7 @@ import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.UUID;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executor;
import java.util.concurrent.FutureTask;
@@ -75,7 +75,6 @@ public class ClusterSearcher extends Searcher {
ClusterConfig clusterConfig,
DocumentdbInfoConfig documentDbConfig,
ComponentRegistry<Dispatcher> dispatchers,
- QrConfig qrConfig,
VipStatus vipStatus,
VespaDocumentAccess access) {
super(id);
@@ -101,12 +100,13 @@ public class ClusterSearcher extends Searcher {
}
}
+ String uniqueServerId = UUID.randomUUID().toString();
if (searchClusterConfig.indexingmode() == STREAMING) {
- server = vdsCluster(qrConfig.discriminator(), searchClusterIndex,
+ server = vdsCluster(uniqueServerId, searchClusterIndex,
searchClusterConfig, docSumParams, documentDbConfig, access);
vipStatus.addToRotation(server.getName());
} else {
- server = searchDispatch(searchClusterIndex, searchClusterName, qrConfig.discriminator(),
+ server = searchDispatch(searchClusterIndex, searchClusterName, uniqueServerId,
docSumParams, documentDbConfig, dispatchers);
}
}
diff --git a/container-search/src/main/java/com/yahoo/prelude/query/TrueItem.java b/container-search/src/main/java/com/yahoo/prelude/query/TrueItem.java
new file mode 100644
index 00000000000..20aebd124e7
--- /dev/null
+++ b/container-search/src/main/java/com/yahoo/prelude/query/TrueItem.java
@@ -0,0 +1,41 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.prelude.query;
+
+import java.nio.ByteBuffer;
+
+/**
+ * A query item which matches everything.
+ *
+ * @author arnej
+ */
+public class TrueItem extends Item {
+
+ @Override
+ public void setIndexName(String index) {
+ throw new IllegalArgumentException("TrueItem should not have an index name");
+ }
+
+ @Override
+ public ItemType getItemType() { return ItemType.TRUE; }
+
+ @Override
+ public String getName() { return "TRUE"; }
+
+ /** Override to only return "TRUE" rather than "TRUE " */
+ @Override
+ protected void appendHeadingString(StringBuilder buffer) {
+ buffer.append(getName());
+ }
+
+ @Override
+ public int encode(ByteBuffer buffer) {
+ super.encodeThis(buffer);
+ return 1;
+ }
+
+ @Override
+ public int getTermCount() { return 0; }
+
+ @Override
+ protected void appendBodyString(StringBuilder buffer) { }
+}
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/Group.java b/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/Group.java
index 7002d1f7f2f..8ae892bc664 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/Group.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/Group.java
@@ -72,7 +72,7 @@ public class Group {
boolean balanced = skew <= activeDocs * maxContentSkew;
if (!isBalanced.get() || balanced != isBalanced.get()) {
if (!isSparse())
- log.info("Content is " + (balanced ? "" : "not ") + "well balanced. Current deviation = " +
+ log.info("Content in " + this + " is " + (balanced ? "" : "not ") + "well balanced. Current deviation = " +
skew * 100 / activeDocs + " %. activeDocs = " + activeDocs + ", skew = " + skew +
", average = " + average);
isBalanced.set(balanced);
diff --git a/container-search/src/main/java/com/yahoo/search/yql/VespaSerializer.java b/container-search/src/main/java/com/yahoo/search/yql/VespaSerializer.java
index 012f427a781..897bcde4fc3 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/VespaSerializer.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/VespaSerializer.java
@@ -97,6 +97,7 @@ import com.yahoo.prelude.query.SuffixItem;
import com.yahoo.prelude.query.TaggableItem;
import com.yahoo.prelude.query.ToolBox;
import com.yahoo.prelude.query.ToolBox.QueryVisitor;
+import com.yahoo.prelude.query.TrueItem;
import com.yahoo.prelude.query.UriItem;
import com.yahoo.prelude.query.WandItem;
import com.yahoo.prelude.query.WeakAndItem;
@@ -484,6 +485,16 @@ public class VespaSerializer {
}
+ private static class TrueSerializer extends Serializer<TrueItem> {
+ @Override
+ void onExit(StringBuilder destination, TrueItem item) { }
+ @Override
+ boolean serialize(StringBuilder destination, TrueItem item) {
+ destination.append("true");
+ return false;
+ }
+ }
+
private static class FalseSerializer extends Serializer<FalseItem> {
@Override
void onExit(StringBuilder destination, FalseItem item) { }
@@ -1205,6 +1216,7 @@ public class VespaSerializer {
dispatchBuilder.put(IntItem.class, new NumberSerializer());
dispatchBuilder.put(GeoLocationItem.class, new GeoLocationSerializer());
dispatchBuilder.put(BoolItem.class, new BoolSerializer());
+ dispatchBuilder.put(TrueItem.class, new TrueSerializer());
dispatchBuilder.put(FalseItem.class, new FalseSerializer());
dispatchBuilder.put(MarkerWordItem.class, new WordSerializer()); // gotcha
dispatchBuilder.put(NearItem.class, new NearSerializer());
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 fa2b9fd14e7..c688f61add0 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
@@ -62,6 +62,7 @@ import com.yahoo.prelude.query.TaggableItem;
import com.yahoo.prelude.query.TermItem;
import com.yahoo.prelude.query.ToolBox;
import com.yahoo.prelude.query.ToolBox.QueryVisitor;
+import com.yahoo.prelude.query.TrueItem;
import com.yahoo.prelude.query.UriItem;
import com.yahoo.prelude.query.WandItem;
import com.yahoo.prelude.query.WeakAndItem;
@@ -450,10 +451,13 @@ public class YqlParser implements Parser {
private Item buildLiteral(OperatorNode<ExpressionOperator> ast) {
var literal = ast.getArgument(0);
+ if (Boolean.TRUE.equals(literal)) {
+ return new TrueItem();
+ }
if (Boolean.FALSE.equals(literal)) {
return new FalseItem();
}
- throw newUnexpectedArgumentException(literal, Boolean.FALSE);
+ throw newUnexpectedArgumentException(literal, Boolean.FALSE, Boolean.TRUE);
}
private Item buildNearestNeighbor(OperatorNode<ExpressionOperator> ast) {
diff --git a/container-search/src/test/java/com/yahoo/prelude/cluster/ClusterSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/cluster/ClusterSearcherTestCase.java
index 95929763675..801f7da1939 100644
--- a/container-search/src/test/java/com/yahoo/prelude/cluster/ClusterSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/cluster/ClusterSearcherTestCase.java
@@ -5,7 +5,6 @@ import com.google.common.collect.ImmutableList;
import com.yahoo.component.ComponentId;
import com.yahoo.component.provider.ComponentRegistry;
import com.yahoo.concurrent.InThreadExecutorService;
-import com.yahoo.container.QrConfig;
import com.yahoo.container.QrSearchersConfig;
import com.yahoo.container.handler.ClustersStatus;
import com.yahoo.container.handler.VipStatus;
@@ -530,7 +529,6 @@ public class ClusterSearcherTestCase {
clusterConfig.build(),
documentDbConfig.build(),
dispatchers,
- new QrConfig.Builder().build(),
vipStatus,
null);
}
diff --git a/container-search/src/test/java/com/yahoo/search/yql/VespaSerializerTestCase.java b/container-search/src/test/java/com/yahoo/search/yql/VespaSerializerTestCase.java
index 308907df6b4..cc13658648d 100644
--- a/container-search/src/test/java/com/yahoo/search/yql/VespaSerializerTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/yql/VespaSerializerTestCase.java
@@ -143,7 +143,8 @@ public class VespaSerializerTestCase {
}
@Test
- public void testFalse() {
+ public void testTrueAndFalse() {
+ parseAndConfirm("true");
parseAndConfirm("false");
}
diff --git a/container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java b/container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java
index e7cba25d1ed..f9005387716 100644
--- a/container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/yql/YqlParserTestCase.java
@@ -592,8 +592,11 @@ public class YqlParserTestCase {
}
@Test
- public void testFalse() {
+ public void testTrueAndFalse() {
+ assertParse("select foo from bar where true;", "TRUE");
assertParse("select foo from bar where false;", "FALSE");
+ assertParse("select foo from bar where ((title contains \"foo\") AND true) AND !((title contains \"bar\") or false);",
+ "+(AND title:foo TRUE) -(OR title:bar FALSE)");
}
@Test