summaryrefslogtreecommitdiff
path: root/core/src/main/java/org/elasticsearch/index/query/MoreLikeThisQueryBuilder.java
diff options
context:
space:
mode:
authorBritta Weber <brwe@users.noreply.github.com>2016-04-20 11:40:14 +0200
committerBritta Weber <brwe@users.noreply.github.com>2016-04-20 11:40:14 +0200
commit352dc19767bcaa298ca2d84baab7a5d9329209da (patch)
tree0305eef9882056e734a549fd92485f7cf1c441de /core/src/main/java/org/elasticsearch/index/query/MoreLikeThisQueryBuilder.java
parentab168996b6b5ec4b9567242664bd9f4d9b23e8f1 (diff)
parentaddf3bb52d4360456762adb899f77aaf46db041c (diff)
Merge pull request #17204 from mstockerl/master
Alias items are not ignored anymore
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.java31
1 files changed, 8 insertions, 23 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 901afd9fdd..1e03ae20d4 100644
--- a/core/src/main/java/org/elasticsearch/index/query/MoreLikeThisQueryBuilder.java
+++ b/core/src/main/java/org/elasticsearch/index/query/MoreLikeThisQueryBuilder.java
@@ -1081,14 +1081,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);
}
@@ -1127,30 +1127,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;
}
@@ -1163,10 +1152,6 @@ public class MoreLikeThisQueryBuilder extends AbstractQueryBuilder<MoreLikeThisQ
return likeFields.toArray(Fields.EMPTY_ARRAY);
}
- private static boolean hasResponseFromRequest(MultiTermVectorsItemResponse response, Set<Item> selectedItems) {
- return selectedItems.contains(new Item(response.getIndex(), response.getType(), response.getId()));
- }
-
private static void handleExclude(BooleanQuery.Builder boolQuery, Item[] likeItems) {
// artificial docs get assigned a random id and should be disregarded
List<BytesRef> uids = new ArrayList<>();