PGroonga 4.0.4正式上线,全面支持PostgreSQL 18,实现多语言毫秒级中文亚洲语言全文检索,无需ETL,开箱即用!
2025年10月9日,PGroonga项目组正式发布了PGroonga 4.0.4版本!这个版本可不是小打小闹的更新,而是真正让PostgreSQL数据库在全球多语言全文检索领域实现质的飞跃的关键一步!如果你还在为中文、日文、韩文甚至混合语言搜索性能慢、配置复杂、结果不准而头疼,那PGroonga就是你苦苦寻找的终极解决方案!
首先,我们得先搞清楚PGroonga到底是什么。PGroonga是一个基于PostgreSQL开发的开源扩展插件,它的目标非常明确:让PostgreSQL成为支持所有语言的超高速全文检索平台!而且,它完全免费,采用PostgreSQL许可证发布,这意味着你可以放心地在商业项目中使用,没有任何法律风险。更重要的是,它背后依托的是Groonga——一个功能完整、性能强悍的全文搜索引擎。换句话说,PGroonga就是把Groonga的强大能力无缝集成到了PostgreSQL里,让你在熟悉的SQL环境中,轻松实现原本需要Elasticsearch或Solr才能完成的高级搜索功能。
那么,PGroonga 4.0.4这次到底带来了哪些重磅更新呢?
最核心的一点,就是全面支持PostgreSQL 18!这可不是简单的兼容性适配,而是一次深度优化。
从PostgreSQL 18开始,数据库的查询规划器(planner)终于能识别PGroonga索引是一个“有序索引”了。这意味着什么?举个例子,当你执行一个带WHERE条件、ORDER BY排序和LIMIT限制的查询时,PGroonga可以直接返回已经过滤好并且排好序的数据,PostgreSQL就不用再做一次额外的排序操作了。在PostgreSQL 17及更早的版本中,即使PGroonga已经排好序,PostgreSQL还是会傻乎乎地再排一遍,白白浪费CPU资源和时间。现在,这个瓶颈被彻底打破了!尤其是在处理大量匹配结果时,响应速度将得到显著提升,用户体验直接拉满!
除了对新版本数据库的支持,PGroonga团队还贴心地为最新的操作系统提供了官方安装包。现在,你可以在Debian GNU/Linux的trixie版本和AlmaLinux 10上,轻松一键安装PGroonga。这意味着,无论你是追求前沿技术的开发者,还是负责稳定运维的工程师,都能在最新的技术栈上,无缝集成这套强大的搜索解决方案,再也不用担心环境兼容问题。
说到这里,可能有朋友会问,PostgreSQL不是自带全文检索功能吗?为什么还要用PGroonga?问得好!PostgreSQL内置的textsearch模块确实不错,但它只支持15种左右的语言,而且全是基于词干提取(stemming)的语言,比如英文、法文、俄文。对于中文、日文、韩文这些没有空格分隔、依赖上下文语义的亚洲语言,它基本就是“瞎子”。另一个常用的扩展pg_trgm,虽然能处理模糊匹配,但默认只支持ASCII字符,对亚洲语言的支持非常有限,即使你手动修改源码开启支持,性能也会大打折扣,因为它在搜索后还需要进行一次“recheck”(重新检查),在数据量大的时候,慢得让人想哭。
而PGroonga呢?它生来就是为了“全语言支持”而设计的!它默认采用非语言特定的N-gram分词策略,对于亚洲语言来说,这简直是天作之合。更牛的是,当你的文本里同时混有英文和中文,比如“我是一个PostgreSQL开发者”,PGroonga会智能地对英文部分进行基于词的搜索,对中文部分进行N-gram搜索,实现最佳的混合语言检索效果。而且,它不需要“recheck”,搜索速度极快,即使在数据更新的同时进行搜索,性能也不会下降,因为它不会阻塞读操作。
我们来看看实打实的性能对比。在针对日文维基百科的基准测试中,PGroonga创建索引的速度比另一个支持亚洲语言的扩展pg_bigm快了73%!虽然PGroonga的索引体积会大一些(大约是pg_bigm的2.3倍),但换来的是搜索性能的天壤之别。在搜索“テレビアニメ”这样的关键词时,pg_bigm花了2.8秒,而PGroonga只要65毫秒,快了将近50倍!在英文维基百科的测试中,面对pg_trgm动辄几十秒的搜索时间,PGroonga也能稳定在毫秒级完成,性能优势一目了然。
更让人惊喜的是,PGroonga的使用门槛极低。你不需要成为搜索专家,也不需要学习复杂的查询语法。创建一个索引,然后在WHERE子句里用一个简单的操作符&@~
,就能进行强大的全文检索。比如SELECT * FROM articles WHERE content &@~ '人工智能';
。甚至,如果你的旧应用里用的是LIKE '%关键词%'
这种传统写法,PGroonga也能通过索引加速它!这意味着你几乎不用改一行代码,就能让你的老应用搜索性能飙升,简直是开发者的福音。
PGroonga的能力远不止于此,它还支持对JSON字段进行深度搜索。你可以对JSON里的每一个值设置查询条件,也可以像PostgreSQL 10的textsearch一样,对整个JSON文档里的所有文本内容进行全文检索。这对于现代应用中普遍存在的半结构化数据来说,简直是如虎添翼。
这么强大的工具,已经被众多知名项目采用。比如,强大的开源团队聊天软件Zulip,就用PGroonga来实现其全球用户的多语言消息搜索功能。另一个例子是Kelteu,一个支持51种语言的社区驱动型购物百科,它的全部搜索功能都建立在PGroonga之上,因为它需要一种开箱即用、性能卓越且能无缝集成到现有PostgreSQL栈中的解决方案。
最后,我们来简单介绍一下PGroonga项目背后的团队。PGroonga项目由一群热爱开源、深耕数据库和搜索引擎技术的工程师维护。他们不仅致力于打造一个高性能的工具,更积极推动其在真实世界中的应用,与Supabase等云服务厂商合作,让PGroonga能被更多开发者轻松使用。他们的理念是,强大的全文检索能力不应该成为少数人的专利,而应该成为每个PostgreSQL用户触手可及的基础能力。
总而言之,PGroonga 4.0.4的发布,标志着PostgreSQL在成为真正的全球化数据库的道路上,又迈出了坚实的一步。无论你是构建一个面向全球用户的应用,还是仅仅需要在你的中文系统里实现丝滑的搜索体验,PGroonga都值得你立刻下载、安装并尝试。它的强大、易用和高效,一定会让你大吃一惊!