diff options
author | Jon Bratseth <bratseth@oath.com> | 2018-05-28 17:42:04 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@oath.com> | 2018-05-28 17:42:04 +0200 |
commit | 94d36333ef57d35e559c3ec0892113bd64c55e52 (patch) | |
tree | ae23cdfd55bd5d4e6e414851df46b4c6661f9a46 /container-search | |
parent | 3ce5f5be747a04d41820de13eb60350346c8ad51 (diff) |
Parse before clone
Diffstat (limited to 'container-search')
8 files changed, 5 insertions, 25 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 91fbd1b2aca..b1399c6cc8d 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 @@ -469,6 +469,7 @@ public class ClusterSearcher extends Searcher { } private List<Query> createQueries(Query query, Set<String> docTypes) { + query.getModel().getQueryTree(); // performance: parse query before cloning such that it is only done once List<Query> retval = new ArrayList<>(docTypes.size()); if (docTypes.size() == 1) { query.getModel().setRestrict(docTypes.iterator().next()); diff --git a/container-search/src/main/java/com/yahoo/prelude/querytransform/IndexCombinatorSearcher.java b/container-search/src/main/java/com/yahoo/prelude/querytransform/IndexCombinatorSearcher.java index 238265df2cc..96e9fb30c24 100644 --- a/container-search/src/main/java/com/yahoo/prelude/querytransform/IndexCombinatorSearcher.java +++ b/container-search/src/main/java/com/yahoo/prelude/querytransform/IndexCombinatorSearcher.java @@ -65,9 +65,7 @@ public class IndexCombinatorSearcher extends Searcher { @Override public Result search(Query query, Execution execution) { - // TODO Item root = query.getModel().getQueryTree().getRoot(); - if (1==1) return execution.search(query); IndexFacts.Session session = execution.context().getIndexFacts().newSession(query); String oldQuery = (query.getTraceLevel() >= 2) ? root.toString() : ""; diff --git a/container-search/src/main/java/com/yahoo/search/Query.java b/container-search/src/main/java/com/yahoo/search/Query.java index f13fb2e88f4..ab6976e29d9 100644 --- a/container-search/src/main/java/com/yahoo/search/Query.java +++ b/container-search/src/main/java/com/yahoo/search/Query.java @@ -351,10 +351,7 @@ public class Query extends com.yahoo.processing.Request implements Cloneable { } /** - * Creates a new query from another query, but with time sensitive - * fields reset. - * - * @return new query + * Creates a new query from another query, but with time sensitive fields reset. */ public static Query createNewQuery(Query query) { return new Query(query, System.currentTimeMillis()); 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 686c019688e..b32eec876cc 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 @@ -261,6 +261,7 @@ public class FederationSearcher extends ForkingSearcher { } private Query cloneFederationQuery(Query query, Window window, long timeout, Target target) { + query.getModel().getQueryTree(); // performance: parse query before cloning such that it is only done once Query clonedQuery = Query.createNewQuery(query); return createFederationQuery(query, clonedQuery, window, timeout, target); } diff --git a/container-search/src/main/java/com/yahoo/search/federation/vespa/VespaSearcher.java b/container-search/src/main/java/com/yahoo/search/federation/vespa/VespaSearcher.java index 727b24a39f7..dfa4f9ad9bb 100644 --- a/container-search/src/main/java/com/yahoo/search/federation/vespa/VespaSearcher.java +++ b/container-search/src/main/java/com/yahoo/search/federation/vespa/VespaSearcher.java @@ -158,6 +158,7 @@ public class VespaSearcher extends ConfiguredHTTPProviderSearcher { return marshalQuery(query.getModel().getQueryTree()); } + query.getModel().getQueryTree(); // performance: parse query before cloning such that it is only done once Query workQuery = query.clone(); String error = QueryCanonicalizer.canonicalize(workQuery); if (error != null) { diff --git a/container-search/src/main/java/com/yahoo/search/query/rewrite/QueryRewriteSearcher.java b/container-search/src/main/java/com/yahoo/search/query/rewrite/QueryRewriteSearcher.java index e10c67e5ff5..2d0ff0c62db 100644 --- a/container-search/src/main/java/com/yahoo/search/query/rewrite/QueryRewriteSearcher.java +++ b/container-search/src/main/java/com/yahoo/search/query/rewrite/QueryRewriteSearcher.java @@ -295,6 +295,7 @@ public abstract class QueryRewriteSearcher extends Searcher { // Store rewriter result HashMap<String, Object> rewriterResult = null; + query.getModel().getQueryTree(); // performance: parse query before cloning such that it is only done once Query originalQueryObj = query.clone(); try { 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 fe3d48ccded..cfef91ee0ec 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 @@ -23,8 +23,6 @@ import java.util.*; public class VespaSearchers { public static final Collection<ChainedComponentModel> 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, diff --git a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/IndexCombinatorTestCase.java b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/IndexCombinatorTestCase.java index b7c2a6378ce..7858bbf6433 100644 --- a/container-search/src/test/java/com/yahoo/prelude/querytransform/test/IndexCombinatorTestCase.java +++ b/container-search/src/test/java/com/yahoo/prelude/querytransform/test/IndexCombinatorTestCase.java @@ -29,7 +29,6 @@ public class IndexCombinatorTestCase { private Searcher transformer; private IndexFacts f; - @Ignore @Before public void setUp() throws Exception { transformer = new IndexCombinatorSearcher(); @@ -40,7 +39,6 @@ public class IndexCombinatorTestCase { f.addIndex("one", i); } - @Ignore @Test public void testDoNothing() { Result r = search("?query=z:y"); @@ -51,14 +49,12 @@ public class IndexCombinatorTestCase { return new Execution(transformer, Execution.Context.createContextStub(f)).search(new Query(QueryTestCase.httpEncode(query))); } - @Ignore @Test public void testBasic() { Result r = search("?query=y"); assertEquals("OR a:y i:y", r.getQuery().getModel().getQueryTree().getRoot().toString()); } - @Ignore @Test public void testBasicPair() { Result r = search("?query=x y"); @@ -67,14 +63,12 @@ public class IndexCombinatorTestCase { .getQuery().getModel().getQueryTree().getRoot().toString()); } - @Ignore @Test public void testBasicTriplet() { Result r = search("?query=x y z"); assertEquals("AND (OR a:x i:x) (OR a:y i:y) (OR a:z i:z)", r.getQuery().getModel().getQueryTree().getRoot().toString()); } - @Ignore @Test public void testBasicMixedSinglet() { Result r = search("?query=x z:q"); @@ -82,7 +76,6 @@ public class IndexCombinatorTestCase { .toString()); } - @Ignore @Test public void testBasicMixedPair() { Result r = search("?query=x y z:q"); @@ -91,7 +84,6 @@ public class IndexCombinatorTestCase { r.getQuery().getModel().getQueryTree().getRoot().toString()); } - @Ignore @Test public void testBasicMixedTriplet() { Result r = search("?query=x y z:q r"); @@ -99,21 +91,18 @@ public class IndexCombinatorTestCase { .getQuery().getModel().getQueryTree().getRoot().toString()); } - @Ignore @Test public void testBasicOr() { Result r = search("?query=x y&type=any"); assertEquals("OR a:y i:y a:x i:x", r.getQuery().getModel().getQueryTree().getRoot().toString()); } - @Ignore @Test public void testBasicPhrase() { Result r = search("?query=\"x y\""); assertEquals("OR a:x y i:x y", r.getQuery().getModel().getQueryTree().getRoot().toString()); } - @Ignore @Test public void testPhraseAndTerm() { Result r = search("?query=\"x y\" z"); @@ -122,7 +111,6 @@ public class IndexCombinatorTestCase { r.getQuery().getModel().getQueryTree().getRoot().toString()); } - @Ignore @Test public void testBasicNot() { Result r = search("?query=+x -y"); @@ -130,7 +118,6 @@ public class IndexCombinatorTestCase { .toString()); } - @Ignore @Test public void testLessBasicNot() { Result r = search("?query=a and b andnot c&type=adv"); @@ -139,7 +126,6 @@ public class IndexCombinatorTestCase { r.getQuery().getModel().getQueryTree().getRoot().toString()); } - @Ignore @Test public void testLongerAndInPositive() { Result r = search("?query=a and b and c andnot d&type=adv"); @@ -148,7 +134,6 @@ public class IndexCombinatorTestCase { .getQuery().getModel().getQueryTree().getRoot().toString()); } - @Ignore @Test public void testTreeInNegativeBranch() { Result r = search("?query=a andnot (b and c)&type=adv"); @@ -156,7 +141,6 @@ public class IndexCombinatorTestCase { .getQuery().getModel().getQueryTree().getRoot().toString()); } - @Ignore @Test public void testSomeTerms() { Result r = search("?query=a b -c +d g.h \"abc def\" z:q"); @@ -165,7 +149,6 @@ public class IndexCombinatorTestCase { r.getQuery().getModel().getQueryTree().getRoot().toString()); } - @Ignore @Test public void testMixedIndicesAndAttributes() { String indexInfoConfigID = "file:src/test/java/com/yahoo/prelude/querytransform/test/indexcombinator.cfg"; |