MYSQL模糊匹配列

时间:2016-07-19 19:27:28

标签: mysql database normalization fuzzy

我试图在列之间匹配大致相似的公司名称。我已经使用了

    SELECT *
    FROM table1
    LEFT OUTER JOIN table2 
    ON table2.company_name 
    LIKE CONCAT('%', table1.company_name, '%')
    OR table1.company_name 
    LIKE CONCAT('%', table2.company_name, '%')

以及其他方法,如REGEXP甚至是MYSQL的Levenshtein算法都没有运气。上面的方法似乎匹配~60%的行,但不匹配其余的。我无法找到一个不匹配的模式,因为许多不匹配的模式看起来很像那些模式。还有另一种方法可以在此方法之上匹配更多名称吗?比如在列中每行的前几个字符使用LIKE CONCAT的方法?

编辑:为了回应一些评论,我还增加了以上内容

     OR (table1.company_name != table2.company_name) AND (SOUNDEX(table1.company_name) = SOUNDEX(table2.company_name))

这给了我与上面代码完全相同的结果,所以似乎SOUNDEX也没有帮助。另外,我认为FULLTEXT在尝试查找列之间的部分匹配时不适用。如果没有,有人可以向我说明如何做到这一点吗?

0 个答案:

没有答案