分享mysql中文全文搜索:中文分詞簡單函數


分享mysql中文全文搜索:中文分詞簡單函數 
原文地址:http://www.jb100.net/html/content-22-400-1.html
前段時間研究中文全文搜索,結果發現mysql不支持中文的全文搜索。但是有一些解決辦法,就是手動把中文單詞用空格分開,然后搜索的時候加 上 in boolean mode。 但是這就帶來一個問題,就是中文分詞。這個是個很大的難題,貌似中科院有個小組就是專門做中文分詞技術的。我們用 php來分詞的話,要實現真正語義上的分詞是非常困難的,就算實現了效率也不高。一般情況下,我們采用的是如下方法分詞:

比如我們有一句話:你好我是劉春龍
那么我們可以這樣來分詞: 你好 好我 我是 是劉 劉春 春龍


這樣雖然看起來有點傻,但是實際應用起來確實可行,因為我們搜索時候輸入的關鍵詞也是按照這個方法分詞。

下面有個我自己寫的函數,可以實現這種分詞。傳入三個參數,分別是:

1.需要分詞的字符串,必須,英文,標點,數字,漢字,日語等都可以。編碼為UTF-8
2.是否返回字符串,可選,默認是。如果傳入false,那么將返回一個數組。
3.是否base64_encode中文,可選,默認是。Mysql的全文搜索有個配置是 ft_min_word_len 這個值一般是4,而 我們分成的中文詞語是兩個字,就不會被mysql認為是一個詞。而base64_encode過后,詞語的長度為8,就不存在最小長度問題 了。 base64_encode過后數據量會增大 50%。


注意,這里輸入和輸出的字符串編碼都是UTF-8 地址:http://www.thinkphp.cn/code/926.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM