我收集了大约250万条记录。目前我正在使用带有mongoose的nodejs。我愿意接受任何可以提高当前搜索效率的建议。
艺术家集合架构是这样的:
var Artist = new mongoose.Schema({
realname: String,
names: Array
});
用户传递字符串例如:迈克尔杰克逊被警方或 Michael Jackson-Jillie bean 联系。现在我必须找到艺术家/歌手/人,所以我能找到的唯一合乎逻辑的事情是:遍历集合中的所有文档,检查是否有任何名称在给定字符串中,如果是,我们匹配 - >停止循环。
但这非常低效,因为它必须将整个集合加载到内存中,因此nodejs可以迭代并检查所有记录。
检索整个集合似乎占用了大部分时间。有什么方法可以加快速度吗?在mongoshell中,db.collection.find()非常快。但是在nodejs中使用mongoose需要太长时间。
答案 0 :(得分:1)
您需要的是全文搜索。可能的选择:
text
index。 (2.4中的新内容)