[TEST] Beef up MoreLikeThisActionTests#testCompareMoreLikeThisDSLWithAPI
This commit is contained in:
parent
91b74931a3
commit
d9441747e8
|
@ -401,47 +401,50 @@ public class MoreLikeThisActionTests extends ElasticsearchIntegrationTest {
|
|||
builders.add(client().prepareIndex("test", "type1").setSource("text", texts[i]).setId(String.valueOf(i)));
|
||||
}
|
||||
indexRandom(true, builders);
|
||||
int iters = between(10, 20);
|
||||
for (int j = 0; j < iters; j++) {
|
||||
logger.info("Running MoreLikeThis DSL with IDs");
|
||||
String id = String.valueOf(getRandom().nextInt(texts.length));
|
||||
Client client = client();
|
||||
MoreLikeThisQueryBuilder queryBuilder = QueryBuilders.moreLikeThisQuery("text").ids(id).minTermFreq(1).minDocFreq(1);
|
||||
SearchResponse mltResponseDSL = client.prepareSearch()
|
||||
.setSearchType(SearchType.QUERY_THEN_FETCH)
|
||||
.setTypes("type1")
|
||||
.setQuery(queryBuilder)
|
||||
.setSize(texts.length)
|
||||
.execute().actionGet();
|
||||
assertSearchResponse(mltResponseDSL);
|
||||
|
||||
logger.info("Running MoreLikeThis DSL with IDs");
|
||||
Client client = client();
|
||||
MoreLikeThisQueryBuilder queryBuilder = QueryBuilders.moreLikeThisQuery("text").ids("0").minTermFreq(1).minDocFreq(1);
|
||||
SearchResponse mltResponseDSL = client.prepareSearch()
|
||||
.setSearchType(SearchType.QUERY_THEN_FETCH)
|
||||
.setTypes("type1")
|
||||
.setQuery(queryBuilder)
|
||||
.setSize(texts.length)
|
||||
.execute().actionGet();
|
||||
assertSearchResponse(mltResponseDSL);
|
||||
logger.info("Running MoreLikeThis API");
|
||||
MoreLikeThisRequest mltRequest = moreLikeThisRequest("test").type("type1").searchSize(texts.length).id(id).minTermFreq(1).minDocFreq(1);
|
||||
SearchResponse mltResponseAPI = client.moreLikeThis(mltRequest).actionGet();
|
||||
assertSearchResponse(mltResponseAPI);
|
||||
|
||||
logger.info("Running MoreLikeThis API");
|
||||
MoreLikeThisRequest mltRequest = moreLikeThisRequest("test").type("type1").searchSize(texts.length).id("0").minTermFreq(1).minDocFreq(1);
|
||||
SearchResponse mltResponseAPI = client.moreLikeThis(mltRequest).actionGet();
|
||||
assertSearchResponse(mltResponseAPI);
|
||||
logger.info("Ensure the documents and scores returned are the same.");
|
||||
SearchHit[] hitsDSL = mltResponseDSL.getHits().hits();
|
||||
SearchHit[] hitsAPI = mltResponseAPI.getHits().hits();
|
||||
|
||||
logger.info("Ensure the documents and scores returned are the same.");
|
||||
SearchHit[] hitsDSL = mltResponseDSL.getHits().hits();
|
||||
SearchHit[] hitsAPI = mltResponseAPI.getHits().hits();
|
||||
// we have to resort since the results might come from
|
||||
// different shards and docIDs that are used for tie-breaking might not be the same on the shards
|
||||
Comparator<SearchHit> cmp = new Comparator<SearchHit>() {
|
||||
|
||||
// we have to resort since the results might come from
|
||||
// different shards and docIDs that are used for tie-breaking might not be the same on the shards
|
||||
Comparator<SearchHit> cmp = new Comparator<SearchHit>() {
|
||||
|
||||
@Override
|
||||
public int compare(SearchHit o1, SearchHit o2) {
|
||||
if (Float.compare(o1.getScore(), o2.getScore()) == 0) {
|
||||
return o1.getId().compareTo(o2.getId());
|
||||
@Override
|
||||
public int compare(SearchHit o1, SearchHit o2) {
|
||||
if (Float.compare(o1.getScore(), o2.getScore()) == 0) {
|
||||
return o1.getId().compareTo(o2.getId());
|
||||
}
|
||||
return Float.compare(o1.getScore(), o2.getScore());
|
||||
}
|
||||
return Float.compare(o1.getScore(), o2.getScore());
|
||||
};
|
||||
ArrayUtil.timSort(hitsDSL, cmp);
|
||||
ArrayUtil.timSort(hitsAPI, cmp);
|
||||
assertThat("Not the same number of results.", hitsAPI.length, equalTo(hitsDSL.length));
|
||||
for (int i = 0; i < hitsDSL.length; i++) {
|
||||
assertThat("Expected id: " + hitsDSL[i].getId() + " at position " + i + " but wasn't.",
|
||||
hitsAPI[i].getId(), equalTo(hitsDSL[i].getId()));
|
||||
assertThat("Expected score: " + hitsDSL[i].getScore() + " at position " + i + " but wasn't.",
|
||||
hitsAPI[i].getScore(), equalTo(hitsDSL[i].getScore()));
|
||||
}
|
||||
};
|
||||
ArrayUtil.timSort(hitsDSL, cmp);
|
||||
ArrayUtil.timSort(hitsAPI, cmp);
|
||||
assertThat("Not the same number of results.", hitsAPI.length, equalTo(hitsDSL.length));
|
||||
for (int i = 0; i < hitsDSL.length; i++) {
|
||||
assertThat("Expected id: " + hitsDSL[i].getId() + " at position " + i + " but wasn't.",
|
||||
hitsAPI[i].getId(), equalTo(hitsDSL[i].getId()));
|
||||
assertThat("Expected score: " + hitsDSL[i].getScore() + " at position " + i + " but wasn't.",
|
||||
hitsAPI[i].getScore(), equalTo(hitsDSL[i].getScore()));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue