PGroongaはPostgreSQLの拡張機能です。PGroongaはGroongaを使った新しいインデックスアクセスメソッドを提供します。
Groongaは組み込み可能な超高速全文検索エンジンです。GroongaはMySQLにも組み込めます。MroongaはGroongaベースのストレージエンジンです。Groongaはスタンドアローンの検索エンジンとしても使えます。
PostgreSQLはアルファベットと数値だけを使った言語の全文検索だけをサポートしています。これは、日本語や中国語などはサポートしていないということです。PGroongaをPostgreSQLにインストールすると全言語対応の超高速全文検索機能を使えるようになります!
さらに、PGroongaはJSON内のすべてのテキスト値に対する全文検索もサポートしています。これは他にはない機能です。組み込みのPostgreSQLの機能でもJsQueryでもサポートしていません。
あらゆる言語をサポートした全文検索を実現するための拡張機能がいくつかあります。
PostgreSQLにバンドルされていますが、デフォルトではインストールされていません。
あらゆる言語に対応するためにはpg_trgmのソースコードを変更する必要があります。
ソースコードを変更しなくてもあらゆる言語をサポートした全文検索を実現できます。
誤検出を防ぐためにRecheckをする必要があります。
Recheckはヒット数が多くなるほど遅くなります。なぜならRecheckはインデックスを使った検索でマッチしたレコードに対してシーケンシャルサーチをするからです。
Recheckを無効にすると誤検出したレコードも返ってくる可能性があります。
PGroongaはソースコードを変更しなくてもあらゆる言語をサポートした全文検索を実現できます。
PGroongaはRecheckなしで動きます。インデックスを使った検索で誤検出をしないからです。そのため、PGroongaはヒット数が多くなる場合でも高速です。
PGroongaはレプリケーションをサポートしています。レプリケーション機能を使うにはPostgreSQL 9.6以降が必要です。
PGroongaはクラッシュセーフではありません。更新中にPostgreSQLのプロセスがクラッシュした場合はPGroongaのインデックスが壊れるかもしれません。PGroongaのインデックスが壊れたらREINDEX
PGroongaのインデックスを再作成する必要があります。
PGroongaはtextsearch_groongaをベースにしています。textsearch_groongaは板垣貴裕さんが開発しました。感謝します。
使ってみたくなりましたか?PGroongaをインストールしてチュートリアルを試してください。PGroongaについてもっと理解できるはずです。