在前一篇文章中,分析出了一個實現的具體思路,主要是利用中文分詞、Unicode編碼來解決無法使用mysql的全文索引進行中文搜尋的問題,本篇文章中將詳細介紹中文分詞的實現方法。

    首先是解決中文分詞,中文分詞就是將一句中文進行拆分,得到一個個單一的詞,如“高薪誠聘註冊造價工程師”這句話,經過分詞處理後,會得到“高薪 誠聘 註冊 造價 工程師”一個個單一的詞。網上對中文分詞的技術有很多介紹,有很好的開源產品和服務介面。但是結合我們產品用的主流開發語言是PHP,所以還是偏向選擇了一個支援PHP模組擴充套件的開源中文分詞系統scws,便於直接整合進專案中進行呼叫。

    至於如何安裝scws和生成php模組,不是本文介紹的重點,請參考官方文件,有很詳細的介紹。

    安裝好scws並生成php的模組後,就可以直接呼叫scws提供的api進行中文分詞了,下面是一個用php呼叫scws進行中文分詞的方法,可以用來測試中文分詞。

  1. function ch_word_segment($text) {  
  2.     $so = scws_new();        //建立並返回一個SimpledCWS類操作物件  
  3.     $so->set_charset(`utf8`);       //設定分詞詞典、規則集、欲分文字字串的字符集  
  4.     $so->set_multi(SCWS_MULTI_SHORT | SCWS_MULTI_DUALITY);    //設定分詞返回結果時是否複式分割,這裡設定短詞和二元詞  
  5.     $so->send_text($text);    //傳送要分詞的文字  
  6.     $result = $so->get_result();  //返回分詞結果  
  7.     $first = true;  
  8.     foreach ($result as $key => $value) {  
  9.         if ($first) {  
  10.             $word.=$value;  
  11.             $first = false;  
  12.         } else {  
  13.             $word.=` ` . $value;  //返回值為以空格分隔的分詞字串  
  14.         }  
  15.     }  
  16.     return $word;  

    如果安裝成功,執行以下程式碼,將得到“高薪 誠聘 註冊 造價 工程師”的輸出。

  1. print(ch_word_segment(`高薪誠聘註冊造價工程師`));