有没有比较/匹配只有不同单词顺序的句子的方法?

时间:2011-08-03 00:05:32

标签: mysql function compare

我有2个MySQL表,每个表都包含公司的地址数据。一张表是最近的,但没有电话,也没有网站数据。现在我想将这些表联合到最近的一个完整表中。

但是对于一些公司来说,单词的顺序是不同的,如下所示:

表1中的

'Bakery Johnson'和表2中的'Johnson Bakery'

现在我需要找到一种比较这些值的方法,因为它们显然是同一家公司。

我想我会先以某种方式拆分这些名字,然后按字母顺序排列不同的部分。

之前有没有人做过这样的事情,并愿意分享一些代码或功能?

更新: 我找到了一个对字符串中的单词进行排序的函数。我可以使用它来检测名称交换,如上所述。它虽然很慢......

请参阅:MySQL: how to sort the words in a string using a stored function?

2 个答案:

答案 0 :(得分:1)

如果您的表格为MyISAM,则可以运行此查询:

SELECT  *
FROM    mytable
WHERE   MATCH(name) AGAINST ('+bakery +johnson')

这将找到包含单词bakeryjohnson的所有记录(也可能包含其他一些单词)。

在表格上创建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更准确。我也喜欢这样的低科技解决方案,所以让我们知道你最终做了什么。