基于postgreSQL9.1的中文全文检索(基于Linux)

前端之家收集整理的这篇文章主要介绍了基于postgreSQL9.1的中文全文检索(基于Linux)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

最近在给公司的一个产品做中文全文检索的功能,由于目前所有的数据都是基于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.gzCRF++-0.54.gz

解压需要注意:不要用gunzip这个命令解压后(还是一个压缩文件,只是没有压缩文件的扩展名而已),要用

tar zxvfcmake-2.8.6.gz

tar zxvf CRF++-0.54.gz

才能生成目录的形式,

安装CRF++和CMake都很简单,都是解压生成目录,进入该目录后,然后就是三个步骤:

./configure

make

make install

最后安装nlpbamboo-1.1.2.bz2

这个文件解压也要注意,运行命令如下:

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_116@
  • /opt/bamboo/bin/ : 可执行程序和训练脚本文件
  • /opt/bamboo/etc/ : 配置文件
  • /opt/bamboo/template/ : CRF训练模板文件 (.tmpl)
  • /opt/bamboo/processor/ : processor库
  • /opt/bamboo/exts/ : 扩展接口
  • /usr/lib/ : 动态链接
  • /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的版本就不行了。

    我采用的是写出sql文件,让postgresql执行成功,如图:

    猜你在找的Postgre SQL相关文章