summaryrefslogtreecommitdiff
path: root/test/framework
diff options
context:
space:
mode:
authorJim Ferenczi <jim.ferenczi@elastic.co>2017-06-08 11:18:17 +0200
committerGitHub <noreply@github.com>2017-06-08 11:18:17 +0200
commit21a57c14945fb0b82d2b78a2c89e0d92bbc086a0 (patch)
tree566faecfed3cdcc249c8cc7d5d60d3eb054f3c8e /test/framework
parentd6d416cacc27bc043fc6f0958bddce78027bcfb0 (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.java9
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
*/