org.elasticsearch.search.suggest.Suggest.Suggestion.Entry Java Examples
The following examples show how to use
org.elasticsearch.search.suggest.Suggest.Suggestion.Entry.
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: TransportClient.java From elasticsearch-jest-example with MIT License | 5 votes |
private static void suggest(){ Client client = createTransportClient(); // CompletionSuggestionBuilder completionSuggestion = new CompletionSuggestionBuilder("suggestions"); // completionSuggestion.field("text"); // completionSuggestion.text("园"); // completionSuggestion.size(10); // // SuggestRequestBuilder suggestRequestBuilder = client.prepareSuggest("article"); // suggestRequestBuilder.addSuggestion(completionSuggestion); // SuggestResponse suggestResponse = suggestRequestBuilder.execute().actionGet(); // // Suggestion<? extends Entry<? extends Option>> suggestion = suggestResponse.getSuggest().getSuggestion("suggestions"); // for(Entry<? extends Option> entry:suggestion){ // for (Option option : entry) { // System.out.println(option.getText().string()); // } // } TermSuggestionBuilder termSuggestionBuilder = new TermSuggestionBuilder("suggest"); termSuggestionBuilder.text("编程"); termSuggestionBuilder.field("desc"); TermSuggestion termSuggestion = client.prepareSuggest("book") .addSuggestion(termSuggestionBuilder) .execute() .actionGet() .getSuggest() .getSuggestion("suggest"); Suggestion<? extends Entry<? extends Option>> suggestion = termSuggestion; for(Entry<? extends Option> entry:suggestion){ for (Option option : entry) { System.out.println(option.getText().string()); } } }
Example #2
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 #3
Source File: Suggest.java From Elasticsearch with Apache License 2.0 | 5 votes |
public <T extends Suggestion<? extends Entry<? extends Option>>> T getSuggestion(String name) { if (suggestions.isEmpty() || name == null) { return null; } else if (suggestions.size() == 1) { return (T) (name.equals(suggestions.get(0).name) ? suggestions.get(0) : null); } else if (this.suggestMap == null) { suggestMap = new HashMap<>(); for (Suggest.Suggestion<? extends Entry<? extends Option>> item : suggestions) { suggestMap.put(item.getName(), item); } } return (T) suggestMap.get(name); }
Example #4
Source File: Suggest.java From Elasticsearch with Apache License 2.0 | 5 votes |
public static Map<String, List<Suggest.Suggestion>> group(Map<String, List<Suggest.Suggestion>> groupedSuggestions, Suggest suggest) { for (Suggestion<? extends Entry<? extends Option>> suggestion : suggest) { List<Suggestion> list = groupedSuggestions.get(suggestion.getName()); if (list == null) { list = new ArrayList<>(); groupedSuggestions.put(suggestion.getName(), list); } list.add(suggestion); } return groupedSuggestions; }
Example #5
Source File: Suggest.java From Elasticsearch with Apache License 2.0 | 5 votes |
@Override public void writeTo(StreamOutput out) throws IOException { innerWriteTo(out); out.writeVInt(entries.size()); for (Entry<?> entry : entries) { entry.writeTo(out); } }
Example #6
Source File: Suggest.java From Elasticsearch with Apache License 2.0 | 5 votes |
@Override public XContentBuilder toXContent(XContentBuilder builder, Params params) throws IOException { builder.startArray(name); for (Entry<?> entry : entries) { entry.toXContent(builder, params); } builder.endArray(); return builder; }
Example #7
Source File: Suggest.java From Elasticsearch with Apache License 2.0 | 5 votes |
@Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Entry<?> entry = (Entry<?>) o; if (length != entry.length) return false; if (offset != entry.offset) return false; if (!this.text.equals(entry.text)) return false; return true; }
Example #8
Source File: Suggest.java From Elasticsearch with Apache License 2.0 | 5 votes |
protected <T extends Entry<O>> Entry<O> reduce(List<T> toReduce) { if (toReduce.size() == 1) { return toReduce.get(0); } final Map<O, O> entries = new HashMap<>(); Entry<O> leader = toReduce.get(0); for (Entry<O> entry : toReduce) { if (!leader.text.equals(entry.text)) { throw new IllegalStateException("Can't merge suggest entries, this might be caused by suggest calls " + "across multiple indices with different analysis chains. Suggest entries have different text actual [" + entry.text + "] expected [" + leader.text +"]"); } assert leader.offset == entry.offset; assert leader.length == entry.length; leader.merge(entry); for (O option : entry) { O merger = entries.get(option); if (merger == null) { entries.put(option, option); } else { merger.mergeInto(option); } } } leader.options.clear(); for (O option: entries.keySet()) { leader.addOption(option); } return leader; }
Example #9
Source File: Suggest.java From Elasticsearch with Apache License 2.0 | 4 votes |
public Entry(Text text, int offset, int length) { this.text = text; this.offset = offset; this.length = length; this.options = new ArrayList<>(5); }
Example #10
Source File: EsSearch.java From es-service-parent with Apache License 2.0 | 4 votes |
/** * 搜索入口 * * @param request * @param timeout * @param timeUnit * @return */ public static EsResponse search(EsRequest request, int timeout, TimeUnit timeUnit) { // 索引 String indexname = request.getIndexname(); // 结束位置 int size = request.getPs(); // 开始位置 int from = request.getPn() < 0 ? 0 : (request.getPn() - 1) * size; // 主查询体 SearchRequestBuilder srb = ESClient.getClient().prepareSearch(indexname) .setTypes(request.getTypes().toArray(new String[] {})).setFrom(from).setSize(size) .setPreference(Constants.preference).setTimeout(new TimeValue(timeout, timeUnit)); // 构造查询体 EsQueryBuilder esQueryBuilder = new EsQueryBuilder(request); esQueryBuilder.makeFilterBuilder(srb); if (esQueryBuilder.makeQueryBuilder(srb) == null) { return new EsResponse(); } // 处理返回字段 if (!request.getSafeResultFileds().isEmpty()) { srb.addFields(request.getSafeResultFileds().toArray(new String[] {})); } // 高亮 EsHighLight.setHighLight(srb, request.getSafeHighlightFields()); // 排序 EsSort.sortAdapter(srb, request.getSafeSortFileds()); // 调试模式 if (Constants.isDebug) { srb.setExplain(true); logger.info("\r\n" + srb.toString()); } // 返回结果 SearchResponse response = srb.execute().actionGet(); List<Map<String, Object>> result = new ArrayList<Map<String, Object>>(); for (SearchHit hit : response.getHits()) { Map<String, Object> record = hit.getSource(); if (record == null && (record = new HashMap<String, Object>()) != null) { for (Map.Entry<String, SearchHitField> e : hit.fields().entrySet()) { record.put(e.getKey(), e.getValue().getValue()); } } record.put("ESSCORE", hit.getScore()); // 高亮返回 if (request.getSafeHighlightFields() != null) { record.putAll(EsHighLight.getHighlight(hit, request.getSafeHighlightFields() .getFields())); } result.add(record); } // 调试模式 if (Constants.isDebug) { logger.info("search result :{}", JsonUtil.toJson(result)); logger.info("search TotalHits :{}", response.getHits().getTotalHits()); logger.info("search TookInMillis :{}", response.getTookInMillis()); } logger.info("search log for index:{},keys:{}", indexname, request.getAllValue()); return new EsResponse((int) response.getHits().getTotalHits(), JsonUtil.toJson(result), 0); }
Example #11
Source File: PhraseSuggester.java From Elasticsearch with Apache License 2.0 | 4 votes |
private PhraseSuggestion.Entry buildResultEntry(PhraseSuggestionContext suggestion, CharsRefBuilder spare, double cutoffScore) { spare.copyUTF8Bytes(suggestion.getText()); return new PhraseSuggestion.Entry(new Text(spare.toString()), 0, spare.length(), cutoffScore); }
Example #12
Source File: Suggest.java From Elasticsearch with Apache License 2.0 | 4 votes |
public Entry() { }
Example #13
Source File: Suggest.java From Elasticsearch with Apache License 2.0 | 4 votes |
public Suggest(List<Suggestion<? extends Entry<? extends Option>>> suggestions) { this(null, suggestions); }
Example #14
Source File: Suggest.java From Elasticsearch with Apache License 2.0 | 4 votes |
protected T newEntry() { return (T)new Entry(); }
Example #15
Source File: Suggest.java From Elasticsearch with Apache License 2.0 | 4 votes |
/** * Trims the number of options per suggest text term to the requested size. * For internal usage. */ public void trim() { for (Entry<?> entry : entries) { entry.trim(size); } }
Example #16
Source File: Suggest.java From Elasticsearch with Apache License 2.0 | 4 votes |
@Override public Iterator<Suggestion<? extends Entry<? extends Option>>> iterator() { return suggestions.iterator(); }
Example #17
Source File: Suggest.java From Elasticsearch with Apache License 2.0 | 4 votes |
public Suggest(XContentBuilderString name, List<Suggestion<? extends Entry<? extends Option>>> suggestions) { this.name = name; this.suggestions = suggestions; }
Example #18
Source File: Suggest.java From Elasticsearch with Apache License 2.0 | 2 votes |
/** * Merge any extra fields for this subtype. */ protected void merge(Entry<O> other) { }