HeadlinesBriefing favicon HeadlinesBriefing.com

TIN:Postgres 全文搜索扩展 GA 发布

Hacker News •
×

我们的客户最常要求的 Postgres 功能之一是全文搜索。今天,我们很高兴宣布推出 TIN:一个快速、功能全面、可靠的 Postgres 全文搜索扩展。TIN 代表 "Text INdex",这正是它的功能。TIN 现已作为 GA 版本立即可用,适用于所有 Postgres 和 Neki 数据库。立即体验:CREATE INDEX an_index_name ON table_name USING tin(text_column_name); SELECT * FROM table_name WHERE text_column_name ==> 'some words'。我们构建 TIN 是因为我们认为一个好的文本索引应该支持:布尔表达式、短语查询和跨度查询。术语的模糊、通配符和正则表达式匹配。大小写和重音折叠。COUNT(*) 查询和 BM25 评分的 top-k 查询。Postgres 中一个好的文本索引必须支持所有这些要求,同时还要处理连接、跨全文和其他列类型的复杂 WHERE 子句、持续更新、复制、备份和正确的事务可见性。虽然 Postgres 已经至少有三个现有的文本搜索索引,但没有一个能满足所有这些要求。TIN 做到了。TIN 也非常、令人难以置信地快。我们运行了基准测试来评估上述所有用例及更多场景的性能。我们尝试了包含合取、析取和短语查询以及三者混合的工作负载。包括统计文档数量或按 BM25 分数请求前 k 个的查询。在有和没有客户端并发写入新数据到索引的情况下进行基准查询工作负载。我们根据多种文本语料库测量了 TIN:全部维基百科、总计 2.3 TB 的 Reddit 评论集合,以及一个我们简单称为 "pile" 的混合工作负载,包含 797 GB 的开放获取研究论文、法律文档、公共领域书籍和 Enron 邮件。本文分享的基准测试结果来自 Stack Exchange 问题和答案的导出:一个 85 GB 的语料库,包含 1.5 亿个文档。