pg_jieba
基于 cppjieba 的中文全文检索分词器
仓库
jaiminpan/pg_jieba
https://github.com/jaiminpan/pg_jieba
源码
pg_jieba-2.0.1.tar.gz
pg_jieba-2.0.1.tar.gz
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pg_jieba | 1.1.0 | FTS | BSD-3-Clause | C++ |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 2240 | pg_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 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 1.1.0 | 1817161514 | pg_jieba | - |
| RPM | PIGSTY | 2.0.1 | 1817161514 | pg_jieba_$v | - |
| DEB | PIGSTY | 2.0.1 | 1817161514 | postgresql-$v-pg-jieba | - |
构建
您可以使用 pig build 命令构建 pg_jieba 扩展的 RPM / DEB 包:
pig build pkg pg_jieba # 构建 RPM / DEB 包
安装
您可以直接安装 pg_jieba 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
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: 使用jieba和jieba_stem的文档文字搜索配置。jiebaqry: 同名的查询解析器文字搜索配置。jieba_stem: 包含 Jieba 停用词的简单字典,用于解析器的标记类别。
自定义词典和注意事项
上游从 PostgreSQL 的 jieba.user.dict.utf8 目录读取一个名为 tsearch_data 的自定义词典。条目可能包含一个单词及其可选的词性标签:
云计算
韩玉鉴赏
蓝翔 nz
- v2.x 源代码需要 C++11 兼容编译器,因为其捆绑了
cppjieba依赖。 - 上游发布的兼容性测试已过时且有限。针对生产中使用的具体 PostgreSQL 主版本构建和回归测试该包。
- 更改词典会改变分词结果。当字典输出变化时,请重新计算存储的
tsvector值并重建相关索引。