使用权重控制搜索结果

文本搜索为包含索引字段中的搜索词的每个文档分配分数。分数确定文档与给定搜索查询的相关性。

对于text索引,索引字段的权重表示字段相对于其他索引字段在文本搜索分数方面的重要性。

对于文档中的每个索引字段,MongoDB 将匹配数乘以权重并将结果相加。使用此总和,MongoDB 然后计算文档的分数。有关按文本分数返回和排序的详细信息,请参阅$meta operator。

索引字段的默认权重为 1。要调整索引字段的权重,请在db.collection.createIndex()方法中包含weights选项。

警告
在 order 中仔细选择重量以防止需要重新索引。

集合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选项。对于 example,以下命令在三个字段上创建索引,并为两个字段分配权重:

db.blog.createIndex(
   {
     content: "text",
     keywords: "text",
     about: "text"
   },
   {
     weights: {
       content: 10,
       keywords: 5
     },
     name: "TextIndex"
   }
 )

text索引具有以下字段和权重:

  • content的重量为 10,

  • keywords的重量为 5,和

  • about的默认权重为 1。

这些权重表示索引字段相对于彼此的相对重要性。例如,content字段中的术语 match 具有:

  • 2次(i.e.10:5)在keywords字段中作为术语 match 的影响

  • 10次(i.e.10:1)在about字段中作为术语 match 的影响。

Updated at: 7 months ago
为文本索引指定 NameTable of content限制扫描的条目数