sphinx是一个专业的开源搜索引擎,但不支持中文。coreseek相当于sphinx的中文版,使用了mmseg3来支持中文分词。虽然coreseek里面的shpinx版本很低,目前稳定版的coreseek 3.2.14自带的shpinx只有0.9.9,但还用就行。很多教程中,先安装shpinx的最新版,再安装coreseek,这个,不知道是怎么传的,反正这么安装是完全没必要的。
我使用的环境是CentOS 7
coreseek官方网站是http://www.coreseek.cn,有很全面的资料。
http://sphinxsearch.com 是shpinx的官网,但新版本差别很大,基本就不用看了。
1. 下载
$ wget http://www.coreseek.cn/uploads/csft/3.2/coreseek-3.2.14.tar.gz
2. 解压缩
$ tar xzvf coreseek-3.2.14.tar.gz
3. 安装mmseg
$ cd mmseg-3.2.14
$ ./bootstrap #输出的warning信息可以忽略,如果出现error则需要解决
$ ./configure --prefix=/usr/local/mmseg3
$ make && make install
$ cd ..
4. 修改coreseek
因为新版本的gcc改动很大,所以需要修改coreseek的几处代码,在解压缩出的coreseek-3.2.14目录下,可以找到文件sphinxexpr.cpp
搜索// ‘this‘ fixes gcc braindamage可以找到3处 T val = ExprEval ( this->m_pArg, tMatch ); // ‘this‘ fixes gcc braindamage
修改成
T val = this->ExprEval ( this->m_pArg, tMatch ); // ‘this‘ fixes gcc braindamage
否则会出现编译错误。
5. 好了,可以正式的安装coreseek了,在这之前,请保证你的mysql或者mariadb安装正常,否则这一步无法配置数据源为mysql
$ cd csft-3.2.14 或者 cd csft-4.0.1 或者 cd csft-4.1
$ sh buildconf.sh #输出的warning信息可以忽略,如果出现error则需要解决
$ ./configure --prefix=/usr/local/coreseek --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql ##如果提示mysql问题,可以查看MySQL数据源安装说明
$ make && make install
$ cd ..
6. 测试
如果上一步没有错误,这里就可以开始基础测试了,
$ cd testpack
$ cat var/test/test.xml #此时应该正确显示中文
$ /usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc var/test/test.xml
$ /usr/local/coreseek/bin/indexer -c etc/csft.conf --all
$ /usr/local/coreseek/bin/search -c etc/csft.conf 网络搜索
这些命令的执行是否正确,我觉得应该可以判断吧,就不写详细的结果了。
7. 服务配置
安装后,会有一个默认的例子
$ mysql -u test < /usr/local/coreseek/etc/example.sql
执行这句安装例子需要的数据。
$ /usr/local/coreseek/bin/indexer --all
建立索引,--all会对所有的配置文件建立索引,目前我们只有一个,就无所谓了。同时也说明,sphinx可以同时存在多个配置文件的。
shpinx的守护进程是searchd,配置文件在/usr/local/coreseek/etc,如果你没有改上一步 --prefix参数的话。
默认的配置文件,名字是sphinx.conf.dist,复制一份,改成csft.conf。
打开csft.conf
找到charset_type项,修改配置,并添加charset_dictpath,注意 /usr/local/mmseg3/etc/ 要以/结尾并且要正确,这个目录下必须有uni.lib文件。
charset_type = zh_cn.utf-8
charset_dictpath = /usr/local/mmseg3/etc/
注释掉3行配置
# stopwords = /var/csft/data/stopwords.txt
# wordforms = /var/csft/data/wordforms.txt
# exceptions = /var/csft/data/exceptions.txt
最后,检查一下数据库连接参数,在配置文件的最开始部分。
OK,保存配置文件。
$ /usr/local/coreseek/bin/search test
这个时候可以看到搜索结果。
$ /usr/local/coreseek/bin/searchd
启动搜索服务。
8. PHP测试
在解压缩的源代码目录下的api目录中,可以找到sphinxapi.php和test.php两个文件,执行test就可以进行测试了。PHP开发的时候,包含sphinxapi.php后,就可以仿照test进行搜索相关的开发了。