diff options
author | Michael Stockerl <stockerlm@gmx.de> | 2016-03-20 19:12:05 +0100 |
---|---|---|
committer | Michael Stockerl <stockerlm@gmx.de> | 2016-03-20 19:12:05 +0100 |
commit | bd17ee8c56d45c4b54c4ff25d53fa298825d4623 (patch) | |
tree | 1c5593283a196a6a5b8818325f541a26f2b7c7a2 /core/src/main/java/org/elasticsearch/index/query/MoreLikeThisQueryBuilder.java | |
parent | ef4293a993014379c54e2399e692c6387d80f0ca (diff) |
Get TermVectorResponses for like and unlike items in separate requests, so we don't have to validate responses afterwards.
Relates to #14944
Diffstat (limited to 'core/src/main/java/org/elasticsearch/index/query/MoreLikeThisQueryBuilder.java')
-rw-r--r-- | core/src/main/java/org/elasticsearch/index/query/MoreLikeThisQueryBuilder.java | 27 |
1 files changed, 8 insertions, 19 deletions
diff --git a/core/src/main/java/org/elasticsearch/index/query/MoreLikeThisQueryBuilder.java b/core/src/main/java/org/elasticsearch/index/query/MoreLikeThisQueryBuilder.java index 9f6c8b24c4..fcda9ae3a8 100644 --- a/core/src/main/java/org/elasticsearch/index/query/MoreLikeThisQueryBuilder.java +++ b/core/src/main/java/org/elasticsearch/index/query/MoreLikeThisQueryBuilder.java @@ -861,14 +861,14 @@ public class MoreLikeThisQueryBuilder extends AbstractQueryBuilder<MoreLikeThisQ } // fetching the items with multi-termvectors API - MultiTermVectorsResponse responses = fetchResponse(context.getClient(), likeItems, unlikeItems, SearchContext.current()); - + MultiTermVectorsResponse likeItemsResponse = fetchResponse(context.getClient(), likeItems); // getting the Fields for liked items - mltQuery.setLikeText(getFieldsFor(responses, likeItems)); + mltQuery.setLikeText(getFieldsFor(likeItemsResponse)); // getting the Fields for unliked items if (unlikeItems.length > 0) { - org.apache.lucene.index.Fields[] unlikeFields = getFieldsFor(responses, unlikeItems); + MultiTermVectorsResponse unlikeItemsResponse = fetchResponse(context.getClient(), unlikeItems); + org.apache.lucene.index.Fields[] unlikeFields = getFieldsFor(unlikeItemsResponse); if (unlikeFields.length > 0) { mltQuery.setUnlikeText(unlikeFields); } @@ -907,30 +907,19 @@ public class MoreLikeThisQueryBuilder extends AbstractQueryBuilder<MoreLikeThisQ } } - private MultiTermVectorsResponse fetchResponse(Client client, Item[] likeItems, @Nullable Item[] unlikeItems, - SearchContext searchContext) throws IOException { + private MultiTermVectorsResponse fetchResponse(Client client, Item[] items) throws IOException { MultiTermVectorsRequest request = new MultiTermVectorsRequest(); - for (Item item : likeItems) { - request.add(item.toTermVectorsRequest()); - } - for (Item item : unlikeItems) { + for (Item item : items) { request.add(item.toTermVectorsRequest()); } + return client.multiTermVectors(request).actionGet(); } - private static Fields[] getFieldsFor(MultiTermVectorsResponse responses, Item[] items) throws IOException { + private static Fields[] getFieldsFor(MultiTermVectorsResponse responses) throws IOException { List<Fields> likeFields = new ArrayList<>(); - Set<Item> selectedItems = new HashSet<>(); - for (Item request : items) { - selectedItems.add(new Item(request.index(), request.type(), request.id())); - } - for (MultiTermVectorsItemResponse response : responses) { - if (!hasResponseFromRequest(response, selectedItems)) { - continue; - } if (response.isFailed()) { continue; } |