aboutsummaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@yahooinc.com>2023-03-28 15:15:39 +0200
committerBjørn Christian Seime <bjorncs@yahooinc.com>2023-03-28 16:21:15 +0200
commitb55da928a113abb841e9acb403710bf03ecf9fa5 (patch)
tree3b3f28932e7f5e162de3423fb66e6b67b3f30ebb /container-search/src/main/java/com/yahoo/prelude/cluster/ClusterSearcher.java
parent75c59aad9977f0021001f823b36b791af954b662 (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.java20
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;
}