MySQL中文全文索引的mysqlcft插件(1/5)

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 末页

时间: 2024-09-21 02:10:13

MySQL中文全文索引的mysqlcft插件(1/5)的相关文章

mysql中文进行全文索引支持问题

先来看看对一个字段做全文索引,作为一个数据库系统需要做哪些工作? 假设一个文章表里面包含几个字段:文章id.文章作者.文章标题.文章内容   比如,我们对文章内容这个字段artilce_content建立全文索引,这样方便对文章里面的内容使用关键词搜索.   数据库系统首先需要从文章内容(这个字段内容)中提取关键词,因为只有提取了关键词,才好建立类似索引目录-类似于新华字典那样的笔画页码对应关系,当你搜索一个词语"beijing"的时候,就直接去索引中查找,然后就可以定位到数据行的具体

MySQL中文参考手册2(MySQL 的一般信息)

mysql|参考|参考手册|中文 MySQL中文参考手册2(MySQL 的一般信息)转载 翻译:晏子 [返回][转发] 译者:晏子 (clyan@sohu.com)主页:http://linuxdb.yeah.net 1 MySQL 的一般信息这是MySQL参考手册:它记载了MySQL版本3.23.7-alpha. MySQL 是一个快速.多线程.多用户和强壮的SQL数据库服务器. 对Unix和 OS/2 平台,MySQL基本上是免费的:但对微软平台,你在30 天的试用期后必须获得一个MySQL

数据库管理-Mysql 中文字段normal索引失效

问题描述 Mysql 中文字段normal索引失效 我的数据库表结构如下 使用localtion作为where查询判断条件,给localtion字段建立普通索引 localtion字段里面全部都是中文地名,但是使用where查询的时候数据库没有使用建立好的索引,求大神指导.难道中文字段只能建立全文索引吗? 解决方案 因为你用的是"select * ".索引值建立在location上 那么查询还需要拿别的字段,那么光查询索引location_index不够,必须扫表.数据量大时,涉及IO

PHP+MYSQL中文乱码问题

  这篇文章主要汇总介绍了几种解决PHP+MYSQL中文乱码问题的方法,十分的实用,有需要的小伙伴可以参考下. 从MySQL 4.1开始引入多语言的支持,但是用PHP插入的中文会出现乱码.无论用什么编码也不行. 解决这个问题其实很简单. 1.在建表的时候设置编码类型为gb2312_chinese_ci. 2.在PHP页面的数据库连接语句加一行mysql_query("SET NAMES 'gb2312'",$link); 例如 ? 1 2 3 4 5 6 7 8 9 10 $db_ho

MySQL中文模糊检索问题的解决方法

mysql|解决|问题|中文 MySQL中文模糊检索问题的解决方法来源:林兴陆 在 MySQL 下,在进行中文模糊检索时,经常会返回一些与之不相关的 记录,如查找 "-0x1.ebea4bfbffaacp-4%" 时,返回的可能有中文字符,却没有 a 字符存在. 本人以前也曾遇到过类似问题,经详细阅读 MySQL 的 Manual ,发现可以 有一种方法很方便的解决并得到满意的结果. 例子: ·希望通过"标题"对新闻库进行检索,关键字可能包含是中英文,如 下 SQL

MySQL中文参考手册3(MySQL邮件列表及如何提问或报告错误)

mysql|参考|参考手册|错误|邮件列表|中文 MySQL中文参考手册3(MySQL邮件列表及如何提问或报告错误)转载 译者:晏子 [返回][转发] 译者:晏子 (clyan@sohu.com)主页:http://linuxdb.yeah.net 2 MySQL邮件列表及如何提问或报告错误2.1  MySQL 邮件列表要订阅主 MySQL 邮件列表,送一条消息到电子邮件地址 mysql-subscribe@lists.mysql.com . 要退订主 MySQL 邮件列表,送一条消息到电子邮件

MySQL中文参考手册(目录)

mysql|参考|参考手册|中文 MySQL中文参考手册(目录)转载 译者:晏子 [返回][转发] 译者:晏子 (clyan@sohu.com)主页:http://linuxdb.yeah.net 0  译者序 1 MySQL的一般的信息1.1 什么是MySQL? 1.2 关于本手册1.2.1 本手册中使用的约定 1.3 MySQL的历史 1.4 MySQL的主要特征 1.5 MySQL稳定性? 1.6 顺应2000年 1.7 SQL一般信息和教程 1.8 有用的MySQL相关链接 2 MySQ

MySQL中文参考手册6(MySQL与标准的兼容性) 对ANSI SQL92扩充

mysql|标准|参考|参考手册|中文 MySQL中文参考手册6(MySQL与标准的兼容性)转载 译者:晏子 [返回][转发] q译者:晏子 (clyan@sohu.com)主页:http://linuxdb.yeah.net 5 MySQL与标准的兼容性?5.1   MySQL对ANSI SQL92扩充MySQL包含了一些可能在其他SQL数据库找不到的扩充.要注意如果你使用他们,你的代码将不与其他SQL服务器兼容.在一些情况下,你可以编写包括MySQL扩展的代码,但是仍然是可移植的,通过使用/

MySQL中文参考手册7(MySQL 存取权限系统) grant 设置密码 password

mysql|word|参考|参考手册|中文 MySQL中文参考手册7(MySQL 存取权限系统)转载 译者:晏子 [返回][转发] 译者:晏子 (clyan@sohu.com)主页:http://linuxdb.yeah.net6 MySQL 存取权限系统MySQL有一个先进但非标准的安全/权限系统.本节描述它的工作原理.  6.1 权限系统做什么MySQL权限系统的主要功能是证实连接到一台给定主机的一个用户,并且赋予该用户在一个数据库上select. insert.update和delete的