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;  

 

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