pg_bigm

基于二字组的多语言全文检索扩展

概览

扩展包名版本分类许可证语言
pg_bigm1.2FTSPostgreSQLC
ID扩展名BinLibLoadCreateTrustReloc模式
2120pg_bigm-
相关扩展pg_search pgroonga zhparser pg_trgm pgroonga_database pg_tokenizer fuzzystrmatch rum

版本

类型仓库版本PG 大版本包名依赖
EXTMIXED1.21817161514pg_bigm-
RPMPGDG1.21817161514pg_bigm_$v-
DEBPIGSTY1.21817161514postgresql-$v-pg-bigm-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
d12.aarch64
d13.x86_64
d13.aarch64
u22.x86_64
u22.aarch64
u24.x86_64
u24.aarch64

构建

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

pig build pkg pg_bigm         # 构建 RPM / DEB 包

安装

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

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

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

pig install pg_bigm;          # 当前活跃 PG 版本安装
pig ext install -y pg_bigm -v 18  # PG 18
pig ext install -y pg_bigm -v 17  # PG 17
pig ext install -y pg_bigm -v 16  # PG 16
pig ext install -y pg_bigm -v 15  # PG 15
pig ext install -y pg_bigm -v 14  # PG 14
dnf install -y pg_bigm_18       # PG 18
dnf install -y pg_bigm_17       # PG 17
dnf install -y pg_bigm_16       # PG 16
dnf install -y pg_bigm_15       # PG 15
dnf install -y pg_bigm_14       # PG 14
apt install -y postgresql-18-pg-bigm   # PG 18
apt install -y postgresql-17-pg-bigm   # PG 17
apt install -y postgresql-16-pg-bigm   # PG 16
apt install -y postgresql-15-pg-bigm   # PG 15
apt install -y postgresql-14-pg-bigm   # PG 14

预加载配置

shared_preload_libraries = 'pg_bigm';

创建扩展

CREATE EXTENSION pg_bigm;

用法

pg_bigm 文档 | GitHub: pgbigm/pg_bigm

pg_bigm 模块为 PostgreSQL 提供全文搜索能力。该模块允许用户创建 2-gram(bigram)索引以加速全文搜索。

功能特性

  • Bigram 索引:为文本列创建 2-gram(bigram)GIN 索引
  • 更快的 LIKE 搜索:加速 LIKE 查询,包括前缀、后缀和子串搜索
  • 全语言支持:无需额外配置即可支持所有语言,包括中日韩(CJK)
  • 简单 API:提供相似度搜索函数和运算符

函数与运算符

函数

函数返回类型说明
likequery(text)text根据关键词生成全文搜索查询
show_bigm(text)text[]显示给定字符串中的所有 2-gram
pg_gin_pending_stats(regclass)record返回 GIN 索引待处理列表中的页面数和元组数

运算符

运算符说明
text =% text当左右操作数的相似度大于等于 pg_bigm.similarity_limit 时返回 true

GUC 参数

参数类型默认值说明
pg_bigm.last_updatetext-显示模块的最后更新日期(只读)
pg_bigm.enable_recheckboolon控制索引扫描时是否执行复查
pg_bigm.gin_key_limitint0限制全文搜索使用的最大 bigram 数量。0 表示无限制
pg_bigm.similarity_limitreal0.3设置 =% 运算符的最小相似度阈值

示例

基本全文搜索

-- 创建扩展
CREATE EXTENSION pg_bigm;

-- 创建含文本数据的表
CREATE TABLE documents (id serial PRIMARY KEY, content text);
INSERT INTO documents (content) VALUES
  ('PostgreSQL is a powerful database'),
  ('Full text search with bigram indexing'),
  ('Japanese text: 日本語テキスト検索');

-- 创建 bigram 索引
CREATE INDEX docs_bigm_idx ON documents USING gin (content gin_bigm_ops);

-- 使用 LIKE 搜索
SELECT * FROM documents WHERE content LIKE '%search%';

-- 使用 likequery 函数搜索
SELECT * FROM documents WHERE content LIKE likequery('database');

相似度搜索

-- 显示字符串的 bigram
SELECT show_bigm('PostgreSQL');

-- 相似度搜索
SET pg_bigm.similarity_limit = 0.2;
SELECT * FROM documents WHERE content =% 'database search';

与 pg_trgm 的比较

pg_bigm 相比内置的 pg_trgm 有以下优势:

特性pg_bigmpg_trgm
N-gram 类型2-gram(bigram)3-gram(trigram)
最小搜索字符串1 个字符3 个字符
非字母语言完全支持有限支持
LIKE 搜索类型前缀、后缀和子串前缀、后缀和子串

详细文档包括高级用法和性能调优,请参见 pg_bigm 官方文档


最后修改 2026-03-14: update extension metadata (953cbd0)