我有500k数据。
如何从数据库中找到相似的名称?
"Microsoft" -> Microsys,Microcode,Microsystems,Microgroup...etc
答案 0 :(得分:1)
使用MySQL有一个命令“SOUNDS LIKE”,列出所有语音相似的条目。我确信所有其他数据库系统都有类似的东西。
答案 1 :(得分:1)
自提出问题以来已经有一段时间了,但我相信可以使用某种距离算法轻松解决原始问题。我建议Levenshtein distance
This article解释了如何在MySQL中实现levenshtein距离。
答案 2 :(得分:0)
您需要对类似名称进行分组或如何定义术语“类似”有一些逻辑。对于“相似”,不仅仅意味着匹配单词的前几个字符。例如: - 在这种情况下,“ Microsoft ”可以为您提供Microsys,Microcode等结果。但其他词语如软件,softtonic等也将被视为类似。
逻辑留给你,然后你可以相应地拆分原始字符串,然后使用 LIKE'%%'子句在表格中搜索。
答案 3 :(得分:0)
三种不同的方式,然后是真正的答案。
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');
但如果您的目标是寻找类似的业务,我不会依赖他们名字中的相似之处。在美国,我可能会根据SIC代码或NAICS代码从infousa.com购买一个列表。您可以在NAICS Association网站上查看这些代码的工作原理。