|
@@ -38,6 +38,9 @@ import org.elasticsearch.search.SearchHit;
|
|
|
import org.elasticsearch.search.SearchHits;
|
|
|
import org.elasticsearch.search.rescore.QueryRescoreMode;
|
|
|
import org.elasticsearch.search.rescore.QueryRescorerBuilder;
|
|
|
+import org.elasticsearch.search.sort.SortBuilder;
|
|
|
+import org.elasticsearch.search.sort.SortBuilders;
|
|
|
+import org.elasticsearch.search.sort.SortOrder;
|
|
|
import org.elasticsearch.test.ESIntegTestCase;
|
|
|
|
|
|
import java.util.Arrays;
|
|
@@ -66,6 +69,7 @@ import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertSeco
|
|
|
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertThirdHit;
|
|
|
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.hasId;
|
|
|
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.hasScore;
|
|
|
+import static org.hamcrest.Matchers.containsString;
|
|
|
import static org.hamcrest.Matchers.equalTo;
|
|
|
import static org.hamcrest.Matchers.greaterThan;
|
|
|
import static org.hamcrest.Matchers.lessThanOrEqualTo;
|
|
@@ -705,4 +709,45 @@ public class QueryRescorerIT extends ESIntegTestCase {
|
|
|
|
|
|
assertEquals(4, request.get().getHits().getHits().length);
|
|
|
}
|
|
|
+
|
|
|
+ public void testRescorePhaseWithInvalidSort() throws Exception {
|
|
|
+ assertAcked(prepareCreate("test"));
|
|
|
+ for(int i=0;i<5;i++) {
|
|
|
+ client().prepareIndex("test", "type", ""+i).setSource("number", 0).get();
|
|
|
+ }
|
|
|
+ refresh();
|
|
|
+
|
|
|
+ Exception exc = expectThrows(Exception.class,
|
|
|
+ () -> client().prepareSearch()
|
|
|
+ .addSort(SortBuilders.fieldSort("number"))
|
|
|
+ .setTrackScores(true)
|
|
|
+ .addRescorer(new QueryRescorerBuilder(matchAllQuery()), 50)
|
|
|
+ .get()
|
|
|
+ );
|
|
|
+ assertNotNull(exc.getCause());
|
|
|
+ assertThat(exc.getCause().getMessage(),
|
|
|
+ containsString("Cannot use [sort] option in conjunction with [rescore]."));
|
|
|
+
|
|
|
+ exc = expectThrows(Exception.class,
|
|
|
+ () -> client().prepareSearch()
|
|
|
+ .addSort(SortBuilders.fieldSort("number"))
|
|
|
+ .addSort(SortBuilders.scoreSort())
|
|
|
+ .setTrackScores(true)
|
|
|
+ .addRescorer(new QueryRescorerBuilder(matchAllQuery()), 50)
|
|
|
+ .get()
|
|
|
+ );
|
|
|
+ assertNotNull(exc.getCause());
|
|
|
+ assertThat(exc.getCause().getMessage(),
|
|
|
+ containsString("Cannot use [sort] option in conjunction with [rescore]."));
|
|
|
+
|
|
|
+ SearchResponse resp = client().prepareSearch().addSort(SortBuilders.scoreSort())
|
|
|
+ .setTrackScores(true)
|
|
|
+ .addRescorer(new QueryRescorerBuilder(matchAllQuery()).setRescoreQueryWeight(100.0f), 50)
|
|
|
+ .get();
|
|
|
+ assertThat(resp.getHits().totalHits, equalTo(5L));
|
|
|
+ assertThat(resp.getHits().getHits().length, equalTo(5));
|
|
|
+ for (SearchHit hit : resp.getHits().getHits()) {
|
|
|
+ assertThat(hit.getScore(), equalTo(101f));
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|