概述:
環(huán)境:LINUXMYSQL4/5(5以上的版本直接可以在插件形式編譯進(jìn)MYSQL內(nèi))使用MYSQL的朋友一定有這樣的經(jīng)歷,那就是在檢索中文的時(shí)候往往力不從心。使用LIKE的效率實(shí)在不敢恭維,而且對(duì)搜索的結(jié)果也不是很滿意的。很希望有一個(gè)完美的解決方案。但是事實(shí)的真相是殘酷的。這個(gè)完
環(huán)境:LINUX MYSQL4/5(5以上的版本直接可以在插件形式編譯進(jìn)MYSQL內(nèi))使用MYSQL的朋友一定有這樣的經(jīng)歷,那就是在檢索中文的時(shí)候往往力不從心。使用LIKE的效率實(shí)在不敢恭維,而且對(duì)搜索的結(jié)果也不是很滿意的。 很希望有一個(gè)完美的解決方案。但是事實(shí)的真相是殘酷的。這個(gè)完美的方案可能讓你絞盡腦汁還是兩手空空。
今天我給大家?guī)淼?nbsp;MYSQL中文分詞全文檢索 可能會(huì)讓您有一種相見恨晚的感覺。下面開始講解:
在豬肉還是7塊多的時(shí)候,我在CU里閑逛。突然看到一個(gè)大板(HIGHTMAN)的帖子。(我不記得地址了-______-).大致內(nèi)容就是修改MYSQL的源碼。加入中文分詞功能。原理依據(jù)的是一個(gè)強(qiáng)大的中文詞典。(詳細(xì)可進(jìn)該大牛主頁hightman.cn查看)所以我得聲明一下。該功能的版權(quán)歸HIGHTMAN大牛所有。本人不涉及版權(quán)問題。
可喜的是該牛的MYSQL修改版是在GPL發(fā)放的。所在大家不用擔(dān)心(除非你想自己打磨-______-)。好啰嗦啊,扯了大半天還沒到正題。我也覺得我自己好啰嗦,黃金又漲價(jià)了,哎。牛奶都從46漲到了65一箱了。
----------------------OH YEAH SO HOT!----------------------------
開始:
cd/ /home/apps
wget
tar zxf mysql-5.1.11-hi1.tgz
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 該過程比較漫長(zhǎng)(取決于機(jī)器性能了) #復(fù)制my.cnf到系統(tǒng)啟動(dòng)項(xiàng)
cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
#增加mysql用戶組
groupadd mysql
useradd -g mysql mysql
#初始化
cd /usr/local/mysql
bin/mysql_install_db --user=mysql |注:--user=mysql 初始化表并且規(guī)定用mysql用戶
#設(shè)置給mysql和root用戶設(shè)定訪問權(quán)限 我們先進(jìn)入mysql目錄
cd /usr/local/mysql
chown -R root /usr/local/mysql |注:設(shè)定root能訪問/usr/local/mysq
chown -R mysql /usr/local/mysql/var |注:設(shè)定mysql用戶能訪問/usr/local/mysql/var
chgrp -R mysql /usr/local/mysql |注:設(shè)定mysql組能夠訪問/usr/local/mysq
bin/mysqld_safe --user=mysql & |啟動(dòng)之 #設(shè)定開機(jī)就啟動(dòng)mysql,進(jìn)入源碼目錄下
cd /usr/local/mysql/share/mysql
cp mysql.server /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明白是怎么回事吧。不懂的自己補(bǔ)習(xí)去。
重啟 mysqld 服務(wù)器
whereis mysql
/etc/init.d/mysql
service mysql
/etc/init.d/mysql start|stop|restart
#以下的情況我們假定您已經(jīng)有了APCHE PHP環(huán)境。 開始:注意。MYSQL默認(rèn)的字符編碼是GBK。所以在這里建的表最好也是GBK的UTF8的需要改一下MYSQL默認(rèn)編碼再進(jìn)行如下操作
DATABASEB1
show databases;
use db1;
#DB1里有個(gè)表叫TABLE1 TABLE1 字段為:
aid
gid
uid
atitle
acontent
請(qǐng)注意。atitle,acontent 這兩個(gè)里面放的是我們需要檢索的內(nèi)容。 下面建立全文索引 也就是FULLTEXT
alter table1 add fulltext ft_gbk(atitle,acontent) with parser hightman;
這樣索引就建成了。
PHP查詢語句為
select * from table1 where match(atitle,acontent) against('$keyword');
返回結(jié)果就跟普通一樣引用就可以了。 值得一提的是速度非常快。
100萬的數(shù)據(jù)通常檢索不到0.5秒

有圖為證范例:1.南極快車 在搜索框中輸入' PHP mysql教程 ' .' PHP教程 ' 或者其它關(guān)鍵詞可看到該插件的強(qiáng)大之處。 近期帖出UTF8編碼下的簡(jiǎn)繁轉(zhuǎn)換一個(gè)簡(jiǎn)潔的實(shí)例。

