对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。

为结果中的文档打分

MongoDB Search 或MongoDB Vector Search查询返回的每个文档都会根据相关性分配一个分数,并且结果设立包含的文档会按从最高分到最低分的顺序返回。

要在搜索结果中包含每个文档的得分,请在聚合管道中使用 $project 阶段。

  • 对于 $search 阶段,score 字段采用 $meta 表达式,此表达式需要 searchScore 值。您也可以为 scoreDetails 字段 $meta 表达式指定 searchScoreDetails 值,以了解分数明细。

  • 对于 $vectorSearch 阶段,score 字段采用 $meta 表达式,该表达式需要 vectorSearchScore 值来返回向量搜索结果中每个文档的分数。

注意

您可以使用:

如果您在任何其他查询中使用 searchScore 和 vectorSearchScore,MongoDB 会从 MongoDB v8.2 开始记录警告日志。

例子

下面的查询使用 $project 阶段在返回的文档中添加名为 score 的字段:

db.movies.aggregate([ { "$search": { "text": { <operator-specification> } } }, { "$project": { "<field-to-include>": 1, "<field-to-exclude>": 0, "score": { "$meta": "searchScore" } } }])

分配给返回文档的分数是文档元数据的一部分。您可以在聚合管道中使用 $project 阶段,将每个返回文档的得分与结果集一起包含在内。文档按从最高分到最低分的顺序返回。很多因素都会影响文档的分数,包括以下因素:

要学习;了解有关Lucene评分算法的更多信息,请参阅Lucene文档。

除了默认的评分行为外, MongoDB Search 还支持以下选项:

如果结果中的多个文档具有相同的分数,则结果中文档的顺序是不确定的。如果希望MongoDB Search 结果有确定的顺序,请在 阶段包含 排序 $search选项,以按唯一字段对结果进行排序。您还可以使用排序选项按分数返回对结果进行升序排序。要学习;了解更多信息,请参阅对MongoDB搜索结果进行排序和按分数排序示例。

On separate Search Nodes上,每个节点为文档分配不同的内部 Lucene ID,用于在分数相同时进行排序。When sorting and paginating results,处理查询的节点上的 mongot 进程可能包含来自其他节点的文档,如果其内部 ID 的分页顺序大于标记。To prevent this, use $match after $search to exclude 文档s by their _id.

查询大量值时,如果大量中的更多值与查询匹配, MongoDB Search 会分配更高的分数。

有关如何在MongoDB搜索查询中使用附加 score 选项的示例,请参阅以下页面:

有关如何在一些常见MongoDB搜索查询中使用 score字段的示例,请参阅以下页面: