mysql - 有什么方法可以比较/匹配仅具有不同词序的句子吗?

标签 mysql function compare

我有2个MySQL表,每个表都有公司的地址数据。一张 table 较新,但没有电话,也没有网站数据。现在我想将这些表合并为 1 个最近的完整表。

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

表 1 中的“Bakery Johnson” 和表 2 中的“Johnson Bakery”

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

我想我必须先拆分这些名称,然后按字母顺序对不同部分进行排序。

是否有人以前做过类似的事情,并愿意分享一些代码或函数?

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

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

最佳答案

如果您的表是MyISAM,您可以运行此查询:

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

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

在表上创建 FULLTEXT 索引:

CREATE FULLTEXT INDEX
        fx_mytable_name
ON      mytable (name)

将加快此查询的速度。

关于mysql - 有什么方法可以比较/匹配仅具有不同词序的句子吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6920205/

相关文章:

java - MySQL JDBC 与 Perl DBI

mysql - 如何更新每天具有最大值的行?

C语言如何在递归函数中打印到文件而不覆盖它?

Java 错误 : Comparison method violates its general contract

java - 突出显示文本 PDF Box Reader

mysql - 如何按DAYOFWEEK分组并在MySQL中使用分组数据?

javascript - "Uncaught TypeError: function is not iterable"在 [] 中使用 ... 但在 {} 中有效...?

使用创建的对象调用另一个函数后,Javascript 创建的对象属性值未定义

C++比较结构数组中的字符串

MySQL错误使用连接更新表