MongoDB:具有可变权重的文本索引

时间:2014-02-21 09:44:37

标签: mongodb indexing full-text-indexing

MongoDB文档将此列为使用权重在字段上添加文本索引的示例命令:

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

如果我有另一个字段,比如'weight_value',在每个文档中有不同的编号,我可以使用此字段值而不是离散数字吗?

谢谢,

1 个答案:

答案 0 :(得分:1)

由于您引用了manual page对其他内容的一般细读,因此应该确认MongoDB中的文本搜索不能以这种方式工作。因此,除了您引用的部分之外,请考虑以下文档:

{ _id: 2,
  content: "Who doesn't like cake?",
  about: "food",
  keywords: [ "cake", "food", "dessert" ]
}

根据上面显示的信息,在本文档的上下文中,任何搜索字词的加权将按

排序
  • content 10
  • 中匹配的最高权重
  • 下一个keywords 5
  • 中匹配的最高权重
  • 默认加权到索引字段about 1

因此,在文档中放置您自己的“加权因子”将不会像在其他搜索解决方案中那样起作用。例如,无论相关性匹配如何,都会对某些文档进行“提升”。

您可以在提供的机制的约束下工作,或者如果这不适合您,那么可能会考虑将应用程序的文本搜索功能卸载到一个更专业的服务上。