装有Linux系统的电脑一台
xapian开源软件包
2. xapian简介及资料 具体看官网的文档 http://xapian.org/docs/ 文档写得不错,可以认真研究一下。 中文里面,这个系列也不错:http://blog.csdn.net/visualcatsharp/article/details/4176021 xapian主要包括:建索引(indexer)、检索(searcher)、排序(ranker)、引擎数据存储(database)等主要功能。 注意:没有spider功能,这个也有很多开源的工具。 没有自带分词功能,需要再找个开源分词软件,后面选择mmseg,整体感觉好一些。
3. 软件安装 环境:centos6.2 64位 安装如下几个软件:xapian核心包:xapian-core-1.2.12.tar.gzxapian应用包:xapian-omega-1.2.12.tar.gz开源分词软件:mmseg-3.2.14.gz 几个依赖包安装(如果还缺什么包的话再装):yum install libuuid-develyum install pcre-develyum install automakeyum install libtool xapian安装比较简单,看系统INSTALL文件,几步搞定 mmseg安装,先把几个工具安装好后运行./bootstrap;再运行./configure和make make install什么的 xapian-omega安装也还行,继续看INSTALL文件搞定 注意:不想安装到系统默认位置的话,可以通过 './configure --prefix=路径' 设定路径
4. 程序修改 修改omega程序,增加分词功能,主要修改这几个文件:新增:seg.hseg.cc 分词函数封装,调用mmseg库修改:Makefile 改一些编译依赖omega.h 包含seg.h头文件omega.cc 在g = cgi_params.equal_range('P');下面直接对query_string加入分词功能scriptindex.cc 在建索引的工具里面加入分词功能;在case Action::INDEX下面加入分词功能query.cc 这个修改主要是美观些,在检索时,显示的原始查询串不会被分词(可以不改) 改好后,重新make clean;make;make install一下,就基本万事俱备了
5. 索引数据 网上抓一些网页,把title、url、content什么的提取出来,整成这种格式:url=XXXtitle=XXXcontent=XXX 两个doc之前空行隔开 配置script脚本,有一个现成的可以改改,参考http://xapian.org/docs/omega/文档里面说明 运行scriptindex程序,把索引建起来
6. 搭环境 把httpd什么的环境搭一下,需要支持cgi-bin的(默认好像一般都支持) omega程序是最终的可执行cgi-bin程序,还有一些网页模板文件(template/)、分词配置和词典,以及scriptindex生成的索引数据文件,拷到cgi-bin目录下,细节的地方再改改,基本就可以运行起来了。 注意cgi-bin下面程序的执行权限,http的访问好像是属于apache用户,这样omega依赖的libxapian.so.22动态库所有路径apache用户没有权限访问,最简单的办法是把libxapian.so.22拷到/lib64下面(如果原来就安装到系统目录下,那就不用拷了) 把一些配置什么的改改,基本上就可以了。
总结,当时实际看的时候,我把xapian的一些接口函数都认真看了一下,简单研究了一下索引结构和排序方法,xapian是有词的offset信息的,但在排序时用了bm25算法,没有把offset对排序的影响加进去,但这些信息都是可以在检索时取到的(有一些term posting什么的),所以理论上可以对排序方法作更多扩展。不过这些用法偏高级了,如果不是专门从事搜索引擎相关的,基本也不会用到,基本的功能也就满足了80%的需求了。