diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2024-03-22 09:21:56 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2024-03-22 14:14:49 +0100 |
commit | d07bb070803a582994ee3e6d6f454f006f188e76 (patch) | |
tree | b7d9816f7400dac65fff468d756ca372c3a4dd94 | |
parent | 4ddceeddd74e1b8ea0077a3c73bad281c0e5f91c (diff) |
Handle the federation config in the federation searcher.
2 files changed, 8 insertions, 6 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/federation/FederationSearcher.java b/container-search/src/main/java/com/yahoo/search/federation/FederationSearcher.java index 000fef9b14b..570e76d0127 100644 --- a/container-search/src/main/java/com/yahoo/search/federation/FederationSearcher.java +++ b/container-search/src/main/java/com/yahoo/search/federation/FederationSearcher.java @@ -43,6 +43,7 @@ import java.time.Clock; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; +import java.util.HashSet; import java.util.IdentityHashMap; import java.util.Iterator; import java.util.LinkedHashSet; @@ -54,6 +55,7 @@ import java.util.Optional; import java.util.Set; import java.util.concurrent.TimeUnit; import java.util.logging.Logger; +import java.util.stream.Collectors; import static com.google.common.base.Preconditions.checkNotNull; import static com.yahoo.collections.CollectionUtil.first; @@ -88,7 +90,7 @@ public class FederationSearcher extends ForkingSearcher { public FederationSearcher(FederationConfig config, SchemaInfo schemaInfo, ComponentRegistry<TargetSelector> targetSelectors) { this(createResolver(config), - VirtualSourceResolver.of(config), + createVirtualSourceResolver(config), resolveSelector(config.targetSelector(), targetSelectors), createSchema2Clusters(schemaInfo)); } @@ -109,6 +111,10 @@ public class FederationSearcher extends ForkingSearcher { this.virtualSourceResolver = virtualSourceResolver; } + private static VirtualSourceResolver createVirtualSourceResolver(FederationConfig config) { + return VirtualSourceResolver.of(config.target().stream().map(FederationConfig.Target::id).collect(Collectors.toUnmodifiableSet())); + } + private static TargetSelector resolveSelector(String selectorId, ComponentRegistry<TargetSelector> targetSelectors) { if (selectorId.isEmpty()) return null; diff --git a/container-search/src/main/java/com/yahoo/search/federation/sourceref/VirtualSourceResolver.java b/container-search/src/main/java/com/yahoo/search/federation/sourceref/VirtualSourceResolver.java index fc07d12d429..2b2c3b2f3ca 100644 --- a/container-search/src/main/java/com/yahoo/search/federation/sourceref/VirtualSourceResolver.java +++ b/container-search/src/main/java/com/yahoo/search/federation/sourceref/VirtualSourceResolver.java @@ -1,8 +1,6 @@ // Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.search.federation.sourceref; -import com.yahoo.search.federation.FederationConfig; - import java.util.HashMap; import java.util.HashSet; import java.util.Map; @@ -43,9 +41,7 @@ public class VirtualSourceResolver { } return virtualSourceMap; } - public static VirtualSourceResolver of(FederationConfig config) { - return of(config.target().stream().map(FederationConfig.Target::id).collect(Collectors.toUnmodifiableSet())); - } + public Set<String> resolve(Set<String> sourcesInQuery) { boolean hasMapping = sourcesInQuery.stream().anyMatch(virtualSources::containsKey); if (hasMapping) { |