private Map<String, BatchPercolateResponseItem> percolateResponses(SearchContext context, Map<String, QueryAndSource> percolateQueries, List<ParsedDocument> parsedDocuments) {
Map<String, BatchPercolateResponseItem> responses = Maps.newHashMap();
for(ParsedDocument document : parsedDocuments){
responses.put(document.id(), new BatchPercolateResponseItem(document.id()));
}
for (Map.Entry<String, QueryAndSource> entry : percolateQueries.entrySet()) {
try{
executeSearch(context, entry.getValue());
for (SearchHit searchHit : context.fetchResult().hits()) {
String id = searchHit.getId();
BatchPercolateResponseItem batchPercolateResponseItem = responses.get(id);
QueryMatch queryMatch = getQueryMatch(entry, searchHit);
batchPercolateResponseItem.getMatches().put(queryMatch.getQueryId(), queryMatch);
}
}
catch (Exception e){
logger.warn(
"Failed to execute query. Will not add it to matches. Query ID: {}, Query: {}",
e, entry.getKey(), entry.getValue().getQuery());
}
}
return responses;
}