代码之家  ›  专栏  ›  技术社区  ›  Tim Lytle

按soundex(或类似)排序`接近度`

  •  8
  • Tim Lytle  · 技术社区  · 14 年前

    有没有办法让MySQL的搜索结果与搜索词的“声音”接近多少?

    我正在尝试对包含城市名称用户输入的字段进行排序。存在变体和拼写错误,我想在顶部显示“最近”的匹配项。

    我知道Soundex可能不是最好的算法,但是如果它(或其他方法)能够合理成功的话——通过数据库进行排序可能是值得的。

    1 回复  |  直到 12 年前
        1
  •  4
  •   Community CDub    8 年前

    Soundex不适合这种类型的东西,因为不同的单词可以给你相同的Soundex结果,因此会任意排序。一个更好的解决方案是Levenshein编辑距离算法,您可以将其作为数据库中的函数来实现:链接到 Levensheint impl. as MySql stored function !!!!

    你也可以看看这个 SO link . 它包含算法的SQL Server(T-SQL特定)实现,但应该可以移植。算法的机制相当简单,只需要一个二维数组和循环字符串。