【发布时间】:2016-02-22 03:03:12
【问题描述】:
我目前让用户输入一个可以包含多个单词的搜索字符串。然后我将每个单词分开,然后根据每个单词构建正则表达式。然后,我通过 MongoDB 使用正则表达式搜索来搜索 200,000 多个条目的列表。它工作得很好,但性能很差。对可能提高性能的正则表达式的任何建议表示赞赏!
//this is an example search
var search = "angel alter";
var searchSplitted = search.split(" ");
var expression = '';
//This is how I build my regex
for(i=0; i<searchSplitted.length; i++){
expression += '(?=.*' + searchSplitted[i] + ')';
}
expression += '.*';
【问题讨论】:
-
如果您的 mongo 版本是
v3.2,那么$text可能是一种选择。 -
var regex = new RegExp(search.split(/\s+/).join('|'));
标签: javascript regex mongodb