coreseek 簡(jiǎn)介
coreseek是一款基于sphinx開源的全文搜索引擎,與sphinx不同的是coreseek增加了一個(gè)帶有中文分詞的詞庫。
下載coreseek安裝包
本篇使用coreseek3.2.14穩(wěn)定版進(jìn)行講解,最新版本是4.1,但是只有測(cè)試版??梢試L試去官方地址http://www.coreseek.cn/下載安裝包,不過貌似官方下載地址已經(jīng)崩潰,如果下載不成功的話可以去網(wǎng)上查找其它下載渠道,我的是在新浪微盤上下載的,附上地址http://vdisk.weibo.com/s/z-JIj1kq4Z81。
開始安裝
在安裝coreseek之前確保在系統(tǒng)安裝了LNMP/LAMP環(huán)境。
安裝依賴軟件
yum install gcc make gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel expat-devel
將下載好的安裝包上傳到Linux,執(zhí)行解壓命令,解壓完成后進(jìn)入目錄
tar xzvf coreseek-3.2.14.tar.gz
cd coreseek-3.2.14
將會(huì)看到3個(gè)目錄分別是csft-3.2.14、mmseg-3.2.14、testpack,其中csft實(shí)際就是sphinx安裝包,mmseg為中文分詞安裝包,testpack是安裝完coreseek后測(cè)試用的。首先安裝中文分詞
cd mmseg-3.2.14
./configure --prefix=/usr/local/mmseg/
如果出現(xiàn)如下錯(cuò)誤
config.status: error: cannot find input file: src/Makefile.in
請(qǐng)執(zhí)行
aclocal
libtoolize --force
automake --add-missing
autoconf
autoheader
make clean
執(zhí)行編譯并安裝mmseg
make && make install
到這里mmseg安裝完畢,可以測(cè)試下中文分詞
echo '我們是中國人'>1.txt
/usr/local/mmseg/bin/mmseg -d /usr/local/mmseg/etc 1.txt
接下來安裝coreseek
cd ../csft-3.2.14
sh buildconf.sh #生成configure可執(zhí)行文件,如果當(dāng)前目錄已存在configure文件會(huì)發(fā)出警告:已存在其它版本autoconf,但不能保證能正常工作,如果出現(xiàn)任何問題,建議重新生成
./configure --prefix=/usr/local/coreseek \
--without-unixodbc \
--with-mmseg=/usr/local/mmseg \
--with-mmseg-includes=/usr/local/mmseg/include/mmseg/ \
--with-mmseg-libs=/usr/local/mmseg/lib/ \
--with-mysql
make && make install
到此coreseek就全部安裝完成了,測(cè)試一下coreseek
cd ../testpack #進(jìn)入安裝包提供的測(cè)試目錄
/usr/local/coreseek/bin/indexer -c etc/csft.conf --all #創(chuàng)建索引
/usr/local/coreseek/bin/search -c etc/csft.conf '我們是中國人'

創(chuàng)建索引時(shí)可能會(huì)出現(xiàn)以下錯(cuò)誤
1./usr/local/coreseek/bin/indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
#解決辦法
echo '/usr/local/mysql/lib'>>/etc/ld.so.conf
ldconfig
2.Unigram dictionary load Error Segmentation fault
#解決辦法(補(bǔ)充說明:這個(gè)是由于字典的路徑不對(duì),如果前面設(shè)置的字典所在目錄名稱就是mmseg3就不會(huì)出現(xiàn)這個(gè)問題了,坑...)
sed 's/mmse3/mmseg/' etc/csft.conf
安裝sphinx擴(kuò)展for php
#sphinx擴(kuò)展依賴于libsphinxclient,先安裝libsphinxclient
cd api/libsphinxclient
./configure
make && make install
#下載并安裝sphinx擴(kuò)展
wget http://pecl.php.net/get/sphinx-1.3.2.tgz
tar zxvf sphinx-1.3.2.tgz
cd sphinx-1.3.2
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
安裝libsphinxclient時(shí)如果報(bào)如下錯(cuò)誤
sphinxclient.c:1216: error: static declaration of 'sock_close' follows non-static declaration sphinxclient.c:280: note: previous declaration of 'sock_close' was here
請(qǐng)執(zhí)行
sed -ie '280s/^/static /' sphinxclient.c
接下來修改php.ini文件
增加下面這行到合適的位置,例如extension_dir配置行下面
extension=sphinx.so
執(zhí)行下面的命令,可以看到sphinx擴(kuò)展模塊已添加到php里了
/usr/local/php/bin/php -m #查看php擴(kuò)展模塊列表
不過此時(shí)還不能在php中使用sphinx,需要重啟php-fpm,我這里采用php-fpm.pid文件控制php-fpm進(jìn)程
執(zhí)行重啟php-fpm命令
kill -USR2 `/usr/local/php/var/run/php-fpm.pid`
重啟成功后打印phpinfo()

OK!整個(gè)安裝過程就到此結(jié)束了