为自管理部署的文本搜索结果分配权重
文本Atlas Search为索引字段中包含Atlas Search术语的每个文档分配一个分数。 该分数确定文档与给定Atlas Search查询的相关性。
对于 text
索引,索引字段的权重表示该字段在文本Atlas Search分数方面相对于其他索引字段的重要性。
对于文档中的每个索引字段, MongoDB匹配项数乘以权重,并对结果求和。 然后, MongoDB使用该总和计算文档的分数。 有关返回文本分数和按文本分数排序的详细信息,请参阅 $meta
操作符。
索引字段的默认权重为 1。要调整索引字段的权重,请在db.collection.createIndex()
方法中包含weights
选项。
警告
仔细选择权重,以免需要重新索引。
集合 blog
包含以下文档:
{ _id: 1, content: "This morning I had a cup of coffee.", about: "beverage", keywords: [ "coffee" ] } { _id: 2, content: "Who doesn't like cake?", about: "food", keywords: [ "cake", "food", "dessert" ] }
要为content
字段和keywords
字段创建具有不同字段权重的text
索引,请在createIndex()
方法中包含weights
选项。 示例,以下命令在三个字段上创建索引,并为其中两个字段分配权重:
db.blog.createIndex( { content: "text", keywords: "text", about: "text" }, { weights: { content: 10, keywords: 5 }, name: "TextIndex" } )
text
索引有以下字段和权重:
content
权重为10 ,keywords
权重为5 ,并且about
默认权重为 1。
这些权重表示索引字段之间的相对重要性。 实例, content
字段中的术语匹配项具有:
2
次(即10:5
)作为keywords
字段中的术语匹配项的影响,以及10
次(即10:1
)作为about
字段中术语匹配的影响。
注意
对于MongoDB Atlas上托管的数据, Atlas Search提供比text
索引更强大的自定义评分。 要学习;了解更多信息,请参阅Atlas Search评分文档。