热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于postgreSQL9.1的中文全文检索

最近在给公司的一个产品做中文全文检索的功能,由于目前所有的数据都是基于postgreSQL的,所以需要一个基于该数据库做一个中文分词的处理。鉴于网上很多资料安装混乱,特将我自己的亲自安装的过程记录下来,方便大家更好的安装。我这里是安装postgreSQL9.1

最近在给公司的一个产品做中文全文检索的功能,由于目前所有的数据都是基于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 zxvf cmake-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分词模块时,需要的文件)

安装完成后的目录结构如下

/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执行成功,如图:


推荐阅读
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 本文介绍了在Ubuntu 11.10 x64环境下安装Android开发环境的步骤,并提供了解决常见问题的方法。其中包括安装Eclipse的ADT插件、解决缺少GEF插件的问题以及解决无法找到'userdata.img'文件的问题。此外,还提供了相关插件和系统镜像的下载链接。 ... [详细]
  • Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
    php教程|php手册xml文件php教程-php手册Linux下部署Symfoy2对appcache和applogs目录的权限设置,symfoy2logs黑色记事本源码,vsco ... [详细]
  • 像跟踪分布式服务调用那样跟踪Go函数调用链 | Gopher Daily (2020.12.07) ʕ◔ϖ◔ʔ
    每日一谚:“Acacheisjustamemoryleakyouhaven’tmetyet.”—Mr.RogersGo技术专栏“改善Go语⾔编程质量的50个有效实践” ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • Ubuntu安装常用软件详细步骤
    目录1.GoogleChrome浏览器2.搜狗拼音输入法3.Pycharm4.Clion5.其他软件1.GoogleChrome浏览器通过直接下载安装GoogleChro ... [详细]
  • STM32与FPGA的对比及学习建议
    本文对比了野火STM32F103指南针板和Xilinx的PYNQ-Z2板(ZYNQ-7020),介绍了野火STM32F103指南针板的学习资料和讲解视频的详细程度,建议初学者学习野火的资料。同时,介绍了STM32开发所用的Keil程序和C指针的重要性。对于ZYNQ-7020的开发,提到了其自带的Linux、Ubuntu18.4系统以及使用SD卡烧入镜像的方法。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • 本文介绍了在Web应用系统中,数据库性能是导致系统性能瓶颈最主要的原因之一,尤其是在大规模系统中,数据库集群已经成为必备的配置之一。文章详细介绍了主从数据库架构的好处和实验环境的搭建方法,包括主数据库的配置文件修改和设置需要同步的数据库等内容。MySQL的主从复制功能在国内外大型网站架构体系中被广泛采用,本文总结了作者在实际的Web项目中的实践经验。 ... [详细]
  • PHP函数实现分页含文本分页和数字分页【PHP】
    后端开发|php教程PHP,分页后端开发-php教程最近,在项目中要用到分页。分页功能是经常使用的一个功能,所以,对其以函数形式进行了封装。影视网源码带充值系统,vscode配置根 ... [详细]
  • Oracle 和 mysql的9点区别【MySQL】
    数据库|mysql教程oracle,Oracle,money,mysql,coun数据库-mysql教程1.组函数用法规则mysql中组函数在select语句中可以随意使用,但在o ... [详细]
  • 如何将CentOS8转换为CentOSStream
    CentOS Stream是一个持续交付的Linux发行版,它在RHEL之前处于领先地位。它将具有滚动发布,即不断进行更改。CentOS将成为一个上游版本,它将具有测试补丁和更新。 ... [详细]
  • 系统安装Debian系统的安装方式和Ubuntu系统的安装方式几乎是一样的,毕竟Ubuntu系统是基于Debian的,就如同CentOS基于Redhat ... [详细]
author-avatar
mobiledu2502858053
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有