如何在 ElasticSearch 中建议关键短语的下一个单词?

How to suggest the next word of a key-phrase in ElasticSearch?

提问人:Mohammad Erami 提问时间:10/31/2023 更新时间:11/1/2023 访问量:16

问:

我是 ElasticSearch 的新手,想知道是否有办法为文档中的关键短语实现自动完成功能。

假设我有如下文件: 文件1:“......神经网络项目...” 文件2:“......化学反应的中性反应......”

如果查询是“neu”,那么我希望它返回: “神经” “中立” “神经网络” “中性反应”

我尝试过 Phrase Suggester,它只对输入短语进行拼写检查。 我还尝试过 Completion Suggester,它对提到的 senario 有 2 个主要缺点: 1- Completion Suggeter 基于查询和文档的前缀,这意味着如果目标词组位于句子中间,则不会返回文档。 2- 它返回受“Max_input_length”参数限制的字符作为结果,这意味着结果不会采用“短语建议器”等词短语形式。 P.S. 我知道我可以向 Completion Suggester 添加输入/输出参数来解决这些问题,但我的索引中的文档数量很大,而且可能会增加,这使得这项任务非常耗时且不准确。

现在我想知道,有没有解决方法?我应该寻找不同的 ES 功能,还是无法通过内置的 ES 函数来完成?

Elasticsearch 自动完成 elastic-stack

评论


答:

0赞 Steffanie Nestor 11/1/2023 #1

我认为您符合 Elastic 的建议。他们的官方示例设置使用 Term Suggester 而不是 Phrase Suggester,以防您更接近您的用例。(他们的文档有各种产品作为后端(例如 AppSearch、Workplace Search、Elasticsearch),因此链接了 Elasticsearch 教程

Elasticsearch 实现相同最终目标的替代方案:Completion Suggester(您正在谈论的文档大致),自动完成分析器更多信息)

来自社区的替代 Elasticsearch 示例:手动字符串检查(与前缀相同,但仅检查,模糊不清)