按Soundex排序(或类似)`Closeness`

Tim*_*tle 8 mysql sorting soundex

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

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

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

Pau*_*sik 4

Soundex 不适用于此类事情,因为不同的单词可以给您相同的 Soundex 结果,因此会任意排序。一个更好的解决方案是 Levenshein 编辑距离算法,您可以将其作为数据库中的函数实现:链接到Levensheint impl。作为MySql存储函数!!!

您还可以查看此SO 链接。它包含该算法的 Sql 服务器(特定于 T-SQL)实现,但应该可以移植。该算法的机制相当简单,只需要一个二维数组和循环字符串。