【发布时间】:2014-04-10 09:56:09
【问题描述】:
我想从联系人表中查找名称与声音匹配的所有重复名称。例如:Rita 或 Reeta、Microsoft 或 Microsift、Mukherjee 或 Mukherji。
我使用了以下查询:
SELECT contacts.id
FROM contacts
INNER JOIN (
SELECT first_name, last_name, count(*) AS rows
FROM contacts
WHERE deleted = 0
GROUP BY SOUNDEX(first_name), SOUNDEX(last_name)
HAVING count(rows) > 1
) AS p
WHERE contacts.deleted = 0
AND p.first_name SOUNDS LIKE contacts.first_name
AND p.last_name SOUNDS LIKE contacts.last_name
ORDER BY contacts.date_entered DESC
上面的查询给出了正确的结果,但是当有很多记录时会花费很多时间。
【问题讨论】:
-
它会的。您的问题无法快速解决,因为“听起来很相似”的事情无法快速解决。因此,
SOUNDEX很慢,整个查询也很慢 -
除了使用跑得更快的SOUNDEX,还有其他方法吗?
-
确定哪些字符串“听起来相似”?不,但如果你可以简化“听起来很相似”这个词 - 可能是