Regex lookahead性能问题nestjs,mongodb

rseugnpd  于 2023-11-17  发布在  Go
关注(0)|答案(1)|浏览(105)

使用Nestjs和Mongodb,尝试在数据库中搜索所有包含所有关键字的“摘要”(这是一个字符串数组)。
它的工作,但性能真的很差,有没有人知道任何其他的替代品或更好的做法?
filters.keywords = array of strings / string[]
mongodb中的summary字段只是一个字符串。

const regex = new RegExp(
       '(?=.*?\\b' + filters.keywords.join(')(?=.*?\\b') + ').*',
        'i',
      );
      return this.articleModel
        .find({
          summary: { $regex: regex },
        })
        .exec();

字符串

iqxoj9l9

iqxoj9l91#

将BOS和EOS添加到正则表达式中。
去掉点.,替换为[\S\s],它也匹配换行符。

var filters = ['howdy','dooty','tooty'];

    const regex = new RegExp(
           "^(?=[\\S\\s]*\\b" + filters.join(")(?=[\\S\\s]*\\b") + ")[\\S\\s]*$", "i"
          );

    console.log(regex);

字符串
输出/^(?=[\S\s]*\bhowdy)(?=[\S\s]*\bdooty)(?=[\S\s]*\btooty)[\S\s]*$/i

相关问题