如何在国产数据库HHDB上安装zhparser插件

1 简介

恒辉HHDB的技术路线如下:

  • 深入分析Postgres源码 – 取其精华
  • 在Postgres基础上加强 – 去其糟粕
  • 成熟可控的代码合并工具 – 持续升级
  • 全面完整的自动化测试 – 保证稳定
  • 利用Postgres开放的许可协议 – 为我所用

恒辉关系数据库HHDB基于Postgres最新版本,可以和PG同步升级,比PG最新版更加强大、易用。Postgres的相关插件都可以安装于HHDB中。
zhparser是一个PostgreSQL中文分词的插件,通过它,可以使PostgreSQL支持中文的全文检索。zhparser支持PostgreSQL 9.2及以上版本,对于我们的HHDB数据库,需要确保HHDB版本符合要求,然后在Linux系统环境中,依赖HHDB数据库进行zhparser相应的编译安装。

2 环境说明
  • 操作系统:CentOS7.7
  • 数据库:hhdb数据库12.2
3 安装 SCWS 分词库

全文索引的实现要靠 PgSQL 的 gin 索引。分词功能 PgSQL 内置了英文、西班牙文等,但中文分词需要借助开源插件 zhparser;
要使用 zhparser,我们首先要安装 SCWS 分词库,SCWS 是 Simple Chinese Word Segmentation 的首字母缩写(即:简易中文分词系统)
以下演示使用hh用户安装SCWS,安装于目录/home/hh/hhdb12.2/scws

#1、获取安装包 
#若wget未安装则先使用root用户安装wget:yum -y install wget
wget http://www.xunsearch.com/scws/down/scws-1.2.3.tar.bz2
    
#2、解压(安装完成后scws-1.2.3文件夹可删除)  
#若bzip2未安装则先使用root用户安装bzip2: yum -y install bzip2
tar xvjf scws-1.2.3.tar.bz2
    
#3、进入目录执行配置脚本
cd scws-1.2.3
#prefix后该路径为scws的安装路径
./configure --prefix=/home/hh/hhdb12.2/scws  
## 如若报错:configure: error: no acceptable C compiler found in $PATH...  则使用root用户升级安装gcc: yum install gcc,之后重试

#4、编译
make install
    
#5、校验。顺利的话已经编译并安装成功到 /usr/local/scws 中了,执行下面命令看看文件是否存在 查看是否安装成功
ls -al /home/hh/hhdb12.2/scws/lib/libscws.la

在这里插入图片描述

4 安装zhparser
4.1 获取安装包

获取zhparser安装包(GitHub地址:https://github.com/amutu/zhparser)

4.2 解压修改安装包使其兼容HHDB

以下演示,把zhparser安装包解压到数据库目录下编译,相关scws文件夹路径修改为相对路径。

sql文件(zhparser--1.0--2.0.sql,zhparser--1.0.sql,zhparser--2.0--2.1.sql,zhparser--2.0.sql,zhparser--2.1.sql)内容替换:
    pg ==> hh 
   
zhparser.c文件替换:
    postgres.h ==> hhdb.h
    PG_ ==> HH_
    
zhparser.h文件scws.h路径修改(改为以上编译好的scws.h的相对路径):
    #include "scws.h" ==> #include "../scws/include/scws/scws.h"
    
Makefile文件内容替换:
    SCWS安装目录修改为(改为以上编译好的scws文件夹的相对路径):SCWS_HOME = ../scws 
    PG_CONFIG ==> HH_CONFIG
    hh_config修改为:HH_CONFIG = ../bin/hh_config
    

在这里插入图片描述

图:zhparser.h和Makefile文件内容修改

4.3 编译安装zhparser

使用修改后的zhparser-master文件安装

#1、安装完成后zhparser-master文件夹可删除
cd zhparser-master
    
#2、编译安装
make && make install

在这里插入图片描述

图:安装成功,生成文件/home/hh/hhdb12/lib/zhparser.so等文件

5 创建zhparser解析器,进行校验

连接到目标数据库,创建zhparser解析器
create extension zhparser
#创建自定义全文解析器 名称testzhcfg
create text search configuration testzhcfg(PARSER = zhparser);
在这里插入图片描述
校验成功。在HHDB数据库12.2上安装zhparser成功成功。

小编把恒辉产品社区的链接放在了下方,希望里面有您需要的!
恒辉产品社区:https://www.deskui.com

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用方法:打开scws-1.2.3\win32里的解决方案文件,里面包括了scws和zhparser,另外一个是scws的php扩展不用编译 zhparserPostgresql中进行中文分词的常用扩展,网上的相关资料很多,安装的教程也不少,但大多数是linux的,并没有windows的安装介绍。原因有两个方面,一个是本身像这种数据库服务器一般都是linux系统的,另外一个比较致命,zhparser本身并没提供windows环境下的编译工程,连依赖库scws的readme里也建议在linux环境下使用,或者用cygwin或mingw一类工具。对于博主这种只使用windows环境(其实Postgresql也是刚接触),连makefile也搞不明白的真是头大。好在万变不离其中,编译环境只是工具,只要搞清楚个中原理(看代码),移植到windows+VS的环境应该也不是难事(当然这个也只是在轻量级的库下面适用)。下面进入正题: 干货在这里 ① 编译scws:由于 zhparser是基于scws(scws是简易中文分词系统的缩写,它的原理其实很简单,基于词典,将文本中的内容按照词典进行分词,提取关键字等。)做的分词,因此先要编译scws,网上下载下来的源码有vs2008的版本,因此,直接编译,后来出现头文件无法加入的错误,将相关文件编码方式修改成unicode解决(利用notepad++ 编码->转换为UTF-8编码)。 ② 编译zhparser:由于zhparser只提供了linux下面的makefile文件,想着用Mingw去编译,后来因为postgresql所在目录有空格,导致编译过程也失败。只好到vs2008里自建一个工程,建好工程后,首先把scws的头文件和库文件加进去,然后把postgresql的头文件和库文件加进去,设置项目属性为生成dll文件。 ③ 扩展安装:编译成功以后,在postgresql下面运行:create extension zhparser; 提示找不到control文件,在下载的源码文件夹里找到该文件,放到指定目录,再次运行sql,提示找不到dll文件,将dll文件放到指定目录,再运行,提示找不到zhprs_start函数,看来是dll没有正常explort出函数,修改源代码中的相关函数声明,再次运行后,显示成功。但zhparser源文件下其实还有很多文件,包括一个词典文件和ini配制文件,还不知道应该放在何处。 ④ zhparser运行环境配制:运行测试sql语句,发现并没有实现分词,想起来应该是词典位置不正确,到zhparser源码中去搜寻,发现如下代码,看来是放到tsearch_data目录下面,用同样的方法找到ini文件的目录,将它们都放进去,再次运行测试代码,得到正确结果。 测试代码: REATE EXTENSION zhparser; -- make test configuration using parser CREATE TEXT SEARCH CONFIGURATION testzhcfg (PARSER = zhparser); ALTER TEXT SEARCH CONFIGURATION testzhcfg ADD MAPPING FOR n,v,a,i,e,l WITH simple; select to_tsvector('testzhcfg','南京市长江大桥');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值