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


推荐阅读
  • 深入分析十大PHP开发框架
    随着PHP技术的发展,各类开发框架层出不穷,成为了开发者们热议的话题。本文将详细介绍并对比十款主流的PHP开发框架,旨在帮助开发者根据自身需求选择最合适的工具。 ... [详细]
  • iTOP4412开发板QtE5.7源码编译指南
    本文详细介绍了如何在iTOP4412开发板上编译QtE5.7源码,包括所需文件的位置、编译器设置、触摸库编译以及QtE5.7的完整编译流程。 ... [详细]
  • 当我在命令行登录MySQL后,无法访问任何依赖数据库连接的PHP应用。此问题每次都会出现。以下是复现问题的具体步骤及解决方案。 ... [详细]
  • 本文介绍了如何在Ubuntu 16.04系统上配置Nginx服务器,以便能够通过网络访问存储在服务器上的图片资源。这解决了在网页开发中需要使用自定义在线图标的需求。 ... [详细]
  • 本文探讨了Unix和Linux操作系统的起源和发展历程。从20世纪60年代计算机技术的初期阶段,到Unix的诞生及后续Linux的崛起,文章详细介绍了这些操作系统如何逐步成为现代计算不可或缺的一部分。 ... [详细]
  • 在Ubuntu 14.04 (Desktop AMD64) 上安装与配置ROS Indigo
    本文档详细介绍了如何在Ubuntu 14.04 (Desktop AMD64) 系统上安装和配置ROS Indigo。包括设置软件源、安装ROS核心组件、初始化rosdep以及创建ROS工作空间等步骤。 ... [详细]
  • 本文详细介绍了如何在Ubuntu的Enlightenment (E17) 桌面环境中管理和优化桌面图标及根菜单。通过本文,您将了解这些功能的作用及其配置方法。 ... [详细]
  • 当unique验证运到图片上传时
    2019独角兽企业重金招聘Python工程师标准model:public$imageFile;publicfunctionrules(){return[[[na ... [详细]
  • MySQL Debug 模式的实现与应用
    本文详细介绍了如何启用和使用 MySQL 的调试模式,包括编译选项、环境变量配置以及调试信息的解析。通过实际案例展示了如何利用调试模式解决客户端无法连接服务器的问题。 ... [详细]
  • Ubuntu GamePack:专为游戏爱好者打造的Linux发行版
    随着Linux系统在游戏领域的应用越来越广泛,许多Linux用户开始寻求在自己的系统上畅玩游戏的方法。UALinux,一家致力于推广GNU/Linux使用的乌克兰公司,推出了基于Ubuntu 16.04的Ubuntu GamePack,旨在为Linux用户提供一个游戏友好型的操作环境。 ... [详细]
  • 探讨HTML中的DIV样式难题
    本文深入分析了HTML中常见的DIV样式问题,并提供了有效的解决策略。适合所有对Web前端开发感兴趣的读者。 ... [详细]
  • PHP 中 preg_match 函数的 isU 修饰符详解
    本文详细解析 PHP 中 preg_match 函数中 isU 修饰符的具体含义及其应用场景,帮助开发者更好地理解和使用正则表达式。 ... [详细]
  • 本文介绍如何在Ubuntu环境下为OpenWrt系统构建并安装首个'Hello World'应用程序的IPK包。文章不仅涵盖了基本的环境搭建,还详细说明了代码编写、Makefile配置及最终的IPK包生成与安装过程。 ... [详细]
  • PHP中静态类与静态变量的应用差异探讨
    本文深入探讨了PHP编程语言中静态类与静态变量的具体应用及其差异性,旨在帮助开发者更好地理解和运用这些概念,以提升代码质量和效率。 ... [详细]
  • 利用 Calcurse 在 Linux 终端高效管理日程与任务
    对于喜爱使用 Linux 终端进行日常操作的系统管理员来说,Calcurse 提供了一种强大的方式来管理日程安排、待办事项及会议。本文将详细介绍如何在 Linux 上安装和使用 Calcurse,帮助用户更有效地组织工作。 ... [详细]
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社区 版权所有