我正在尝试构建一个基于内容的过滤系统,该系统通过为产品分配类似
{ salty: 0, sweet: 0.5, bitter: 0.7}
. 这意味着我给每个产品一个 n 维向量,在这种情况下
[0, 0.5, 0.7]
。
对于给定的产品,我现在想通过计算向量之间的距离来找到“相似”的产品。所以对于两个产品[0.2, 0.2, 0.8]
,[0.4, 0.9, 0.9]
欧几里得距离大约是 0.78,这应该是他们的“分数”(越低越好)。
如何使用弹性搜索做到这一点?elasticsearch 是完成此类任务的正确工具吗?
请注意,真正的问题远不止 3 个维度。