我被一个案子困住了。我希望进行搜索,如果用户犯了一些拼写错误,它将搜索 mysql 数据库并返回一个结果,如“你的意思是什么”。我已经完成了 levenshtein 方法,但它没有返回预期的结果。例如,如果我在 'apple'、'bean'、'chicken soup' 等一系列项目中搜索“chicken”;它返回我 bean 。有没有更好的方法来解决这个问题?我正在使用 PHP MYSQL 来实现此功能。
任何帮助将不胜感激。
我会推荐 MySQL 全文搜索。你可以在这里找到更多关于它的信息。
您要使用的语法是MATCH() ... AGAINST
. 请务必使用 MyISAM 类型的表,并在要搜索的字段上创建索引。
希望这可以帮助,
布拉姆
尽管 Levensteins 距离应该可以解决问题,但您是否研究过similar_text()
或soundex()
.
我用过similar_text
类似的东西,因为它可以返回匹配之间的相似度百分比。
您可以使用基于发音“发音相似产生相同的 soundex 键”的Soundex 。
为了获得更好的结果,首先获得一组具有最小距离(比如 2 或 3)的单词,然后在过滤后的单词集上应用 soundex 以获得建议的单词。我在我过去的一个项目中实施,效果很好。