有没有办法通过它们与搜索词“听起来”的接近程度来获得 MySQL 排序结果?
我正在尝试订购包含用户输入城市名称的字段。存在变体和拼写错误,我想在顶部显示“最接近”的匹配项。
我知道 soundex 可能不是最好的算法,但如果它(或其他方法)可以合理地成功 - 可能值得由数据库完成排序。
Soundex 对这类事情没有好处,因为不同的词可以给你相同的 Soundex 结果,因此会任意排序。一个更好的解决方案是 Levenshein 编辑距离算法,您可以将其作为数据库中的一个函数来实现:Link to Levensheint impl。作为MySql存储函数!!!
您还可以查看此SO 链接。它包含算法的 Sql 服务器(特定于 T-SQL)实现,但应该可以移植。该算法的机制相当简单,只需要一个二维数组并遍历字符串。