本文档详细说明了 PostgreSQL 中文适配镜像中安装的所有扩展,包括功能分类、依赖关系和安装顺序。
- ltree - 层次结构数据存储
- pg_stat_statements - 查询性能统计
- pg_jsonschema - JSON Schema 验证
- pg_graphql - GraphQL 支持
- pgmq - 消息队列
- btree_gist - B-tree GiST 索引
- pg_trgm - 三元组相似度搜索(
⚠️ 对中文文本支持有限,建议使用 zhparser 进行中文搜索) - fuzzystrmatch - 模糊字符串匹配
- unaccent - 去除重音符号
- pg_duckdb - DuckDB 集成
- postgis - 地理空间数据处理
- timescaledb - 时间序列数据库(基础)
- vector - 向量数据类型(基础)
- smlar - 相似度匹配
- vchord - 向量和弦搜索(依赖 vector)
- pgroonga - 基于 Groonga 的高性能全文搜索引擎
- 原生支持中文、日文等多字节字符
- 提供比传统 PostgreSQL 全文搜索更快的性能
- 支持前缀搜索、模糊搜索、正则表达式等高级功能
- 内置搜索结果高亮功能
- 实时索引更新,无需重建
- zhparser - 中文分词器
- pg_analytics - 分析功能
- pg_partman - 分区管理
- pg_duckdb - DuckDB 集成
- tablefunc - 表函数
基础扩展
├── 数据类型: ltree
├── 功能: pg_stat_statements
├── JSON/GraphQL: pg_jsonschema, pg_graphql
├── 消息队列: pgmq
├── 索引: btree_gist
└── 全文搜索: pg_trgm, fuzzystrmatch, unaccent
地理位置扩展
└── postgis (独立)
时间序列扩展
└── timescaledb (基础)
AI/向量扩展
├── vector (基础)
│ ├── smlar (依赖 vector)
│ └── vchord (依赖 vector)
高级扩展
├── pgroonga (独立)
├── zhparser (独立)
└── 分析: pg_analytics, pg_partman, tablefunc
- 基础数据类型扩展 → 无依赖
- 基础功能扩展 → 无依赖
- JSON/GraphQL 扩展 → 无依赖
- 消息队列扩展 → 无依赖
- 索引扩展 → 无依赖
- 全文搜索基础扩展 → 无依赖
- 地理位置扩展 → 无依赖
- 时间序列扩展 → timescaledb 必须先安装
- AI/向量基础扩展 → vector 必须先安装
- AI/向量相似度扩展 → 依赖 vector
- AI/向量高级扩展 → 依赖 vector
- 高级全文搜索扩展 → 无依赖
- 分析能力扩展 → 无依赖
- 基础扩展 → 直接 CREATE EXTENSION
- 依赖扩展 → 按依赖顺序 CREATE EXTENSION
- 容错扩展 → 使用 DO $$ BEGIN ... EXCEPTION ... END $$ 处理
POSTGRES_USER- 数据库用户(默认:postgres)POSTGRES_PASSWORD- 数据库密码(默认:postgres)POSTGRES_DB- 数据库名称(默认:postgres)
以下扩展需要在 shared_preload_libraries 中预加载:
- timescaledb
- pg_duckdb
- vchord
如果 zhparser 扩展可用,会自动创建 zhparser_zh 全文搜索配置,支持以下中文词性:
- n (名词)
- v (动词)
- a (形容词)
- i (习语)
- e (叹词)
- l (习用语)
- j (简称)
- t (时间词)
PGroonga 扩展无需额外配置即可使用,主要特性:
- 自动分词:自动处理中文、日文等多字节字符
- 多种操作符:
&@~:全文搜索(支持布尔查询)&^~:前缀搜索&@*:相似度搜索&@~|:OR 搜索
- 内置函数:
pgroonga_score(tableoid, ctid):计算相关性得分tableoid:表对象 ID(PostgreSQL 系统列)ctid:行物理位置(PostgreSQL 系统列,格式如(0,1))- 返回值:分数越高表示匹配度越好,用于结果排序
- 注意:只能在包含 PGroonga 搜索条件的查询中使用
pgroonga_highlight_html(text, keywords[]):HTML 高亮显示搜索关键词pgroonga_query_extract_keywords(query):从查询中提取搜索关键词
- 索引类型:支持 GIN 和 GiST 索引
使用示例:
-- 创建索引
CREATE INDEX idx_search ON articles USING pgroonga ((ARRAY[title, content]));
-- 基本搜索(带评分)
SELECT title, pgroonga_score(tableoid, ctid) as score
FROM articles
WHERE ARRAY[title, content] &@~ '搜索词'
ORDER BY score DESC;
-- 搜索结果高亮
SELECT title,
pgroonga_highlight_html(content, pgroonga_query_extract_keywords('搜索词'))
FROM articles
WHERE ARRAY[title, content] &@~ '搜索词';- 扩展安装失败 - 检查依赖关系是否正确
- 预加载扩展失败 - 确保扩展在 shared_preload_libraries 中
- 中文分词失败 - 检查 zhparser 是否支持当前架构
-- 查看已安装的扩展
SELECT extname, extversion FROM pg_extension ORDER BY extname;
-- 查看预加载的扩展
SHOW shared_preload_libraries;
-- 查看扩展状态
SELECT * FROM pg_available_extensions WHERE name LIKE '%vector%';