我有2个MySQL表,每个表都包含公司的地址数据。一张表是最近的,但没有电话,也没有网站数据。现在我想将这些表联合到最近的一个和完整表中。
但是对于一些公司来说,单词的顺序是不同的,如下所示:
表1中的 'Bakery Johnson'
和表2中的'Johnson Bakery'
。
现在我需要找到一种比较这些值的方法,因为它们显然是同一家公司。
我想我会先以某种方式拆分这些名字,然后按字母顺序排列不同的部分。
之前有没有人做过这样的事情,并愿意分享一些代码或功能?
更新: 我找到了一个对字符串中的单词进行排序的函数。我可以使用它来检测名称交换,如上所述。它虽然很慢......
请参阅:MySQL: how to sort the words in a string using a stored function?
答案 0 :(得分:1)
如果您的表格为MyISAM
,则可以运行此查询:
SELECT *
FROM mytable
WHERE MATCH(name) AGAINST ('+bakery +johnson')
这将找到包含单词bakery
和johnson
的所有记录(也可能包含其他一些单词)。
在表格上创建FULLTEXT
索引:
CREATE FULLTEXT INDEX
fx_mytable_name
ON mytable (name)
将加快此查询速度。
答案 1 :(得分:0)
回过头来看一下您的解决方案,您可以采用与现代手机解决重复名称冲突相似的方式
您向用户显示选项,因为他发现了可疑的内容:
Is this a duplicate? Use our [ Merge ] option
您正在合并Bakery Johnson,请选择来源/原始项目:
[ Johnson Bakery v ]
(我惊人的下拉!)
Johnson Bakery中尚未出现的所有东西都被移植到Bakery Johnson(例如订单),您也可能会显示一个中间屏幕,显示将要合并的内容,或者让用户选择,例如,他想要来自Johnson Bakery的地址信息和来自其他的订单
如你所知,这不是自我纠正,但来自用户的协作可能比AI更准确。我也喜欢这样的低科技解决方案,所以让我们知道你最终做了什么。