易截截图软件、单文件、免安装、纯绿色、仅160KB

MySQL 全文检索 实现中文检索

通过MySQL内置全文检索实现中文的相关检索
关键字:MySQL 全文检索 全文索引 中文分词 二元分词 区位码 相似度
注:本文使用的MySQL版本为:MySQL 4.0.x
在MySQL4中,是已经开始支持全文检索(索引)的了。但是只是对英文支持全文检索。
由于英文在书写上的特殊性,使得分词算法相对中文来说,简单得多。一般来说,我们可以通过单词与单词之间的空格,以及标点符号来完成这个分词过程。
但是就中文来说,就没有那么简单。MySQL无法对中文做出正确的分词,假设有如下英文句子:
"Hello world! Hello PHP!"
通过上面提及的方法,可以很简单的把这个句子分词为:
1 Hello
2 world
3 PHP
我们再来看看中文的句子:
"你好世界,你好PHP!"
按照英文的算法,分词如下:
1 你好世界
2 你好PHP
显然是不能满足我们的需要的。
所以,首先我们要做的是,把中文的句子转变为MySQL眼中的英文,以便使得它能以英文分词算法去对句子进行正确的分词处理。
先将上面中文句子进行标点过滤处理,得到以下句子:
你好世界 你好PHP
接着再使用中文分词中较简单实现的二元分词算法对句子进行二元分词,得到以下句子:
你好 好世 世界 你好 PHP
因为把标点符号替换为空格,以及PHP本身为英文字母的关系,可以不用进行二元切分,所以得到上面句子。
这个时候,我们来看看处理过后的句子,会发现,就其书写格式上来说,已经符合英文的书写格式,既以空格,标点来对单词形成自然间隔。只是上面句子没有标点,只有空格而已。
到此,我们已经成功的将中文“翻译”为MySQL能理解的“英文”书写格式。
但是,问题还没解决,首先,MySQL中,ft_min_word_len(分词词汇最小长度)这个参数的默认值为4,也就是4个字母以上长度的单词,才会被考虑,小于4个的,将会被忽略。
如果不改变这个长度,按照上面的分词结果,我们将无法通过 你好,世界,PHP等检索到相关的结果,因为分出来的词太短了,不在MySQL的选择范围内。
我们可以通过修改ft_min_word_len的值,将其设置为2来解决上面问题,但是这样做的话,在检索列表中的原本就为英文的短小词汇,如:PHP,MP3,也会被划入检索范围内,这样做的结果是,出现很多无意义的相关结果。
请看以下列表:
[MP3] the look
[MP3] because of you
因为他们都同有MP3在标题中,所以会出现上述提到的问题。
回到ft_min_word_len值的问题,我们之所以要修改他,是为了能让MySQL找到我们的二元分


相关文档:

MySQL中InnoDB和MyISAM的差别

InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定。下面是已知的两者之间的差别,仅供参考。
innodb 
      InnoDB 给 MySQL 提供了具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID complian ......

MYSQL在Windows 2003上连接不上的解决方法

今天搭建mysql数据库,连接了半天,都提示10061错误,以为密码出了问题试了半天,压根连服务都连接不上,忙活了半个多小时,才发现是系统补丁打了之后出现的问题(kb967723)
于是网上找了一下资料
最近一个客户服务器的MYSQL频繁提示连接不上,修改了MYSQL的最大连接数还是这样,于是开始问万能的搜索引擎大人!终于在微软找到了 ......

mysql 源码编译安装

环境 rhel5.4
装好gcc 和相应的库。我这边遇到curses。Debian系统的话需安装apt-get install libncurses5-dev。
下载mysql源码包,我自己在myslq官方网站上下了一个“mysql-5.0.87.tar.gz”
cd /usr/local/src/
解包 tar zxvf mysql-5.0.87.tar.gz
cd mysql-5.0.87
./configure --prefix=/usr/local/servic ......

mysql can't create table errno 150

1、外键的引用类型不一样,主键是int外键是char
2、找不到主表中 引用的列
3、主键和外键的字符编码不一致
4.还有要建立外键的话,要先建立索引。没有建立索引也会出错。
我的问题解决方案是在sql后面加上了如下句话,ok!成功导入脚本
ENGINE=MyISAM DEFAULT CHARSET=utf8;
charset对应的换成你的主键表的字符集 ......

【转】MySQL优化步骤及my.cnf缓存优化

1、看机器配置,指三大件:cpu、内存、硬盘
2、看mysql配置参数
3、查系mysql行状态,可以用mysqlreport工具来查看
4、查看mysql的慢查询
依次解决了以上问题之后,再来查找程序方面的问题
my.cnf缓存优化
在 my.cnf 中添加/修改以下选项:
#取消文件系统的外部锁
 skip-locking
 #不进行域名反解析,注意 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号