按Soundex排序(或类似)`Closeness`
有没有什么办法让MySQL的订单结果靠近他们对搜索条件的“接近”?
我试图订购包含城市名称用户输入的字段。 存在变化和拼写错误,我想在顶部显示“最接近的”匹配。
我知道soundex可能不是最好的算法,但如果它(或其他方法)可能合理成功 - 可能值得由数据库完成排序。
Soundex对这类事情并不好,因为不同的单词可以给你相同的Soundex结果,因此会任意排序。 更好的解决方案是Levenshein编辑距离算法,您可以将其作为数据库中的函数实现:链接到Levensheint impl。 作为MySql存储函数!!!
你也可以看看这个SO链接。 它包含一个Sql服务器(特定于T-SQL)的算法实现,但它应该可以移植。 该算法的机制非常简单,只需要一个二维数组并在字符串上循环。
链接地址: http://www.djcxy.com/p/48507.html