diff options
author | Jim Ferenczi <jim.ferenczi@elastic.co> | 2017-06-08 11:18:17 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-08 11:18:17 +0200 |
commit | 21a57c14945fb0b82d2b78a2c89e0d92bbc086a0 (patch) | |
tree | 566faecfed3cdcc249c8cc7d5d60d3eb054f3c8e /test/framework | |
parent | d6d416cacc27bc043fc6f0958bddce78027bcfb0 (diff) |
Always use DisjunctionMaxQuery to build cross fields disjunction (#25115)
This commit modifies query_string, simple_query_string and multi_match queries to always use a DisjunctionMaxQuery when a disjunction over multiple fields is built. The tiebreaker is set to 1 in order to behave like the boolean query in terms of scoring.
The removal of the coord factor in Lucene 7 made this change mandatory to correctly handle minimum_should_match.
Closes #23966
Diffstat (limited to 'test/framework')
-rw-r--r-- | test/framework/src/main/java/org/elasticsearch/test/hamcrest/ElasticsearchAssertions.java | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/test/framework/src/main/java/org/elasticsearch/test/hamcrest/ElasticsearchAssertions.java b/test/framework/src/main/java/org/elasticsearch/test/hamcrest/ElasticsearchAssertions.java index 9a36a0c3a3..c1facb772c 100644 --- a/test/framework/src/main/java/org/elasticsearch/test/hamcrest/ElasticsearchAssertions.java +++ b/test/framework/src/main/java/org/elasticsearch/test/hamcrest/ElasticsearchAssertions.java @@ -19,6 +19,7 @@ package org.elasticsearch.test.hamcrest; import org.apache.lucene.search.BooleanQuery; +import org.apache.lucene.search.DisjunctionMaxQuery; import org.apache.lucene.search.Query; import org.elasticsearch.ElasticsearchException; import org.elasticsearch.ExceptionsHelper; @@ -515,6 +516,14 @@ public class ElasticsearchAssertions { return subqueryType.cast(q.clauses().get(i).getQuery()); } + public static <T extends Query> T assertDisjunctionSubQuery(Query query, Class<T> subqueryType, int i) { + assertThat(query, instanceOf(DisjunctionMaxQuery.class)); + DisjunctionMaxQuery q = (DisjunctionMaxQuery) query; + assertThat(q.getDisjuncts().size(), greaterThan(i)); + assertThat(q.getDisjuncts().get(i), instanceOf(subqueryType)); + return subqueryType.cast(q.getDisjuncts().get(i)); + } + /** * Run the request from a given builder and check that it throws an exception of the right type */ |