Elasticsearch - 自动完成返回单词/术语/令牌建议,而不是整个文档

时间:2016-02-05 13:56:09

标签: elasticsearch autocomplete lucene

我正在尝试为查询字词实现简单的自动完成功能。 有许多不同的方法,但大多数方法确实返回文档而不是术语 - 或者作者只是停止了解释,我无法适应。

用户正在输入查询 - 例如菲尔 我想要的是提供一个完成建议的列表,如 philipp,philius,philadelphia,...

我可以通过(edge)ngrams,phrase_prefix等获取文档匹配,但我仍然无法检索匹配的术语(完成建议)。

有人能给我一个暗示吗?

我有这样的文件{“title”:“...”,“description”:“...”,“content”:“...”} 所有字段都有较大的字符串值,但特别是字段内容包含全文内容。

我不想建议包含例如文件的整个标题。费城。只是“费城”这个词。

2 个答案:

答案 0 :(得分:0)

寻找类似的东西,我自己。

在SOLR中,使用solr.SpellCheckComponent进行配置相对简单(尽管构建和保持最新的痛苦)。不知何故,相同的底层Lucene功能在SOLR和ElasticSearch之间使用的方式不同,而在ElasticSearch中,它主要用于查找整个文档(或整个字段值,如果你愿意的话),或者看起来似乎......

尽管有很多" elasticsearch autocomplete"文章,没有似乎处理这个特定的问题。就像它不存在一样。也许他们的用例是不同的,ElasticSearch适合他们就好了,谁知道呢?

此时我认为准备用于ElasticSearch自动完成的确切字段值(是的,输入字段值,而不是分析器标记)也许是解决问题的唯一方法。这很可怕,因为性能会非常低。

答案 1 :(得分:0)

尝试term suggester

  

术语建议者根据编辑距离建议术语。提供的   建议文本在提出术语之前先进行分析。建议   每个分析的建议文本标记均提供术语。术语建议者   不会将查询作为请求的一部分考虑在内。