文章要講的是一篇基於mysqlcft插件的使MySQL中文全文索引的方法,因為mysql目前來講還對中文fulltext支持的很不理想哦,下面我們來看看如何使用mysqlcft插件讓你的mysql支持中文索引吧。
MySQL中文全文索引插件mysqlcft的特點:
1、優點:
①、精准度很高:采用自創的“三字節交叉切分算法”,對中文語句進行分割,無中文分詞詞庫,搜索精准度遠比中文分詞算法高,能達到LIKE '%...%"的准確率。
②、查詢速度快:查詢速度比LIKE '%...%"搜索快3~50倍,文章末尾有測試結果;
③、標准插件式:以MySQL 5.1全文索引的標准插件形式開發,不修改MySQL源代碼,不影響MySQL的其他功能,可快速跟進MySQL新版本;
④、支持版本多:支持所有的MySQL 5.1 Release Candidate版本,即MySQL 5.1.22 RC~最新的MySQL 5.1.25 RC;
⑤、支持字符集:支持包括GBK、GB2312、UTF-8、Latin1、BIG5在內的MySQL字符集(其他字符集沒有測試過);
⑥、系統兼容好:具有i386和x86_64兩個版本,支持32位(i386)和64位(x86_64)CPU及Linux系統;
⑦、適合分布式:非常適合MySQL Slave分布式系統架構,無詞庫維護成本,不存在詞庫同步問題。
2、缺點:
①、mysqlcft中文全文索引只適用於MyISAM表,因為MySQL只支持對MyISAM表建立FULLTEXT索引;
②、MySQL不能靜態編譯安裝,否則無法安裝mysqlcft插件;
③、基於“三字節交叉切分算法”的索引文件會比海量、ft-hightman等基於“中文分詞算法”的索引文件稍大,但不是大很多。根據我的測試,mysqlcft全文索引的.MYI索引文件是.MYD數據文件的2~5倍。
二、mysqlcft的核心思想──“三字節交叉切分算法”
注:本文以0~7數字序號代表“英文”、“數字”和“半個漢字”,以便說明。
1、按三字節對中文語句進行切分,建立全文索引:
例如:“全文索引”或“1台x光機”四個字會被交叉分拆為6份,建立反向索引:
012 123 234 345 456 567
2、按三字節對搜索的關鍵字進行切分,在全文索引中找出對應信息:
例①:搜索關鍵字“文索”,用數字序號表示就是“2~5”,那麼它將被切分成:
234 345
這樣,就與全文索引對上了。
例②:搜索關鍵字“x光機”,用數字序號表示就是“3~7”,那麼它將被切分成:
345 456 567
這樣,也與全文索引對上了。
例③:搜索關鍵字“1台 光機”,用數字序號表示就是“0~2”和“4~7”,那麼它將被切分成:
012 456 567
這樣,多關鍵字搜索也與全文索引對上了。
1 2 3 4 5