|  | @@ -37,9 +37,9 @@ import org.elasticsearch.index.query.QueryBuilders;
 | 
	
		
			
				|  |  |  import org.elasticsearch.index.query.functionscore.ScoreFunctionBuilders;
 | 
	
		
			
				|  |  |  import org.elasticsearch.search.SearchHit;
 | 
	
		
			
				|  |  |  import org.elasticsearch.search.SearchHits;
 | 
	
		
			
				|  |  | +import org.elasticsearch.search.rescore.AbstractRescoreBuilder;
 | 
	
		
			
				|  |  |  import org.elasticsearch.search.rescore.QueryRescoreMode;
 | 
	
		
			
				|  |  |  import org.elasticsearch.search.rescore.QueryRescorerBuilder;
 | 
	
		
			
				|  |  | -import org.elasticsearch.search.rescore.RescoreBaseBuilder;
 | 
	
		
			
				|  |  |  import org.elasticsearch.test.ESIntegTestCase;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import java.util.Arrays;
 | 
	
	
		
			
				|  | @@ -80,7 +80,7 @@ public class QueryRescorerIT extends ESIntegTestCase {
 | 
	
		
			
				|  |  |          for (int j = 0 ; j < iters; j++) {
 | 
	
		
			
				|  |  |              SearchResponse searchResponse = client().prepareSearch()
 | 
	
		
			
				|  |  |                      .setQuery(QueryBuilders.matchAllQuery())
 | 
	
		
			
				|  |  | -                    .setRescorer(RescoreBaseBuilder.queryRescorer(
 | 
	
		
			
				|  |  | +                    .setRescorer(AbstractRescoreBuilder.queryRescorer(
 | 
	
		
			
				|  |  |                              QueryBuilders.functionScoreQuery(QueryBuilders.matchAllQuery(),
 | 
	
		
			
				|  |  |                                                      ScoreFunctionBuilders.weightFactorFunction(100)).boostMode(CombineFunction.REPLACE))
 | 
	
		
			
				|  |  |                                      .setQueryWeight(0.0f).setRescoreQueryWeight(1.0f), 1).setSize(randomIntBetween(2, 10)).execute()
 | 
	
	
		
			
				|  | @@ -116,7 +116,7 @@ public class QueryRescorerIT extends ESIntegTestCase {
 | 
	
		
			
				|  |  |          SearchResponse searchResponse = client().prepareSearch()
 | 
	
		
			
				|  |  |                  .setQuery(QueryBuilders.matchQuery("field1", "the quick brown").operator(Operator.OR))
 | 
	
		
			
				|  |  |                  .setRescorer(
 | 
	
		
			
				|  |  | -                        RescoreBaseBuilder.queryRescorer(QueryBuilders.matchPhraseQuery("field1", "quick brown").slop(2).boost(4.0f))
 | 
	
		
			
				|  |  | +                        AbstractRescoreBuilder.queryRescorer(QueryBuilders.matchPhraseQuery("field1", "quick brown").slop(2).boost(4.0f))
 | 
	
		
			
				|  |  |                                  .setRescoreQueryWeight(2), 5).execute().actionGet();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          assertThat(searchResponse.getHits().totalHits(), equalTo(3l));
 | 
	
	
		
			
				|  | @@ -126,7 +126,7 @@ public class QueryRescorerIT extends ESIntegTestCase {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          searchResponse = client().prepareSearch()
 | 
	
		
			
				|  |  |                  .setQuery(QueryBuilders.matchQuery("field1", "the quick brown").operator(Operator.OR))
 | 
	
		
			
				|  |  | -                .setRescorer(RescoreBaseBuilder.queryRescorer(QueryBuilders.matchPhraseQuery("field1", "the quick brown").slop(3)), 5)
 | 
	
		
			
				|  |  | +                .setRescorer(AbstractRescoreBuilder.queryRescorer(QueryBuilders.matchPhraseQuery("field1", "the quick brown").slop(3)), 5)
 | 
	
		
			
				|  |  |                  .execute().actionGet();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          assertHitCount(searchResponse, 3);
 | 
	
	
		
			
				|  | @@ -136,7 +136,7 @@ public class QueryRescorerIT extends ESIntegTestCase {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          searchResponse = client().prepareSearch()
 | 
	
		
			
				|  |  |                  .setQuery(QueryBuilders.matchQuery("field1", "the quick brown").operator(Operator.OR))
 | 
	
		
			
				|  |  | -                .setRescorer(RescoreBaseBuilder.queryRescorer((QueryBuilders.matchPhraseQuery("field1", "the quick brown"))), 5).execute()
 | 
	
		
			
				|  |  | +                .setRescorer(AbstractRescoreBuilder.queryRescorer((QueryBuilders.matchPhraseQuery("field1", "the quick brown"))), 5).execute()
 | 
	
		
			
				|  |  |                  .actionGet();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          assertHitCount(searchResponse, 3);
 | 
	
	
		
			
				|  | @@ -181,7 +181,7 @@ public class QueryRescorerIT extends ESIntegTestCase {
 | 
	
		
			
				|  |  |                  .setFrom(0)
 | 
	
		
			
				|  |  |                  .setSize(5)
 | 
	
		
			
				|  |  |                  .setRescorer(
 | 
	
		
			
				|  |  | -                        RescoreBaseBuilder.queryRescorer(QueryBuilders.matchPhraseQuery("field1", "lexington avenue massachusetts").slop(3))
 | 
	
		
			
				|  |  | +                        AbstractRescoreBuilder.queryRescorer(QueryBuilders.matchPhraseQuery("field1", "lexington avenue massachusetts").slop(3))
 | 
	
		
			
				|  |  |                                  .setQueryWeight(0.6f).setRescoreQueryWeight(2.0f), 20).execute().actionGet();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          assertThat(searchResponse.getHits().hits().length, equalTo(5));
 | 
	
	
		
			
				|  | @@ -197,7 +197,7 @@ public class QueryRescorerIT extends ESIntegTestCase {
 | 
	
		
			
				|  |  |                  .setSize(5)
 | 
	
		
			
				|  |  |                  .setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
 | 
	
		
			
				|  |  |                  .setRescorer(
 | 
	
		
			
				|  |  | -                        RescoreBaseBuilder.queryRescorer(QueryBuilders.matchPhraseQuery("field1", "lexington avenue massachusetts").slop(3))
 | 
	
		
			
				|  |  | +                        AbstractRescoreBuilder.queryRescorer(QueryBuilders.matchPhraseQuery("field1", "lexington avenue massachusetts").slop(3))
 | 
	
		
			
				|  |  |                                  .setQueryWeight(0.6f).setRescoreQueryWeight(2.0f), 20).execute().actionGet();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          assertThat(searchResponse.getHits().hits().length, equalTo(5));
 | 
	
	
		
			
				|  | @@ -214,7 +214,7 @@ public class QueryRescorerIT extends ESIntegTestCase {
 | 
	
		
			
				|  |  |                  .setSize(5)
 | 
	
		
			
				|  |  |                  .setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
 | 
	
		
			
				|  |  |                  .setRescorer(
 | 
	
		
			
				|  |  | -                        RescoreBaseBuilder.queryRescorer(QueryBuilders.matchPhraseQuery("field1", "lexington avenue massachusetts").slop(3))
 | 
	
		
			
				|  |  | +                        AbstractRescoreBuilder.queryRescorer(QueryBuilders.matchPhraseQuery("field1", "lexington avenue massachusetts").slop(3))
 | 
	
		
			
				|  |  |                                  .setQueryWeight(0.6f).setRescoreQueryWeight(2.0f), 20).execute().actionGet();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          assertThat(searchResponse.getHits().hits().length, equalTo(5));
 | 
	
	
		
			
				|  | @@ -263,7 +263,7 @@ public class QueryRescorerIT extends ESIntegTestCase {
 | 
	
		
			
				|  |  |                  .setFrom(0)
 | 
	
		
			
				|  |  |                  .setSize(5)
 | 
	
		
			
				|  |  |                  .setRescorer(
 | 
	
		
			
				|  |  | -                        RescoreBaseBuilder.queryRescorer(QueryBuilders.matchPhraseQuery("field1", "lexington avenue massachusetts").slop(3))
 | 
	
		
			
				|  |  | +                        AbstractRescoreBuilder.queryRescorer(QueryBuilders.matchPhraseQuery("field1", "lexington avenue massachusetts").slop(3))
 | 
	
		
			
				|  |  |                                  .setQueryWeight(0.6f).setRescoreQueryWeight(2.0f), 2).execute().actionGet();
 | 
	
		
			
				|  |  |          // Only top 2 hits were re-ordered:
 | 
	
		
			
				|  |  |          assertThat(searchResponse.getHits().hits().length, equalTo(4));
 | 
	
	
		
			
				|  | @@ -280,7 +280,7 @@ public class QueryRescorerIT extends ESIntegTestCase {
 | 
	
		
			
				|  |  |                  .setFrom(0)
 | 
	
		
			
				|  |  |                  .setSize(5)
 | 
	
		
			
				|  |  |                  .setRescorer(
 | 
	
		
			
				|  |  | -                        RescoreBaseBuilder.queryRescorer(QueryBuilders.matchPhraseQuery("field1", "lexington avenue massachusetts").slop(3))
 | 
	
		
			
				|  |  | +                        AbstractRescoreBuilder.queryRescorer(QueryBuilders.matchPhraseQuery("field1", "lexington avenue massachusetts").slop(3))
 | 
	
		
			
				|  |  |                                  .setQueryWeight(0.6f).setRescoreQueryWeight(2.0f), 3).execute().actionGet();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // Only top 3 hits were re-ordered:
 | 
	
	
		
			
				|  | @@ -333,7 +333,7 @@ public class QueryRescorerIT extends ESIntegTestCase {
 | 
	
		
			
				|  |  |                  .setFrom(0)
 | 
	
		
			
				|  |  |                  .setSize(5)
 | 
	
		
			
				|  |  |                  .setRescorer(
 | 
	
		
			
				|  |  | -                        RescoreBaseBuilder.queryRescorer(QueryBuilders.matchPhraseQuery("field1", "lexington avenue massachusetts").slop(3))
 | 
	
		
			
				|  |  | +                        AbstractRescoreBuilder.queryRescorer(QueryBuilders.matchPhraseQuery("field1", "lexington avenue massachusetts").slop(3))
 | 
	
		
			
				|  |  |                                  .setQueryWeight(1.0f).setRescoreQueryWeight(-1f), 3).execute().actionGet();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // 6 and 1 got worse, and then the hit (2) outside the rescore window were sorted ahead:
 | 
	
	
		
			
				|  | @@ -424,7 +424,7 @@ public class QueryRescorerIT extends ESIntegTestCase {
 | 
	
		
			
				|  |  |                      .setFrom(0)
 | 
	
		
			
				|  |  |                      .setSize(resultSize)
 | 
	
		
			
				|  |  |                      .setRescorer(
 | 
	
		
			
				|  |  | -                            RescoreBaseBuilder
 | 
	
		
			
				|  |  | +                            AbstractRescoreBuilder
 | 
	
		
			
				|  |  |                                      .queryRescorer(
 | 
	
		
			
				|  |  |                                              QueryBuilders
 | 
	
		
			
				|  |  |                                                      .constantScoreQuery(QueryBuilders.matchPhraseQuery("field1", intToEnglish).slop(3)))
 | 
	
	
		
			
				|  | @@ -462,7 +462,7 @@ public class QueryRescorerIT extends ESIntegTestCase {
 | 
	
		
			
				|  |  |                      .setFrom(0)
 | 
	
		
			
				|  |  |                      .setSize(resultSize)
 | 
	
		
			
				|  |  |                      .setRescorer(
 | 
	
		
			
				|  |  | -                            RescoreBaseBuilder
 | 
	
		
			
				|  |  | +                            AbstractRescoreBuilder
 | 
	
		
			
				|  |  |                                      .queryRescorer(
 | 
	
		
			
				|  |  |                                              QueryBuilders
 | 
	
		
			
				|  |  |                                                      .constantScoreQuery(QueryBuilders.matchPhraseQuery("field1", "not in the index").slop(3)))
 | 
	
	
		
			
				|  | @@ -480,7 +480,7 @@ public class QueryRescorerIT extends ESIntegTestCase {
 | 
	
		
			
				|  |  |                      .setFrom(0)
 | 
	
		
			
				|  |  |                      .setSize(resultSize)
 | 
	
		
			
				|  |  |                      .setRescorer(
 | 
	
		
			
				|  |  | -                            RescoreBaseBuilder
 | 
	
		
			
				|  |  | +                            AbstractRescoreBuilder
 | 
	
		
			
				|  |  |                                      .queryRescorer(
 | 
	
		
			
				|  |  |                                              QueryBuilders.matchPhraseQuery("field1", intToEnglish).slop(0))
 | 
	
		
			
				|  |  |                                      .setQueryWeight(1.0f).setRescoreQueryWeight(1.0f), 2 * rescoreWindow).execute().actionGet();
 | 
	
	
		
			
				|  | @@ -512,7 +512,7 @@ public class QueryRescorerIT extends ESIntegTestCase {
 | 
	
		
			
				|  |  |                      .setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
 | 
	
		
			
				|  |  |                      .setQuery(QueryBuilders.matchQuery("field1", "the quick brown").operator(Operator.OR))
 | 
	
		
			
				|  |  |                      .setRescorer(
 | 
	
		
			
				|  |  | -                            RescoreBaseBuilder.queryRescorer(QueryBuilders.matchPhraseQuery("field1", "the quick brown").slop(2).boost(4.0f))
 | 
	
		
			
				|  |  | +                            AbstractRescoreBuilder.queryRescorer(QueryBuilders.matchPhraseQuery("field1", "the quick brown").slop(2).boost(4.0f))
 | 
	
		
			
				|  |  |                                      .setQueryWeight(0.5f).setRescoreQueryWeight(0.4f), 5).setExplain(true).execute()
 | 
	
		
			
				|  |  |                      .actionGet();
 | 
	
		
			
				|  |  |              assertHitCount(searchResponse, 3);
 | 
	
	
		
			
				|  | @@ -538,7 +538,7 @@ public class QueryRescorerIT extends ESIntegTestCase {
 | 
	
		
			
				|  |  |          String[] scoreModes = new String[]{ "max", "min", "avg", "total", "multiply", "" };
 | 
	
		
			
				|  |  |          String[] descriptionModes = new String[]{ "max of:", "min of:", "avg of:", "sum of:", "product of:", "sum of:" };
 | 
	
		
			
				|  |  |          for (int innerMode = 0; innerMode < scoreModes.length; innerMode++) {
 | 
	
		
			
				|  |  | -            QueryRescorerBuilder innerRescoreQuery = RescoreBaseBuilder.queryRescorer(QueryBuilders.matchQuery("field1", "the quick brown").boost(4.0f))
 | 
	
		
			
				|  |  | +            QueryRescorerBuilder innerRescoreQuery = AbstractRescoreBuilder.queryRescorer(QueryBuilders.matchQuery("field1", "the quick brown").boost(4.0f))
 | 
	
		
			
				|  |  |                  .setQueryWeight(0.5f).setRescoreQueryWeight(0.4f);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              if (!"".equals(scoreModes[innerMode])) {
 | 
	
	
		
			
				|  | @@ -561,7 +561,7 @@ public class QueryRescorerIT extends ESIntegTestCase {
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              for (int outerMode = 0; outerMode < scoreModes.length; outerMode++) {
 | 
	
		
			
				|  |  | -                QueryRescorerBuilder outerRescoreQuery = RescoreBaseBuilder.queryRescorer(QueryBuilders.matchQuery("field1", "the quick brown")
 | 
	
		
			
				|  |  | +                QueryRescorerBuilder outerRescoreQuery = AbstractRescoreBuilder.queryRescorer(QueryBuilders.matchQuery("field1", "the quick brown")
 | 
	
		
			
				|  |  |                          .boost(4.0f)).setQueryWeight(0.5f).setRescoreQueryWeight(0.4f);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  if (!"".equals(scoreModes[outerMode])) {
 | 
	
	
		
			
				|  | @@ -572,7 +572,7 @@ public class QueryRescorerIT extends ESIntegTestCase {
 | 
	
		
			
				|  |  |                          .prepareSearch()
 | 
	
		
			
				|  |  |                          .setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
 | 
	
		
			
				|  |  |                          .setQuery(QueryBuilders.matchQuery("field1", "the quick brown").operator(Operator.OR))
 | 
	
		
			
				|  |  | -                        .addRescorer(innerRescoreQuery, 5).addRescorer(outerRescoreQuery, 10)
 | 
	
		
			
				|  |  | +                        .addRescorer(innerRescoreQuery, 5).addRescorer(outerRescoreQuery.windowSize(10))
 | 
	
		
			
				|  |  |                          .setExplain(true).get();
 | 
	
		
			
				|  |  |                  assertHitCount(searchResponse, 3);
 | 
	
		
			
				|  |  |                  assertFirstHit(searchResponse, hasId("1"));
 | 
	
	
		
			
				|  | @@ -599,7 +599,7 @@ public class QueryRescorerIT extends ESIntegTestCase {
 | 
	
		
			
				|  |  |              for (int i = 0; i < numDocs - 4; i++) {
 | 
	
		
			
				|  |  |                  String[] intToEnglish = new String[] { English.intToEnglish(i), English.intToEnglish(i + 1), English.intToEnglish(i + 2), English.intToEnglish(i + 3) };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                QueryRescorerBuilder rescoreQuery = RescoreBaseBuilder
 | 
	
		
			
				|  |  | +                QueryRescorerBuilder rescoreQuery = AbstractRescoreBuilder
 | 
	
		
			
				|  |  |                          .queryRescorer(
 | 
	
		
			
				|  |  |                                  QueryBuilders.boolQuery()
 | 
	
		
			
				|  |  |                                          .disableCoord(true)
 | 
	
	
		
			
				|  | @@ -682,10 +682,10 @@ public class QueryRescorerIT extends ESIntegTestCase {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public void testMultipleRescores() throws Exception {
 | 
	
		
			
				|  |  |          int numDocs = indexRandomNumbers("keyword", 1, true);
 | 
	
		
			
				|  |  | -        QueryRescorerBuilder eightIsGreat = RescoreBaseBuilder.queryRescorer(
 | 
	
		
			
				|  |  | +        QueryRescorerBuilder eightIsGreat = AbstractRescoreBuilder.queryRescorer(
 | 
	
		
			
				|  |  |                  QueryBuilders.functionScoreQuery(QueryBuilders.termQuery("field1", English.intToEnglish(8)),
 | 
	
		
			
				|  |  |                          ScoreFunctionBuilders.weightFactorFunction(1000.0f)).boostMode(CombineFunction.REPLACE)).setScoreMode(QueryRescoreMode.Total);
 | 
	
		
			
				|  |  | -        QueryRescorerBuilder sevenIsBetter = RescoreBaseBuilder.queryRescorer(
 | 
	
		
			
				|  |  | +        QueryRescorerBuilder sevenIsBetter = AbstractRescoreBuilder.queryRescorer(
 | 
	
		
			
				|  |  |                  QueryBuilders.functionScoreQuery(QueryBuilders.termQuery("field1", English.intToEnglish(7)),
 | 
	
		
			
				|  |  |                          ScoreFunctionBuilders.weightFactorFunction(10000.0f)).boostMode(CombineFunction.REPLACE))
 | 
	
		
			
				|  |  |                  .setScoreMode(QueryRescoreMode.Total);
 | 
	
	
		
			
				|  | @@ -703,10 +703,10 @@ public class QueryRescorerIT extends ESIntegTestCase {
 | 
	
		
			
				|  |  |          // We have no idea what the second hit will be because we didn't get a chance to look for seven
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // Now use one rescore to drag the number we're looking for into the window of another
 | 
	
		
			
				|  |  | -        QueryRescorerBuilder ninetyIsGood = RescoreBaseBuilder.queryRescorer(
 | 
	
		
			
				|  |  | +        QueryRescorerBuilder ninetyIsGood = AbstractRescoreBuilder.queryRescorer(
 | 
	
		
			
				|  |  |                  QueryBuilders.functionScoreQuery(QueryBuilders.queryStringQuery("*ninety*"), ScoreFunctionBuilders.weightFactorFunction(1000.0f))
 | 
	
		
			
				|  |  |                          .boostMode(CombineFunction.REPLACE)).setScoreMode(QueryRescoreMode.Total);
 | 
	
		
			
				|  |  | -        QueryRescorerBuilder oneToo = RescoreBaseBuilder.queryRescorer(
 | 
	
		
			
				|  |  | +        QueryRescorerBuilder oneToo = AbstractRescoreBuilder.queryRescorer(
 | 
	
		
			
				|  |  |                  QueryBuilders.functionScoreQuery(QueryBuilders.queryStringQuery("*one*"), ScoreFunctionBuilders.weightFactorFunction(1000.0f))
 | 
	
		
			
				|  |  |                          .boostMode(CombineFunction.REPLACE)).setScoreMode(QueryRescoreMode.Total);
 | 
	
		
			
				|  |  |          request.clearRescorers().addRescorer(ninetyIsGood, numDocs).addRescorer(oneToo, 10);
 | 
	
	
		
			
				|  | @@ -759,7 +759,7 @@ public class QueryRescorerIT extends ESIntegTestCase {
 | 
	
		
			
				|  |  |          request.setQuery(QueryBuilders.termQuery("text", "hello"));
 | 
	
		
			
				|  |  |          request.setFrom(1);
 | 
	
		
			
				|  |  |          request.setSize(4);
 | 
	
		
			
				|  |  | -        request.addRescorer(RescoreBaseBuilder.queryRescorer(QueryBuilders.matchAllQuery()), 50);
 | 
	
		
			
				|  |  | +        request.addRescorer(AbstractRescoreBuilder.queryRescorer(QueryBuilders.matchAllQuery()), 50);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          assertEquals(4, request.get().getHits().hits().length);
 | 
	
		
			
				|  |  |      }
 |