2013-08-18 35 views
1

我正在開發模糊搜索機制。我有數據庫中的汽車品牌/模型和城市(mysql)(英文和俄文名稱) - 約1000項。用戶可以輸入錯誤或translit這個詞。現在我正在從db中檢索所有這些單詞,並將循環中的每個單詞與用戶輸入的單詞進行比較(使用livenstein距離和其他功能)。 有沒有什麼辦法來產生每個單詞(汽車品牌/模型)+錯誤的單詞的許多形式,因爲我想從數據庫中檢索這些單詞(使用像SQL運算符)。例如:我有汽車品牌:豐田,我想生成 - Tokota,Tobota,Toyoba,Tayota,Тойота,Токота,Тобота(俄語) - 每個單詞的許多形式。用戶可以輸入任何這個詞,我可以發現他是豐田他的意思。生成帶有錯誤的詞(汽車品牌/型號)

回答

2

那麼,在MySQL中有一個函數SOUNDEX。我不知道這是你需要的。 例如:

SELECT SOUNDEX('Toyyota') == SOUNDEX('Toyota') 

這裏是從MySQL文獻

返回從STR一個同音字符串。兩個聲音幾乎相同的字符串應該具有相同的soundex字符串。標準soundex字符串 是四個字符長,但SOUNDEX()函數返回一個任意長度的字符串 。您可以對結果使用SUBSTRING()以獲得標準soundex字符串 。 str中的所有非字母字符均忽略 。 A-Z範圍 以外的所有國際字母字符都視爲元音。

該功能目前正在實施,旨在與只有英文語言的 字符串配合良好。其他 語言中的字符串可能不會產生可靠的結果。

參考:http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_soundex

+0

非常感謝你。但我也有很多俄語的單詞。 – programmer

+0

我需要搜索像Тойота,Токота,Тобота,Toyota,Toyyota – programmer