CentOS6.5安装coreseek和sphinx php扩展

时间:2022-05-30 08:33:01

coreseek 简介

coreseek是一款基于sphinx开源的全文搜索引擎,与sphinx不同的是coreseek增加了一个带有中文分词的词库。

下载coreseek安装包

本篇使用coreseek3.2.14稳定版进行讲解,最新版本是4.1,但是只有测试版。可以尝试去官方地址http://www.coreseek.cn/下载安装包,不过貌似官方下载地址已经崩溃,如果下载不成功的话可以去网上查找其它下载渠道,我的是在新浪微盘上下载的,附上地址http://vdisk.weibo.com/s/z-JIj1kq4Z81

开始安装

在安装coreseek之前确保在系统安装了LNMP/LAMP环境。
安装依赖软件

yum install gcc make gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel expat-devel

将下载好的安装包上传到Linux,执行解压命令,解压完成后进入目录

tar xzvf coreseek-3.2.14.tar.gz
cd coreseek-3.2.14

将会看到3个目录分别是csft-3.2.14、mmseg-3.2.14、testpack,其中csft实际就是sphinx安装包,mmseg为中文分词安装包,testpack是安装完coreseek后测试用的。首先安装中文分词

cd mmseg-3.2.14
./configure --prefix=/usr/local/mmseg/

如果出现如下错误
config.status: error: cannot find input file: src/Makefile.in
请执行

aclocal
libtoolize --force
automake --add-missing
autoconf
autoheader
make clean

执行编译并安装mmseg

make && make install

到这里mmseg安装完毕,可以测试下中文分词

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可执行文件,如果当前目录已存在configure文件会发出警告:已存在其它版本autoconf,但不能保证能正常工作,如果出现任何问题,建议重新生成
./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就全部安装完成了,测试一下coreseek

cd ../testpack #进入安装包提供的测试目录
/usr/local/coreseek/bin/indexer -c etc/csft.conf --all  #创建索引
/usr/local/coreseek/bin/search -c etc/csft.conf '我们是中国人'
CentOS6.5安装coreseek和sphinx php扩展
Paste_Image.png

创建索引时可能会出现以下错误
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

#解决办法(补充说明:这个是由于字典的路径不对,如果前面设置的字典所在目录名称就是mmseg3就不会出现这个问题了,坑...)
sed 's/mmse3/mmseg/' etc/csft.conf

安装sphinx扩展for php

#sphinx扩展依赖于libsphinxclient,先安装libsphinxclient
cd api/libsphinxclient
./configure
make && make install
#下载并安装sphinx扩展
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时如果报如下错误
sphinxclient.c:1216: error: static declaration of 'sock_close' follows non-static declarationsphinxclient.c:280: note: previous declaration of 'sock_close' was here
请执行

sed -ie '280s/^/static /' sphinxclient.c

接下来修改php.ini文件
增加下面这行到合适的位置,例如extension_dir配置行下面
extension=sphinx.so
执行下面的命令,可以看到sphinx扩展模块已添加到php里了

/usr/local/php/bin/php -m #查看php扩展模块列表

不过此时还不能在php中使用sphinx,需要重启php-fpm,我这里采用php-fpm.pid文件控制php-fpm进程
执行重启php-fpm命令

kill -USR2 `/usr/local/php/var/run/php-fpm.pid`

重启成功后打印phpinfo()



作者:Barry锋
链接:http://www.jianshu.com/p/825872bc6d0e
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。