ElasticSearch Nest AutoComplete基于按空格分隔的单词

时间:2015-06-14 10:10:41

标签: elasticsearch nest

我有自动完成功能与ElasticSearch(Nest)一起使用,当用户输入短语开头的字母时它很好但我希望能够使用特殊类型的自动完成,如果它&# 39;这可能是为了满足句子中的单词。

为了进一步澄清,我的要求是能够自动完成"像这样:

  

想象一下,完整的索引字符串是"这是一些标题" 。当用户输入" th" 时,会以当前代码作为建议返回。

     

如果用户输入" som" " title" ,我也希望返回相同的内容任何形成单词的字母(单词被分类为两个空格之间的字符串或字符串的开头/结尾)。

我的代码是:

var result = _client.Search<ContentIndexable>(
            body => body
                        .Index(indexName)
                        .SuggestCompletion("content-suggest" + Guid.NewGuid(),
                                           descriptor =>
                                           descriptor
                                               .OnField(t => t.Title.Suffix("completion"))
                                               .Text(searchTerm)
                                               .Size(size)));

我想看看是否可以使用SuggestCompletion编写符合我要求的内容(而不是通过匹配查询)。

非常感谢,

更新 这个问题在这里已经有了答案,但我把它留在这里,因为标题/描述可能更容易被搜索引擎搜索。

可以在此处找到此问题的正确解决方案: Elasticsearch NEST client creating multi-field fields with completion

1 个答案:

答案 0 :(得分:0)

@Kha我认为最好使用NGram Tokenizer

因此,在创建映射时应使用此标记生成器。 如果您想了解更多信息,可能还有一个示例回写。