org.elasticsearch.action.suggest.SuggestRequestBuilder Java Examples
The following examples show how to use
org.elasticsearch.action.suggest.SuggestRequestBuilder.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: EsSearch.java From es-service-parent with Apache License 2.0 | 5 votes |
/** * 无奈es的版本太低了,无法在建议器中做过滤操作(笔者es版本1.1),在更高版本的es中可以通过Context Suggester做过滤 * * @param indices * @param suggestQuery * @return */ @SuppressWarnings({ "unchecked" }) private static List<Map<String, Object>> getCompletionSuggest(String indices, SuggestQuery suggestQuery) { // 查询体 CompletionSuggestionFuzzyBuilder suggestionsBuilder = new CompletionSuggestionFuzzyBuilder( suggestQuery.suggestName); suggestionsBuilder.setFuzziness(Fuzziness.build(suggestQuery.getFuzziness())); suggestionsBuilder.text(suggestQuery.getText()); suggestionsBuilder.field(suggestQuery.getField()); suggestionsBuilder.size(suggestQuery.getSize()); SuggestRequestBuilder suggestRequestBuilder = ESClient.getClient() .prepareSuggest(indices.split(",")).addSuggestion(suggestionsBuilder); SuggestResponse resp = suggestRequestBuilder.execute().actionGet(); // 查询结果 List<? extends Entry<? extends Option>> entries = (List<? extends Entry<? extends Option>>) resp .getSuggest().getSuggestion(suggestQuery.suggestName).getEntries(); if (entries == null) { return Lists.newArrayList(); } List<Map<String, Object>> result = new ArrayList<Map<String, Object>>(); for (Entry<? extends Option> e : entries) { for (Option option : e) { Map<String, Object> map_payload = option.getPayloadAsMap(); map_payload.put("NAME", option.getText().toString()); result.add(map_payload); } } // 调试模式 if (Constants.isDebug) { logger.info(suggestRequestBuilder.toString()); logger.info(suggestionsBuilder.toString()); logger.info(JsonUtil.toJson(result)); } return result; }
Example #2
Source File: AbstractClient.java From Elasticsearch with Apache License 2.0 | 4 votes |
@Override public SuggestRequestBuilder prepareSuggest(String... indices) { return new SuggestRequestBuilder(this, SuggestAction.INSTANCE).setIndices(indices); }
Example #3
Source File: ProductQueryServiceImpl.java From elasticsearch-tutorial with MIT License | 4 votes |
@Override public List<AutoSuggestionEntry> getAutoSuggestions(ElasticSearchIndexConfig config, String queryString) { TermSuggestionBuilder suggesBuilder = SuggestBuilder.termSuggestion(SearchFacetName.AUTO_SUGGESTION.getCode()) .field(SearchDocumentFieldName.KEYWORDS.getFieldName()) .analyzer(config.getAutoSuggestionAnalyzerName()) .size(20) .text(queryString) // .suggestMode("always") // .stringDistance("ngram") ; // CompletionSuggestionBuilder suggesBuilder = new CompletionSuggestionBuilder(SearchFacetName.AUTO_SUGGESTION.getCode()) // .field(SearchDocumentFieldName.KEYWORDS.getFieldName()) // .analyzer(config.getAutoSuggestionAnalyzerName()) // .size(20) // .text(queryString) //// .stringDistance("ngram") // ; // PhraseSuggestionBuilder suggesBuilder = SuggestBuilder.phraseSuggestion(SearchFacetName.AUTO_SUGGESTION.getCode()) // .field(SearchDocumentFieldName.TITLE.getFieldName()) // .analyzer(config.getAutoSuggestionAnalyzerName()) // .size(10) // .text(queryString) // ; SuggestRequestBuilder addSuggestion = searchClientService.getClient().prepareSuggest(config.getIndexAliasName()) .addSuggestion(suggesBuilder); try { logger.debug("Auto Suggestion request is {}", suggesBuilder.toXContent(jsonBuilder().startObject(), null).prettyPrint().string()); } catch (IOException e) { //Do nothing logger.error("Error in to string", e); } SuggestResponse suggestResponse = addSuggestion.get(); logger.debug("Auto Suggestion response is {}", suggestResponse); List<AutoSuggestionEntry> suggestions = new ArrayList<AutoSuggestionEntry>(); if(suggestResponse !=null && suggestResponse.getSuggest() !=null && suggestResponse.getSuggest().getSuggestion(SearchFacetName.AUTO_SUGGESTION.getCode()) !=null) { for (org.elasticsearch.search.suggest.Suggest.Suggestion.Entry<? extends Option> suggestEntry : suggestResponse.getSuggest().getSuggestion(SearchFacetName.AUTO_SUGGESTION.getCode()).getEntries()) { for (Option option : suggestEntry.getOptions()) { int count = ((TermSuggestion.Entry.Option) option).getFreq(); AutoSuggestionEntry autoSuggestionEntry = new AutoSuggestionEntry(option.getText().string(), count); suggestions.add(autoSuggestionEntry); } } } return suggestions; }
Example #4
Source File: ProductQueryServiceImpl.java From searchanalytics-bigdata with MIT License | 4 votes |
@Override public List<AutoSuggestionEntry> getAutoSuggestions( final ElasticSearchIndexConfig config, final String queryString) { final TermSuggestionBuilder suggesBuilder = SuggestBuilder .termSuggestion(SearchFacetName.AUTO_SUGGESTION.getCode()) .field(SearchDocumentFieldName.KEYWORDS.getFieldName()) .analyzer(config.getAutoSuggestionAnalyzerName()).size(20) .text(queryString) // .suggestMode("always") // .stringDistance("ngram") ; // CompletionSuggestionBuilder suggesBuilder = new // CompletionSuggestionBuilder(SearchFacetName.AUTO_SUGGESTION.getCode()) // .field(SearchDocumentFieldName.KEYWORDS.getFieldName()) // .analyzer(config.getAutoSuggestionAnalyzerName()) // .size(20) // .text(queryString) // // .stringDistance("ngram") // ; // PhraseSuggestionBuilder suggesBuilder = // SuggestBuilder.phraseSuggestion(SearchFacetName.AUTO_SUGGESTION.getCode()) // .field(SearchDocumentFieldName.TITLE.getFieldName()) // .analyzer(config.getAutoSuggestionAnalyzerName()) // .size(10) // .text(queryString) // ; final SuggestRequestBuilder addSuggestion = searchClientService .getClient().prepareSuggest(config.getIndexAliasName()) .addSuggestion(suggesBuilder); try { logger.debug("Auto Suggestion request is {}", suggesBuilder .toXContent(jsonBuilder().startObject(), null) .prettyPrint().string()); } catch (final IOException e) { // Do nothing logger.error("Error in to string", e); } final SuggestResponse suggestResponse = addSuggestion.get(); logger.debug("Auto Suggestion response is {}", suggestResponse); final List<AutoSuggestionEntry> suggestions = new ArrayList<AutoSuggestionEntry>(); if (suggestResponse != null && suggestResponse.getSuggest() != null && suggestResponse.getSuggest().getSuggestion( SearchFacetName.AUTO_SUGGESTION.getCode()) != null) { for (final org.elasticsearch.search.suggest.Suggest.Suggestion.Entry<? extends Option> suggestEntry : suggestResponse .getSuggest() .getSuggestion(SearchFacetName.AUTO_SUGGESTION.getCode()) .getEntries()) { for (final Option option : suggestEntry.getOptions()) { final int count = ((TermSuggestion.Entry.Option) option) .getFreq(); final AutoSuggestionEntry autoSuggestionEntry = new AutoSuggestionEntry( option.getText().string(), count); suggestions.add(autoSuggestionEntry); } } } return suggestions; }
Example #5
Source File: Client.java From Elasticsearch with Apache License 2.0 | 2 votes |
/** * Suggestions matching a specific phrase. */ SuggestRequestBuilder prepareSuggest(String... indices);