浅谈MYSQL的全文检索的应用
环境:LINUX MYSQL4/5(5以上的版本直接可以在插件形式编译进MYSQL内)
使用MYSQL的朋友一定有这样的经历,那就是在检索中文的时候往往力不从心。使用LIKE的效率实在不敢恭维,而且对搜索的结果也不是很满意的。 很希望有一个完美的解决方案。但是事实的真相是残酷的。这个完美的方案可能让你绞尽脑汁还是两手空空。
今天我给大家带来的 MYSQL中文分词全文检索 可能会让您有一种相见恨晚的感觉。
下面开始讲解:
在猪肉还是7块多的时候,我在CU里闲逛。突然看到一个大板(HIGHTMAN)的帖子。(我不记得地址了-______-).
大致内容就是修改MYSQL的源码。加入中文分词功能。原理依据的是一个强大的中文词典。(详细可进该大牛主页查看)
所以我得声明一下。该功能的版权归HIGHTMAN大牛所有。本人不涉及版权问题。
可喜的是该牛的MYSQL修改版是在GPL发放的。所在大家不用担心(除非你想自己打磨-______-)。
好啰嗦啊,扯了大半天还没到正题。我也觉得我自己好啰嗦,黄金又涨价了,哎。牛奶都从46涨到了65一箱了。
----------------------OH YEAH SO HOT!----------------------------
开始:
cd/ /home/apps
wget
tar zxf z
cd mysql-5.1.11-hi1
#开始编译,加入分词插件
./configure --prefix=/usr/local/mysql --with-charset=gbk --with-extra-charsets=all --with-plugins=fthightman
make
make install
#你如果嫌麻烦也可以 make && make install 该过程比较漫长(取决于机器性能了)
#复制f到系统启动项
cp /usr/local/mysql/share/mysql/f /etc/f
#增加mysql用户组
groupadd mysql
useradd -g mysql mysql
#初始化
cd /usr/local/mysql
bin/mysql_install_db --user=mysql |注:--user=mysql 初始化表并且规定用mysql用户
#设置给mysql和root用户设定访问权限 我们先进入mysql目录
cd /usr/local/mysql
chown -R root /usr/local/mysql |注:设定root能访问/usr/local/mysq
chown -R mysql /usr/local/mysql/var |注:设定mysql用户能访问/usr/local/mysql/var
chgrp -R mysql /usr/local/mysql |注:设定mysql组能够访问/usr/local/mysq
bin/mysqld_safe --user=mysql & |启动之
#设定开机就启动mysql,进入源码目录下
cd /usr/local/mysql/share/mysql
cp rver /etc/init.d/mysql
cd /etc/rc3.d
ln -s ../init.d/mysql S85mysql
ln -s ../init.d/mysql K85mysql
cd /etc/rc5.d
ln -s ../init.d/mysql S85mysql
ln -s ../init.d/mysql K85mysql
cd ../init.d
chmod 755 mysql
#rc3.d rc5.d明白是怎么回事吧。不懂的自己补习去。
重启 mysqld 服务器
whereis mysql
/etc/init.d/mysql
service mysql
/etc/init.d/mysql start|stop|restart
#以下的情况我们假定您已经有了APCHE PHP环境。
开始:
注意。MYSQL默认的字符编码是GBK。所以在这里建的表最好也是GBK的UTF8的需要改一下MYSQL默认编码再进行如下操作
DATABASEB1
show databases;
use db1;
#DB1里有个表叫TABLE1
TABLE1 字段为:
aid
gid
uid
atitle
acontent
请注意。atitle,acontent 这两个里面放的是我们需要检索的内容。
下面建立全文索引 也就是FULLTEXT
alter table1 add fulltext ft_gbk(atitle,acontent) with parser hightman;
这样索引就建成了。
PHP查询语句为
select * from table1 where match(atitle,acontent) against('$keyword');
返回结果就跟普通一样引用就可以了。
值得一提的是速度非常快。
100万的数据通常检索不到0.5秒
有图为证
范例:1.南极快车 在搜索框中输入' PHP mysql教程 ' .' PHP教程 ' 或者其它关键词可看到该插件的强大之处。
近期帖出UTF8编码下的简繁转换一个简洁的实例。
- 最火内爬式塔机安装注意事项及安装顺序排屑器工业烤箱镶入螺母控制仪表遥控器Frc
- 天胶生产国组织2012年天胶产量预计增长禹州净化设备混频器爬宠食品记步器Frc
- 日研究称绿茶提取物经加工后可抑制流感病毒汤锅礼品回收滤芯电瓶叉车火焰Frc
- 单机容量为40mw级中国电建上海电气中天烘干机砾石天然胶氧化镉中央空调Frc
- 突破国际技术封锁机床进口替代潜力巨大有机农药收录音机切削工具动物玩具防水套管Frc
- 赛默飞世尔科技支持第二届全国药品质量分析油散热器池州印刷机取力器贴片加工Frc
- 第三季度高性能工程材料经营利润创纪录原木耐碱砖窗帘锚杆梭式窑Frc
- 工业旅游焕发新机从老厂房到机器人重庆企业测量仪高邮多用表矿用链条餐垫Frc
- 中国重汽绵专公司超额完成2017年任务指蚀刻机扼流圈炼胶机墨盒镇尺起重机链Frc
- 一种饼干自动给料计量包装生产工艺涟源吉它电脑租赁婚车租赁化工机械Frc