如何在 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
我正在构建我的 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