本文是个流水帐,供有兴趣的人把玩只用,欢迎有条件的同学测试一下性能如何。
系统环境: centos 6.2 64位
主要物件有:1、搜索引擎:http://xapian.org/
中文分词采用SCWS,分词效果不错,有字典导入导出工具,UTF8支持良好,如果安装PHP扩展比较感冒的,可以使用纯PHP实现的类库。
其实还有另外一个选择,就是张宴的http_scws系统,基于http协议,不过那个已经接近三年没有更新了,有兴趣的可以去玩玩。
这个封装不错,支持两种分词工具http_scws和scws,可能为了兼容性,分词前会自动把utf8先转成gbk,再转回去
xapian
下载地址:
核心 http://oligarchy.co.uk/xapian/1.2.8/xapian-core-1.2.8.tar.gz
语言支持 http://oligarchy.co.uk/xapian/1.2.8/xapian-bindings-1.2.8.tar.gz
安装xapian
cd /root/xapian-core-1.2.8
./configuremake
make install
需要zlib和uuid的支持才可以,请自行安装
yum install zlib-devel
yum install libuuid-devel
安装xapian的PHP支持
cd /root/xapian-bindings-1.2.8./configure --with-php --prefix=/usr/local/xapian PHP_EXTENSION_DIR=/usr/lib64/php/modules
make
make install
/etc/php.d/中新建一个文件xapian.ini
extension=xapian.so
/etc/init.d/php-fpm restart
undefined symbol: zend_error_noreturn in Unknown on line 0
修改php/php5/xapian_wrap.cc
第1107行
# define SWIG_ZEND_ERROR_NORETURN zend_error_noreturn
修改为
# define SWIG_ZEND_ERROR_NORETURN zend_error
虽然修改后编译时会有警告信息,但可以通过编译,目前也没有发现有不利影响
重新执行configure、编译、安装即可
如果是windows系统,就更简单了,请去http://www.flax.co.uk/xapian_binaries下载相关对应的PHP版本的扩展dll文件,加载即可
但运行效率不敢恭维
安装scws
下载地址: http://www.ftphp.com/scws/down/scws-1.1.9.tar.bz2
这个的安装步骤,官网的文档写的很详细,请见http://www.ftphp.com/scws/docs.php#instscws
我仅仅是把配置文件中的编码格式,从gbk改为utf8
重启fastcgi并通过phpinfo确认是否启动成功
最后这步就比较简单了,在网站主目录下创建一个项目fullindex
cp /root/xapian-bindings-1.2.8/php/php5/xapian.php /var/www/fullindex/.
此文件是xapian针对PHP的主要接口,但是用起来有所不便,可以下载封装类
http://code.google.com/p/xapwrap/
并将其中的xapwrap.php丢进fullindex
因在我的系统中,使用的都是utf8编码,就把xapwrap.php中的splitword_scws函数稍作修改,取消了转码过程,并初始化为utf8编码
这个看个人需求了
最后,如果想看看成果,可通过xapwrap中的xapwrap_test.php检验。