Elasticsearch 完成建议器

Posted

技术标签:

【中文标题】Elasticsearch 完成建议器【英文标题】:Elasticsearch Completion Suggetser 【发布时间】:2022-01-22 23:20:33 【问题描述】:

我们对 Completion Suggester 的行为有点困惑。 例如,我们向 Suggester 提供 2 个输入: “Hello World”和“再见世界”

还假设我们已经为 Completion 字段指定了标准分析器。

这是否意味着这 2 个输入将创建 3 个术语,即“hello”、“goodbye”和“world”,并且会为任何一个带来成功建议的词输入前缀?

好像没有。如果我们进入“世界”,我们没有得到任何建议?

这是为什么呢?谢谢。

【问题讨论】:

【参考方案1】:

默认情况下,要让完成提示器返回任何内容,您搜索的输入必须与从左到右的标记匹配。


  "suggest" : ["Hello World"]

因此,如果您输入helhellhello,那么您将获得Hello World 建议。

您可以通过在完成字段中添加一些 more possible inputs 来更改此行为:


  "suggest" : [ "Hello World", "World" ]

在这种情况下,如果您仅输入 WorldHello World 也会匹配。由您来决定对您的文档应该提供哪些有效建议。

【讨论】:

感谢您的回复。那么指定分析器的意义何在。例如,如果您指定具有标准标记器的标准分析器,则应该将输入分解为术语,否则为什么他们可以选择专门为完成字段提供分析器。 完成字段的默认分析器是忽略数字的simple 分析器。因此,如果您要索引的数据包含数字(例如电话号码、车牌等),那么提供不同的分析器是有意义的。但是,根据您的描述判断,您似乎不需要完成字段(即您。不需要位置匹配),一个简单的textstandard 分析器可能会完成这项工作。 嗨。为什么当我们将标准分析器分配给完成字段时,它不会对其进行标记,并且只接受每个输入开头的前缀?代币化在哪里?这就是我们的困惑。谢谢 对标准分析器的作用存在误解,它不提供前缀类型支持。完成建议的目的是提供快速的前缀建议......也许你应该更好地解释你所追求的以及你的用例是什么,我们会找到一个合适的解决方案

以上是关于Elasticsearch 完成建议器的主要内容,如果未能解决你的问题,请参考以下文章

ElasticSearch速学 - IK中文分词器远程字典设置

第129天学习打卡(Elasticsearch kibana安装 ES核心概念 IK分词器插件)

Elasticsearch学习4-数据修改

Centos7 安装 elasticsearch-head插件

ELasticsearch安装拼音插件结合IK中文分词+拼音(在线+离线)

ElasticSearch 5.x 上下文建议器 NEST .Net