有没有办法在elasticsearch中查询一组术语的相似性(匹配分数)?
简单示例:
数据:
doc1:{
"tags":["tag1", "tag2", "tag3", "tag4"]
}
doc2:{
"tags":["tag1", "tag2", "tag4"]
}
查询:
criteria:{
"tags":["tag1","tag2","tag3"]
}
结果
Result:{
doc1 - match 100%
doc2 - match 66.6%
}
说明:
doc1包含搜索中出现的所有标签
doc2有3个标签中的2个出现在搜索
所以基本上查询将返回按匹配排序的文档列表,其中match =文档中的标记与查询中的标记相比有多相似。不需要模糊。以%表示的回报只是一个例子,以点数或其他单位回报是好的。标签数量可以不同 我正在设计系统,因此可以以任何格式存储数据,无论是否适用于ElasticSearch。我查看了他们的文档,但可能错过了这种类型的搜索。
非常感谢您的帮助。
改进
是否可以为每个标签指定匹配的自定重量?
即tag1 - 100 points(或20%),tag2 - 200 points(或40%)。