public <T> SuggestRequestBuilder<JsonInput, JsonOutput> addSuggestion(SuggestBuilder.SuggestionBuilder<T> suggestion) { suggest.addSuggestion(suggestion); return this; }
/** * Add a definition for suggestions to the request */ public <T> SuggestRequestBuilder addSuggestion(SuggestionBuilder<T> suggestion) { suggest.addSuggestion(suggestion); return this; }
public static SuggestBuilder fromXContent(XContentParser parser) throws IOException { SuggestBuilder suggestBuilder = new SuggestBuilder(); String fieldName = null; if (parser.currentToken() == null) { // when we parse from RestSuggestAction the current token is null, advance the token parser.nextToken(); } assert parser.currentToken() == XContentParser.Token.START_OBJECT : "current token must be a start object"; XContentParser.Token token; while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) { if (token == XContentParser.Token.FIELD_NAME) { fieldName = parser.currentName(); } else if (token.isValue()) { if (GLOBAL_TEXT_FIELD.match(fieldName, parser.getDeprecationHandler())) { suggestBuilder.setGlobalText(parser.text()); } else { throw new IllegalArgumentException("[suggest] does not support [" + fieldName + "]"); } } else if (token == XContentParser.Token.START_OBJECT) { String suggestionName = fieldName; if (suggestionName == null) { throw new IllegalArgumentException("suggestion must have name"); } suggestBuilder.addSuggestion(suggestionName, SuggestionBuilder.fromXContent(parser)); } else { throw new ParsingException(parser.getTokenLocation(), "unexpected token [" + token + "] after [" + fieldName + "]"); } } return suggestBuilder; }
/** * Delegates to {@link org.elasticsearch.search.suggest.SuggestBuilder#addSuggestion(org.elasticsearch.search.suggest.SuggestBuilder.SuggestionBuilder)}. */ public SearchRequestBuilder addSuggestion(SuggestBuilder.SuggestionBuilder<?> suggestion) { suggestBuilder().addSuggestion(suggestion); return this; }
public SearchRequestBuilder<JsonInput, JsonOutput> addSuggestionBuilder(SuggestBuilder.SuggestionBuilder<?> suggestion) { suggestBuilder().addSuggestion(suggestion); return this; }
int suggestSize = request.paramAsInt("suggest_size", 5); String suggestMode = request.param("suggest_mode"); searchSourceBuilder.suggest(new SuggestBuilder().addSuggestion(suggestField, termSuggestion(suggestField) .text(suggestText).size(suggestSize)
public List<String> suggest(String prefix) { CompletionSuggestionBuilder suggestionBuilder = new CompletionSuggestionBuilder("name_suggest") .prefix(prefix); SearchResponse response = getConnection().getClient().prepareSearch(getIndex()) .setTypes(getType()) .suggest(new SuggestBuilder().addSuggestion("suggestion", suggestionBuilder)) .setSize(100) .setFetchSource(true) .setExplain(false) .execute() .actionGet(); return response.getSuggest().filter(CompletionSuggestion.class).stream() .flatMap(s -> s.getOptions().stream()) .sorted(Comparator.comparingDouble(Suggest.Suggestion.Entry.Option::getScore)) .map(Suggest.Suggestion.Entry.Option::getText) .map(Text::toString) .collect(Collectors.toList()); }
public static SuggestBuilder fromXContent(XContentParser parser) throws IOException { SuggestBuilder suggestBuilder = new SuggestBuilder(); String fieldName = null; if (parser.currentToken() == null) { // when we parse from RestSuggestAction the current token is null, advance the token parser.nextToken(); } assert parser.currentToken() == XContentParser.Token.START_OBJECT : "current token must be a start object"; XContentParser.Token token; while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) { if (token == XContentParser.Token.FIELD_NAME) { fieldName = parser.currentName(); } else if (token.isValue()) { if (GLOBAL_TEXT_FIELD.match(fieldName)) { suggestBuilder.setGlobalText(parser.text()); } else { throw new IllegalArgumentException("[suggest] does not support [" + fieldName + "]"); } } else if (token == XContentParser.Token.START_OBJECT) { String suggestionName = fieldName; if (suggestionName == null) { throw new IllegalArgumentException("suggestion must have name"); } suggestBuilder.addSuggestion(suggestionName, SuggestionBuilder.fromXContent(parser)); } else { throw new ParsingException(parser.getTokenLocation(), "unexpected token [" + token + "] after [" + fieldName + "]"); } } return suggestBuilder; }
private SuggestBuilder generateCompletionBuilder() { CompletionSuggestionBuilder builder = SuggestBuilders.completionSuggestion(field).size(limit); if (isRegexQuery) { RegexOptions.Builder regexOptionsBuilder = RegexOptions.builder(); if (maxDeterminizedStates != -1) { regexOptionsBuilder.setMaxDeterminizedStates(maxDeterminizedStates); } builder.regex(query, regexOptionsBuilder.build()); } else { builder.prefix(query, fuzziness); } if (contexts != null) { builder.contexts(contexts); } return new SuggestBuilder().addSuggestion("completion", builder); } }
public static SuggestBuilder fromXContent(XContentParser parser) throws IOException { SuggestBuilder suggestBuilder = new SuggestBuilder(); String fieldName = null; if (parser.currentToken() == null) { // when we parse from RestSuggestAction the current token is null, advance the token parser.nextToken(); } assert parser.currentToken() == XContentParser.Token.START_OBJECT : "current token must be a start object"; XContentParser.Token token; while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) { if (token == XContentParser.Token.FIELD_NAME) { fieldName = parser.currentName(); } else if (token.isValue()) { if (GLOBAL_TEXT_FIELD.match(fieldName, parser.getDeprecationHandler())) { suggestBuilder.setGlobalText(parser.text()); } else { throw new IllegalArgumentException("[suggest] does not support [" + fieldName + "]"); } } else if (token == XContentParser.Token.START_OBJECT) { String suggestionName = fieldName; if (suggestionName == null) { throw new IllegalArgumentException("suggestion must have name"); } suggestBuilder.addSuggestion(suggestionName, SuggestionBuilder.fromXContent(parser)); } else { throw new ParsingException(parser.getTokenLocation(), "unexpected token [" + token + "] after [" + fieldName + "]"); } } return suggestBuilder; }
public static SuggestBuilder fromXContent(XContentParser parser) throws IOException { SuggestBuilder suggestBuilder = new SuggestBuilder(); String fieldName = null; if (parser.currentToken() == null) { // when we parse from RestSuggestAction the current token is null, advance the token parser.nextToken(); } assert parser.currentToken() == XContentParser.Token.START_OBJECT : "current token must be a start object"; XContentParser.Token token; while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) { if (token == XContentParser.Token.FIELD_NAME) { fieldName = parser.currentName(); } else if (token.isValue()) { if (GLOBAL_TEXT_FIELD.match(fieldName, parser.getDeprecationHandler())) { suggestBuilder.setGlobalText(parser.text()); } else { throw new IllegalArgumentException("[suggest] does not support [" + fieldName + "]"); } } else if (token == XContentParser.Token.START_OBJECT) { String suggestionName = fieldName; if (suggestionName == null) { throw new IllegalArgumentException("suggestion must have name"); } suggestBuilder.addSuggestion(suggestionName, SuggestionBuilder.fromXContent(parser)); } else { throw new ParsingException(parser.getTokenLocation(), "unexpected token [" + token + "] after [" + fieldName + "]"); } } return suggestBuilder; }
@Override public List<String> findSimilarWords(String searchQuery) { SearchResponse result = client.prepareSearch(INDEX_NAME) .suggest(new SuggestBuilder() .addSuggestion(FIELD_NAME, SuggestBuilders .termSuggestion(FIELD_NAME) .maxEdits(2) .suggestMode(SuggestMode.ALWAYS) .size(1) .text(searchQuery))) .get(); Suggest suggest = result.getSuggest(); List<String> similarWords = new ArrayList<>(); if (suggest != null) { Suggestion<? extends Entry<? extends Option>> suggestions = suggest.getSuggestion(FIELD_NAME); for (Entry<? extends Option> options : suggestions.getEntries()) { for (Option option : options.getOptions()) { similarWords.add(option.getText().string()); } } } return similarWords; }
/** * Builds the phrase suggestion builder with all given settings * * @return the PhraseSuggestionBuilder */ private SuggestBuilder generateSuggestionBuilder() { PhraseSuggestionBuilder builder = SuggestBuilders.phraseSuggestion(field) .text(query) .maxErrors(maxErrors) .size(limit) .analyzer(analyzer) .confidence(confidence); if (Strings.isFilled(collateQuery)) { builder.collateQuery(collateQuery).collateParams(collateParams).collatePrune(collatePrune); } if (highlightTags != null) { builder.highlight(highlightTags.getFirst(), highlightTags.getSecond()); } return new SuggestBuilder().addSuggestion("suggestPhrase", builder); }
int suggestSize = request.paramAsInt("suggest_size", 5); String suggestMode = request.param("suggest_mode"); searchSourceBuilder.suggest(new SuggestBuilder().addSuggestion(suggestField, termSuggestion(suggestField) .text(suggestText).size(suggestSize)
int suggestSize = request.paramAsInt("suggest_size", 5); String suggestMode = request.param("suggest_mode"); searchSourceBuilder.suggest(new SuggestBuilder().addSuggestion(suggestField, termSuggestion(suggestField) .text(suggestText).size(suggestSize)
int suggestSize = request.paramAsInt("suggest_size", 5); String suggestMode = request.param("suggest_mode"); searchSourceBuilder.suggest(new SuggestBuilder().addSuggestion(suggestField, termSuggestion(suggestField) .text(suggestText).size(suggestSize)
searchSourceBuilder.suggest().addSuggestion( termSuggestion(suggestField).field(suggestField).text(suggestText).size(suggestSize) .suggestMode(suggestMode)