diff options
author | Bjørn Christian Seime <bjorncs@yahooinc.com> | 2023-03-28 15:15:39 +0200 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@yahooinc.com> | 2023-03-28 16:21:15 +0200 |
commit | b55da928a113abb841e9acb403710bf03ecf9fa5 (patch) | |
tree | 3b3f28932e7f5e162de3423fb66e6b67b3f30ebb /container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java | |
parent | 75c59aad9977f0021001f823b36b791af954b662 (diff) |
Enforce that sorting is not enabled when using global-phase
Diffstat (limited to 'container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java')
-rw-r--r-- | container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java | 20 |
1 files changed, 10 insertions, 10 deletions
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 409c0a2c973..f0e3e3f3e44 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 @@ -60,8 +60,7 @@ public class ClusterSearcher extends Searcher { private final VespaBackEndSearcher server; private final Executor executor; - private final GlobalPhaseRanker globalPhaseHelper; - private final boolean enableGlobalPhase; + private final GlobalPhaseRanker globalPhaseRanker; @Inject public ClusterSearcher(ComponentId id, @@ -71,15 +70,15 @@ public class ClusterSearcher extends Searcher { DocumentdbInfoConfig documentDbConfig, SchemaInfo schemaInfo, ComponentRegistry<Dispatcher> dispatchers, - GlobalPhaseRanker globalPhaseHelper, + GlobalPhaseRanker globalPhaseRanker, VipStatus vipStatus, VespaDocumentAccess access) { super(id); this.executor = executor; - this.globalPhaseHelper = globalPhaseHelper; int searchClusterIndex = clusterConfig.clusterId(); searchClusterName = clusterConfig.clusterName(); QrSearchersConfig.Searchcluster searchClusterConfig = getSearchClusterConfigFromClusterName(qrsConfig, searchClusterName); + this.globalPhaseRanker = searchClusterConfig.globalphase() ? globalPhaseRanker : null; this.schemaResolver = new SchemaResolver(documentDbConfig); maxQueryTimeout = ParameterParser.asMilliSeconds(clusterConfig.maxQueryTimeout(), DEFAULT_MAX_QUERY_TIMEOUT); @@ -98,7 +97,6 @@ public class ClusterSearcher extends Searcher { server = searchDispatch(searchClusterIndex, searchClusterName, uniqueServerId, docSumParams, documentDbConfig, schemaInfo, dispatchers); } - enableGlobalPhase = searchClusterConfig.globalphase(); } private static QrSearchersConfig.Searchcluster getSearchClusterConfigFromClusterName(QrSearchersConfig config, String name) { @@ -157,8 +155,7 @@ public class ClusterSearcher extends Searcher { maxQueryCacheTimeout = DEFAULT_MAX_QUERY_CACHE_TIMEOUT; server = searcher; this.executor = executor; - this.globalPhaseHelper = null; - this.enableGlobalPhase = false; + this.globalPhaseRanker = null; } /** Do not use, for internal testing purposes only. **/ @@ -240,10 +237,13 @@ public class ClusterSearcher extends Searcher { throw new IllegalStateException("perSchemaSearch must always be called with 1 schema, got: " + restrict.size()); } String schema = restrict.iterator().next(); - Result result = searcher.search(query, execution); - if (globalPhaseHelper != null && enableGlobalPhase) { - globalPhaseHelper.process(query, result, schema); + boolean useGlobalPhase = globalPhaseRanker != null; + if (useGlobalPhase) { + var error = globalPhaseRanker.validateNoSorting(query, schema).orElse(null); + if (error != null) return new Result(query, error); } + Result result = searcher.search(query, execution); + if (useGlobalPhase) globalPhaseRanker.rerankHits(query, result, schema); return result; } |