Groongaの開発とサポートをしている堀本です。今年も年に一度の肉の日(2月9日のこと)が来ました。 例年通り、Groongaをメジャーバージョンアップしたので、この一年でどのくらいGroongaがよくなったかを紹介します!
メジャーバージョンアップなのですが、特に非互換の変更を入れていないので、いつもどおり既存のデータベースを移行せずにGroongaをアップグレードできます。
Groonga
Groongaは今回のメジャーバージョンアップで16.0.0になりました。
前回のメジャーバージョンアップからの目玉機能は以下の通りです。
- セマンティックサーチのサポート
- 踊り字の正規化対応
TABLE_PAT_KEYのテーブルの最大合計キーサイズを拡張grndb checkの改良
それぞれ簡単に紹介します。
セマンティックサーチのサポート
最近では、LLM(大規模言語モデル)を使って、検索キーワードの字面ではなく、意味に基づいた検索ができる検索エンジンが増えています。 Groongaでも、LLMを使った意味ベースの検索ができるようになりました。
検索の精度は使用するLLMの精度に大きく依存しますが、従来のキーワード検索と併用してより有用な検索結果を得られるケースがあります。 この機能については、 PostgreSQL Conference Japan 2025でも発表してきたので、 PostgreSQL Conference Japan 2025:PostgreSQLでのセマンティックサーチへの挑戦 #pgcon25j の記事も合わせて参照してください。
踊り字の正規化対応
日本語には踊り字という前の文字を繰り返す記号があります。 例えば、「久々」の「々」や「こゝろ」の「ゝ」が踊り字です。これらの踊り字の有無を無視して検索できるようになりました。 つまり、「こころ」で「こゝろ」と「こころ」がヒットするようになります。
この機能についても、 PGroongaで踊り字の有無を無視して検索する方法 に詳細がありますので、合わせて参照してください。
TABLE_PAT_KEYのテーブルの最大合計キーサイズを拡張
非常に大きなデータも扱えるGroongaですが、制限もあります。 その中の一つに、最大の合計キーサイズの制限があります。今回はこの最大の合計キーサイズの上限を引き上げました。
TABLE_PAT_KEYの最大の合計キーサイズは、今まで4GiBでしたが、table_create時にKEY_LARGEを指定することで、上限を1TiBにできます。
これによって、TABLE_PAT_KEYにより多くのレコードを保持できるようになります。
grndb checkの改良
grndb checkは、Groongaのデータベースが破損していないかどうかをチェックするコマンドです。 このコマンドに以下の2つの改良を加え、より有用になりました。
grndb check実行時のメモリー使用量削減
今まで、grndb checkは破損を確認したテーブルやカラムをメモリー上に展開したままにしていました。これにより、非常に大きなテーブルがある環境や、メモリーが少ない環境ではメモリー不足によりgrndb checkに非常に時間がかかってしまうケースがありました。
これを改良し、確認が終わったテーブルやカラムを即時閉じるようにしました。
これにより、grndb check使用時のメモリー使用量を一定の範囲内に収めることができ、前述のような環境でも現実的な時間でgrndb checkを実行できるようになります。
grndb checkの精度向上
今までチェックできていなかったファイルをチェックするようにしました。 この改良により、今までよりさらに問題を発見できるようになりました。
まとめ
年に一度の肉の日(2月9日)にGroongaをメジャーリリースしたので前のメジャーバージョンからの目玉変更を紹介しました。ぜひ最新のGroongaを使ってこれらの変更を活用してください。
Groongaをもっと使いこなしたい!という場合はGroongaサポートサービスを、古いバージョンの全文検索エンジンを使っていて、「バージョンアップしたいけど安全にバージョンアップできるか不安。。。」という方には、古いバージョンの全文検索機能診断サービスを提供していますので、お気軽にお問い合わせください。