pgroonga 配合生成列 + B-tree zhparser 选那个版本的 pgsql 比较好 安装扩展比较容易
结论先行(兼顾:pgroonga + zhparser + B-tree + 生成列 + 安装最简单、坑最少)
首选推荐:PostgreSQL 15
备选:PostgreSQL 14
不优先选:16/17/18(zhparser 编译容易踩新编译器坑)
坚决避开:12 及更早(生命周期快结束,不推荐上新项目)
下面逐条拆解理由:
一、核心条件对齐梳理
-
生成列 GENERATED ALWAYS AS STOREDPG12 开始支持;14/15/16 功能稳定无重大 bug,18 才支持虚拟生成列(你场景一般用 STORED,不需要追)。
-
PGroonga官方提供预编译包:14/15/16/17/18 都有 yum/apt 二进制包;PG15 社区实践量最大,各类文档、问题案例最多。
-
zhparser(amutu 原版,SCWS 分词)关键点:PG >=16 编译极易触发
-no-opaque-pointers编译报错PG14 / PG15:直接make && make install,绝大多数环境一次编译成功,几乎不用修改编译参数;PG16+:gcc 新版本开启 opaque 指针,必须手动修改 pgxs Makefile 才能编译 zhparser,新手很容易卡很久。zhparser 没有官方 rpm/deb 包,几乎都要源码编译,编译难易度是选型第一门槛 -
B-tree 索引14/15 B-tree 持续优化,稳定性一致,无版本差异。
二、三个候选版本横向对比
✅ PG15【最优平衡点|强烈推荐】
- PGroonga:官方预编译包完善,yum/apt 一键安装,不需要自行编译 groonga
- zhparser:源码编译最顺滑,极少出现编译器兼容问题
- 生成列:成熟稳定,社区大量生产案例
- 生命周期:支持到 2027-11,长期可用
- 生态:国内教程、排错资料极多
适合:物理机、docker、自建服务器,追求省心少折腾
✅ PG14【稳妥保守备选】
- zhparser 编译同样顺畅;pgroonga 二进制包齐全
- 短板:支持截止 2026-11,新项目不建议长期作为首选,短期过渡没问题
⚠️ PG16 / PG17(能跑,但安装成本上升)
- PGroonga 没问题;
- zhparser 最大痛点:默认编译失败,需要修改 pgxs 移除
-no-opaque-pointers; - 如果你不想折腾 C 编译配置,不选。
⚠️ PG18
PGroonga 新版支持,但 zhparser 适配案例极少,属于尝鲜版本,生产不推荐。
三、重要实践提醒(你这套组合常见踩坑点)
-
生成列 + pgroonga 索引✅ 可以直接在STORED 生成列上建立
USING pgroonga索引;❌ PG17 及以前不能直接用虚拟生成列(PG18 才有 VIRTUAL);-- 可行示例 content_tsvector text GENERATED ALWAYS AS (content) STORED; CREATE INDEX idx_content_pgroonga ON tbl USING pgroonga(content_tsvector);-
区分两条路线,不要混淆
- 路线 A:pgroonga 独立全文检索(不需要 zhparser)
- 路线 B:PG 原生 tsvector + zhparser 分词(搭配 B-tree、gin)
你同时提到 pgroonga + zhparser,确认需求:
- 如果只用 pgroonga 中文搜索:不需要 zhparser,pgroonga 自带中文分词;
- zhparser 一般用于 PostgreSQL 内置
tsvector全文检索。
很多人混用:一张表同时 pgroonga 索引(高性能模糊 / 全文)+ gin (zhparser tsvector),看业务检索场景。- 安装策略建议(Linux pgdg 源)
优先使用 PGDG 官方源安装 postgres + 官方 pgroonga 包,不要全部源码编译:
# ubuntu/debian示例 pg15 apt install postgresql-15 postgresql-15-pgdg-pgroonga postgresql-server-dev-15 # 再源码编译zhparser
四、最终选型建议汇总
- 新项目自建,追求最低安装难度、最少编译坑 → PostgreSQL 15(首选)
- 现有环境只能更低版本、短期项目 → PostgreSQL 14
- 除非你有刚需 PG16 + 新特性,否则不要上 16/17,避免 zhparser 编译阻碍
-
本文来自博客园,作者:孙龙-程序员,转载请注明原文链接:https://www.cnblogs.com/sunlong88/p/22504593
浙公网安备 33010602011771号