PostgreSQL 在 FreeBSD 系统下配置 jieba 中文分词实现全文搜索
• 2025-11-26 • 类别: 操作系统 & 服务器 数据库 • 阅读量:52
在 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 分词配置还有:jiebamp,jiebahmm,jiebaqry,不同分词配置之间的差别可以查看官网,推荐使用 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 插件。