pg_jieba

基于 cppjieba 的中文全文检索分词器

概览

扩展包名版本分类许可证语言
pg_jieba1.1.0FTSBSD-3-ClauseC++
ID扩展名BinLibLoadCreateTrustReloc模式
2240pg_jieba-
相关扩展pg_cjk_parser zhparser pg_bigm pgroonga pg_tokenizer

Package 2.0.1 ships extension version 1.1.0, vendors cppjieba commit 45809955, and fixes the LexDescr terminator allocation.

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY1.1.01817161514pg_jieba-
RPMPIGSTY2.0.11817161514pg_jieba_$v-
DEBPIGSTY2.0.11817161514postgresql-$v-pg-jieba-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
d12.aarch64
PIGSTY 2.0.1
PIGSTY 2.0.1
PIGSTY 2.0.1
PIGSTY 2.0.1
PIGSTY 2.0.1
d13.x86_64
PIGSTY 2.0.1
PIGSTY 2.0.1
PIGSTY 2.0.1
PIGSTY 2.0.1
PIGSTY 2.0.1
d13.aarch64
PIGSTY 2.0.1
PIGSTY 2.0.1
PIGSTY 2.0.1
PIGSTY 2.0.1
PIGSTY 2.0.1
u22.x86_64
PIGSTY 2.0.1
PIGSTY 2.0.1
PIGSTY 2.0.1
PIGSTY 2.0.1
PIGSTY 2.0.1
u22.aarch64
PIGSTY 2.0.1
PIGSTY 2.0.1
PIGSTY 2.0.1
PIGSTY 2.0.1
PIGSTY 2.0.1
u24.x86_64
PIGSTY 2.0.1
PIGSTY 2.0.1
PIGSTY 2.0.1
PIGSTY 2.0.1
PIGSTY 2.0.1
u24.aarch64
PIGSTY 2.0.1
PIGSTY 2.0.1
PIGSTY 2.0.1
PIGSTY 2.0.1
PIGSTY 2.0.1
u26.x86_64
u26.aarch64
PIGSTY 2.0.1
PIGSTY 2.0.1
PIGSTY 2.0.1
PIGSTY 2.0.1
PIGSTY 2.0.1

构建

您可以使用 pig build 命令构建 pg_jieba 扩展的 RPM / DEB 包:

pig build pkg pg_jieba         # 构建 RPM / DEB 包

安装

您可以直接安装 pg_jieba 扩展包的预置二进制包,首先确保 PGDGPIGSTY 仓库已经添加并启用:

pig repo add pgsql -u          # 添加仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

pig install pg_jieba;          # 当前活跃 PG 版本安装
pig ext install -y pg_jieba -v 18  # PG 18
pig ext install -y pg_jieba -v 17  # PG 17
pig ext install -y pg_jieba -v 16  # PG 16
pig ext install -y pg_jieba -v 15  # PG 15
pig ext install -y pg_jieba -v 14  # PG 14
dnf install -y pg_jieba_18       # PG 18
dnf install -y pg_jieba_17       # PG 17
dnf install -y pg_jieba_16       # PG 16
dnf install -y pg_jieba_15       # PG 15
dnf install -y pg_jieba_14       # PG 14
apt install -y postgresql-18-pg-jieba   # PG 18
apt install -y postgresql-17-pg-jieba   # PG 17
apt install -y postgresql-16-pg-jieba   # PG 16
apt install -y postgresql-15-pg-jieba   # PG 15
apt install -y postgresql-14-pg-jieba   # PG 14

创建扩展

CREATE EXTENSION pg_jieba;

用法

来源:

pg_jieba 将基于 Jieba 的中文分词功能添加到 PostgreSQL 全文搜索中。上游的 v2.0.1 源代码发布安装了 SQL 扩展版本 1.1.0,其控制文件记录了这一点。它提供了独立的文档和查询解析器以及现成可用的文字搜索配置。

核心工作流程

CREATE EXTENSION pg_jieba;

SELECT to_tsvector(
    'jiebacfg',
    '小明硕士毕业于中国科学院计算所,后在日本京都大学深造'
);

SELECT plainto_tsquery('jiebaqry', '云计算专家');

使用 jiebacfg 构建可搜索的文档向量,并使用 jiebaqry 分段用户查询:

ALTER TABLE articles
ADD COLUMN search_vector tsvector
GENERATED ALWAYS AS (to_tsvector('jiebacfg', body)) STORED;

CREATE INDEX articles_search_idx
ON articles USING GIN (search_vector);

SELECT title
FROM articles
WHERE search_vector @@ plainto_tsquery('jiebaqry', '中文全文检索');

对象索引

  • jieba: 文档文本搜索解析器。
  • jiebaqry: 查询导向的文字搜索解析器。
  • jiebacfg: 使用 jiebajieba_stem 的文档文字搜索配置。
  • jiebaqry: 同名的查询解析器文字搜索配置。
  • jieba_stem: 包含 Jieba 停用词的简单字典,用于解析器的标记类别。

自定义词典和注意事项

上游从 PostgreSQL 的 jieba.user.dict.utf8 目录读取一个名为 tsearch_data 的自定义词典。条目可能包含一个单词及其可选的词性标签:

云计算
韩玉鉴赏
蓝翔 nz
  • v2.x 源代码需要 C++11 兼容编译器,因为其捆绑了 cppjieba 依赖。
  • 上游发布的兼容性测试已过时且有限。针对生产中使用的具体 PostgreSQL 主版本构建和回归测试该包。
  • 更改词典会改变分词结果。当字典输出变化时,请重新计算存储的 tsvector 值并重建相关索引。