Rex*_*xha 2 php mysql sql fuzzy-search
我想实现一个Fuzzy Search使用PHP 7和MySQL 5.7.我在谷歌进行了一些搜索,我发现这些算法用于此目的:Metaphone,Levenshtein,Soundex和Hamming.
我想search for song titles在我的桌子旁.因此,用户可以使用标题,艺术家姓名或两者进行拼写检索,例如YouTube.
什么是用于此目的的最佳算法以及如何在php/MySQL中实现
SOUNDEX()是一个简单的算法,从二十世纪初开始,旨在帮助查找美式英语中的专有名称.它是为Bell System目录辅助操作员构建的.它被设计用于产生大量的误报,人类可以从中获取可能的命中.它可能不适合你的目的,因为你的话不是大多数专有名词.
Metaphone和双metaphone是SOUNDEX的改进.他们的工作范围更广泛.
这些工作最好逐字逐句,而不是像歌曲名称这样的短语.如果你实现了任何一个你需要执行字的字匹配和某种评分方案的好消息是,这些都是适合索引和工作基础上的单词的发音.
Levenshtein距离适用于单词或短语,适用于拼写而非声音.它不适合索引搜索,因为这些距离成对使用.根据我的经验,对Levenshtein距离进行评分是很棘手的,因为较长的短语与其他长短语有许多不同的方式而不是短的短语.
在您尝试使用这些原始算法构建模糊搜索之前,您可以尝试使用MySQL FULLTEXT搜索和Sphinx.这两种技术都可以很好地处理短语评分和停止单词.Sphinx也有一些同义词表的支持,这有助于处理常见的拼写错误.
| 归档时间: |
|
| 查看次数: |
3206 次 |
| 最近记录: |