mysql的中文全文檢索搜尋實踐(二)

來源:互聯網
上載者:User

    在前一篇文章中,分析出了一個實現的具體思路,主要是利用中文分詞、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('高薪誠聘註冊造價工程師')); 

 

本文出自 “百變星君” 部落格,請務必保留此出處http://jabari.blog.51cto.com/5020854/948276

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.