【发布时间】:2012-03-29 22:30:22
【问题描述】:
我正在针对我的 mongo db 帖子集合创建一个自动完成服务,用户可以在其中开始键入帖子的标题。它应该返回标题中包含该关键字的所有帖子,并按名为“total”的字段排序。
我有一个名为“lower”的字段,它是我们要搜索的标题字段的小写版本,并且上面设置了索引。因为我正在寻找任何关键字匹配,所以我正在对 lowerCaseTitle 进行正则表达式搜索,以查找出现在标题中任何位置的单词,而不仅仅是在开头。
我查看了执行计划,它看起来像是对每个项目进行了扫描(完整的帖子集合有 10061 个项目)。我尝试提示“lower_1”索引和“total_-1”索引,它们看起来很相似,但是如果我将查询的限制数设置为 50,则总索引看起来更好,并且 nscanned 数较低。有什么我可以做的优化吗?对于这种全文搜索,我想不出任何简单的东西。
"cursor" : "BtreeCursor lower_1",
"nscanned" : 10061,
"nscannedObjects" : 2,
"n" : 2,
"scanAndOrder" : true,
"millis" : 154,
"nYields" : 0,
"nChunkSkips" : 0,
"isMultiKey" : false,
"indexOnly" : false,
"indexBounds" : {
"lower" : [
[
"",
{
}
]
]
}
【问题讨论】:
标签: mongodb