【发布时间】:2016-01-19 10:40:41
【问题描述】:
我的 mongodb 数据库中有几百万条记录。 假设我的所有记录中都有一些通用字段,例如姓名、姓氏等...
1) 我需要搜索不区分大小写。常见的答案是使用正则表达式,但我认为它会显着降低我的应用程序性能。这是最好的方法吗?
2) 我应该能够以我的语言(土耳其语)获得结果。在土耳其语中,i 的大写字母是 İ,ı 的大写字母是 I。如果我的字符串包含这些字母,我什至不会得到正确的结果。即使使用不区分大小写的正则表达式搜索。如果 mongo 中没有数据库语言选项,我该如何解决这个问题?
3) 你认为还有另一种更适合我的目的的 nosql 解决方案吗? (不区分大小写搜索具有不同列和土耳其字符集的数百万条记录)
谢谢
【问题讨论】:
-
不完全是,我也有语言特定的字符问题,所以使用正则表达式对我来说可能是一个糟糕的决定
-
从你的问题来看,你的问题是大写字母。但是,如果您按照我链接的答案建议将文本保存为小写,则很有可能它可以工作。
-
顺便说一句,Mongo 已经使用 Unicode。所以你的问题可能是匹配模式而不是 Mongo 的表示。 From the docs,你甚至可以使用 PCRE。我建议您尝试在您的正则表达式模式中转义土耳其语特定字母。例如,不要使用“İ”,而是使用“\u{unicode of İ}”。您必须对此进行测试,我仍然建议您将字符串保存为小写或大写以进行搜索,因为索引可能会变得混乱。