private Collection<String> getSuggestions(ShardSuggestRequest shardSuggestRequest) throws IOException {
List<LookupResult> lookupResults = Lists.newArrayList();
if ("full".equals(shardSuggestRequest.suggestType())) {
AnalyzingSuggester analyzingSuggester = analyzingSuggesterCache.getUnchecked(new FieldType(shardSuggestRequest));
lookupResults.addAll(analyzingSuggester.lookup(shardSuggestRequest.term(), false, shardSuggestRequest.size()));
} else if ("fuzzy".equals(shardSuggestRequest.suggestType())) {
lookupResults.addAll(fuzzySuggesterCache.getUnchecked(new FieldType(shardSuggestRequest))
.lookup(shardSuggestRequest.term(), false, shardSuggestRequest.size()));
} else {
lookupResults.addAll(lookupCache.getUnchecked(shardSuggestRequest.field())
.lookup(shardSuggestRequest.term(), true, shardSuggestRequest.size() + 1));
Collection<String> suggestions = Collections2.transform(lookupResults, new LookupResultToStringFunction());
float similarity = shardSuggestRequest.similarity();
if (similarity < 1.0f && suggestions.size() < shardSuggestRequest.size()) {
suggestions = Lists.newArrayList(suggestions);
suggestions.addAll(getSimilarSuggestions(shardSuggestRequest));
}
return suggestions;
}
return Collections2.transform(lookupResults, new LookupResultToStringFunction());
}