我有一张学生表stu_table
,学生姓名字段为stu_name
。
在这张桌子上有很多学生像Mrinmoy,Minmoy,Minmay,Mrinmay,Tanmay,Rajesh,Susanta,Bireshwar等。
我想找那些听起来像Mrinmoy的学生
答案 0 :(得分:2)
您可以使用MySQL SOUNDEX
:
SELECT * FROM `stu_table` WHERE STRCMP(SOUNDEX(`stu_name`), SOUNDEX('Mrinmoy')) <= 0
但我不认为这是非常准确的,而且非常有限。
答案 1 :(得分:2)
Double Metaphone是一种类似SOUNDEX
的哈希算法,用于罗马字母,英语发音专有名称文本的不精确匹配。除了名字之外,它对于其他单个词也能很好地工作。
Double Metaphone哈希算法为单词生成一个或两个哈希值。这就是它“双倍”的原因。例如,美国马萨诸塞州有一个名为“吉尔”的村庄。它有两个metaphone哈希值KL和JL,对应两个不同的发音。
现在,如果有人听到这个村庄名字的“吉尔”这个词,他们会要求它的变音符哈希值。他们是JL和AL。要查找此匹配项,双元电话搜索必须查看四种可能的匹配项:
Gill Jill
KL JL mismatch
KL AL mismatch
JL JL match!
JL AL mismatch
因此,“Gill”和“Jill”被认为是双联音电话匹配。
许多单词只有一个metaphone哈希。那些更容易匹配。
可以在此处找到用于生成metaphone哈希值的MySQL存储函数。
http://www.atomodo.com/code/double-metaphone/
但要注意:给定一个带有两个metaphone哈希值的单词,它将它们返回一个以分号分隔的字符串。
与古老而尊贵的SOUNDEX一样,Double Metaphone赞成假阳性而不是假阴性。但它的两者都有更好的速率,主要是因为它具有双重哈希功能。
答案 2 :(得分:0)
Mysql有运营商 SOUNDS LIKE
试试看吧
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#operator_sounds-like