use*_*782 1 java elasticsearch search-suggestion
我正在通过Java开发ES5,并尝试将上下文添加到CompletionSuggestionBuilder。我有一个需要添加的String对象的映射。到目前为止,我的代码是-
Map<String, String> context = ...
CompletionSuggestionBuilder csb = SuggestBuilders.completionSuggestion(field).text(value).size(count);
Run Code Online (Sandbox Code Playgroud)
如何将上下文对象添加到csb?我认为使用的方法是-
csb.contexts(Map<String, List<? extends ToXContent>> queryContexts)
Run Code Online (Sandbox Code Playgroud)
但是我不知道如何从我的地图到地图,以作为参数传递给contexts方法。
您可以这样创建Map<String, List<? extends ToXContent>>;
Collections.singletonMap("cat", Arrays.asList(CategoryQueryContext.builder().setCategory("cat0").setBoost(3).build(), CategoryQueryContext.builder().setCategory("cat1").build()))
Run Code Online (Sandbox Code Playgroud)
我认为当前支持的扩展类型ToXContext是CategoryQueryContext和GeoQueryContext
奇怪的是,如果我创建一个局部变量并将其传递给,contexts它将无法正常工作。因此,我只是将其直接传递给它确实起作用的上下文。
完整的示例如下所示:
CompletionSuggestionBuilder prefix = SuggestBuilders.completionSuggestion(FIELD).prefix("sugg").contexts(Collections.singletonMap("cat", Arrays.asList(CategoryQueryContext.builder().setCategory("cat0").setBoost(3).build(), CategoryQueryContext.builder().setCategory("cat1").build())));
Run Code Online (Sandbox Code Playgroud)
它全部写在他们的测试用例中。您可以看一下:https : //github.com/elastic/elasticsearch/blob/master/core/src/test/java/org/elasticsearch/search/suggest/ContextCompletionSuggestSearchIT.java#L290
希望能帮助到你。
| 归档时间: |
|
| 查看次数: |
849 次 |
| 最近记录: |