由于工作需求,需在站点中添加一个检索的功能,检索的条件有三个且权重为 标题 > 标签 > 内容。在技术选型的过程中考虑了Lucenne、Sphinx、XunSearch三种索搜引擎,加上业务的需求,数据量大致在一万左右,而且是用PHP开发,所以最终选择了XunSearch,XunSearch对中文的支持也是非常棒的,也提供了全面的API文档,开发起来非常快。Lucenne、Sphinx对大数据量支持的比较好,性能很高。Lucenne需要java环境的支持而我这里是PHP的环境,所以排除了。再来看看我们的Sphinx:
Sphinx支持高速建立索引(可达10MB/秒,而Lucene建立索引的速度是1.8MB/秒)
高性能搜索(在2-4 GB的文本上搜索,平均0.1秒内获得结果)
高扩展性(实测最高可对100GB的文本建立索引,单一索引可包含1亿条记录)
支持分布式检索
支持基于短语和基于统计的复合结果排序机制
支持任意数量的文件字段(数值属性或全文检索属性)
支持不同的搜索模式(“完全匹配”,“短语匹配”和“任一匹配”)
支持作为Mysql的存储引擎
等等。。。
在网上找了很多安装教程,安装的狠蛋疼,最终在博客上找到了一个比较好的,原文点这里,我在它上面改了一点东西,扩展性变得也比较好,关于Coreseek的说明网上一大推,这里就不再说了,个人理解Coreseek = Sphinx + 中文分词。废话不多说,进入正题
1、先安装环境:
yum install make gcc gcc++gcc-c++libtool autoconf automake imake mysql-devellibxml2-develexpat-devel
注: 检测以上软件是否安装,如果没有请确保安装;否则无法正常安装Coreseek-3.2.14
2、开始安装:
在coreseek的官网下载coreseek-3.2.14.tar.gz,传到自己的服务器/usr/local/下,反正我在使用命令wgethttp://www.coreseek.cn/uploads/csft/3.2/coreseek-3.2.14.tar.gz没有下载成功,
注意:原文mmseg是安装在/usr/local/mmseg3下,我是安装在/usr/local/mmseg,所以导致我在后面创建索引的时候报错,如图
后来摸索着在路径/usr/local/coreseek-3.2.14/testpack/etc在这个路径下,将代码
charset_dictpath = /usr/local/mmseg3/etc/改成charset_dictpath = /usr/local/mmseg/etc/就可以。。。
进入/usr/local/下
tar -zxvf coreseek-3.2.14.tar.gz
cd coreseek-3.2.14
##############安装 mmseg #################
cd mmseg-3.2.14
./bootstrap #输出的warning信息可以忽略,如果出现error则需要解决,一般不会出现错误
./configure --prefix=/usr/local/mmseg #指定 mmseg 的安装目录
make && make install
#############安装 csft-3.2.14 ###############
cd /usr/local/coreseek-3.2.14/csft-3.2.14
#这里我们要修改 src/sphinxexpr.cpp 文件,将该文件中的 1013、1047、1080 行的 ExprEval 改为 this->ExprEval(这里的行数跟网上的教程说的行数不一样,可能是版本的问题吧,但是如果你用的是我提供的版本,该行数是正确的),懂点 C++ 的同学也可以自己看看 ExprEval 错在哪里。哈哈我不懂C++都看懂了。。。
#改完上面所说的问题后:
sh buildconf.sh
./configure --prefix=/usr/local/coreseek --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg/include/mmseg/--with-mmseg-libs=/usr/local/mmseg/lib/--with-mysql
make && make install
在安装的过程中,只要不提示错误 error,那么其他的如 warning 信息都是可以忽略的。
至此我们已经成功的将中文检索引擎安装到我们服务器上来了。
3、测试
进入目录/usr/local/coreseek-3.2.14/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 网络搜索#搜索关键字 网络搜索
/usr/local/coreseek/bin/searchd -c etc/csft.conf #正常开启搜索服务
/usr/local/coreseek/bin/searchd -c etc/csft.conf--stop #如要停止搜索服务
/usr/local/coreseek/bin/indexer -c etc/csft.conf--all --rotate #如要已启动服务,要更新索引
到此安装和测试都完成了。。。具体的在后面慢慢研究