当前位置: 首页>>代码示例>>Java>>正文


Java CompletionSuggestionBuilder.contexts方法代码示例

本文整理汇总了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");
}
 
开发者ID:justor,项目名称:elasticsearch_my,代码行数:43,代码来源:ContextCompletionSuggestSearchIT.java

示例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");
}
 
开发者ID:justor,项目名称:elasticsearch_my,代码行数:56,代码来源:ContextCompletionSuggestSearchIT.java

示例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;
   }
 
开发者ID:dlcs,项目名称:the-mathmos-server,代码行数:63,代码来源:AnnotationAutocompleteServiceImpl.java


注:本文中的org.elasticsearch.search.suggest.completion.CompletionSuggestionBuilder.contexts方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。