在上一篇文章中,詳細介紹瞭如何實現中文分詞。但這只是第一步,要想能夠使用mysql的全文索引,還需要對分詞後的中文詞組進行編碼。因爲mysql的全文索引只將由字母,數字,下劃線,單引號構成的字符串判定爲單詞。
編碼的方式很多,只要能將漢字映射成唯一的字母或數字組成的字符串即可。因爲產品中的主流開發語言使用的是PHP,同時unicode編碼較爲簡單,容納漢字較多,所以本篇文章將介紹在PHP中如何進行unicode編碼。如“高薪誠聘註冊造價工程師”經過中文分詞得到“高薪 誠聘 註冊 造價 工程師”,再經過unicode編碼,將得到“9ad885aa 8bda8058 6ce8518c 90204ef7 5de57ab5e8”。
- function unicode_encode($word){
- $word=iconv('UTF-8','UCS-2LE',$word); //編碼轉換,假設PHP默認編碼爲UTF-8,將UTF-8轉換爲UCS-2LE
- $len=strlen($word);
- for($i=0;$i<$len-1;$i=$i+2){ //UCS-2LE編碼是一個漢字佔用兩個字節
- $ch1=$word[$i]; //獲取第一個字節的ASCII字符
- $ch2=$word[$i+1]; //獲取第二個字節的ASCII字符
- $code=base_convert(ord($ch1),10,16); //獲取字符的ASCII碼,再轉換爲十六進制
- $code.=base_convert(ord($ch2),10,16);
- }
- return $code;
- }