[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 メーリングリストの案内