我有一个目前拥有770万条记录的图书集,我设置了如下文字索引,这样我就可以按title
和author
搜索集合,如下所示:
db.book.createIndex( { title: "text", author: "text" }, {sparse: true, background: true, weights: {title: 15, author: 5}, name: "text_index"} )
问题是,当我使用搜索查询返回大量结果时,例如John
,然后按textScore
排序,执行查询的时间超过60秒。
请参阅下面的示例查询:
db.runCommand(
{
aggregate: "book",
pipeline : [
{ $match: { $text: { $search: "John" } } },
{ $sort: { score: { $meta: "textScore" } } },
{ $limit: 6 }
],
allowDiskUse : true
}
)
有人可以建议一个解决方案,将搜索时间缩短到合理的水平吗?
非常感谢。