跳转到主要内容

stannum

提供 TINQL、BM25 与分段索引的实验性文本搜索扩展

概览

扩展包名版本分类许可证语言
stannum0.1.0FTSAGPL-3.0-or-laterRust
ID扩展名BinLibLoadCreateTrustReloc模式
2320stannum否是否是否否stannum
相关扩展tin pg_search

Unreleased 0.1.0-dev snapshot; no version release/tag. Conflicts with tin in the same database. Optional preload enables maintenance workers and standby index reads; preload must match on primary and standbys.

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY0.1.01817161514stannum-
RPMPIGSTY0.1.01817161514stannum_$v-
DEBPIGSTY0.1.01817161514postgresql-$v-stannum-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64N/AN/AN/A
el8.aarch64N/AN/AN/A
el9.x86_64N/AN/AN/A
el9.aarch64N/AN/AN/A
el10.x86_64N/AN/AN/A
el10.aarch64N/AN/AN/A
d12.x86_64N/AN/AN/A
d12.aarch64
PIGSTY 0.1.0
PIGSTY 0.1.0
N/AN/AN/A
d13.x86_64
PIGSTY 0.1.0
PIGSTY 0.1.0
N/AN/AN/A
d13.aarch64
PIGSTY 0.1.0
PIGSTY 0.1.0
N/AN/AN/A
u22.x86_64
PIGSTY 0.1.0
PIGSTY 0.1.0
N/AN/AN/A
u22.aarch64
PIGSTY 0.1.0
PIGSTY 0.1.0
N/AN/AN/A
u24.x86_64
PIGSTY 0.1.0
PIGSTY 0.1.0
N/AN/AN/A
u24.aarch64
PIGSTY 0.1.0
PIGSTY 0.1.0
N/AN/AN/A
u26.x86_64N/AN/AN/A
u26.aarch64
PIGSTY 0.1.0
PIGSTY 0.1.0
N/AN/AN/A

构建

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

pig build pkg stannum         # 构建 RPM / DEB 包

安装

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

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

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

安装
pig install stannum;          # 当前活跃 PG 版本安装
pig
pig ext install -y stannum -v 18  # PG 18
pig ext install -y stannum -v 17  # PG 17
dnf
dnf install -y stannum_18       # PG 18
dnf install -y stannum_17       # PG 17
apt
apt install -y postgresql-18-stannum   # PG 18
apt install -y postgresql-17-stannum   # PG 17

创建扩展:

CREATE EXTENSION stannum;

用法

来源:

stannum 是基于 Lead 开发的实验性文本搜索扩展,提供持久索引、布尔和短语查询以及 BM25 评分。审核的 0.1.0 源码使用独立的扩展名称和存储格式。

核心工作流

CREATE EXTENSION stannum;
CREATE TABLE documents (id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY, body text);
INSERT INTO documents (body) VALUES
  ('PostgreSQL supports full text search'), ('Search with exact phrase matching');
CREATE INDEX documents_search ON documents USING stannum (body);
ANALYZE documents;
SELECT id, stannum.full_score(ctid) AS score
FROM documents WHERE body ==> 'search' ORDER BY score DESC LIMIT 10;
SELECT * FROM stannum.segment_info('documents_search');
SELECT * FROM stannum.verify_index('documents_search', heap_check => true);

运行与兼容性

==> 运算符接受 TINQL。stannum.highlight 标记匹配文本;stannum.segment_info 检查索引段,stannum.verify_index 验证一致性,并可同时检查堆数据。索引随 PostgreSQL 写入和清理操作维护。

构建目标为 PostgreSQL 17 和 18,目前大部分生命周期验证集中在 18。超级用户将扩展安装到固定的 stannum 模式。主库使用时按需加载;如需在备库读取索引,须在主备两侧的 shared_preload_libraries 中加入该库并重启服务器。

迁移边界

不要在同一数据库中同时安装 tin 和 stannum,两者的全局 ==> 运算符冲突。上游不支持从旧扩展名称或旧存储布局原地迁移。应按实验性软件使用,并针对目标负载验证恢复和维护行为。

这个页面对您有帮助吗?