pg_tre 1.1.1 发布:面向 PostgreSQL 18+ 的近似正则索引访问方法

发布于 2026-05-22
PostgreSQL

原文:https://www.postgresql.org/about/news/pg_tre-111-released-an-approximate-regex-index-am-for-postgresql-18-3305/ 发布日期:2026-05-22 作者:Greg Burd

pg_tre 是一个面向 PostgreSQL 18+ 的原生索引访问方法(Index AM),用于“近似正则匹配”(approximate-regex matching)。

本次为首次公开发布。其核心思路是对文本列建立“三层过滤漏斗”,大致流程为:类似 BRIN 的范围 Bloom 过滤 → 基于 sparsemap 的 trigram postings → 每行(tuple)级 Bloom 过滤;最终在堆表回查阶段结合 Ville Laurikari 的 TRE 库完成 recheck。

它支持类似“Levenshtein 距离”的正则匹配语义(可理解为:查找与模式在 k 次编辑以内的文本),并通过真正的 IndexAmRoutine 融入 PostgreSQL 执行器/规划器生态,覆盖 WAL、理解 VACUUM,并支持 REINDEX CONCURRENTLY。

该扩展注册为 USING tre 的自定义 IndexAmRoutine,并包含自定义 rmgr(id 140);其崩溃恢复与流复制等可靠性覆盖通过 TAP 测试验证。

此文章已从旧版 PostgreSQL 网站迁移。对于迁移导致的任何格式问题,我们深表歉意。