一组术语的{Elasticsearch相似性匹配分数

时间:2015-11-25 21:56:55

标签: elasticsearch

有没有办法在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%)。

1 个答案:

答案 0 :(得分:0)

是的,您需要similarity module

不确定加权匹配,也许是boost属性?