当前位置: 首页 > 知识库问答 >
问题:

词集的弹性搜索相似度匹配得分

董嘉祯
2023-03-14

有没有办法在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个

所以基本上查询将返回按匹配排序的文档列表,其中匹配=文档中的标签与查询中的标签有多相似。不需要模糊性。返回%只是一个例子,返回点或其他单位就可以了。标签的数量可以不同。
我正在html" target="_blank">设计系统,因此可以以任何格式存储数据,无论哪种格式适用于ElasticSearch。我看了他们的文档,但可能错过了这种类型的搜索。

非常感谢您的帮助。

改进可以为每个标签指定自定义匹配权重吗?一、 e.tag1-100分(或20%),tag2-200分(或40%)。

共有1个答案

梁楷
2023-03-14

是的你需要相似度模块

不确定加权匹配,可能是boost属性?

 类似资料:
  • 问题内容: 我在Firestore数据库中有一个用户列表及其名称。我要实现的目标是使用户能够搜索并找到其他用户。我的问题是: 在上面的代码中,仅当我输入的名字和姓氏完全正确时,我才能找到用户。但是我想要获得的用户确实具有相似的名字或姓氏。而且,用户的姓氏和名字存储在一个字符串变量中。就像在Facebook中一样,如果您搜索一些名称,它也会显示相似的名称。有没有一个好的方法可以通过Firestore

  • 我需要实现的是基于单个字段(产品名称,基本上由所有可能的筛选器值组成)来匹配文档。我知道这不是最可靠的解决方案,但我只有这一个领域可以使用。 我需要能够发送搜索查询,并将该查询中的单词以任何顺序匹配到name字段(名称应包含搜索查询中的所有单词)。实际上,在这一点上,简单的效果很好,但是那里缺少的是模糊。因为我们需要的另一件事是允许用户做一些拼写错误,并且仍然获得相关的结果。 我的问题是,有没有什

  • 匹配查询用于实现以下情况的映射是什么 不区分大小写的搜索 数字搜索 特殊字符搜索 单字符搜索 > 我尝试使用通配符,但id不支持区分大小写 尝试使用小写规范化器匹配查询,它不支持特殊字符和单字符搜索 已尝试使用 ngram 匹配查询,但它不支持特殊字符和数字搜索。 任何人都可以帮助我的映射来支持上面提到的所有情况,无论是类型还是类型都很好

  • 作为参考,我使用的是Elasticsearch 6.4.0 我有一个Elasticsearch查询,它返回一定的命中视频数,我正在尝试删除文本字段值过于相似的命中。我的查询是: 此查询使用自定义函数分数和筛选器来返回用户可能喜欢的书籍(他们尚未创作的书籍)。对于某些人来说,它返回的名字非常相似的书(即乔治·华盛顿的一生,乔治·华盛顿的美好时光,谁是乔治·华盛顿),我希望热门歌曲有一套更多样化的名字

  • 我不知道如何通过MatchPhrasePrefix搜索索引中的文档。我想匹配整个搜索词短语,但允许在最后一个词上加前缀。 这个LINQ建筑给了我1.0分的一切。我将如何构建这个?另一方面,是否可以查看NEST正在构建的原始查询?那将非常有帮助!