有什么方法可以让 MySQL 根据结果与搜索词的“听起来”接近程度来对结果进行排序吗?
我正在尝试对包含用户输入的城市名称的字段进行排序。存在变体和拼写错误,我想在顶部显示“最接近”的匹配项。
我知道 soundex 可能不是最好的算法,但如果它(或其他方法)可以合理成功 - 可能值得由数据库完成排序。
Soundex 不适用于此类事情,因为不同的单词可以给您相同的 Soundex 结果,因此会任意排序。一个更好的解决方案是 Levenshein 编辑距离算法,您可以将其作为数据库中的函数实现:链接到莱文森特暗示。作为 MySql 存储函数 http://www.supermind.org/blog/927/working-mysql-5-1-levenshtein-stored-procedure!!!
你也可以看看这个SO link https://stackoverflow.com/questions/560709/levenshtein-distance-in-t-sql。它包含该算法的 Sql 服务器(特定于 T-SQL)实现,但应该可以移植。该算法的机制相当简单,只需要一个二维数组和循环字符串。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)