\#49566 Fix non-deterministic sort order in testHighlightingWithKeywordIgnoreBoundaryScanner

This commit is contained in:
jimczi 2019-12-04 12:21:02 +01:00
parent 44e94555ee
commit 53d801c0d7

View File

@ -57,6 +57,7 @@ import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder.BoundaryScannerType;
import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder.Field;
import org.elasticsearch.search.sort.SortBuilders;
import org.elasticsearch.search.sort.SortOrder;
import org.elasticsearch.test.ESIntegTestCase;
import org.elasticsearch.test.InternalSettingsPlugin;
@ -129,20 +130,33 @@ public class HighlighterSearchIT extends ESIntegTestCase {
.startObject("tags")
.field("type", "keyword")
.endObject()
.startObject("sort")
.field("type", "long")
.endObject()
.endObject().endObject();
mappings.endObject();
assertAcked(prepareCreate("test")
.addMapping("type", mappings));
client().prepareIndex("test", "_doc").setId("1")
.setSource(jsonBuilder().startObject().array("tags", "foo bar", "foo bar", "foo bar", "foo baz").endObject())
.setSource(jsonBuilder()
.startObject()
.array("tags", "foo bar", "foo bar", "foo bar", "foo baz")
.field("sort", 1)
.endObject())
.get();
client().prepareIndex("test", "_doc").setId("2")
.setSource(jsonBuilder().startObject().array("tags", "foo baz", "foo baz", "foo baz", "foo bar").endObject())
.setSource(jsonBuilder()
.startObject()
.array("tags", "foo baz", "foo baz", "foo baz", "foo bar")
.field("sort", 2)
.endObject())
.get();
refresh();
for (BoundaryScannerType scanner : BoundaryScannerType.values()) {
SearchResponse search = client().prepareSearch().setQuery(matchQuery("tags", "foo bar"))
SearchResponse search = client().prepareSearch()
.addSort(SortBuilders.fieldSort("sort"))
.setQuery(matchQuery("tags", "foo bar"))
.highlighter(new HighlightBuilder().field(new Field("tags")).numOfFragments(2).boundaryScannerType(scanner)).get();
assertHighlight(search, 0, "tags", 0, 2, equalTo("<em>foo bar</em>"));
assertHighlight(search, 0, "tags", 1, 2, equalTo("<em>foo bar</em>"));