我在处理元素相似性方面的多值查询项和字段时遇到了麻烦。例如,如果我们有一个像这样的字符串数组:
field colors type array<string>
# That might have several items like: "blue", "black and purple", "green", "yellow", etc
Run Code Online (Sandbox Code Playgroud)
我希望使用项目列表进行查询:
"blue" (weight 0.5), "black" (weight 1.0)
Run Code Online (Sandbox Code Playgroud)
有没有办法执行加权列表相似性,可能看起来像:weight * elementSimilarity(颜色为蓝色)+ weight * elementSimilarity(颜色为黑色)?
我尝试了多种功能,包括 nativeRank,但根据查询数组的长度以及字段数组,我得到了不一致的结果。由于我也希望能够处理拼写错误,“blu”应该与“blue”有很高的匹配度——因此我更喜欢 elementSimilarity。我想我已经尝试了 vespa 中的大部分排名功能,但我还没有找到更好的方法来处理这个用例。
任何指导将不胜感激!谢谢!
编辑:只是详细说明,也许 Vespa 中对我最大的限制是如何在查询中处理数组。我非常想做类似的事情:
expression {
foreach(terms,N,query(colors,N).weight*elementSimilarity(query(colors,N)),true,sum)
}
Run Code Online (Sandbox Code Playgroud) vespa ×1