热门标签 | 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执行成功,如图:


推荐阅读
  • 从CodeIgniter中提取图像处理组件
    本指南旨在帮助开发者在未使用CodeIgniter框架的情况下,如何独立使用其强大的图像处理功能,包括图像尺寸调整、创建缩略图、裁剪、旋转及添加水印等。 ... [详细]
  • HTML前端开发:UINavigationController与页面间数据传递详解
    本文详细介绍了如何在HTML前端开发中利用UINavigationController进行页面管理和数据传递,适合初学者和有一定基础的开发者学习。 ... [详细]
  • MySQL Administrator: 监控与管理工具
    本文介绍了 MySQL Administrator 的主要功能,包括图形化监控 MySQL 服务器的实时状态、连接健康度、内存健康度以及如何创建自定义的健康图表。此外,还详细解释了状态变量和系统变量的管理。 ... [详细]
  • Vulnhub DC3 实战记录与分析
    本文记录了在 Vulnhub DC3 靶机上的渗透测试过程,包括漏洞利用、内核提权等关键步骤,并总结了实战经验和教训。 ... [详细]
  • Ubuntu 22.04 安装搜狗输入法详细指南及常见问题解决方案
    本文将详细介绍如何在 Ubuntu 22.04 上安装搜狗输入法,并提供常见问题的解决方法。包括下载安装包、更新源、安装依赖项等步骤。 ... [详细]
  • 在 Ubuntu 中遇到 Samba 服务器故障时,尝试卸载并重新安装 Samba 发现配置文件未重新生成。本文介绍了解决该问题的方法。 ... [详细]
  • Parallels Desktop for Mac 是一款功能强大的虚拟化软件,能够在不重启的情况下实现在同一台电脑上无缝切换和使用 Windows 和 macOS 系统中的各种应用程序。该软件不仅提供了高效稳定的性能,还支持多种高级功能,如拖放文件、共享剪贴板等,极大地提升了用户的生产力和使用体验。 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • 利用 Calcurse 在 Linux 终端高效管理日程与任务
    对于喜爱使用 Linux 终端进行日常操作的系统管理员来说,Calcurse 提供了一种强大的方式来管理日程安排、待办事项及会议。本文将详细介绍如何在 Linux 上安装和使用 Calcurse,帮助用户更有效地组织工作。 ... [详细]
  • Java中的引用类型详解
    本文详细介绍了Java中的引用类型,包括强引用、软引用、弱引用和虚引用的特点和应用场景。 ... [详细]
  • Ubuntu 环境下配置 LAMP 服务器
    本文详细介绍了如何在 Ubuntu 系统上安装和配置 LAMP(Linux、Apache、MySQL 和 PHP)服务器。包括 Apache 的安装、PHP 的配置以及 MySQL 数据库的设置,确保读者能够顺利搭建完整的 Web 开发环境。 ... [详细]
  • 本文详细介绍如何在忘记MySQL服务器密码的情况下进行密码重置,包括具体的步骤和注意事项。 ... [详细]
  • 周排行与月排行榜开发总结
    本文详细介绍了如何在PHP中实现周排行和月排行榜的开发,包括数据库设计、数据记录和查询方法。涉及的知识点包括MySQL的GROUP BY、WEEK和MONTH函数。 ... [详细]
  • PHP 5.5.31 和 PHP 5.6.17 安全更新发布
    PHP 5.5.31 和 PHP 5.6.17 已正式发布,主要包含多个安全修复。强烈建议所有用户尽快升级至最新版本以确保系统安全。 ... [详细]
  • PHP 使用 Cookie 进行访问授权的方法
    本文介绍了如何使用 PHP 和 Cookie 实现访问授权,包括表单验证、数据库查询和会话管理等关键步骤。 ... [详细]
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社区 版权所有