pg_cjk_parser
基于 PostgreSQL 默认解析器的中日韩二字组全文检索分词器
仓库
huangjimmy/pg_cjk_parser
https://github.com/huangjimmy/pg_cjk_parser
源码
pg_cjk_parser-0.1.0.tar.gz
pg_cjk_parser-0.1.0.tar.gz
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pg_cjk_parser | 0.1.0 | FTS | PostgreSQL | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 2230 | pg_cjk_parser | 否 | 是 | 否 | 是 | 否 | 是 | - |
| 相关扩展 | pg_jieba zhparser pg_bigm pgroonga pg_tokenizer |
|---|
PGSTY applies a PG_CONFIG build-selection patch.
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 0.1.0 | 1817161514 | pg_cjk_parser | - |
| RPM | PIGSTY | 0.1.0 | 1817161514 | pg_cjk_parser_$v | - |
| DEB | PIGSTY | 0.1.0 | 1817161514 | postgresql-$v-pg-cjk-parser | - |
构建
您可以使用 pig build 命令构建 pg_cjk_parser 扩展的 RPM / DEB 包:
pig build pkg pg_cjk_parser # 构建 RPM / DEB 包
安装
您可以直接安装 pg_cjk_parser 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
pig repo add pgsql -u # 添加仓库并更新缓存
使用 pig 或者是 apt/yum/dnf 安装扩展:
pig install pg_cjk_parser; # 当前活跃 PG 版本安装
pig ext install -y pg_cjk_parser -v 18 # PG 18
pig ext install -y pg_cjk_parser -v 17 # PG 17
pig ext install -y pg_cjk_parser -v 16 # PG 16
pig ext install -y pg_cjk_parser -v 15 # PG 15
pig ext install -y pg_cjk_parser -v 14 # PG 14
dnf install -y pg_cjk_parser_18 # PG 18
dnf install -y pg_cjk_parser_17 # PG 17
dnf install -y pg_cjk_parser_16 # PG 16
dnf install -y pg_cjk_parser_15 # PG 15
dnf install -y pg_cjk_parser_14 # PG 14
apt install -y postgresql-18-pg-cjk-parser # PG 18
apt install -y postgresql-17-pg-cjk-parser # PG 17
apt install -y postgresql-16-pg-cjk-parser # PG 16
apt install -y postgresql-15-pg-cjk-parser # PG 15
apt install -y postgresql-14-pg-cjk-parser # PG 14
创建扩展:
CREATE EXTENSION pg_cjk_parser;
用法
来源:
pg_cjk_parser 是一个基于内置解析器的 PostgreSQL 全文搜索解析器。在 UTF-8 数据库中,它对非 CJK 文本保持默认行为,同时为中文、日文和韩文文本生成重叠的 2-gram 令牌。该扩展安装了解析支持函数;您需要创建使用这些函数的文本搜索解析器和配置。
核心工作流程
CREATE EXTENSION pg_cjk_parser;
CREATE TEXT SEARCH PARSER public.pg_cjk_parser (
START = prsd2_cjk_start,
GETTOKEN = prsd2_cjk_nexttoken,
END = prsd2_cjk_end,
LEXTYPES = prsd2_cjk_lextype,
HEADLINE = prsd2_cjk_headline
);
CREATE TEXT SEARCH CONFIGURATION public.config_2_gram_cjk (
PARSER = public.pg_cjk_parser
);
SELECT alias, description, token
FROM ts_debug(
'public.config_2_gram_cjk',
'PostgreSQL 全文検索和中文检索'
);
显式在生成的 tsvector 列和查询中使用此配置,或将其设置为会话默认值:
SET default_text_search_config = 'public.config_2_gram_cjk';
SELECT to_tsvector('public.config_2_gram_cjk', '日本語全文検索');
重要对象
prsd2_cjk_start,prsd2_cjk_nexttoken,prsd2_cjk_end,prsd2_cjk_lextype, 和prsd2_cjk_headline:用于CREATE TEXT SEARCH PARSER的支持函数。cjk_zht2zhs(text):将映射的传统中文字符转换为简体中文,而其他字符保持不变。- 解析器标记类型
cjk:生成重叠的 CJK 大二元组;CJK 标点符号作为单个单元格发出。
SELECT cjk_zht2zhs('漢語');
-- 汉语
版本说明和注意事项
- v0.1.0 版本修复了
0.1.0在混合宽度 UTF-8 字符中的错误扫描,并正确处理四字节 CJK 代码点。 - 上游支持从 PostgreSQL 11 到 18 的版本。
- 数据库必须使用 UTF-8 编码以实现 CJK 大二元组行为。使用其他编码时,解析器的行为类似于 PostgreSQL 默认解析器。
- 创建文本搜索解析器需要高级权限。您需要分别决定映射、词典、停用词和排名;示例配置仅定义了解析器。
cjk_zht2zhs