本文整理汇总了Java中org.elasticsearch.search.suggest.completion.CompletionSuggestionBuilder.contexts方法的典型用法代码示例。如果您正苦于以下问题:Java CompletionSuggestionBuilder.contexts方法的具体用法?Java CompletionSuggestionBuilder.contexts怎么用?Java CompletionSuggestionBuilder.contexts使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.elasticsearch.search.suggest.completion.CompletionSuggestionBuilder
的用法示例。
在下文中一共展示了CompletionSuggestionBuilder.contexts方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: testMultiContextFiltering
import org.elasticsearch.search.suggest.completion.CompletionSuggestionBuilder; //导入方法依赖的package包/类
public void testMultiContextFiltering() throws Exception {
LinkedHashMap<String, ContextMapping> map = new LinkedHashMap<>();
map.put("cat", ContextBuilder.category("cat").field("cat").build());
map.put("type", ContextBuilder.category("type").field("type").build());
final CompletionMappingBuilder mapping = new CompletionMappingBuilder().context(map);
createIndexAndMapping(mapping);
int numDocs = 10;
List<IndexRequestBuilder> indexRequestBuilders = new ArrayList<>();
for (int i = 0; i < numDocs; i++) {
XContentBuilder source = jsonBuilder()
.startObject()
.startObject(FIELD)
.field("input", "suggestion" + i)
.field("weight", i + 1)
.endObject()
.field("cat", "cat" + i % 2)
.field("type", "type" + i % 4)
.endObject();
indexRequestBuilders.add(client().prepareIndex(INDEX, TYPE, "" + i)
.setSource(source));
}
indexRandom(true, indexRequestBuilders);
// filter only on context cat
CompletionSuggestionBuilder catFilterSuggest = SuggestBuilders.completionSuggestion(FIELD).prefix("sugg");
catFilterSuggest.contexts(Collections.singletonMap("cat", Collections.singletonList(CategoryQueryContext.builder().setCategory("cat0").build())));
assertSuggestions("foo", catFilterSuggest, "suggestion8", "suggestion6", "suggestion4", "suggestion2", "suggestion0");
// filter only on context type
CompletionSuggestionBuilder typeFilterSuggest = SuggestBuilders.completionSuggestion(FIELD).prefix("sugg");
typeFilterSuggest.contexts(Collections.singletonMap("type", Arrays.asList(CategoryQueryContext.builder().setCategory("type2").build(),
CategoryQueryContext.builder().setCategory("type1").build())));
assertSuggestions("foo", typeFilterSuggest, "suggestion9", "suggestion6", "suggestion5", "suggestion2", "suggestion1");
CompletionSuggestionBuilder multiContextFilterSuggest = SuggestBuilders.completionSuggestion(FIELD).prefix("sugg");
// query context order should never matter
Map<String, List<? extends ToXContent>> contextMap = new HashMap<>();
contextMap.put("type", Collections.singletonList(CategoryQueryContext.builder().setCategory("type2").build()));
contextMap.put("cat", Collections.singletonList(CategoryQueryContext.builder().setCategory("cat2").build()));
multiContextFilterSuggest.contexts(contextMap);
assertSuggestions("foo", multiContextFilterSuggest, "suggestion6", "suggestion2");
}
示例2: as
import org.elasticsearch.search.suggest.completion.CompletionSuggestionBuilder; //导入方法依赖的package包/类
@AwaitsFix(bugUrl = "multiple context boosting is broken, as a suggestion, contexts pair is treated as (num(context) entries)")
public void testMultiContextBoosting() throws Exception {
LinkedHashMap<String, ContextMapping> map = new LinkedHashMap<>();
map.put("cat", ContextBuilder.category("cat").field("cat").build());
map.put("type", ContextBuilder.category("type").field("type").build());
final CompletionMappingBuilder mapping = new CompletionMappingBuilder().context(map);
createIndexAndMapping(mapping);
int numDocs = 10;
List<IndexRequestBuilder> indexRequestBuilders = new ArrayList<>();
for (int i = 0; i < numDocs; i++) {
XContentBuilder source = jsonBuilder()
.startObject()
.startObject(FIELD)
.field("input", "suggestion" + i)
.field("weight", i + 1)
.endObject()
.field("cat", "cat" + i % 2)
.field("type", "type" + i % 4)
.endObject();
indexRequestBuilders.add(client().prepareIndex(INDEX, TYPE, "" + i)
.setSource(source));
}
indexRandom(true, indexRequestBuilders);
// boost only on context cat
CompletionSuggestionBuilder catBoostSuggest = SuggestBuilders.completionSuggestion(FIELD).prefix("sugg");
catBoostSuggest.contexts(Collections.singletonMap("cat",
Arrays.asList(
CategoryQueryContext.builder().setCategory("cat0").setBoost(3).build(),
CategoryQueryContext.builder().setCategory("cat1").build())));
assertSuggestions("foo", catBoostSuggest, "suggestion8", "suggestion6", "suggestion4", "suggestion9", "suggestion2");
// boost only on context type
CompletionSuggestionBuilder typeBoostSuggest = SuggestBuilders.completionSuggestion(FIELD).prefix("sugg");
typeBoostSuggest.contexts(Collections.singletonMap("type",
Arrays.asList(
CategoryQueryContext.builder().setCategory("type2").setBoost(2).build(),
CategoryQueryContext.builder().setCategory("type1").setBoost(4).build())));
assertSuggestions("foo", typeBoostSuggest, "suggestion9", "suggestion5", "suggestion6", "suggestion1", "suggestion2");
// boost on both contexts
CompletionSuggestionBuilder multiContextBoostSuggest = SuggestBuilders.completionSuggestion(FIELD).prefix("sugg");
// query context order should never matter
Map<String, List<? extends ToXContent>> contextMap = new HashMap<>();
contextMap.put("type", Arrays.asList(
CategoryQueryContext.builder().setCategory("type2").setBoost(2).build(),
CategoryQueryContext.builder().setCategory("type1").setBoost(4).build())
);
contextMap.put("cat", Arrays.asList(
CategoryQueryContext.builder().setCategory("cat0").setBoost(3).build(),
CategoryQueryContext.builder().setCategory("cat1").build())
);
multiContextBoostSuggest.contexts(contextMap);
assertSuggestions("foo", multiContextBoostSuggest, "suggestion9", "suggestion6", "suggestion5", "suggestion2", "suggestion1");
}
示例3: findSuggestionsFor
import org.elasticsearch.search.suggest.completion.CompletionSuggestionBuilder; //导入方法依赖的package包/类
public List<SuggestOption> findSuggestionsFor(String suggestRequest, String index, String within) {
CompletionSuggestionBuilder completionSuggestionBuilder = SuggestBuilders.completionSuggestion("suggest")
.prefix(suggestRequest).size(AnnotationSearchConstants.MAX_NUMBER_OF_HITS_RETURNED);
String decodedWithinUrl = null;
if (null != within) {
decodedWithinUrl = annotationUtils.decodeWithinUrl(within);
if (null != decodedWithinUrl) {
LOG.info("decodedWithinUrl :" + decodedWithinUrl);
Map<String, List<? extends ToXContent>> contextsMap = new HashMap<>();
List<CategoryQueryContext> contexts = new ArrayList<>(1);
contexts.add(CategoryQueryContext.builder().setCategory(decodedWithinUrl).build());
contextsMap.put(AnnotationSearchConstants.CONTEXT_MANIFEST_NAME, contexts);
completionSuggestionBuilder.contexts(contextsMap);
}
}
completionSuggestionBuilder.size(AnnotationSearchConstants.MAX_NUMBER_OF_HITS_RETURNED);
LOG.info(completionSuggestionBuilder.toString());
SearchRequestBuilder searchRequestBuilder = client.prepareSearch(index);
searchRequestBuilder
.suggest(new SuggestBuilder().addSuggestion("annotation_suggest", completionSuggestionBuilder));
searchRequestBuilder.setSize(0);
searchRequestBuilder.setFetchSource(false);
LOG.info("doSearch query " + searchRequestBuilder.toString());
SearchResponse searchResponse = searchRequestBuilder.execute().actionGet();
CompletionSuggestion compSuggestion = searchResponse.getSuggest().getSuggestion("annotation_suggest");
List<SuggestOption> options = new ArrayList<>();
Set<String> suggestOptionSet = new TreeSet<>();
if (null != compSuggestion) {
List<CompletionSuggestion.Entry> entryList = compSuggestion.getEntries();
if (entryList != null) {
CompletionSuggestion.Entry entry = entryList.get(0);
List<CompletionSuggestion.Entry.Option> csEntryOptions = entry.getOptions();
if (null != csEntryOptions && !csEntryOptions.isEmpty()) {
Iterator<? extends CompletionSuggestion.Entry.Option> iter = csEntryOptions.iterator();
while (iter.hasNext()) {
CompletionSuggestion.Entry.Option next = iter.next();
suggestOptionSet.add(next.getText().string());
}
}
}
}
if (null != suggestOptionSet) {
for (String setOption : suggestOptionSet) {
SuggestOption option = new SuggestOption(setOption);
options.add(option);
LOG.info("option " + option.getText());
}
}
return options;
}