システムに拡張する魔法のような拡張機能です。PGroongaの他にも類似の拡張機能はありますが、速度・機能面で他の拡張機能とは一線を画しています。これはPGroongaはバックエンドにGroongaという本格的な全文検索エンジンを使っているためです。速度面では類似の拡張機能であるpg_bigmよりも高速です。ともに数倍から10倍以上高速です。ククログ(2015-05-25)に日本語版Wikipediaのデータを使って計測した結果があります。インデックス作成にかかった時間です。5時間56分15秒このケースでは約14倍高速です。検索時間は次の通りです。0.556s「日本」で検索した場合はpg_bigmの方がやや速い(*)ですがそれ以外の場合ではPGroongaの方が3倍から14倍ほど高速です。どのような検索語に対しても安定して高い性能を出していると言えます。pg_bigmは3文字以上の検索語より2文字以下の検索語の方が得意です。機能面では他の類似拡張機能にはない次の機能を提供しています。ノーマライズ機能トークナイザーのカスタマイズ機能スニペット機能ノーマライズ機能とは異なる表記のテキストを同等の表記のテキストに統一する処理です。簡単なものでは「ポスグレ」というようにいわゆる半角カタカナで書かれたテキストも「ポスグレ」もどちらも「ポスグレ」というようにいわゆる全角カタカナに統一します。することにより「ポスグレ」(全角カタカナ)で検索しても「ポスグレ」(半角カタカナ)で書かれたテキストでもヒットするようになります。難しいものだと「ミリバール」は「ミリバール」に変換します。これらはUnicodeのNFKCという方法をベースにしています。トークナイザーのカスタマイズ機能とは検索キーワードとなるキーワードを抽出する処理(トークナイズ処理)をカスタマイズできる機能です。トレードオフをユーザーがコントロールできるようになります。「形態素解析器を使ったトークナイザー」というものにすれば精度・性能は向上しますが、検索漏れが発生することがあります。他の類似拡張機能で形態素解析器を使ったトークナイズ処理をできるものはありません。PGroongaだけです。「形態素解析器を使ったトークナイザー」にはMeCab(OSS)を使ったものとJMAT(非OSSの商用製品)を使ったものがあります。バックエンドで使っているGroongaはトークナイザーをプラグインとして追加できる機能を提供しているため様々なプロダクトを活用してトークナイザーを実装できるのです。スニペット機能とはWeb検索エンジンがよく使っている機能でキーワード周辺のテキストを表示しているものです。Googleもヒットしたページのタイトルの下にキーワード周辺のテキストを出していますよね。PGroongaはそれを実現する関数を提供しています。他にも次の機能を提供しています。個々の要素も検索できますし、JSON内のすべてのテキストに対して全文検索することもできます。現在は未実装ですが、今後、提供予定の機能には次のような機能があります。これらはGroongaでは実装されている機能です。使い方PGroongaは全文検索のことをあまり知らなくても簡単に使えます。インデックスを作成してWHEREに条件を指定するだけです。'全文検索';LIKEでもインデックスを使って検索できる機能を提供しているため、既存アプリケーションで次のように書いていたとしてもアプリケーションを変更せずに高速にできます。'%全文検索%';興味がでてきましたか?インストールしてチュートリアルを試してみてください。一通りの機能を確認できます。インストールも簡単です。主要なプラットフォーム用にパッケージを提供しているからです。Windows用のバイナリーも提供しています。おしらせ1ヶ月後の2015年11月29日にPGroongaのイベントを開催します。PGroongaに興味がでてきた方はぜひお越しください。2015会場および懇親会の飲食物をぐるなびさんに提供してもらえることになりました。そのため、無料で懇親会まで参加でき、PGroongaの情報、他のユーザーがどのように使っているかの情報などを得ることができるイベントになっています。PGroongaの実装に興味のある方は↑の2日前の11月27日に開催されるPostgreSQLカンファレンス2015へお越しください。開発者が「PGroongaの実装」というタイトルで発表します。PGroongaだけでなく全文検索についても興味がある方は来週の11月6日に開催の「Groongaで学ぶ全文検索」への参加もご検討ください。「Groongaで学ぶ全文検索」は予習・復習なしで全文検索を学ぶ、参加者に合わせて内容を決める、という限られた時間内でできるだけ実りある時間にしようというスタイルの勉強会です。全文検索を学びたい!という方はご活用ください。2015-11-06既存ユーザー向け情報ここまではPGroongaを知らない人向けに書いてきましたが、このセクションだけは既存ユーザー向けの情報になります。アップグレード方法1.0.0は過去のバージョンと互換性がありません。アップグレードの「非互換の場合」用の手順でアップグレードしてください。1.0.0での変更点0.9.0から1.0.0での変更点は次の通りです。インデックスオンリースキャンをサポートしました。インデックスを使った場合でも使わない場合でもLIKEが同じ結果を返すようになりました。その代わり速度は遅くなっています。ヒット数が多くなるほど遅くなる傾向があります。(PostgreSQLが提供するRecheck機能を使っているため。)ILIKEをサポートしました。正規表現を使った検索をサポートしました。Winodws用のバイナリーにMeCabをバンドルするようにしました。イベント発表のおねがい1ヶ月後の2015年11月29日に開催するPGroongaのイベントでは「PGroongaを使っていてよかったこと」というテーマで発表者を募集しています。PGroongaを使っていて助かった・役立っているという方はぜひこの機会に教えてください。他のユーザーの参考にもなりますし、なにより開発者の励みになります。PGroongaの開発が活発に続くとうれしいという方はぜひご協力ください。詳細は次のページを参照してください。発表応募まとめ最新のPostgreSQLでGroongaを使えるようにするPGroongaの新しいバージョンをリリースしました。メジャーリリースです。2.1の下でリリースされています。