mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-06 13:08:29 +00:00
don't truncate TopDocs after rescoring
This commit is contained in:
parent
e31049988b
commit
8958096754
@ -60,11 +60,6 @@ public class RescorePhase extends AbstractComponent implements SearchPhase {
|
|||||||
for (RescoreSearchContext ctx : context.rescore()) {
|
for (RescoreSearchContext ctx : context.rescore()) {
|
||||||
topDocs = ctx.rescorer().rescore(topDocs, context, ctx);
|
topDocs = ctx.rescorer().rescore(topDocs, context, ctx);
|
||||||
}
|
}
|
||||||
if (context.size() < topDocs.scoreDocs.length) {
|
|
||||||
ScoreDoc[] hits = new ScoreDoc[context.size()];
|
|
||||||
System.arraycopy(topDocs.scoreDocs, 0, hits, 0, hits.length);
|
|
||||||
topDocs = new TopDocs(topDocs.totalHits, hits, topDocs.getMaxScore());
|
|
||||||
}
|
|
||||||
context.queryResult().topDocs(topDocs);
|
context.queryResult().topDocs(topDocs);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw new ElasticsearchException("Rescore Phase Failed", e);
|
throw new ElasticsearchException("Rescore Phase Failed", e);
|
||||||
|
@ -45,6 +45,7 @@ import java.util.Arrays;
|
|||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
|
|
||||||
import static org.elasticsearch.cluster.metadata.IndexMetaData.SETTING_NUMBER_OF_SHARDS;
|
import static org.elasticsearch.cluster.metadata.IndexMetaData.SETTING_NUMBER_OF_SHARDS;
|
||||||
|
import static org.elasticsearch.cluster.metadata.IndexMetaData.SETTING_NUMBER_OF_REPLICAS;
|
||||||
import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;
|
import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;
|
||||||
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.*;
|
import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.*;
|
||||||
import static org.hamcrest.Matchers.*;
|
import static org.hamcrest.Matchers.*;
|
||||||
@ -206,7 +207,7 @@ public class QueryRescorerTests extends ElasticsearchIntegrationTest {
|
|||||||
RescoreBuilder.queryRescorer(QueryBuilders.matchPhraseQuery("field1", "lexington avenue massachusetts").slop(3))
|
RescoreBuilder.queryRescorer(QueryBuilders.matchPhraseQuery("field1", "lexington avenue massachusetts").slop(3))
|
||||||
.setQueryWeight(0.6f).setRescoreQueryWeight(2.0f)).setRescoreWindow(20).execute().actionGet();
|
.setQueryWeight(0.6f).setRescoreQueryWeight(2.0f)).setRescoreWindow(20).execute().actionGet();
|
||||||
|
|
||||||
assertThat(searchResponse.getHits().hits().length, equalTo(3));
|
assertThat(searchResponse.getHits().hits().length, equalTo(5));
|
||||||
assertHitCount(searchResponse, 9);
|
assertHitCount(searchResponse, 9);
|
||||||
assertFirstHit(searchResponse, hasId("3"));
|
assertFirstHit(searchResponse, hasId("3"));
|
||||||
}
|
}
|
||||||
@ -719,4 +720,25 @@ public class QueryRescorerTests extends ElasticsearchIntegrationTest {
|
|||||||
ensureGreen();
|
ensureGreen();
|
||||||
return numDocs;
|
return numDocs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// #11277
|
||||||
|
public void testFromSize() throws Exception {
|
||||||
|
Builder settings = Settings.builder();
|
||||||
|
settings.put(SETTING_NUMBER_OF_SHARDS, 1);
|
||||||
|
settings.put(SETTING_NUMBER_OF_REPLICAS, 0);
|
||||||
|
assertAcked(prepareCreate("test").setSettings(settings));
|
||||||
|
for(int i=0;i<5;i++) {
|
||||||
|
client().prepareIndex("test", "type", ""+i).setSource("text", "hello world").get();
|
||||||
|
}
|
||||||
|
refresh();
|
||||||
|
|
||||||
|
SearchRequestBuilder request = client().prepareSearch();
|
||||||
|
request.setQuery(QueryBuilders.termQuery("text", "hello"));
|
||||||
|
request.setFrom(1);
|
||||||
|
request.setSize(4);
|
||||||
|
request.addRescorer(RescoreBuilder.queryRescorer(QueryBuilders.matchAllQuery()));
|
||||||
|
request.setRescoreWindow(50);
|
||||||
|
|
||||||
|
assertEquals(4, request.get().getHits().hits().length);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user