diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-10-21 18:02:08 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-21 18:02:08 +0200 |
commit | c6b1d441fd9ee02e6213ed4b240b721ac1bb4666 (patch) | |
tree | 5e26420309d8eb71a1457484dacfbfb311d76ddb /container-search | |
parent | e67760622daa2a26290a4d6f05f5ec73a9a827da (diff) | |
parent | 66f1b3f9e0df0c18043ff357597fee30737bd1f0 (diff) |
Merge branch 'master' into balder/upper-limit-before-commit
Diffstat (limited to 'container-search')
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 |