为什么 Mongodb Atlas Search $search 运算符在精确查询匹配时不 return score=1?

Why does the Mongodb Atlas Search $search operator not return score=1 on exact query match?

我的objective是用Mongodb图集全文搜索实现一个效果用户名搜索聚合。它不是很顺利。目前我很难理解,为什么以下不会导致得分为 1?

数据

[{name:  "John Doe"}, {"John Eriksen", {"Lara Croft"} ]

搜索索引

{ "mappings": { "dynamic": true } }

管道

[
  {
    '$search': {
      'text': {
        'query': 'John Doe', 
        'path': 'name'
      }
    }
  }, {
    '$addFields': {
      'score': {
        '$meta': 'searchScore'
      }
    }
  }
]

结果

John Doe → 0.66
John Eriksen" → 0.21

为什么“John Doe”不是 return 1 分,毕竟它是一个准确的分数?

Atlas Search 是一个基于 Lucene 的系统,它使用复杂的评分模型 (BM25 by default),考虑了文档中的术语频率、整个数据集中的倒数频率和文档长度等因素。在此特定示例中,text 查询还包含 2 个由 space 分隔的术语,因此 Lucene 会将整个查询分解为 2 个子查询,并在求和为总分之前分别对它们进行评分。另请注意,Lucene 分数在特定查询的上下文中是相对的且有效的,因此他们的唯一目标是对命中进行排序 - 没有任何正确性保证作为绝对数字