Mysql 如何从数据库中找到相似的名称?

Mysql 如何从数据库中找到相似的名称?,mysql,sql,Mysql,Sql,我有500k的数据 如何从数据库中找到相似的名称 例如,对于“Microsoft”->Microsys、Microcode、Microsystems、Microgroup…等您需要对相似名称进行分组,或者如何定义术语“相似”。因为“相似”不仅仅意味着前几个字符与单词匹配。例如:-在这种情况下,“Microsoft”可以将结果显示为Microsys、Microcode等。。但其他词,如软件、软音频等也将被视为类似 逻辑留给您,然后您可以相应地拆分原始字符串,然后使用LIKE“%”子句在表中搜索。对

我有500k的数据

如何从数据库中找到相似的名称


例如,对于
“Microsoft”->Microsys、Microcode、Microsystems、Microgroup…等

您需要对相似名称进行分组,或者如何定义术语“相似”。因为“相似”不仅仅意味着前几个字符与单词匹配。例如:-在这种情况下,“Microsoft”可以将结果显示为Microsys、Microcode等。。但其他词,如软件、软音频等也将被视为类似


逻辑留给您,然后您可以相应地拆分原始字符串,然后使用LIKE“%”子句在表中搜索。

对于MySQL,有一个命令“SOUNDS LIKE”,列出所有语音相似的条目。我相信所有其他数据库系统都有类似的功能。

三种不同的方式,然后才是真正的答案

CREATE TABLE company_names (
    company_name VARCHAR(35) PRIMARY KEY
);

INSERT INTO company_names VALUES ('Microsoft');
INSERT INTO company_names VALUES ('Microcode');
INSERT INTO company_names VALUES ('TrendMicro');
INSERT INTO company_names VALUES ('Microphones, Inc.');
INSERT INTO company_names VALUES ('Softonic');
INSERT INTO company_names VALUES ('Soft Touch Cleaning');
INSERT INTO company_names VALUES ('Software Systems');
INSERT INTO company_names VALUES ('SoftTouch Movers');
  • 按SUBSTR从公司名称顺序中选择公司名称(公司名称,1,4)
  • 从公司名称中选择公司名称,如“Micro%”
  • 从公司名称(如“%Micro%”)中选择公司名称
    但如果你的目标是找到类似的企业,我就不会依赖它们名字上的相似性。在美国,我可能会根据SIC代码或NAICS代码从infousa.com购买一个列表。您可以在网站上看到这些代码是如何工作的

    这个问题已经有一段时间没有解决了,但我相信原始问题可以通过某种距离算法轻松解决。我建议


    解释如何在MySQL中实现levenshtein距离

    语音算法——soundex、metaphone等——被设计用来编码人名的发音。他们真的不太擅长对公司名称进行编码。根据这个问题的标签,MySQL是我们处理的数据库。我想这取决于他想要实现什么,但你是对的。我只是在寻找名称上的相似之处。不是他们做什么,也不是他们的工作business@aron你可以像我在回答中提到的那样使用LIKE。但同样的相似性意味着它是由你定义的。例如:-类似于microsoft意味着,您必须确定包含“micro”的其他单词是否相似,或“mic”或“micr”或与“soft”匹配的单词是否相似,或两者都相似。请参阅此名称已存在于数据库中。由于表格结构不同,我无法重新插入。唯一的索引是公司名称。所以我希望微%可能会起作用…但它会延迟结果吗??我正在使用MySQLExpressions,比如“Micro%”,它可以利用一个简单的索引。像“%Micro%”这样的表达式不能。如果它看起来很慢,请使用解释选择。。。查看MySQL的查询计划。这会告诉你它是否在使用索引。