今回は2つの有用な機能が追加されています。実験的な扱いですが、興味のある方はぜひ試してみてフィードバックをおねがいします。カラム値の圧縮をサポートトークンフィルター機能を追加カラム値の圧縮をサポート今回のリリースでは、カラム値の圧縮をサポートしました。圧縮にはzlibまたはLZ4を使えます。Groongaにはカラム値の合計の上限値が256GiBという上限がありますが、カラム値を圧縮することにより256GiB以上のデータを扱うことができます。Groongaでは、zlib/LZOを使った圧縮をサポートしてはいたのですが、内部的な実装の都合でメモリリークしてしまうという問題がありました。付きでビルドしても使えないようにしていました。今回はそのあたりの実装の問題を@naoa_yさんのパッチをもとに解決することができました。そのため、今回のリリースから再びzlibの圧縮をサポートしました。LZOをLZ4に変更したのは、LZ4の方が速度が速かったからです。(圧縮率は同じくらいです。)@naoa_yさんが測ってくれた結果(LZOとSnappyの結果、LZ4の結果)では、LZ4よりもSnappyの方が速かったですが、LZ4のサイトではLZ4の方が速いということなのでSnappyではなくLZ4を採用することにしました。Textなお、zlibとLZ4の傾向の違いは次の通りです。zlibの方が圧縮率はよいLZ4の方が圧縮・展開速度が速いまずはLZ4を試してみて、それでもデータ量が多いならzlibを検討するのがよいでしょう。データ量が多いときはテーブル分割を考慮に入れた方がよいケースもあります。ベンチマークをとりながら検討してください。実際に計測してはいませんが、数バイトや数10バイトなど小さいデータの場合は圧縮する方がサイズが大きくなる可能性があります。(メタ情報を追加したりするため。)そのため、ある程度大きめのデータに対してだけ使うことをオススメします。タグの値を入れたカラムなどは圧縮する意味はあまりありません。圧縮したカラムでもソートやドリルダウンをできますが、非圧縮のカラムより遅くなります。大きめのデータの場合(Wikipediaの本文データなど)はソートやドリルダウン対象にすることはないので問題になることはないでしょう。注意:カラム値の圧縮はまだ実験的な機能です。慎重な人はまだ使わないことをオススメしますが、興味のある方はぜひ試してみて、フィードバックをおねがいします。フィードバックとは次のようなものです。動いた多くの人からきちんと動いたという報告があれば「実験的な機能」扱いではなく「正式機能」扱いにします。うまく動かなかった修正するので詳細を教えてください。このくらい効果があったサイズ面、速度面で報告があると他のユーザーの参考になるので、ベンチマークなどをとってその結果を教えてください。今回のリリースではトークンフィルター機能を追加しました。これは、トークナイズ後の各トークンに対して処理を実行できる機能です。トークンを無視したり変更したりできます。今回のリリースでは、トークンフィルターを2つ追加しました。TokenFilterStopWordTokenFilterStem追加したトークンフィルターをそれぞれ紹介します。使うと文書を検索する時にトークナイズされたトークンからストップワードを除去します。して登録するだけです。ストップワードとして扱い、無視します。検索したのと同じ結果になります。詳細はドキュメントを参考にしてください。使うといわゆるステミングを有効にすることができます。オプションを指定します。活用した後の検索結果も取得できます。そのため検索漏れを少なくすることができます。詳細はドキュメントを参考にしてください。TokenFilterStem注意トークンフィルター機能も「実験的な機能」扱いです。使ってみた人はぜひフィードバックをおねがいします。現時点では、TokenFilterStemはMySQLの正規化処理と相性が悪いことがわかっています。他にも気づいた点があればぜひ教えてください。Debianユーザー向け情報Groongaのパッケージが公式Debianリポジトリーに入りました。sidユーザーの人は公式DebianパッケージからGroongaをインストールできます。14.10に対応しています。Ubuntuユーザーの人も安心してアップグレードしてください。イベントのお知らせ11月29日(土)は、今年も「全文検索エンジンGroongaを囲む夕べ」を開催します!次のような内容です。興味のある人はぜひイベントページに登録して、開催を楽しみにしていてください。検索エンジン自作入門のサイン会(すでに購入している人は持ってきてください。)イベント概要は次の通りです。2.1の下でリリースされています。