大型数据集上的MongoDB文本搜索
我有一本藏书,目前有770万条记录,我建立了一个文本索引,如下所示,允许我按大型数据集上的MongoDB文本搜索,mongodb,search,optimization,database,Mongodb,Search,Optimization,Database,我有一本藏书,目前有770万条记录,我建立了一个文本索引,如下所示,允许我按标题和作者搜索藏书,如下所示: db.book.createIndex( { title: "text", author: "text" }, {sparse: true, background: true, weights: {title: 15, author: 5}, name: "text_index"} ) 问题是,当我使用一个搜索查询,它将返回大量结果,例如John,然后按textScore排序时,执行查询
标题
和作者
搜索藏书,如下所示:
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
}
)
有人能提出一个解决方案,将搜索时间减少到合理的水平吗
非常感谢。我觉得在这里使用a会更好。你能测试一下吗?类似于:
db.book.find({$text:{$search:{$John},{score:{$meta:{$textScore}})、sort({score:{$meta:{$textScore})、limit(6)
我已经按照建议使用了.find
语法对其进行了更改,但查询仍在50秒左右运行,还有其他想法吗?@BillMorrison你有什么解决办法吗?就连我也遇到了类似的问题。我们有一个大数据集,mongo文本搜索查询返回结果的速度非常慢。