相关疑难解决方法(0)

使用JavaScript执行带/不带重音字符的文本匹配

我正在使用基于AJAX的查找来查找用户在文本框中搜索的名称.

我假设数据库中的所有名称都将被音译为欧洲字母表(即没有西里尔语,日语,中文).但是,名称仍将包含重音字符,例如ç,ê甚至č和ć.

像"Micic"这样的简单搜索与"Mičić"不匹配 - 而且用户的期望是它会.

AJAX查找使用正则表达式来确定匹配.我已使用此函数修改了正则表达式比较,以尝试匹配更多重音字符.但是,它有点笨拙,因为它没有考虑到所有角色.

function makeComp (input)
{
    input = input.toLowerCase ();
    var output = '';
    for (var i = 0; i < input.length; i ++)
    {
        if (input.charAt (i) == 'a')
            output = output + '[aàáâãäåæ]'
        else if (input.charAt (i) == 'c')
            output = output + '[cç]';
        else if (input.charAt (i) == 'e')
            output = output + '[eèéêëæ]';
        else if (input.charAt (i) == 'i')
            output = output + '[iìíîï]';
        else if (input.charAt (i) == 'n')
            output = …
Run Code Online (Sandbox Code Playgroud)

javascript string collation non-ascii-characters

23
推荐指数
5
解决办法
3万
查看次数

Mongodb将重音字符作为基础角色

在MongoDB"db.foo.find()"语法中,如何判断它是否匹配所有字母及其重音版本?

举例来说,如果我有我的数据库名称的列表:
若昂·
弗朗索瓦·
赫苏斯

我如何允许搜索字符串"Joao","Francois"或"Jesus"以匹配给定的名称?
我希望我每次都不必像这样进行搜索:
db.names.find({name : /Fr[aã...][nñ][cç][all accented o characters][all accented i characters]s/ })

regex diacritics internationalization mongodb

14
推荐指数
2
解决办法
1万
查看次数

在 MongoDB 中执行不区分变音符号的 $regex 搜索

正如标题所说,我试图弄清楚如何执行不区分变音符号的操作$regex在 MongoDB 中执行不区分变音符号的搜索,尽管目前我不确定这是否可能。

\n

基本上,想象我们有一个团队集合,其中包含如下文档:

\n
{ id: 1, name: "FC Bayern M\xc3\xbcnchen" },\n{ id: 2, name: "Atl\xc3\xa9tico Madrid" }\n
Run Code Online (Sandbox Code Playgroud)\n

对于这个集合,我创建了一个text索引name

\n

db.getCollection(\'teams\').createIndex({name: \'text\'});

\n

这使我能够执行变音符号和不区分大小写的搜索。

\n
db.getCollection(\'teams\').find({ $text: { $search: "bayern" }});\ndb.getCollection(\'teams\').find({ $text: { $search: "munchen" }});\n// \xe2\x9c\x85 { id: 1, name: "FC Bayern M\xc3\xbcnchen" }\n
Run Code Online (Sandbox Code Playgroud)\n

但是,如果文本搜索不包含完整单词(Bayern,Munchen ),则查询不会产生任何结果:

\n
db.getCollection(\'teams\').find({ $text: { $search: "bayer" }});\ndb.getCollection(\'teams\').find({ $text: { $search: "munc" }});\n// \xe2\x9d\x8c (no results)\n
Run Code Online (Sandbox Code Playgroud)\n

因此,为了使这项工作按预期进行,我需要使用$regex …

mongodb

6
推荐指数
1
解决办法
1090
查看次数