我有一張學生表,即stu_table
,學生姓名字段爲stu_name
。從表格中獲取類似的冠冕名字
在此表中有這麼多的學生像Mrinmoy,Minmoy,Minmay,Mrinmay,Tanmay,拉傑什,Susanta,Bireshwar等
我想獲取那些學生,他的名字聽起來像Mrinmoy
我有一張學生表,即stu_table
,學生姓名字段爲stu_name
。從表格中獲取類似的冠冕名字
在此表中有這麼多的學生像Mrinmoy,Minmoy,Minmay,Mrinmay,Tanmay,拉傑什,Susanta,Bireshwar等
我想獲取那些學生,他的名字聽起來像Mrinmoy
你可以使用MySQL SOUNDEX
:
SELECT * FROM `stu_table` WHERE STRCMP(SOUNDEX(`stu_name`), SOUNDEX('Mrinmoy')) <= 0
但我不認爲這是非常正確的,這是非常有限的。
事實上,'SOUNDEX()'專門設計來提供比誤報更多的誤報。爲了它有用,您需要某種用戶界面以允許用戶從多種選擇中進行選擇。 –
我可以在SOUNDEX()中傳遞多個參數來獲得多個值結果。如果是,那麼如何通過它。請幫忙。 –
@ user3747398,這屬於另一個問題。 –
Mysql已經運營聽起來像
嘗試看看它
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#operator_sounds-like
引用的鏈接指出:「目前實現的這個函數只適用於只有英文語言的字符串,其他語言的字符串可能不會產生可靠的結果。」 「Mrinmoy」不是英文單詞。 – mabi
雙音位是羅馬字母,英語發音正確名稱的文本不精確匹配一個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更傾向於假陽性匹配而非假陰性。但兩者的利率都較高,主要是由於其雙重哈希功能。
+1用於解釋該方法背後的算法。 – mabi
很好。祝你好運。你有問題嗎? –
+1好評@MarcB – Rahul
更重要的是,你的問題「我該怎麼做」缺乏重要信息:什麼定義「聽起來像」?答案取決於語言,最低要求的接近度等等。 – mabi