一, 前言
1,研究coreseek的动机
我有一个自己的笔记博客,经常在上面做一些技术文章分析。在查询一些文章的时候,以前只能将要查询的内容去mysql中用like模糊匹配。在文章多了的情况下,这样做法效率肯定不行。于是我把目标投向了中文搜索插件coreseek,并成功的把它使用到了我的项目当中。
效果图:
希望通过这篇分析,让有兴趣的同学少走些弯路。
2,概念介绍
sphinx是开源的搜索引擎,它支持英文的全文检索。但英文的天然分词符是空格,而中文则有比较复杂的分词要求。中国人提供了一个可供企业使用的,基于Sphinx的中文全文检索引擎。也就是说Coreseek实际上的内核还是Sphinx。但其最大的不同是coreseek有一个中文分词利器mmseg。
3,环境介绍
系统:Ubuntu
http服务:Apache/2.2.22
Mysql: Ver 14.14 Distrib 5.5.41
PHP: PHP 5.3.10
二, 下载并安装Coreseek
安装步骤
下载coreseek-3.2.14.tar.gz,并放置在/usr/local/src
首先,为了避免安装中出现依赖包缺失,你需要补一下血
apt-get install make gcc g++ automake libtool mysql-client libmysqlclient15-dev libxml2-dev libexpat1-dev
上面那个命令你执行就行,不然可能会因为软件包不够新出现各种奇葩问题。比如我就更新了159M的软件包。(我在遇到各种坑后才回头补的血)
1,安装mmseg分词模块
cd /usr/local/src
tar zxvf coreseek-3.2.14.tar.gz #解压
cd coreseek-3.2.14
cd mmseg-3.2.14
./bootstrap #输出的warning信息可以忽略,如果出现error则需要解决
./configure --prefix=/usr/local/mmseg3 #配置
make #编译
make install #安装
1.1)可能遇到的问题和解决办法:
在执行./bootstrap时出现./bootstrap: 27: ./bootstrap: autoconf: not found 的错误,
原因:因为没有安装automake 工具, (ubuntu 10.04)用下面的命令安装好就可以了。
sudo apt-get install autoconf automake libtool
1.2)可能遇到的问题:在安装分词模块 mmseg ,编译安装到最后,出现annot find input file: src/Makefile.in 的错误
然后查了一下,只找到解决办法,如下:
aclocal //是一个perl 脚本程序,它的定义是:“aclocal - create aclocal.m4 by scanning configure.ac”
libtoolize --force //运行后有一个错误,不用管它。
automake --add-missing
autoconf
autoheader
make clean
然后在重新编译
./configure --prefix=/usr/local/mmseg3
make && make install
编译安装成功
总结:其实这个报错原因我也没查出来。反正按照解决办法就成功了,谁若知道拜托请留言,谢谢。
2、安装CoreSeek
cd /usr/local/src
cd coreseek-3.2.14
cd csft-3.2.14
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 #配置
make #编译
make install #安装
3,测试mmseg分词、coreseek搜索、MySQL数据源
cd /usr/local/src
cd coreseek-3.2.14
cd testpack
cat /usr/local/src/coreseek-3.2.14/testpack/var/test/test.xml #此时应该正确显示中文,如下图所示
/usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc /usr/local/src/coreseek-3.2.14/testpack/var/test/test.xml
/usr/local/coreseek/bin/indexer -c /usr/local/src/coreseek-3.2.14/testpack/etc/csft.conf --all
/usr/local/coreseek/bin/search -c /usr/local/src/coreseek-3.2.14/testpack/etc/csft.conf 网络搜索
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/sphinx-min.conf.dist
/usr/local/coreseek/bin/indexer -c /usr/local/src/coreseek-3.2.14/testpack/etc/csft.conf --all --rotate #启动服务,更新索引
如图,且无报错。则说明你的coreseek已经能够正常运行了。
3.1)可能遇到的问题与解决办法:
在输入/usr/local/coreseek/bin/indexer -c etc/csft.conf --all,报xmlpipe2 support NOT compiled in. To use xmlpipe2, install missing错误
原因:
缺少xmlpipe2库,解决:
apt-get install expat-*
然后重新编译coreseek,记得make clean
4,coreseek配置和使用
cp /usr/local/src/coreseek-3.2.14/testpack/etc/csft_mysql.conf /usr/local/coreseek/etc/csft_mysql.conf #拷贝MySQL数据源配置文件
ln -s /usr/local/coreseek/etc/csft_mysql.conf /etc/csft_mysql.conf #添加软连接
vim /etc/csft_mysql.conf #