From 8e3cf2ba7aa6d97879e718d568d63f79a8959e8d Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Mon, 28 May 2018 10:27:45 +0200 Subject: Revert "Remove the IndexCombinatorSearcher" --- .../search/searchchain/model/VespaSearchers.java | 15 +++++----- .../searcher/test/BlendingSearcherTestCase.java | 35 ++++++++++++---------- 2 files changed, 27 insertions(+), 23 deletions(-) diff --git a/container-search/src/main/java/com/yahoo/search/searchchain/model/VespaSearchers.java b/container-search/src/main/java/com/yahoo/search/searchchain/model/VespaSearchers.java index 65bfcbe577c..fe3d48ccded 100644 --- a/container-search/src/main/java/com/yahoo/search/searchchain/model/VespaSearchers.java +++ b/container-search/src/main/java/com/yahoo/search/searchchain/model/VespaSearchers.java @@ -9,13 +9,10 @@ import com.yahoo.component.chain.model.ChainedComponentModel; import com.yahoo.search.Searcher; import com.yahoo.search.searchchain.model.federation.FederationSearcherModel; import com.yahoo.search.searchchain.model.federation.FederationSearcherModel.TargetSpec; +import org.apache.commons.collections.CollectionUtils; + +import java.util.*; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; /** * Defines the searcher models used in the vespa and native search chains, except for federation. @@ -26,6 +23,8 @@ import java.util.Set; public class VespaSearchers { public static final Collection vespaSearcherModels = toSearcherModels( + com.yahoo.prelude.querytransform.IndexCombinatorSearcher.class, + //com.yahoo.prelude.querytransform.LocalitySearcher.class, com.yahoo.prelude.querytransform.PhrasingSearcher.class, com.yahoo.prelude.searcher.FieldCollapsingSearcher.class, com.yahoo.search.yql.MinimalQueryInserter.class, @@ -60,8 +59,8 @@ public class VespaSearchers { private static FederationSearcherModel federationSearcherModel() { return new FederationSearcherModel(new ComponentSpecification("federation"), - Dependencies.emptyDependencies(), - Collections.emptyList(), true); + Dependencies.emptyDependencies(), + Collections.emptyList(), true); } private static boolean allAdded(Collection searcherModels, Set componentIds) { 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 7761bca2773..4987f9902ce 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 @@ -17,15 +17,16 @@ import com.yahoo.search.Query; import com.yahoo.search.Result; import com.yahoo.prelude.fastsearch.FastHit; import com.yahoo.prelude.searcher.BlendingSearcher; +import com.yahoo.prelude.searcher.DocumentSourceSearcher; import com.yahoo.prelude.searcher.FillSearcher; import com.yahoo.search.Searcher; import com.yahoo.search.federation.FederationSearcher; +import com.yahoo.search.federation.selection.TargetSelector; import com.yahoo.search.result.ErrorMessage; import com.yahoo.search.result.Hit; 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.Test; import static org.junit.Assert.assertEquals; @@ -39,6 +40,8 @@ import static org.junit.Assert.assertTrue; * @author Bob Travis * @author bratseth */ +// The SuppressWarnings is to shut up the compiler about using +// deprecated FastHit constructor in the tests. @SuppressWarnings({ "rawtypes" }) public class BlendingSearcherTestCase { @@ -121,6 +124,7 @@ public class BlendingSearcherTestCase { @Test public void testitTwoPhase() { + DocumentSourceSearcher chain1 = new DocumentSourceSearcher(); DocumentSourceSearcher chain2 = new DocumentSourceSearcher(); DocumentSourceSearcher chain3 = new DocumentSourceSearcher(); @@ -135,19 +139,19 @@ public class BlendingSearcherTestCase { r1.hits().add(new Hit("http://host1.com", 101){{setSource("one");}}); r1.hits().add(new Hit("http://host2.com", 102){{setSource("one");}}); r1.hits().add(new Hit("http://host3.com", 103){{setSource("one");}}); - chain1.addResult(q, r1); + chain1.addResultSet(q, r1); r2.setTotalHitCount(17); r2.hits().add(new Hit("http://host1.com", 101){{setSource("two");}}); r2.hits().add(new Hit("http://host2.com", 102){{setSource("two");}}); r2.hits().add(new Hit("http://host4.com", 104){{setSource("two");}}); - chain2.addResult(q, r2); + chain2.addResultSet(q, r2); r3.setTotalHitCount(37); r3.hits().add(new Hit("http://host5.com", 100){{setSource("three");}}); r3.hits().add(new Hit("http://host6.com", 106){{setSource("three");}}); r3.hits().add(new Hit("http://host7.com", 105){{setSource("three");}}); - chain3.addResult(q, r3); + chain3.addResultSet(q, r3); BlendingSearcherWrapper blender1 = new BlendingSearcherWrapper(); blender1.addChained(chain1, "one"); @@ -211,10 +215,10 @@ public class BlendingSearcherTestCase { r1.setTotalHitCount(1); r1.hits().add(new FastHit("http://host1.com/", 101)); - chain1.addResult(q, r1); + chain1.addResultSet(q, r1); r2.hits().add(new FastHit("http://host1.com/", 102)); r2.setTotalHitCount(1); - chain2.addResult(q, r2); + chain2.addResultSet(q, r2); BlendingSearcherWrapper blender = new BlendingSearcherWrapper("uri"); blender.addChained(new FillSearcher(chain1), "a"); @@ -235,10 +239,10 @@ public class BlendingSearcherTestCase { Result r2 = new Result(q, ErrorMessage.createRequestTooLarge(null)); r1.setTotalHitCount(0); - chain1.addResult(q, r1); + chain1.addResultSet(q, r1); r2.hits().add(new FastHit("http://host1.com/", 102)); r2.setTotalHitCount(1); - chain2.addResult(q, r2); + chain2.addResultSet(q, r2); BlendingSearcherWrapper blender = new BlendingSearcherWrapper(); blender.addChained(new FillSearcher(chain1), "a"); @@ -284,7 +288,7 @@ public class BlendingSearcherTestCase { r1.hits().add(r1h1); r1.hits().add(r1h2); r1.hits().add(r1h3); - chain1.addResult(q, r1); + chain1.addResultSet(q, r1); r2.setTotalHitCount(3); Hit r2h1 = new Hit("http://host1.com/relevancy201", 201); @@ -299,7 +303,7 @@ public class BlendingSearcherTestCase { r2.hits().add(r2h1); r2.hits().add(r2h2); r2.hits().add(r2h3); - chain2.addResult(q, r2); + chain2.addResultSet(q, r2); BlendingSearcherWrapper blender = new BlendingSearcherWrapper(); blender.addChained(new FillSearcher(chain1), "chainedone"); @@ -339,7 +343,7 @@ public class BlendingSearcherTestCase { r1.hits().add(r1h1); r1.hits().add(r1h2); r1.hits().add(r1h3); - chain1.addResult(q, r1); + chain1.addResultSet(q, r1); r2.setTotalHitCount(3); Hit r2h1 = new Hit("http://host1.com/relevancy201", 201); @@ -351,7 +355,7 @@ public class BlendingSearcherTestCase { r2.hits().add(r2h1); r2.hits().add(r2h2); r2.hits().add(r2h3); - chain2.addResult(q, r2); + chain2.addResultSet(q, r2); BlendingSearcherWrapper blender = new BlendingSearcherWrapper(); blender.addChained(chain1, "chainedone"); @@ -377,7 +381,7 @@ public class BlendingSearcherTestCase { r1.setTotalHitCount(1); Hit r1h1 = new Hit("http://first/relevancy100", 200); r1.hits().add(r1h1); - first.addResult(query, r1); + first.addResultSet(query, r1); Result r2 = new Result(query); r2.setTotalHitCount(2); @@ -385,7 +389,7 @@ public class BlendingSearcherTestCase { Hit r2h2 = new Hit("http://second/relevancy100", 100); r2.hits().add(r2h1); r2.hits().add(r2h2); - second.addResult(query, r2); + second.addResultSet(query, r2); BlendingSearcherWrapper blender = new BlendingSearcherWrapper(); blender.addChained(new FillSearcher(first), "first"); @@ -475,12 +479,13 @@ public class BlendingSearcherTestCase { Query query = new Query("/search?query=banana&search=first,nonesuch,second"); Result result = new Execution(searcher, Execution.Context.createContextStub(new IndexFacts())).search(query); - assertEquals(4, result.getHitCount()); + assertEquals(3, result.getConcreteHitCount()); assertEquals(300.0, result.hits().get(1).getRelevance().getScore(), delta); assertEquals(200.0, result.hits().get(2).getRelevance().getScore(), delta); assertEquals(100.0, result.hits().get(3).getRelevance().getScore(), delta); assertNotNull(result.hits().getError()); ErrorMessage e = result.hits().getError(); + //TODO: Do not depend on sources order assertEquals("Could not resolve source ref 'nonesuch'. Valid source refs are first, second.", e.getDetailedMessage()); } -- cgit v1.2.3