PostgreSQL 在 FreeBSD 系统下配置 jieba 中文分词实现全文搜索

类别: 操作系统 & 服务器 数据库 阅读量:52

首页 > 文章 > 所有文章 > PostgreSQL 在 FreeBSD 系统下配置 jieba 中文分词实现全文搜索

在 PostgreSQL 中默认没有安装中分分词,无法实现中文的全文搜索,因此如果要实现中文的全文搜索功能,需要安装中文分词插件,在 PostgreSQL 中可以使用的中文分词插件有 pg_jieba / zhparser。

在本文中将介绍如何在 FreeBSD 系统下安装配置 pg_jieba,使用 pg_jieba 进行中文分词,实现中文的全文搜索功能。

安装更新依赖包

1)安装依赖软件包 cmake gcc

sudo pkg install cmake gcc

2)更新软件包 libuv

sudo pkg upgrade libuv

因为:可能会遇到 Assertion failed uv_spawn 错误。

编译安装 pg_jieba

1)下载源代码

git clone https://github.com/jaiminpan/pg_jieba

2)转到源码目录

cd pg_jieba

3)初始化子模块

git submodule update --init --recursive

4)生成系统配置文件

mkdir build
cmake ..

5)编译代码

make

6)安装软件并在安装完成后清理临时文件

sudo make install clean

配置中文分词

配置 pg_jieba 中文分词,需要编辑 PostgreSQL 的配置文件,默认配置文件为 /var/db/postgres/data*/postgresql.conf,其中 * 为版本号,如 Postgresql 16 的配置文件为:/var/db/postgres/data16/postgresql.conf

1)postgresql 数据库启动时加载 pg_jieba 插件

sudo vi /var/db/postgres/data16/postgresql.conf

修改如下内容:

#shared_preload_libraries = ''  # (change requires restart)
修改为:
shared_preload_libraries = 'pg_jieba.so'

2)配置搜索使用 jieba 分词

sudo vi /var/db/postgres/data16/postgresql.conf

修改如下内容:

default_text_search_config = 'pg_catalog.english'
修改为:
default_text_search_config='jiebacfg'

可以使用的 jieba 分词配置还有:jiebampjiebahmmjiebaqry,不同分词配置之间的差别可以查看官网,推荐使用 jiebacfg

在数据库中安装扩展

1)创建数据库

createdb my_db -O my_user

2)创建 pg_jieba 扩展

必须在创建数据库后,安装扩展才能使用 pg_jieba 插件实现中文分词。

psql -d my_db -c "CREATE EXTENSION pg_jieba;"

测试是否正常运行

使用 psql 登录进 my_db 数据库

psql -d my_db -U my_user

运行如下测试代码:

select * from to_tsquery('jiebacfg', '是拖拉机学院手扶拖拉机专业的。不用多久,我就会升职加薪,当上CEO,走上人生巅峰。');

查看是否会有类似如下的输出内容,如果有则表示输出正常:

                                        to_tsquery
-----------------------------------------------------------------------------------------------
'拖拉机' & '学院' & '手扶拖拉机' & '专业' & '不用' & '多久' & '会' & '升职' & '加薪' & '当上' & 'ceo' & '走上' & '人生' & '巅峰'
(1 行记录)

q 退出输出内容的查看。

结语

经过如上的配置,PostgreSQL 就能够使用 pg_jieba 插件对数据库中的字段使用中文分词进行全文搜索。

注意:传递给 PostgreSQL 的中文搜索关键词,需要使用空格分隔。

在本文中讲述了在 FreeBSD 系统中如何安装 pg_jieba 插件,以及如何为 PostgreSQL 数据库启用 pg_jieba 插件,最后的关键一步是创建数据库后,一定要为数据库创建 pg_jiaba 插件。

相关页面



评论

暂无评论,快来抢沙发吧~