2013-02-27 62 views
0

我正在開發一個系統,用戶可以使用相應的成分創建自己的pesonal食譜並保存它們(在mysql中)。在mysql中檢查大致相等字符串的腳本

問題是,每次一個成分被保存,我檢查它是否已經存在於成分表中,我比較成分的名稱。

如果我應該能夠從我想確保例如食譜做出正確的購物清單:

蘋果 - 蘋果 - 新鮮的蘋果 廣東話apear

所以,如果「蘋果」首先是創建和即時嘗試保存「蘋果」我想檢查類似的東西已經存在。

像什麼即時嘗試解釋的alghorithm已經存在嗎?

希望你有一些意見!

回答

0

雖然可以使用soundexLevenshtein distance,但它仍然需要找到該短語中的關鍵詞 - 可能有蘋果和蘋果,但可能有效,但可能含有「十幾個新鮮蘋果」 - 可能不會。

從我的經驗,在該應用程序沒有什麼比更多的手動算法:

  • 創造成分的基地列表(「麪粉」,「蘋果」,「火腿」)
  • 增加新的配方時,使用Levenshtein或正則表達式匹配成分列表,可能允許使用Levenshtein或正則表達式模糊一些
  • 使用列表「原始」與「匹配」創建後端頁面創建一個簡單的界面來進行手動匹配對於不好的命中
+0

我要檢查Levenshtein。我想我會製作一個後端系統,就像你在說我可以標記那些錯誤的匹配。 – 2013-02-27 10:44:27

+0

感謝您的回答 – 2013-02-27 13:57:51

0

假設這些單詞足夠相似並且可能足夠簡單,那麼您可能會對MySQL的SOUNDEX()函數有一些好運。

文檔可以在這裏找到:https://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_soundex

基本上,它是一個給定的單詞減少它代表一個四個字符的字符串。字符串應該與的聲音基本相同的任何兩個單詞相同。

+0

我要去檢查出立即 – 2013-02-27 10:36:40

+0

剛剛更新了更詳細一點的答案......我希望它能幫助! – Dan 2013-02-27 10:38:08

+0

我認爲這個功能現在可以解決我的問題。謝謝你 – 2013-02-27 10:41:56