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

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

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

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

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

这是为什么呢?谢谢。

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

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

    {
      "suggest" : ["Hello World"]
    }
    

    因此,如果您输入hel 或hell 或hello,那么您将获得Hello World 建议。

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

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

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

    【讨论】:

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