【发布时间】:2017-10-18 01:35:17
【问题描述】:
数据库中存储了 30000000 行。所有行都包含名字和姓氏。 我想通过firstName或lastName查询数据,但我发现一些lastName包含特殊字符,目前无法查询,同时有正常的firstName和lastName索引
示例:Susanna [Von Essen] ,Susanna VonEssen , Susanna Von Essen
不同的姓氏包含特殊字符,那么我有什么办法可以增强查询这3种名字(相同的姓氏)?
模拟理想结果:
查询:select *from provider where lastName like 'Von%'
结果:Susanna Von Essen,Susanna [Von Essen],Susanna VonEssen
查询:select *from provider where lastName like 'Von Essen%'
结果:Susanna Von Essen,Susanna [Von Essen],Susanna VonEssen
谢谢!
【问题讨论】:
-
有 SOUNDEX() 函数将返回与拼音 dev.mysql.com/doc/refman/5.7/en/… 相似的字符串。另请参阅databasejournal.com/features/mysql/…,但我认为 MySQL 不太擅长模糊搜索。我会为此目的推荐 Elasticsearch。
-
功能不支持索引搜索,这样会导致搜索变慢,elasticsearch还可以,但是现在db迁移是不可能的