mysql - 按相似性对行进行分组

标签 mysql sql

我在 MySQL 数据库中有一组 850,000 个条目。有些条目非常相似,比如

Foobar Lorem
Foobar Ipsum
Foobar Dolor

我如何根据相似性对所有条目进行分组(例如,至少 4 个相同的字符)。 我无法使用 LIKE 运算符查询特定字符串,因为我不知道所有可能的相似条目。

我发现了一些有趣的方法(例如 Levenshtein 距离),但所有函数都需要至少一个参数来查找。

有什么建议吗?

/更新

当字符串开头相似时就足够了

最佳答案

您可能想尝试 SOUNDEX,因为这是一种根据特定单词或一组单词的发音创建代码的算法,因此任何发音相似的单词都将在此处分组(代码可以很长,字符串较长,因此请修剪到前 6 个字符)。 http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_soundex

GROUP BY SUBSTRING(SOUNDEX(col), 1, 6)

关于mysql - 按相似性对行进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17556870/

相关文章:

php - FullCalendar,JSON 数组为空但正在处理 PHP 文件

python - 如何以编程方式为 Django 中的给定模型生成 CREATE TABLE SQL 语句?

sql - 可以在 SQL SELECT 语句中使用表作为列吗?

Mysql连接查询,获取记录列表和连接投票

php - 选择不等于多个指定 ID 的数据

mysql - 无法更改存储过程中的 OUT 变量

MySQL str_to_date 没有正确转换日期

mysql - 您能给我一些关于数据库表结构的建议吗?

mysql - mysql中具有多个条件的完全外连接

mysql - 选择当前时间 "now ()"并将其转换为 GMT 0