ElasticSearch 建议当前或下一个单词

问题描述 投票:0回答:1

我有很多疑问,例如:

"iphone 10"
"iphone 10 case"
"iphone 11"
"iphqqq"

我想自动建议当前或下一个单词(类似前缀的方式就可以)。
例如(输入 -> [输出]):

"iph" -> ["iphone", "iphqqq"] ("iphone" is present only once in suggests)
"iphone” -> ["10", "11"]
"iphone 1” -> ["10", "11"]
"iphone 10" -> ["case"]
"10" -> [] (since there are no queries that start with "10")
"case" -> []

我查看了完成建议器,但我不明白是否可以实现建议中删除重复项以及如何准确地实现仅当前或下一个单词的输出。

如果单独使用elasticsearch无法完全解决问题,那么对查询进行预处理或对输出进行后处理对我来说不会有问题。

elasticsearch 版本:8.10.2

elasticsearch autosuggest elasticsearch-8
1个回答
0
投票

ElasticSearch 不适合此类应用。 ElasticSearch 使用向量搜索根据相似性度量输出相似的查询。它将查询转换为嵌入(这是数值列表形式的向量),然后将其与其他现有查询进行比较。

如果有像

S(q1, q2)
这样的相似性度量,就可以使用 ElasticSearch 来实现它:如果
q1
q2
的子字符串,那么
q1
类似于
q2
。但这种相似性度量没有意义,它是二进制的而不是数字的。 ElasticSearch 中使用的相似性度量包括欧几里德(L2 范数)和余弦。

为了有效解决您的问题,您可以使用tree trie

© www.soinside.com 2019 - 2024. All rights reserved.