跳转到主要内容

tin

用于开发测试的 TIN 兼容文本搜索扩展

概览

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

Untagged 1.0.6 source snapshot for development/CI, not production PlanetScale TIN. Conflicts with stannum in the same database.

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY1.0.61817161514lead-
RPMPIGSTY1.0.61817161514lead_$v-
DEBPIGSTY1.0.61817161514postgresql-$v-lead-
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.aarch64N/AN/AN/A
d13.x86_64N/AN/AN/A
d13.aarch64
PIGSTY 1.0.6
PIGSTY 1.0.6
N/AN/AN/A
u22.x86_64
PIGSTY 1.0.6
PIGSTY 1.0.6
N/AN/AN/A
u22.aarch64
PIGSTY 1.0.6
PIGSTY 1.0.6
N/AN/AN/A
u24.x86_64
PIGSTY 1.0.6
PIGSTY 1.0.6
N/AN/AN/A
u24.aarch64
PIGSTY 1.0.6
PIGSTY 1.0.6
N/AN/AN/A
u26.x86_64N/AN/AN/A
u26.aarch64N/AN/AN/A

构建

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

pig build pkg lead         # 构建 RPM / DEB 包

安装

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

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

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

安装
pig install lead;          # 当前活跃 PG 版本安装
pig
pig ext install -y lead -v 18  # PG 18
pig ext install -y lead -v 17  # PG 17
dnf
dnf install -y lead_18       # PG 18
dnf install -y lead_17       # PG 17
apt
apt install -y postgresql-18-lead   # PG 18
apt install -y postgresql-17-lead   # PG 17

创建扩展:

CREATE EXTENSION tin;

用法

来源:

tin 是 Lead 的扩展名,提供兼容 TIN 的文本搜索,适合开发、CI 和预发布测试。本次核验的 1.0.6 源码快照有意采用简单参考实现,牺牲查询性能,不适合生产搜索。

核心工作流

CREATE EXTENSION tin;
CREATE TABLE documents (id integer, body text);
INSERT INTO documents VALUES (1, 'craft beer'), (2, 'wine'), (3, 'beer festival');
CREATE INDEX documents_search ON documents USING tin (body);
SELECT id, tin.full_score(ctid) AS score
FROM documents WHERE body ==> 'beer' ORDER BY score DESC;

对象与行为

tin 访问方法与 ==> 运算符用于计算 TINQL 搜索条件。tin.score、tin.full_score、tin.max_score、tin.score_inspect 提供评分,tin.highlight 和 tin.highlight_ansi 标记匹配文本。评分调用绑定到对应的搜索表达式和索引。

每次索引扫描都会将全部堆页面作为有损候选返回,由 PostgreSQL 重新检查可见行、表达式和部分索引条件。索引不保存搜索数据,评分也可能再次扫描可见堆行。这样保留了查询语义,但没有提供生产级倒排索引。

使用要求

审核源码的目标版本是 PostgreSQL 17 和 18。安装需要超级用户,对象使用固定的 tin 模式。库按需加载,无需预加载或重启;测试时仍需控制数据规模。

PlanetScale 的文档将 TIN 定位为生产搜索实现,将 Lead 定位为本地开发替代品。两者使用同一个规范扩展名 tin;本目录条目跟踪开源 Lead 实现。源码快照版本不代表 PlanetScale 线上部署的版本。

当前源码为 tin.tokenize、tin.ql_parse、tin.highlight 和 tin.highlight_ansi 增加了末尾的 stemmer 参数,并以 _v1_0_3 结尾的函数名保留旧签名。修改索引的 stemmer 后需要执行 REINDEX。评分调用必须与对应的 ==> 搜索条件处于同一查询层级。

这个页面对您有帮助吗?