我正在尝试在MySQL表中搜索商店名称,该表有一个名为fullname的字段。截至目前,我正在使用MySQL的SOUNDS LIKE方法,但是这是一个失败的例子:
说我有字符串Banana's Shop。然后使用SOUNDS LIKE查询'nana'或'bananas'将不会给我结果。这是我当前的查询:
SELECT `fullName` FROM `shop` WHERE `fullName` SOUNDS LIKE 'nana';
有没有更好的方法在MySQL中进行这样的简单搜索更智能,以便拼写错误仍然匹配?
答案 0 :(得分:0)
SOUNDS LIKE
使用的古老而略显光彩的SOUNDEX算法不处理后缀声音。也就是说,nana
不匹配banana
,也不能匹配banani
。但是,banana
将匹配{{1}}。
除非音节数相同,否则两个话语听起来不一定相似。它很适合匹配姓氏之类的东西:Smith,Schmitt和Schmidt都具有相同的SOUNDEX值。
调用SOUNDEX的“智能文本搜索”是一种夸张。 http://en.wikipedia.org/wiki/Soundex
您可以考虑使用MySQL FULLTEXT搜索,您可以查找。这会进行一定数量的短语匹配。也就是说,如果你的栏目中有“香蕉店”和“香蕉slu”,那么“香蕉”这个词就可以与这两个值相匹配。
小心FULLTEXT。当您搜索的表格中的行数少于几百行时,它会违反直觉。
但这不是一个错字友好的词匹配器。你问的问题并不容易。
你可以考虑Levenshtein算法(你可以查找)。但要正常工作是一种毛球。