您的位置:首页 > 数据库

借助 NlpBamboo 中文分词打造 PostgreSQL 的全文检索

2012-06-09 16:40 447 查看
借助NlpBamboo中文分词打造PostgreSQL的全文检索«TheMagicDIrk

借助NlpBamboo中文分词打造PostgreSQL的全文检索

FreeBSD,
Web开发添加评论PostgreSQL从8.3开始内建了全文检索功能,对于我们来说,只需要再找一个中文分词组件即可利用PostgreSQL打造完善的全文检索应用。我选择的是NlpBamboo这个分词库。

以下是在FreeBSD7.2+PostgreSQL8.3环境下的配置过程(FreeBSD和PostgreSQL相关的安装和设置请自行找资料)。

1、安装CMake:

viewsource
print?

1.
cd
/usr/ports/devel/cmake/
2.
make
install
clean
2、安装crf++:

viewsource
print?

1.
cd
/usr/ports/science/crf++/
2.
make
install
clean
3、NlpBamboo路径比较特殊,建立以下符号链接(其实不是全部需要;或者你偷懒一点,直接拷贝拉倒):

viewsource
print?

1.
ln
-s/usr/
local
/lib/libcrfpp.a/usr/lib/libcrfpp.a
2.
ln
-s/usr/
local
/lib/libcrfpp.so/usr/lib/libcrfpp.so
3.
ln
-s/usr/
local
/lib/libcrfpp.so.0/usr/lib/libcrfpp.so.0
4、获取NlpBamboo:

GoogleCode取出NlpBamboo代码;或者从NlpBamboo下载打包文件。

5、进行FreeBSD下的补丁修改:

这里需要注意,由于NlpBamboo中的bamboo工具用到了getline这个函数,但FreeBSD默认没有提供,你可以找一个替代品。我比较偷懒,直接把相关代码注释掉了,因为我实际上根本不会在服务器上用这个工具。我都是在本地进行相关训练统计。

这个nlpbamboo-freebsd.patch(2.0KB)是我当前在用的一个Patch文件,你可以参考。

6、编译并安装NlpBamboo:

viewsource
print?

1.
cd
nlpbamboo-
read
-only
#这里应该是你自己解压或者代码取出后的目录
2.
mkdir
build
3.
cd
build
4.
cmake..-DCMAKE_BUILD_TYPE=release
5.
make
all
6.
make
install
NlpBamboo默认会安装到/opt/bamboo/目录,有特殊要求,自己修改。

NlpBamboo安装后的目录结构:

/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++的头文件
7、下载分词库数据文件:

请到NlpBamboo下载index.tar.bz2或类似文件,解压到/opt/bamboo/index目录:

viewsource
print?

1.
cd
/opt/bamboo/
2.
wget
tar
.bz2
3.
tar
'target='_blank'>http://nlpbamboo.googlecode.com/files/index.[/code]
tar
.bz2
3.
tar
-jxvfindex.
tar
.bz2
8、安装中文分词扩展到PostgreSQL:

viewsource
print?

1.
cd
/opt/bamboo/exts/postgres/pg_tokenize/
2.
gmake
install
3.
cd
/opt/bamboo/exts/postgres/chinese_parser/
4.
gmake
install
5.
touch
/usr/
local
/share/postgresql/tsearch_data/chinese_utf8.stop
9、在需要的数据库中导入分词:

viewsource
print?

1.
psql-Uddlog
2.
ddlog=>\i/usr/local/share/postgresql/contrib/pg_tokenize.sql
3.
ddlog=>\i/usr/local/share/postgresql/contrib/chinese_parser.sql
10、如果没有错误,你现在可以用以下命令测试了:

viewsource
print?

1.
psql-Uddlog
2.
ddlog=>SELECTto_tsvector('chinesecfg','我爱北京天安门');
3.
to_tsvector
4.
-----------------------------------
5.
'我':1'爱':2'北京':3'天安门':4
6.
(1row)
更多关于NlpBamboo的资料,可以到NlpBambooWiki里好好研究一下。

恩,最后,怎么使用,可以参看PostgreSQL的帮助文档。或者等有空我写个在Django中的使用方法。

动物凶猛,路过注意:

使用PostgreSQL8.3更早版本的同学需要安装tsearch2才能使用;
使用FreeBSD7.2更早版本的同学请先升级,NlpBamboo用到了7.2才新增strndup(3)函数;
请更新Ports到最新版本,某些东西会有一定版本依赖,比如NlpBamboo需要CMake2.6以上版本;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
章节导航