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 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 SuggestRequestBuilder<JsonInput, JsonOutput> suggestText(String globalText) { this.suggest.setText(globalText); return this; }
/** * Add a definition for suggestions to the request */ public <T> SuggestRequestBuilder addSuggestion(SuggestionBuilder<T> suggestion) { suggest.addSuggestion(suggestion); return this; }
public SuggestBuilder suggest() { if (suggestBuilder == null) { suggestBuilder = new SuggestBuilder("suggest"); } return suggestBuilder; }
highlightBuilder = HighlightBuilder.fromXContent(parser); } else if (SUGGEST_FIELD.match(currentFieldName, parser.getDeprecationHandler())) { suggestBuilder = SuggestBuilder.fromXContent(parser); } else if (SORT_FIELD.match(currentFieldName, parser.getDeprecationHandler())) { sorts = new ArrayList<>(SortBuilder.fromXContent(parser));
public JsonOutput suggestTerm(String suggestText, String... fields) { SuggestRequestBuilder<JsonInput, JsonOutput> suggestRequestBuilder = suggestBuilder().suggestText(suggestText); for (String field : fields) { suggestRequestBuilder.addSuggestion(SuggestBuilder.termSuggestion(field).field(field)); } return suggestRequestBuilder.execute(); }
context.suggest(source.suggest().build(queryShardContext)); } catch (IOException e) { throw new SearchContextException(context, "failed to create SuggestionSearchContext", e);
public <T> SuggestRequestBuilder<JsonInput, JsonOutput> addSuggestion(SuggestBuilder.SuggestionBuilder<T> suggestion) { suggest.addSuggestion(suggestion); return this; }
@Override public RestChannelConsumer prepareRequest(final RestRequest request, final NodeClient client) throws IOException { final SearchRequest searchRequest = new SearchRequest( Strings.splitStringByCommaToArray(request.param("index")), new SearchSourceBuilder()); searchRequest.indicesOptions(IndicesOptions.fromRequest(request, searchRequest.indicesOptions())); try (XContentParser parser = request.contentOrSourceParamParser()) { searchRequest.source().suggest(SuggestBuilder.fromXContent(parser)); } searchRequest.routing(request.param("routing")); searchRequest.preference(request.param("preference")); return channel -> client.search(searchRequest, new RestBuilderListener<SearchResponse>(channel) { @Override public RestResponse buildResponse(SearchResponse response, XContentBuilder builder) throws Exception { RestStatus restStatus = RestStatus.status(response.getSuccessfulShards(), response.getTotalShards(), response.getShardFailures()); builder.startObject(); buildBroadcastShardsHeader(builder, request, response.getTotalShards(), response.getSuccessfulShards(), response.getFailedShards(), response.getShardFailures()); Suggest suggest = response.getSuggest(); if (suggest != null) { suggest.toInnerXContent(builder, request); } builder.endObject(); return new BytesRestResponse(restStatus, builder); } }); } }
public JsonOutput suggestTerm(String suggestText, String... fields) { SuggestRequestBuilder<JsonInput, JsonOutput> suggestRequestBuilder = suggestBuilder().suggestText(suggestText); for (String field : fields) { suggestRequestBuilder.addSuggestion(SuggestBuilder.termSuggestion(field).field(field)); } return suggestRequestBuilder.execute(); }
context.suggest(source.suggest().build(queryShardContext)); } catch (IOException e) { throw new SearchContextException(context, "failed to create SuggestionSearchContext", e);
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; }
/** * 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; }
highlightBuilder = HighlightBuilder.fromXContent(context); } else if (SUGGEST_FIELD.match(currentFieldName)) { suggestBuilder = SuggestBuilder.fromXContent(context.parser()); } else if (SORT_FIELD.match(currentFieldName)) { sorts = new ArrayList<>(SortBuilder.fromXContent(context));
@Override public List<AutoSuggestionEntry> getAutoSuggestions(ElasticSearchIndexConfig config, String queryString) TermSuggestionBuilder suggesBuilder = SuggestBuilder.termSuggestion(SearchFacetName.AUTO_SUGGESTION.getCode()) .field(SearchDocumentFieldName.KEYWORDS.getFieldName()) .analyzer(config.getAutoSuggestionAnalyzerName())
context.suggest(source.suggest().build(queryShardContext)); } catch (IOException e) { throw new SearchContextException(context, "failed to create SuggestionSearchContext", e);
public SuggestRequestBuilder setSuggestText(String globalText) { this.suggest.setText(globalText); return this; }
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); } }