これはPGroonga 2.X and 3.X用のドキュメントです。古いPGroongaを使っているならPGroonga 1.xのドキュメントを見てください。

jsonbサポート

PGroongaはjsonb型にも対応しています。PGroongaを使うとJSON中のキー・値に対して検索することができます。

JSON中のすべてのテキスト値に対して全文検索することもできます。これはPGroonga独自の機能です。PostgreSQL組み込みの機能でもJsQueryでもこの機能はサポートしていません。

次のJSONを考えてください。

{
  "message": "Server is started.",
  "host": "www.example.com",
  "tags": [
    "web",
  ]
}

serverexamplewebのどれで全文検索してもこのJSONを見つけることができます。なぜなら、すべてのテキスト値が全文検索対象だからです。

演算子

PGroongaはjsonbに対して検索するために次の2つの演算子を提供しています。

@>演算子は@@演算子よりもシンプルですが範囲検索のような複雑な条件を指定することはできません。

@@演算子は@>演算子より複雑ですが、複雑な条件も使えます。JSON内のすべてのテキスト値に対する全文検索もできます。

GINとの比較

PostgreSQLは組み込みの機能としてGINを使った高速なjsonb検索機能を提供しています。

PGroongaとGINの違いは次の通りです。