如何在 mongo 中搜索拼写错误的单词

How to search in mongo with misspelled words

我正在构建我的 VOD 网站,我允许通过视频标题、关键字和标签等进行搜索。
所以我的问题是,如果用户输入例如一个人的名字或关键字写错了,我用于 mongo dB 的搜索命令将找不到它,所以用户会认为它不存在,而只是拼写错误。 我是这个领域的新手,所以我很挣扎 我正在使用 net core 3 和 mongo dB

用正则表达式搜索怎么样? 即:您可以按用户 ID 或名称搜索用户(您也可以按 2 个不同的字段搜索,如 firstName 和 lastName:

  const regexString = `${keyword}`;
  const regex = new RegExp(regexString);
  const matches = ['firstName', other fields here .. ].map(field => ({
    [field]: { $regex: regex, $options: 'i' },
  }));

  const data = await Users.find(
    {
      $and: [
        {
          userId,
        },
        { $or: matches },
      ],
    },
  );

您需要的是 fuzzy search,而 mongodb 不免费提供。他们在付费地图集服务上有它。

但是,您可以自己动手,将数据的 double metaphone 关键代码与原始值一起存储,并使用内置的 mongodb $text 搜索功能来取回拼写错误的匹配项。

例如:如果用户输入 gogle 并且您希望从数据库中匹配 google

如果你想要 .net core 的现成解决方案,请查看 here