summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2024-02-14 12:25:21 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2024-02-14 12:25:21 +0100
commit36c4b2c91ecd27ac5089c8ce14a3265d3ece4e01 (patch)
tree5a730c6e435e8bb5f777bc3c047a1e7ebd5856a4 /container-search
parent3859eaf19eb20f569841647a5823eba8969d41ef (diff)
Use Schemainfo instead of Indexfacts.
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/IndexFacts.java27
-rw-r--r--container-search/src/main/java/com/yahoo/search/federation/FederationSearcher.java42
-rw-r--r--container-search/src/main/java/com/yahoo/search/federation/sourceref/SourceRefResolver.java18
-rw-r--r--container-search/src/main/java/com/yahoo/search/querytransform/DefaultPositionSearcher.java4
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/searcher/test/BlendingSearcherTestCase.java20
-rw-r--r--container-search/src/test/java/com/yahoo/search/federation/DuplicateSourceTestCase.java17
-rw-r--r--container-search/src/test/java/com/yahoo/search/federation/FederationSearcherTest.java3
-rw-r--r--container-search/src/test/java/com/yahoo/search/federation/FederationSearcherTestCase.java16
-rw-r--r--container-search/src/test/java/com/yahoo/search/federation/FederationTester.java7
-rw-r--r--container-search/src/test/java/com/yahoo/search/federation/sourceref/SourceRefResolverTestCase.java35
-rw-r--r--container-search/src/test/java/com/yahoo/search/searchchain/test/FutureDataTestCase.java3
11 files changed, 82 insertions, 110 deletions
diff --git a/container-search/src/main/java/com/yahoo/prelude/IndexFacts.java b/container-search/src/main/java/com/yahoo/prelude/IndexFacts.java
index c0dce3734b2..e4e50f8f2ff 100644
--- a/container-search/src/main/java/com/yahoo/prelude/IndexFacts.java
+++ b/container-search/src/main/java/com/yahoo/prelude/IndexFacts.java
@@ -3,9 +3,7 @@ package com.yahoo.prelude;
import com.yahoo.search.Query;
-import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -29,8 +27,6 @@ import static com.yahoo.text.Lowercase.toLowerCase;
// TODO: Complete migration to SchemaInfo
public class IndexFacts {
- private final Map<String, List<String>> clusterByDocument;
-
private record DocumentTypeListOffset(int offset, SearchDefinition searchDefinition) { }
/** A Map of all known search definitions indexed by name */
@@ -56,7 +52,6 @@ public class IndexFacts {
public IndexFacts() {
searchDefinitions = Map.of();
clusters = Map.of();
- clusterByDocument = Map.of();
}
public IndexFacts(IndexModel indexModel) {
@@ -65,28 +60,6 @@ public class IndexFacts {
this.unionSearchDefinition = indexModel.getUnionSearchDefinition();
}
this.clusters = indexModel.getMasterClusters();
- clusterByDocument = invert(clusters);
- }
-
- private static Map<String, List<String>> invert(Map<String, List<String>> clusters) {
- Map<String, List<String>> result = new HashMap<>();
- for (Map.Entry<String,List<String>> entry : clusters.entrySet()) {
- for (String value : entry.getValue()) {
- addEntry(result, value, entry.getKey());
- }
- }
- return result;
- }
-
- private static void addEntry(Map<String, List<String>> result, String key, String value) {
- List<String> values = result.computeIfAbsent(key, k -> new ArrayList<>());
- values.add(value);
- }
-
- // Assumes that document names are equal to the search definition that contain them.
- public List<String> clustersHavingSearchDefinition(String searchDefinitionName) {
- List<String> clusters = clusterByDocument.get(searchDefinitionName);
- return clusters != null ? clusters : List.of();
}
private boolean notInitialized() {
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 1f8f8757ebc..f40caac1562 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
@@ -11,7 +11,6 @@ import com.yahoo.component.chain.dependencies.Provides;
import com.yahoo.component.provider.ComponentRegistry;
import com.yahoo.errorhandling.Results;
import com.yahoo.errorhandling.Results.Builder;
-import com.yahoo.prelude.IndexFacts;
import com.yahoo.processing.IllegalInputException;
import com.yahoo.processing.request.CompoundName;
import com.yahoo.search.Query;
@@ -31,6 +30,8 @@ import com.yahoo.search.result.ErrorMessage;
import com.yahoo.search.result.Hit;
import com.yahoo.search.result.HitGroup;
import com.yahoo.search.result.HitOrderer;
+import com.yahoo.search.schema.Cluster;
+import com.yahoo.search.schema.SchemaInfo;
import com.yahoo.search.searchchain.AsyncExecution;
import com.yahoo.search.searchchain.Execution;
import com.yahoo.search.searchchain.ForkingSearcher;
@@ -42,6 +43,7 @@ import java.time.Clock;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
+import java.util.HashMap;
import java.util.IdentityHashMap;
import java.util.Iterator;
import java.util.LinkedHashSet;
@@ -84,20 +86,26 @@ public class FederationSearcher extends ForkingSearcher {
private final Clock clock = Clock.systemUTC();
@Inject
- public FederationSearcher(FederationConfig config, ComponentRegistry<TargetSelector> targetSelectors) {
- this(createResolver(config), VirtualSourceResolver.of(config), resolveSelector(config.targetSelector(), targetSelectors));
+ public FederationSearcher(FederationConfig config, SchemaInfo schemaInfo,
+ ComponentRegistry<TargetSelector> targetSelectors) {
+ this(createResolver(config),
+ VirtualSourceResolver.of(config),
+ resolveSelector(config.targetSelector(), targetSelectors),
+ createSchema2Clusters(schemaInfo));
}
// for testing
- public FederationSearcher(ComponentId id, SearchChainResolver searchChainResolver) {
- this(searchChainResolver, VirtualSourceResolver.of(), null);
+ public FederationSearcher(ComponentId id, SearchChainResolver searchChainResolver,
+ Map<String, List<String>> schema2Clusters) {
+ this(searchChainResolver, VirtualSourceResolver.of(), null, schema2Clusters);
}
private FederationSearcher(SearchChainResolver searchChainResolver,
VirtualSourceResolver virtualSourceResolver,
- TargetSelector targetSelector) {
+ TargetSelector targetSelector,
+ Map<String, List<String>> schema2Clusters) {
this.searchChainResolver = searchChainResolver;
- sourceRefResolver = new SourceRefResolver(searchChainResolver);
+ sourceRefResolver = new SourceRefResolver(searchChainResolver, schema2Clusters);
this.targetSelector = targetSelector;
this.virtualSourceResolver = virtualSourceResolver;
}
@@ -109,6 +117,16 @@ public class FederationSearcher extends ForkingSearcher {
"Missing target selector with id '" + selectorId + "'");
}
+ private static Map<String, List<String>> createSchema2Clusters(SchemaInfo schemaInfo) {
+ Map<String, List<String>> schema2Clusters = new HashMap<>();
+ for (Cluster cluster : schemaInfo.clusters().values()) {
+ for (String schema : cluster.schemas()) {
+ schema2Clusters.computeIfAbsent(schema, key -> new ArrayList<>()).add(cluster.name());
+ }
+ }
+ return schema2Clusters;
+ }
+
private static SearchChainResolver createResolver(FederationConfig config) {
SearchChainResolver.Builder builder = new SearchChainResolver.Builder();
@@ -164,7 +182,7 @@ public class FederationSearcher extends ForkingSearcher {
Result mergedResults = execution.search(query);
Results<SearchChainInvocationSpec, UnresolvedSearchChainException> targets =
- getTargets(query.getModel().getSources(), query.properties(), execution.context().getIndexFacts());
+ getTargets(query.getModel().getSources(), query.properties());
warnIfUnresolvedSearchChains(targets.errors(), mergedResults.hits());
Collection<SearchChainInvocationSpec> prunedTargets =
@@ -425,20 +443,20 @@ public class FederationSearcher extends ForkingSearcher {
return orderer;
}
- private Results<SearchChainInvocationSpec, UnresolvedSearchChainException> getTargets(Set<String> sources, Properties properties, IndexFacts indexFacts) {
+ private Results<SearchChainInvocationSpec, UnresolvedSearchChainException> getTargets(Set<String> sources, Properties properties) {
return sources.isEmpty() ?
defaultSearchChains(properties):
- resolveSources(sources, properties, indexFacts);
+ resolveSources(sources, properties);
}
- private Results<SearchChainInvocationSpec, UnresolvedSearchChainException> resolveSources(Set<String> sourcesInQuery, Properties properties, IndexFacts indexFacts) {
+ private Results<SearchChainInvocationSpec, UnresolvedSearchChainException> resolveSources(Set<String> sourcesInQuery, Properties properties) {
Results.Builder<SearchChainInvocationSpec, UnresolvedSearchChainException> result = new Builder<>();
Set<String> sources = virtualSourceResolver.resolve(sourcesInQuery);
for (String source : sources) {
try {
- result.addAllData(sourceRefResolver.resolve(asSourceSpec(source), properties, indexFacts));
+ result.addAllData(sourceRefResolver.resolve(asSourceSpec(source), properties));
} catch (UnresolvedSearchChainException e) {
result.addError(e);
}
diff --git a/container-search/src/main/java/com/yahoo/search/federation/sourceref/SourceRefResolver.java b/container-search/src/main/java/com/yahoo/search/federation/sourceref/SourceRefResolver.java
index f096ed0de86..2e7849dd85a 100644
--- a/container-search/src/main/java/com/yahoo/search/federation/sourceref/SourceRefResolver.java
+++ b/container-search/src/main/java/com/yahoo/search/federation/sourceref/SourceRefResolver.java
@@ -2,11 +2,11 @@
package com.yahoo.search.federation.sourceref;
import com.yahoo.component.ComponentSpecification;
-import com.yahoo.prelude.IndexFacts;
import com.yahoo.processing.request.Properties;
import java.util.LinkedHashSet;
import java.util.List;
+import java.util.Map;
import java.util.Set;
/**
@@ -17,30 +17,30 @@ import java.util.Set;
public class SourceRefResolver {
private final SearchChainResolver searchChainResolver;
+ private final Map<String, List<String>> schema2Clusters;
- public SourceRefResolver(SearchChainResolver searchChainResolver) {
+ public SourceRefResolver(SearchChainResolver searchChainResolver, Map<String, List<String>> schema2Clusters) {
this.searchChainResolver = searchChainResolver;
+ this.schema2Clusters = schema2Clusters;
}
public Set<SearchChainInvocationSpec> resolve(ComponentSpecification sourceRef,
- Properties sourceToProviderMap,
- IndexFacts indexFacts) throws UnresolvedSearchChainException {
+ Properties sourceToProviderMap) throws UnresolvedSearchChainException {
try {
return Set.of(searchChainResolver.resolve(sourceRef, sourceToProviderMap));
} catch (UnresolvedSourceRefException e) {
- return resolveClustersWithDocument(sourceRef, sourceToProviderMap, indexFacts);
+ return resolveClustersWithDocument(sourceRef, sourceToProviderMap);
}
}
private Set<SearchChainInvocationSpec> resolveClustersWithDocument(ComponentSpecification sourceRef,
- Properties sourceToProviderMap,
- IndexFacts indexFacts)
+ Properties sourceToProviderMap)
throws UnresolvedSearchChainException {
if (hasOnlyName(sourceRef)) {
Set<SearchChainInvocationSpec> clusterSearchChains = new LinkedHashSet<>();
- List<String> clusters = indexFacts.clustersHavingSearchDefinition(sourceRef.getName());
+ List<String> clusters = schema2Clusters.getOrDefault(sourceRef.getName(), List.of());
for (String cluster : clusters) {
clusterSearchChains.add(resolveClusterSearchChain(cluster, sourceRef, sourceToProviderMap));
}
@@ -48,9 +48,7 @@ public class SourceRefResolver {
if ( ! clusterSearchChains.isEmpty())
return clusterSearchChains;
}
-
throw UnresolvedSourceRefException.createForMissingSourceRef(sourceRef);
-
}
private SearchChainInvocationSpec resolveClusterSearchChain(String cluster,
diff --git a/container-search/src/main/java/com/yahoo/search/querytransform/DefaultPositionSearcher.java b/container-search/src/main/java/com/yahoo/search/querytransform/DefaultPositionSearcher.java
index 86684603a45..4cb19bff740 100644
--- a/container-search/src/main/java/com/yahoo/search/querytransform/DefaultPositionSearcher.java
+++ b/container-search/src/main/java/com/yahoo/search/querytransform/DefaultPositionSearcher.java
@@ -33,10 +33,6 @@ public class DefaultPositionSearcher extends Searcher {
this.useV8GeoPositions = cfg.usev8geopositions();
}
- DefaultPositionSearcher() {
- this.useV8GeoPositions = false;
- }
-
@Override
public com.yahoo.search.Result search(Query query, Execution execution) {
Location location = query.getRanking().getLocation();
diff --git a/container-search/src/test/java/com/yahoo/prelude/searcher/test/BlendingSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/searcher/test/BlendingSearcherTestCase.java
index 3e5c4564be0..4ce1cd5a10d 100644
--- a/container-search/src/test/java/com/yahoo/prelude/searcher/test/BlendingSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/searcher/test/BlendingSearcherTestCase.java
@@ -23,17 +23,21 @@ import com.yahoo.search.grouping.result.Group;
import com.yahoo.search.grouping.result.RootGroup;
import com.yahoo.search.grouping.result.StringBucketId;
import com.yahoo.search.grouping.result.StringId;
-import com.yahoo.search.grouping.result.ValueGroupId;
import com.yahoo.search.result.ErrorMessage;
import com.yahoo.search.result.Hit;
import com.yahoo.search.result.Relevance;
+import com.yahoo.search.schema.SchemaInfo;
import com.yahoo.search.searchchain.Execution;
import com.yahoo.search.searchchain.SearchChain;
import com.yahoo.search.searchchain.SearchChainRegistry;
import com.yahoo.search.searchchain.testutil.DocumentSourceSearcher;
import org.junit.jupiter.api.Test;
-import static org.junit.jupiter.api.Assertions.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
/**
* Tests the BlendingSearcher class
@@ -46,12 +50,12 @@ public class BlendingSearcherTestCase {
private static final double delta = 0.00000001;
- public class BlendingSearcherWrapper extends Searcher {
+ public static class BlendingSearcherWrapper extends Searcher {
private SearchChain blendingChain;
private final FederationConfig.Builder builder = new FederationConfig.Builder();
private final Map<String, Searcher> searchers = new HashMap<>();
- private SearchChainRegistry chainRegistry = new SearchChainRegistry();
+ private final SearchChainRegistry chainRegistry = new SearchChainRegistry();
private final String blendingField;
@@ -63,12 +67,6 @@ public class BlendingSearcherTestCase {
this.blendingField = blendingField;
}
- @SuppressWarnings("serial")
- public BlendingSearcherWrapper(QrSearchersConfig cfg) {
- QrSearchersConfig.Com.Yahoo.Prelude.Searcher.BlendingSearcher s = cfg.com().yahoo().prelude().searcher().BlendingSearcher();
- blendingField = s.docid().length() > 0 ? s.docid() : null;
- }
-
/** Adds a source implemented as a single searcher */
public void addSource(String sourceName, Searcher searcher) {
addSource(createSearchChain(new ComponentId(sourceName), searcher));
@@ -110,7 +108,7 @@ public class BlendingSearcherTestCase {
}
FederationSearcher fedSearcher =
- new FederationSearcher(new FederationConfig(builder), new ComponentRegistry<>());
+ new FederationSearcher(new FederationConfig(builder), SchemaInfo.empty(), new ComponentRegistry<>());
BlendingSearcher blendingSearcher = new BlendingSearcher(blendingField);
blendingChain = new SearchChain(ComponentId.createAnonymousComponentId("blendingChain"), blendingSearcher, fedSearcher);
return true;
diff --git a/container-search/src/test/java/com/yahoo/search/federation/DuplicateSourceTestCase.java b/container-search/src/test/java/com/yahoo/search/federation/DuplicateSourceTestCase.java
index b691d8050dd..514a087bed1 100644
--- a/container-search/src/test/java/com/yahoo/search/federation/DuplicateSourceTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/federation/DuplicateSourceTestCase.java
@@ -3,8 +3,6 @@ package com.yahoo.search.federation;
import com.yahoo.component.ComponentId;
import com.yahoo.component.chain.Chain;
-import com.yahoo.prelude.IndexFacts;
-import com.yahoo.prelude.IndexModel;
import com.yahoo.search.Query;
import com.yahoo.search.Result;
import com.yahoo.search.Searcher;
@@ -13,7 +11,6 @@ import com.yahoo.search.searchchain.Execution;
import com.yahoo.search.searchchain.SearchChainRegistry;
import org.junit.jupiter.api.Test;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
@@ -31,20 +28,20 @@ public class DuplicateSourceTestCase {
@Test
void testDuplicateSource() {
+ String chain1 = "chain1";
+ String schema1 = "doc1", schema2 = "doc2";
// Set up a single cluster and chain (chain1), containing a MockBackendSearcher and having 2 doc types (doc1, doc2)
MockBackendSearcher mockBackendSearcher = new MockBackendSearcher();
SearchChainRegistry searchChains = new SearchChainRegistry();
- searchChains.register(new Chain<>("chain1", mockBackendSearcher));
- Map<String, List<String>> clusters = new HashMap<>();
- clusters.put("chain1", List.of("doc1", "doc2"));
- IndexFacts indexFacts = new IndexFacts(new IndexModel(clusters, List.of()));
+ searchChains.register(new Chain<>(chain1, mockBackendSearcher));
SearchChainResolver resolver = new SearchChainResolver.Builder()
- .addSearchChain(new ComponentId("chain1"), List.of("doc1", "doc2"))
+ .addSearchChain(new ComponentId(chain1), List.of(schema1, schema2))
.build();
- FederationSearcher searcher = new FederationSearcher(new ComponentId("test"), resolver);
+ FederationSearcher searcher = new FederationSearcher(new ComponentId("test"), resolver,
+ Map.of(schema1, List.of(chain1), schema2, List.of(chain1)));
Result result = searcher.search(new Query("?query=test&sources=doc1%2cdoc2"),
- new Execution(Execution.Context.createContextStub(searchChains, indexFacts)));
+ new Execution(Execution.Context.createContextStub(searchChains)));
assertNull(result.hits().getError());
assertEquals(1, mockBackendSearcher.getInvocationCount());
diff --git a/container-search/src/test/java/com/yahoo/search/federation/FederationSearcherTest.java b/container-search/src/test/java/com/yahoo/search/federation/FederationSearcherTest.java
index 0d6f78a4bf6..4d3e3c18e0b 100644
--- a/container-search/src/test/java/com/yahoo/search/federation/FederationSearcherTest.java
+++ b/container-search/src/test/java/com/yahoo/search/federation/FederationSearcherTest.java
@@ -16,6 +16,7 @@ import com.yahoo.search.result.ErrorHit;
import com.yahoo.search.result.ErrorMessage;
import com.yahoo.search.result.Hit;
import com.yahoo.search.result.HitGroup;
+import com.yahoo.search.schema.SchemaInfo;
import com.yahoo.search.searchchain.Execution;
import com.yahoo.search.searchchain.Execution.Context;
import com.yahoo.search.searchchain.model.federation.FederationOptions;
@@ -168,6 +169,7 @@ public class FederationSearcherTest {
FederationSearcher searcher = new FederationSearcher(
new FederationConfig(new FederationConfig.Builder().targetSelector(targetSelectorId.toString())),
+ SchemaInfo.empty(),
targetSelectors);
Query query = new Query();
@@ -186,6 +188,7 @@ public class FederationSearcherTest {
FederationSearcher searcher = new FederationSearcher(
new FederationConfig(new FederationConfig.Builder().targetSelector(targetSelectorId.toString())),
+ SchemaInfo.empty(),
targetSelectors);
Query query = new Query();
diff --git a/container-search/src/test/java/com/yahoo/search/federation/FederationSearcherTestCase.java b/container-search/src/test/java/com/yahoo/search/federation/FederationSearcherTestCase.java
index 3c7e122dc7d..af0e0ef69a8 100644
--- a/container-search/src/test/java/com/yahoo/search/federation/FederationSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/federation/FederationSearcherTestCase.java
@@ -11,6 +11,7 @@ import com.yahoo.search.federation.sourceref.SearchChainResolver;
import com.yahoo.search.query.profile.QueryProfile;
import com.yahoo.search.result.ErrorMessage;
import com.yahoo.search.result.Hit;
+import com.yahoo.search.schema.SchemaInfo;
import com.yahoo.search.searchchain.Execution;
import com.yahoo.search.searchchain.SearchChain;
import com.yahoo.search.searchchain.SearchChainRegistry;
@@ -24,6 +25,7 @@ import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.util.List;
+import java.util.Map;
import static org.junit.jupiter.api.Assertions.*;
@@ -81,7 +83,7 @@ public class FederationSearcherTestCase {
}
private Searcher createFederationSearcher() {
- return new FederationSearcher(new FederationConfig(builder), new ComponentRegistry<>());
+ return new FederationSearcher(new FederationConfig(builder), SchemaInfo.empty(), new ComponentRegistry<>());
}
private SearchChain createSearchChain(ComponentId chainId,Searcher searcher) {
@@ -107,7 +109,7 @@ public class FederationSearcherTestCase {
@Test
void testTraceTwoSources() {
- Chain<Searcher> mainChain = twoTracingSources(false);
+ Chain<Searcher> mainChain = twoTracingSources();
Query q = new Query(com.yahoo.search.test.QueryTestCase.httpEncode("?query=test&traceLevel=1"));
@@ -120,7 +122,7 @@ public class FederationSearcherTestCase {
assertTrue(lookForTraces.traceFromSource2);
}
- private Chain<Searcher> twoTracingSources(boolean strictContracts) {
+ private Chain<Searcher> twoTracingSources() {
addChained(new Searcher() {
@Override
public Result search(Query query, Execution execution) {
@@ -140,12 +142,12 @@ public class FederationSearcherTestCase {
}, SOURCE2);
return new Chain<>("default",
- new FederationSearcher(new FederationConfig(builder), new ComponentRegistry<>()));
+ new FederationSearcher(new FederationConfig(builder), SchemaInfo.empty(), new ComponentRegistry<>()));
}
@Test
void testTraceOneSourceNoCloning() {
- Chain<Searcher> mainChain = twoTracingSources(true);
+ Chain<Searcher> mainChain = twoTracingSources();
Query q = new Query(com.yahoo.search.test.QueryTestCase.httpEncode("?query=test&traceLevel=1&sources=source1"));
@@ -160,7 +162,7 @@ public class FederationSearcherTestCase {
@Test
void testTraceOneSourceWithCloning() {
- Chain<Searcher> mainChain = twoTracingSources(false);
+ Chain<Searcher> mainChain = twoTracingSources();
Query q = new Query(com.yahoo.search.test.QueryTestCase.httpEncode("?query=test&traceLevel=1&sources=source1"));
@@ -282,7 +284,7 @@ public class FederationSearcherTestCase {
builder.addSourceForProvider(news, provider1, provider1, true, options, List.of());
builder.addSourceForProvider(news, provider2, provider2, false, options, List.of());
- return new FederationSearcher(new ComponentId("federation"), builder.build());
+ return new FederationSearcher(new ComponentId("federation"), builder.build(), Map.of());
}
private static class MockProvider extends Searcher {
diff --git a/container-search/src/test/java/com/yahoo/search/federation/FederationTester.java b/container-search/src/test/java/com/yahoo/search/federation/FederationTester.java
index 3991a8d18b7..ec540e43dfd 100644
--- a/container-search/src/test/java/com/yahoo/search/federation/FederationTester.java
+++ b/container-search/src/test/java/com/yahoo/search/federation/FederationTester.java
@@ -11,7 +11,8 @@ import com.yahoo.search.searchchain.Execution;
import com.yahoo.search.searchchain.SearchChainRegistry;
import com.yahoo.search.searchchain.model.federation.FederationOptions;
-import java.util.Collections;
+import java.util.List;
+import java.util.Map;
/**
* @author Tony Vaagenes
@@ -30,7 +31,7 @@ class FederationTester {
void addSearchChain(String id, FederationOptions federationOptions, Searcher... searchers) {
ComponentId searchChainId = ComponentId.fromString(id);
- builder.addSearchChain(searchChainId, federationOptions, Collections.<String>emptyList());
+ builder.addSearchChain(searchChainId, federationOptions, List.of());
Chain<Searcher> chain = new Chain<>(searchChainId, searchers);
registry.register(chain);
@@ -46,7 +47,7 @@ class FederationTester {
}
FederationSearcher buildFederationSearcher() {
- return new FederationSearcher(ComponentId.fromString("federation"), builder.build());
+ return new FederationSearcher(ComponentId.fromString("federation"), builder.build(), Map.of());
}
public Result search() {
diff --git a/container-search/src/test/java/com/yahoo/search/federation/sourceref/SourceRefResolverTestCase.java b/container-search/src/test/java/com/yahoo/search/federation/sourceref/SourceRefResolverTestCase.java
index 9badd4a1ab6..b32135afc94 100644
--- a/container-search/src/test/java/com/yahoo/search/federation/sourceref/SourceRefResolverTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/federation/sourceref/SourceRefResolverTestCase.java
@@ -9,8 +9,8 @@ import com.yahoo.search.searchchain.model.federation.FederationOptions;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
@@ -29,35 +29,20 @@ public class SourceRefResolverTestCase {
private static final String cluster1 = "cluster1";
private static final String cluster2 = "cluster2";
private static final String cluster3 = "cluster3";
- private static IndexFacts indexFacts;
+ private static final String schema1 = "document1";
+ private static final String schema2 = "document2";
+ private static final String schema3 = "document3";
private static final SourceRefResolver sourceRefResolver = createSourceRefResolver();
- static {
- setupIndexFacts();
- }
-
private static SourceRefResolver createSourceRefResolver() {
SearchChainResolver.Builder builder = new SearchChainResolver.Builder();
- builder.addSearchChain(ComponentId.fromString(cluster1), new FederationOptions().setUseByDefault(true),
- Collections.emptyList());
- builder.addSearchChain(ComponentId.fromString(cluster2), new FederationOptions().setUseByDefault(true),
- Collections.emptyList());
-
- return new SourceRefResolver(builder.build());
- }
+ builder.addSearchChain(ComponentId.fromString(cluster1), new FederationOptions().setUseByDefault(true), List.of());
+ builder.addSearchChain(ComponentId.fromString(cluster2), new FederationOptions().setUseByDefault(true), List.of());
- private static void setupIndexFacts() {
- TreeMap<String, List<String>> masterClusters = new TreeMap<>();
- masterClusters.put(cluster1, List.of("document1", "document2"));
- masterClusters.put(cluster2, List.of("document1"));
- masterClusters.put(cluster3, List.of("document3"));
- indexFacts = new IndexFacts(new IndexModel(masterClusters, Collections.emptyList()));
- }
-
- @Test
- void check_test_assumptions() {
- assertTrue(indexFacts.clustersHavingSearchDefinition("document1").containsAll(List.of("cluster1", "cluster2")));
+ return new SourceRefResolver(builder.build(), Map.of(schema1, List.of(cluster1, cluster2),
+ schema2, List.of(cluster1),
+ schema3, List.of(cluster3)));
}
@Test
@@ -105,7 +90,7 @@ public class SourceRefResolverTestCase {
}
private Set<SearchChainInvocationSpec> resolve(String documentName) throws UnresolvedSearchChainException {
- return sourceRefResolver.resolve(ComponentSpecification.fromString(documentName), emptySourceToProviderMap(), indexFacts);
+ return sourceRefResolver.resolve(ComponentSpecification.fromString(documentName), emptySourceToProviderMap());
}
}
diff --git a/container-search/src/test/java/com/yahoo/search/searchchain/test/FutureDataTestCase.java b/container-search/src/test/java/com/yahoo/search/searchchain/test/FutureDataTestCase.java
index e16c4164fbb..36c80e852d1 100644
--- a/container-search/src/test/java/com/yahoo/search/searchchain/test/FutureDataTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/searchchain/test/FutureDataTestCase.java
@@ -17,6 +17,7 @@ import com.yahoo.search.searchchain.model.federation.FederationOptions;
import org.junit.jupiter.api.Test;
import java.util.Collections;
+import java.util.Map;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
@@ -42,7 +43,7 @@ public class FutureDataTestCase {
new SearchChainResolver.Builder().addSearchChain(new ComponentId("sync"), new FederationOptions().setUseByDefault(true)).
addSearchChain(new ComponentId("async"), new FederationOptions().setUseByDefault(true)).
build();
- Chain<Searcher> main = new Chain<>(new FederationSearcher(new ComponentId("federator"), searchChainResolver));
+ Chain<Searcher> main = new Chain<>(new FederationSearcher(new ComponentId("federator"), searchChainResolver, Map.of()));
SearchChainRegistry searchChainRegistry = new SearchChainRegistry();
searchChainRegistry.register(main);
searchChainRegistry.register(syncSource);