大型数据集上的MongoDB文本搜索

大型数据集上的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排序时,执行查询

我有一本藏书,目前有770万条记录,我建立了一个文本索引,如下所示,允许我按
标题
作者
搜索藏书,如下所示:

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文本搜索查询返回结果的速度非常慢。