基于scws xapian的简易中文全文搜索系统

本文是个流水帐,供有兴趣的人把玩只用,欢迎有条件的同学测试一下性能如何。

系统环境: centos 6.2 64位

主要物件有:

1、搜索引擎:http://xapian.org/


2、分词:http://www.ftphp.com/scws/index.php
      中文分词采用SCWS,分词效果不错,有字典导入导出工具,UTF8支持良好,如果安装PHP扩展比较感冒的,可以使用纯PHP实现的类库。

      其实还有另外一个选择,就是张宴的http_scws系统,基于http协议,不过那个已经接近三年没有更新了,有兴趣的可以去玩玩。


3、PHP封装:http://code.google.com/p/xapwrap/
      这个封装不错,支持两种分词工具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

./configure 
make 

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


如果xapian扩展启动失败,并报告这个错误
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检验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值