【问题标题】:Elasticsearch similarity match score for set of terms一组术语的 Elasticsearch 相似性匹配分数
【发布时间】: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


    【解决方案1】:

    是的,您需要similarity module

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

    【讨论】:

    • 这是一个有用的功能,但它将如何帮助我找到标签分数?我猜这是每个字段。我的领域基本上是元素数组。
    猜你喜欢
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    • 2019-09-26
    • 2018-04-21
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    相关资源
    最近更新 更多