【发布时间】:2015-11-26 06:35:10
【问题描述】:
有没有办法在 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 个出现在搜索中
所以基本上查询将返回按匹配排序的文档列表,其中匹配 = 文档中的标签与查询中的标签相比有多相似。不需要模糊。以 % 为单位的回报只是一个示例,以点或其他单位为单位的回报就可以了。标签的数量可以不同。
我正在设计系统,因此可以以任何格式存储数据,无论适用于 ElasticSearch。我查看了他们的文档,但可能错过了这种类型的搜索。
非常感谢您的帮助。
改进
是否可以为每个标签指定自定义匹配权重?
IE。 tag1 - 100 分(或 20%),tag2 - 200 分(或 40%)。
【问题讨论】:
标签: elasticsearch