0

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

艺术家收藏模式是这样的:

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

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

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

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

  • 为什么 .find() 与 mongoose 一起使用这么慢?
  • 是否有为此目的设计的其他数据库?
  • 你将如何更有效地解决这个问题?
  • map reduce 可以在这里使用吗?
4

1 回答 1

1

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

  • 使用 MongoDBtext索引。(2.4 中的新功能)
  • 使用附加全文索引。在我看来, elasticsearch对于初学者来说非常高效且易于理解。
于 2013-05-03T14:56:58.963 回答