【问题标题】:mysql how to enhance the name fuzzy matchingmysql如何增强名称模糊匹配
【发布时间】: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

谢谢!

【问题讨论】:

标签: java mysql indexing


【解决方案1】:

尝试:

select * from provider where lastName like '%Von%'

select * from provider where lastName like '%Von%Essen%'

【讨论】:

    【解决方案2】:

    SOUNDEX 非常原始;我不会用它做任何事情。

    我建议在插入行时,使用“规范”形式的名称构造另一列。示例:删除括号、删除空格、以多种可能的形式重复文本等。然后使用FULLTEXT 进行搜索,因为该列中会有多个“单词”。

    这将涵盖一些“模糊”的情况。您可以对其进行调整以捕获更多案例。

    【讨论】:

      猜你喜欢
      • 2010-10-10
      • 1970-01-01
      • 2017-10-04
      • 2014-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-17
      • 1970-01-01
      相关资源
      最近更新 更多