7

MySQL中文全文索引插件推荐:mysqlcft

 2 years ago
source link: https://blogread.cn/it/article/4454?f=hot1
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

MySQL中文全文索引插件推荐:mysqlcft

浏览:2702次  出处信息

    MySQL在高并发连接、数据库记录数较多的情况下,SELECT … WHERE … LIKE ‘%…%’的全文搜索方式不仅效率差,而且以通配符%开头作查询时,使用不到索引,需要全表扫描,对数据库的压力也很大。MySQL针对这一问题提供了一种全文索引解决方案,这不仅仅提高了性能和效率(因为MySQL对这些字段做了索引来优化搜索),而且实现了更高质量的搜索。但是,至今为止,MySQL对中文全文索引无法正确支持。

    Mysqlcft 是为 MySQL 5.1.22 ~ 5.1.25 RC 开发的中文全文索引插件,用于解决MySQL无法正确支持中文全文检索的问题。

    MySQL中文全文索引插件mysqlcft的优点:

精准度很高:采用自创的“三字节交叉切分算法”,对中文语句进行分割,无中文分词词库,搜索精准度远比中文分词算法高,能达到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分布式系统架构,无词库维护成本,不存在词库同步问题。
MySQL中文全文索引插件mysqlcft的缺点:
mysqlcft中文全文索引只适用于MyISAM表,因为MySQL只支持对MyISAM表建立FULLTEXT索引; MySQL不能静态编译安装,否则无法安装mysqlcft插件; 基于“三字节交叉切分算法”的索引文件会比海量、ft-hightman等基于“中文分词算法”的索引文件稍大,但不是大很多。根据我的测试,mysqlcft全文索引的.MYI索引文件是.MYD数据文件的2~6倍。

    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 。这样,多关键字搜索也与全文索引对上了。

    更多的信息见:《MySQL中文全文索引插件 mysqlcft 1.0.0 安装使用文档

    程序官方地址:http://code.google.com/p/mysqlcft/

建议继续学习:

QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK