0

我有一个列名为 company_name(string) 的表,我需要找到该列的重复值,我不能使用 distinct 或 group by,因为它们不完全相同。例如:

atec,inc
atec inc
ate inc  

abc group
abc groups
abc grups

我如何在 sql 中找到这样的条目,或者是否有任何 ruby​​ 库。

4

3 回答 3

1

如果您可以尝试使用 MySQL 似乎支持的正则表达式的变体有某种模式(我们使用 Postgres,这肯定支持):

http://dev.mysql.com/doc/refman/5.1/en/regexp.html

如果不是这种情况,恐怕您必须在您的应用程序中执行此操作。正如 Pete 提到的,有多种算法可以找到相似的声音,为此我们使用/已经使用了 Levenshtein 距离、Simhashes 的 Hamming 距离和 Kölner 语音编码。

于 2011-04-01T11:07:47.350 回答
0

我不知道 SQL 有一个 SELECT WHERE A SORTA_OF_LIKE B 但查找“Levenshtein distance”,也许是你想要的一种方式。

于 2011-04-01T10:37:33.370 回答
0

这将是功能索引的完美用途,但由于我认为 MySQL 没有其中之一,我可以建议 MySQL 中的全文搜索吗?

http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html

特别是布尔搜索:

http://dev.mysql.com/doc/refman/5.5/en/fulltext-boolean.html

此外,如果您不熟悉词干,这是一个强大的概念,也可以帮助您增加搜索的检索率。

希望有帮助。

于 2011-04-01T13:13:11.453 回答