加快搜索速度

时间:2013-05-03 14:40:07

标签: performance node.js search mongoose

我收集了大约250万条记录。目前我正在使用带有mongoose的nodejs。我愿意接受任何可以提高当前搜索效率的建议。

艺术家集合架构是这样的:

var Artist = new mongoose.Schema({
    realname: String,
    names: Array
});

用户传递字符串例如:迈克尔杰克逊被警方 Michael Jackson-Jillie bean 联系。现在我必须找到艺术家/歌手/人,所以我能找到的唯一合乎逻辑的事情是:遍历集合中的所有文档,检查是否有任何名称在给定字符串中,如果是,我们匹配 - >停止循环。

但这非常低效,因为它必须将整个集合加载到内存中,因此nodejs可以迭代并检查所有记录。

检索整个集合似乎占用了大部分时间。有什么方法可以加快速度吗?在mongoshell中,db.collection.find()非常快。但是在nodejs中使用mongoose需要太长时间。

  • 为什么.find()和mongoose这么慢用?
  • 是否有为此目的而设计的其他数据库?
  • 您如何更有效地解决这个问题?
  • 可以将地图缩减用于此处吗?

1 个答案:

答案 0 :(得分:1)

您需要的是全文搜索。可能的选择:

  • 使用MongoDB text index。 (2.4中的新内容)
  • 使用附加全文索引。在我看来,elasticsearch对于初学者来说非常高效且容易理解。