在前一篇文章中,分析出了一個實現的具體思路,主要是利用中文分詞、Unicode編碼來解決無法使用mysql的全文索引進行中文搜尋的問題,本篇文章中將詳細介紹中文分詞的實現方法。
首先是解決中文分詞,中文分詞就是將一句中文進行拆分,得到一個個單一的詞,如“高薪誠聘註冊造價工程師”這句話,經過分詞處理後,會得到“高薪 誠聘 註冊 造價 工程師”一個個單一的詞。網上對中文分詞的技術有很多介紹,有很好的開源產品和服務介面。但是結合我們產品用的主流開發語言是PHP,所以還是偏向選擇了一個支援PHP模組擴充的開源中文分詞系統scws,便於直接整合進項目中進行調用。
至於如何安裝scws和產生php模組,不是本文介紹的重點,請參考官方文檔,有很詳細的介紹。
安裝好scws並產生php的模組後,就可以直接調用scws提供的api進行中文分詞了,下面是一個用php調用scws進行中文分詞的方法,可以用來測試中文分詞。
- function ch_word_segment($text) {
- $so = scws_new(); //建立並返回一個SimpledCWS類操作對象
- $so->set_charset('utf8'); //設定分詞詞典、規則集、欲分文本字串的字元集
- $so->set_multi(SCWS_MULTI_SHORT | SCWS_MULTI_DUALITY); //設定分詞返回結果時是否複式分割,這裡設定短詞和二元詞
- $so->send_text($text); //發送要分詞的文本
- $result = $so->get_result(); //返回分詞結果
- $first = true;
- foreach ($result as $key => $value) {
- if ($first) {
- $word.=$value;
- $first = false;
- } else {
- $word.=' ' . $value; //傳回值為以空格分隔的分詞字串
- }
- }
- return $word;
- }
如果安裝成功,運行以下代碼,將得到“高薪 誠聘 註冊 造價 工程師”的輸出。
- print(ch_word_segment('高薪誠聘註冊造價工程師'));
本文出自 “百變星君” 部落格,請務必保留此出處http://jabari.blog.51cto.com/5020854/948276