最近在给公司的一个产品做中文全文检索的功能,由于目前所有的数据都是基于postgresql的,所以需要一个基于该数据库做一个中文分词的处理。鉴于网上很多资料安装混乱,特将我自己的亲自安装的过程记录下来,方便大家更好的安装。
我这里是安装postgresql9.1,目录是/opt/Postgresql/9.1/。关于postgresql9.1安装非常简单,这里就不做介绍了。
目前采用Bamboo的分词开源项目,
安装此分词时,需要先安装CRF++和CMake编译环境,下载路径如下:
安装CRF++工具包
请参考http://crfpp.sourceforge.net
安装CMake编译环境
Slackware 默认自带CMake
Ubuntu & Debian 系统使用: apt-get install cmake
archlinux系统: 使用pacman -S cmake
其他Linux/Unix系统,请去CMake官方下载源代码编译。地址是:http://www.cmake.org
注:cmake需要2.6版本以上
我安装的时候用的是cmake-2.8.6.gz和CRF++-0.54.gz
解压需要注意:不要用gunzip这个命令解压后(还是一个压缩文件,只是没有压缩文件的扩展名而已),要用
tar zxvfcmake-2.8.6.gz
tar zxvf CRF++-0.54.gz
才能生成目录的形式,
安装CRF++和CMake都很简单,都是解压生成目录,进入该目录后,然后就是三个步骤:
./configure
make
make install
这个文件解压也要注意,运行命令如下:
bzip2 -d nlpbamboo-1.1.2.bz2
tar xvf nlpbamboo-1.1.2
就能生成目录了,
或者运行命令
tar -jxvf nlpbamboo-1.1.2.bz2
进入目录再运行如下命令:
cd nlpbamboo-1.1.2
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=release
make all
make install
就安装完成了bamboo分词库了。
后面是安装PHP扩展(可选)
cd /opt/bamboo/exts/
PHPize
make
make install
完毕
开始下载分词库数据文件
cd /opt/bamboo/
wget http://nlpbamboo.googlecode.com/files/index.tar.bz2
tar -jxvf index.bz2
cd /opt/bamboo/exts/postgres/pg_tokenize/
make
make install
cd /opt/bamboo/exts/postgres/chinese_parser/
make
make install
touch /opt/Postgresql/9.1/share/postgresql/tsearch_data/chinese_utf8.stop(这个命令是在postgresql安装Tsearch2分词模块时,需要的文件)
安装完成后的目录结构如下
-
@H_403_117@/opt/bamboo/bin/ : 可执行程序和训练脚本文件
@H_403_117@/opt/bamboo/etc/ : 配置文件
@H_403_117@/opt/bamboo/template/ : CRF训练模板文件 (.tmpl)
@H_403_117@/opt/bamboo/processor/ : processor库
@H_403_117@/opt/bamboo/exts/ : 扩展接口
@H_403_117@/usr/lib/ : 动态链接库
@H_403_117@/usr/include/bamboo/ : C/C++的头文件
我在安装的过程出现了一个错误,大家在安装的时候需要注意
在postgres里安装分词函数的时候出现了以下错误的信息:
postgres=# \i /opt/Postgresql/9.1/share/postgresql/contrib/pg_tokenize.sql
SET
psql.bin:/opt/Postgresql/9.1/share/postgresql/contrib/pg_tokenize.sql:2: ERROR: could not load library "/opt/Postgresql/9.1/lib/postgresql/pg_tokenize.so": libbamboo.so.2: 无法打开共享对象文件: 没有那个文件或目录
后来为了验证bamboo安装是否成功,我运行了命令如下:
cd /opt/bamboo/bin
./bamboo -p crf_seg
也出现了以下的错误信息如图:
解决方式:
echo "/usr/lib">>/etc/ld.so.conf(这个命令是bamboo对应的动态链接库)
echo "/usr/local/lib" >>/etc/ld.so.conf(这个命令是CRF对应的动态链接库)
ldconfig
完成之后,测试结果如下:
这是就说明bamboo完全安装成功了。
另外再运行也出现以下问题,如图:
解决方式:
是分词库下载问题导致,处理方式如图:
这时再安装分词函数即成功,如图:
接着安装Tsearch2分词模块,成功如图:
目前有个问题是我采用的是SecureCRT的远程终端,登录到postgres后为了检验分词函数和Tsearch分词模块函数的时候,无法直接输入中文。
不知道是什么问题导致,但是在8.x版本里是可以的,在9.1的版本就不行了。