Tin: full-text search for Postgres
6 hours ago
- TIN 是 Postgres 的一个新的全文搜索扩展,已宣布对所有 Postgres 和 Neki 数据库正式可用。
- 它支持布尔表达式、短语/跨度查询、模糊/通配符/正则匹配、大小写/重音折叠、COUNT(*) 查询以及 BM25 评分的 top-k 查询。
- TIN 使用 Postgres 的 ctid 值作为文档标识符,从而实现向量化位图操作,并避免段合并期间的 ID 重新编号。
- 在基准测试中,TIN 在读取吞吐量上至少比 ParadeDB、pg_textsearch 和 Postgres GIN 快 8 倍,即使在并发写入下也具有更低的延迟和更少的磁盘 I/O。
- 它处理混合查询类型(合取、析取、短语)并支持 top-k 排序或计数,同时支持 MVCC 正确的结果和持续更新。
- 关键的架构优势包括适合 AVX/AVX-512 寄存器的页级和偏移级位图、跳过 posting 列表解码,以及使用可见性映射进行仅索引扫描。
- TIN 索引构建更快(8 分钟,而竞争对手为 19-129 分钟),并且在相同语料库下需要更少的内存(32 GB,而竞争对手为 64-128 GB)。