2014-06-17 26 views
3

我有一張學生表,即stu_table,學生姓名字段爲stu_name從表格中獲取類似的冠冕名字

在此表中有這麼多的學生像Mrinmoy,Minmoy,Minmay,Mrinmay,Tanmay,拉傑什,Susanta,Bireshwar等

我想獲取那些學生,他的名字聽起來像Mrinmoy

+3

很好。祝你好運。你有問題嗎? –

+0

+1好評@MarcB – Rahul

+0

更重要的是,你的問題「我該怎麼做」缺乏重要信息:什麼定義「聽起來像」?答案取決於語言,最低要求的接近度等等。 – mabi

回答

2

你可以使用MySQL SOUNDEX

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

但我不認爲這是非常正確的,這是非常有限的。

SQLFIDDLE

+0

事實上,'SOUNDEX()'專門設計來提供比誤報更多的誤報。爲了它有用,您需要某種用戶界面以允許用戶從多種選擇中進行選擇。 –

+0

我可以在SOUNDEX()中傳遞多個參數來獲得多個值結果。如果是,那麼如何通過它。請幫忙。 –

+0

@ user3747398,這屬於另一個問題。 –

2

雙音位是羅馬字母,英語發音正確名稱的文本不精確匹配一個SOUNDEX般的哈希算法。它對於除名稱以外的其他單個單詞非常適用。

Double Metaphone散列算法爲單詞生成一個或兩個散列值。這就是它的「雙倍」。例如,美國馬薩諸塞州有一個名爲「Gill」的村莊。它有兩個帶有KL和JL值的metaphone散列,對應於兩種不同的發音。

現在,如果有人聽到「Jill」這個詞的名字,他們就會要求它的metaphone哈希值。他們是JL和AL。爲了找到這個匹配,雙音位搜索必須着眼於四個可能的比賽:

Gill  Jill 
KL  JL mismatch 
KL  AL mismatch 
JL  JL match! 
JL  AL mismatch 

因此,「吉爾」和「吉爾」被認爲是匹配雙音位。

很多單詞只有一個metaphone hash。這些更容易匹配。

可以在此處找到MySQL存儲函數以生成metaphone哈希值。

http://www.atomodo.com/code/double-metaphone/

但要注意:給定一個字有兩個音位哈希返回他們用分號隔開一個字符串。

與古老而光榮的SOUNDEX一樣,Double Metaphone更傾向於假陽性匹配而非假陰性。但兩者的利率都較高,主要是由於其雙重哈希功能。

+0

+1用於解釋該方法背後的算法。 – mabi