Browse Source

QueryRescorer should keep the window size when rewriting (#36836)

This attribute being controlled by the parent class it's easy to miss
it during rewrites.
David Causse 6 years ago
parent
commit
3412627efe

+ 3 - 0
server/src/main/java/org/elasticsearch/search/rescore/QueryRescorerBuilder.java

@@ -250,6 +250,9 @@ public class QueryRescorerBuilder extends RescorerBuilder<QueryRescorerBuilder>
         queryRescoreBuilder.setQueryWeight(queryWeight);
         queryRescoreBuilder.setRescoreQueryWeight(rescoreQueryWeight);
         queryRescoreBuilder.setScoreMode(scoreMode);
+        if (windowSize() != null) {
+            queryRescoreBuilder.windowSize(windowSize());
+        }
         return queryRescoreBuilder;
     }
 }

+ 2 - 0
server/src/test/java/org/elasticsearch/search/rescore/QueryRescorerBuilderTests.java

@@ -200,11 +200,13 @@ public class QueryRescorerBuilderTests extends ESTestCase {
         rescoreBuilder.setQueryWeight(randomFloat());
         rescoreBuilder.setRescoreQueryWeight(randomFloat());
         rescoreBuilder.setScoreMode(QueryRescoreMode.Max);
+        rescoreBuilder.windowSize(randomIntBetween(0, 100));
 
         QueryRescorerBuilder rescoreRewritten = rescoreBuilder.rewrite(mockShardContext);
         assertEquals(rescoreRewritten.getQueryWeight(), rescoreBuilder.getQueryWeight(), 0.01f);
         assertEquals(rescoreRewritten.getRescoreQueryWeight(), rescoreBuilder.getRescoreQueryWeight(), 0.01f);
         assertEquals(rescoreRewritten.getScoreMode(), rescoreBuilder.getScoreMode());
+        assertEquals(rescoreRewritten.windowSize(), rescoreBuilder.windowSize());
     }
 
     /**