我正在创建一个自动完成服务,针对我的mongo db文章集合,其中用户可以开始输入文章的标题。它应该在标题中返回所有包含该关键字的帖子,并按“总计”字段进行排序。有没有办法优化mongo中的自动完成关键字查询
我有一个名为“lower”的字段,它是我们想要搜索的标题字段的小写版本,并且它有一个索引集。由于我正在寻找任何关键字匹配,我正在对lowerCaseTitle进行正则表达式搜索,以查找出现在标题中任何位置的单词,而不仅仅是在开头。
我看着执行计划,它看起来像扫描每个项目(完整的文章集合有10061项)。我试图暗示“lower_1”索引和“total_-1”索引,它们看起来很相似,但如果我为查询设置了50个限制数,那么总体索引似乎更好,而且带有较低的已扫描数字。有什么我可以做的优化?对于这种全文搜索,我无法想到任何简单的事情。
"cursor" : "BtreeCursor lower_1",
"nscanned" : 10061,
"nscannedObjects" : 2,
"n" : 2,
"scanAndOrder" : true,
"millis" : 154,
"nYields" : 0,
"nChunkSkips" : 0,
"isMultiKey" : false,
"indexOnly" : false,
"indexBounds" : {
"lower" : [
[
"",
{
}
]
]
}
我想我会做一个&&匹配匹配多个单词搜索...有没有建议如何使精确匹配首先显示?因此,“这是疯狂的”在先说“这是疯狂的”和“这是疯狂的”之前会首先展示上面的例子吗? – MonkeyBonkey 2012-03-29 23:16:27
我不这么认为。如果您需要更高的保真度,我认为最好使用搜索专用解决方案,例如SolR,该解决方案还支持词干,分面搜索,结果排名以及更多与搜索相关的功能。 – mnemosyn 2012-03-30 07:11:31