从表中获取类似的声音名称

时间:2014-06-17 19:42:36

标签: php mysql

我有一张学生表stu_table,学生姓名字段为stu_name

在这张桌子上有很多学生像Mrinmoy,Minmoy,Minmay,Mrinmay,Tanmay,Rajesh,Susanta,Bireshwar等。

我想找那些听起来像Mrinmoy的学生

3 个答案:

答案 0 :(得分:2)

您可以使用MySQL SOUNDEX

SELECT * FROM `stu_table` WHERE STRCMP(SOUNDEX(`stu_name`), SOUNDEX('Mrinmoy')) <= 0 

但我不认为这是非常准确的,而且非常有限。

SQLFIDDLE

答案 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)