|
@@ -39,9 +39,9 @@ import java.util.Map;
|
|
|
|
|
|
import static org.elasticsearch.index.query.QueryBuilders.multiMatchQuery;
|
|
|
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertBooleanSubQuery;
|
|
|
-import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertDisjunctionSubQuery;
|
|
|
import static org.hamcrest.CoreMatchers.anyOf;
|
|
|
import static org.hamcrest.CoreMatchers.containsString;
|
|
|
+import static org.hamcrest.CoreMatchers.either;
|
|
|
import static org.hamcrest.CoreMatchers.equalTo;
|
|
|
import static org.hamcrest.CoreMatchers.hasItems;
|
|
|
import static org.hamcrest.CoreMatchers.instanceOf;
|
|
@@ -201,8 +201,8 @@ public class MultiMatchQueryBuilderTests extends AbstractQueryTestCase<MultiMatc
|
|
|
DisjunctionMaxQuery dQuery = (DisjunctionMaxQuery) query;
|
|
|
assertThat(dQuery.getTieBreakerMultiplier(), equalTo(1.0f));
|
|
|
assertThat(dQuery.getDisjuncts().size(), equalTo(2));
|
|
|
- assertThat(assertDisjunctionSubQuery(query, TermQuery.class, 0).getTerm(), equalTo(new Term(TEXT_FIELD_NAME, "test")));
|
|
|
- assertThat(assertDisjunctionSubQuery(query, TermQuery.class, 1).getTerm(), equalTo(new Term(KEYWORD_FIELD_NAME, "test")));
|
|
|
+ assertThat(dQuery.getDisjuncts(),
|
|
|
+ hasItems(new TermQuery(new Term(TEXT_FIELD_NAME, "test")), new TermQuery(new Term(KEYWORD_FIELD_NAME, "test"))));
|
|
|
}
|
|
|
|
|
|
public void testToQueryMultipleFieldsDisMaxQuery() throws Exception {
|
|
@@ -223,8 +223,8 @@ public class MultiMatchQueryBuilderTests extends AbstractQueryTestCase<MultiMatc
|
|
|
DisjunctionMaxQuery dQuery = (DisjunctionMaxQuery) query;
|
|
|
assertThat(dQuery.getTieBreakerMultiplier(), equalTo(1.0f));
|
|
|
assertThat(dQuery.getDisjuncts().size(), equalTo(2));
|
|
|
- assertThat(assertDisjunctionSubQuery(query, TermQuery.class, 0).getTerm(), equalTo(new Term(TEXT_FIELD_NAME, "test")));
|
|
|
- assertThat(assertDisjunctionSubQuery(query, TermQuery.class, 1).getTerm(), equalTo(new Term(KEYWORD_FIELD_NAME, "test")));
|
|
|
+ assertThat(dQuery.getDisjuncts(),
|
|
|
+ hasItems(new TermQuery(new Term(TEXT_FIELD_NAME, "test")), new TermQuery(new Term(KEYWORD_FIELD_NAME, "test"))));
|
|
|
}
|
|
|
|
|
|
public void testToQueryFieldMissing() throws Exception {
|
|
@@ -254,11 +254,20 @@ public class MultiMatchQueryBuilderTests extends AbstractQueryTestCase<MultiMatc
|
|
|
assertThat(query, instanceOf(DisjunctionMaxQuery.class));
|
|
|
final DisjunctionMaxQuery disMaxQuery = (DisjunctionMaxQuery) query;
|
|
|
assertThat(disMaxQuery.getDisjuncts(), hasSize(2));
|
|
|
- final BooleanQuery firstDisjunct = assertDisjunctionSubQuery(disMaxQuery, BooleanQuery.class, 0);
|
|
|
- assertThat(firstDisjunct.clauses(), hasSize(2));
|
|
|
- assertThat(assertBooleanSubQuery(firstDisjunct, TermQuery.class, 0).getTerm(), equalTo(new Term(TEXT_FIELD_NAME, "foo")));
|
|
|
- final PrefixQuery secondDisjunct = assertDisjunctionSubQuery(disMaxQuery, PrefixQuery.class, 1);
|
|
|
- assertThat(secondDisjunct.getPrefix(), equalTo(new Term(KEYWORD_FIELD_NAME, "foo bar")));
|
|
|
+ for (Query disjunct : disMaxQuery.getDisjuncts()) {
|
|
|
+ if (disjunct instanceof BooleanQuery) {
|
|
|
+ final BooleanQuery firstDisjunct = (BooleanQuery) disjunct;
|
|
|
+ assertThat(firstDisjunct.clauses(), hasSize(2));
|
|
|
+ assertThat(assertBooleanSubQuery(firstDisjunct, TermQuery.class, 0).getTerm(),
|
|
|
+ equalTo(new Term(TEXT_FIELD_NAME, "foo")));
|
|
|
+ } else if (disjunct instanceof PrefixQuery) {
|
|
|
+ final PrefixQuery secondDisjunct = (PrefixQuery) disjunct;
|
|
|
+ assertThat(secondDisjunct.getPrefix(), equalTo(new Term(KEYWORD_FIELD_NAME, "foo bar")));
|
|
|
+ } else {
|
|
|
+ throw new AssertionError();
|
|
|
+ }
|
|
|
+ assertThat(disjunct, either(instanceOf(BooleanQuery.class)).or(instanceOf(PrefixQuery.class)));
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|