按Soundex(或类似)“亲密度”排序

时间:2010-10-20 17:27:59

标签: mysql sorting soundex

有没有办法让MySQL订单结果与搜索词有多接近?

我正在尝试订购包含城市名称用户输入的字段。存在变化和拼写错误,我想在顶部显示“最接近的”匹配。

我知道soundex可能不是最好的算法,但如果它(或其他方法)可以合理成功 - 可能值得对数据库进行排序。

1 个答案:

答案 0 :(得分:4)

Soundex对这类事情没有好处,因为不同的词可以给你相同的Soundex结果,因此会任意排序。对此更好的解决方案是Levenshein编辑距离算法,您可以将其作为数据库中的函数实现:链接到Levensheint impl. as MySql stored function !!!

您还可以查看此SO link。它包含一个Sql server(特定于T-SQL)的算法实现,但它应该可以移植。算法的机制非常简单,只需要一个二维数组并循环遍历字符串。