[pgsql-jp: 41830] [ANN] PGroonga 0.9.0

Kouhei Sutou kou @ clear-code.com
2015年 10月 1日 (木) 14:38:06 JST


須藤です。

先日、9月の肉の日に、PostgreSQLからGroonga(*)を使うための拡張機能、
PGroonga(ぴーじーるんが) 0.9.0をリリースしました!
PGroongaを使うと高速な日本語全文検索機能を使うことができます。

  http://groonga.org/ja/blog/2015/09/29/pgroonga-0.9.0.html

(*) 国産の全文検索エンジン: http://groonga.org/ja/

同様の機能を提供するLIKEやpg_bigmとの性能の傾向の違いについ
てはこちらをご覧ください。

  http://www.clear-code.com/blog/2015/5/25.html


今回のリリースでは、JSON内のすべてのテキストデータに対しても
日本語全文検索できるようになりました。

これまでも、インデックス対象を式で指定するPostgreSQLの機能(*)
を使うことにより、JSONの特定のパスの値を日本語全文検索するこ
とはできました。しかし、パスに関係なく日本語全文検索すること
はできませんでした。

(*) www.postgresql.jp/document/current/html/indexes-expressional.html

たとえば次のJSONがあるとします。

--
{
  "a": "hello",
  "b": "world"
}
--

これまでは、".a"の値("hello")に対してだけ日本語全文検索で
きました。

今回のリリースからは".a"の値("hello")に対しても".b"の値
("world")に対しても日本語全文検索できるようになりました。


使い方は、jsonb型のレコードにインデックスを作成して@@演算子
で条件を指定するだけです。

--
CREATE TABLE logs (
  record jsonb
);
CREATE INDEX logs_index ON logs USING pgroonga (record);

INSERT INTO logs VALUES ('{"a": "hello", "b": "world"}');

SELECT * FROM logs WHERE record @@ 'string @ "hello"';
--

他にもGINでjsonbにインデックスを作成したときに使える@>演算子
もサポートしています。


JSON内のテキストに対して日本語全文検索したい方は試してみてく
ださい。もう少し詳しい使い方の説明は↓にあります。

  https://github.com/pgroonga/pgroonga#jsonb%E3%82%92%E4%BD%BF%E3%81%86

JSONに対するインデックスをどうやって実装しているかに興味のあ
る方は↓に少しまとめたのでソースコードとあわせて参照してください。

  http://www.clear-code.com/blog/2015/9/30.html


pgsql-jp メーリングリストの案内