mysql的中文全文搜索實踐(三)

    在上一篇文章中,詳細介紹瞭如何實現中文分詞。但這只是第一步,要想能夠使用mysql的全文索引,還需要對分詞後的中文詞組進行編碼。因爲mysql的全文索引只將由字母,數字,下劃線,單引號構成的字符串判定爲單詞。

    編碼的方式很多,只要能將漢字映射成唯一的字母或數字組成的字符串即可。因爲產品中的主流開發語言使用的是PHP,同時unicode編碼較爲簡單,容納漢字較多,所以本篇文章將介紹在PHP中如何進行unicode編碼。如“高薪誠聘註冊造價工程師”經過中文分詞得到“高薪 誠聘 註冊 造價 工程師”,再經過unicode編碼,將得到“9ad885aa 8bda8058 6ce8518c 90204ef7 5de57ab5e8”。

 

  1. function unicode_encode($word){  
  2.   $word=iconv('UTF-8','UCS-2LE',$word); //編碼轉換,假設PHP默認編碼爲UTF-8,將UTF-8轉換爲UCS-2LE  
  3.   $len=strlen($word);  
  4.   for($i=0;$i<$len-1;$i=$i+2){ //UCS-2LE編碼是一個漢字佔用兩個字節  
  5.     $ch1=$word[$i];       //獲取第一個字節的ASCII字符      
  6.     $ch2=$word[$i+1];     //獲取第二個字節的ASCII字符  
  7.     $code=base_convert(ord($ch1),10,16); //獲取字符的ASCII碼,再轉換爲十六進制  
  8.     $code.=base_convert(ord($ch2),10,16);  
  9.   }  
  10.   return $code;  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章