Masafumi Yokoyama
yokoy****@clear*****
2015年 2月 17日 (火) 10:04:56 JST
横山です。 Rroonga 5.0.0をリリースしました。一年ぶりのメジャーバージョンアップです! 一週間前にリリースされたGroonga 5.0.0以降に対応しています。 Webサイト: http://ranguba.org/ja/#about-rroonga Rroongaは、RubyからGroongaを使えるライブラリーです。ライブラリーなので サーバーが不要で、Rubyらしい書き方で簡単に全文検索することができます。 Groongaと同じく、Rroongaも継続的に開発が進められています。 ## 今回のリリースについて 今回のリリースでも多くの機能が追加されました。主な変更点は以下です。 * Groonga::Normalizer.normalizeの挙動をオプションで変えられるようになった * Groonga::Table#groupが複数キーによるドリルダウンに対応 * Groonga::Table#groupがドリルダウンの計算機能に対応 ### Groonga::Normalizer.normalizeの挙動をオプションで変えられるようになった 以下のようにオプションを指定できるようになりました。デフォルトの挙動はそ のままです。 Groonga::Normalizer.normalize("AbC Def gh") #=> “abcdefgh” Groonga::Normalizer.normalize("AbC Def gh", :remove_blank => true) #=> “abcdefgh” Groonga::Normalizer.normalize("AbC Def gh", :remove_blank => false) #=> “abc def gh” ### Groonga::Table#groupが複数キーによるドリルダウンに対応 今までは一度に1つのキーでしかグループ化できませんでしたが、 同時に複数のキーでグループ化できるようになりました。例えば、 以下の4つのレコードを2つのキーでグループ化した場合、 @items.add("key1", :type => "a", :score => 10) @items.add("key2", :type => "a", :score => 20) @items.add("key3", :type => "b", :score => 10) @items.add("key4", :type => "b", :score => 10) @items.group(["type", "score"]).each do |group| sub_record = group.sub_records.first p [sub_record.type, sub_record.score, group.n_sub_records] end 以下のように3つのグループになります。 出力例: ["a", 10, 1] ["a", 20, 1] ["b", 10, 2] ポイントは、キーが複数あるとgroup.keyは使えないため、 サブレコードの中に入っている値を使うことです。サブレコードの数は :n_sub_recordsオプションで指定できますが、キーが1つのときは0が デフォルトなのに対して、キーが2つ以上のときは1がデフォルトです。 ### Groonga::Table#groupがドリルダウンの計算機能に対応 Groonga 4.1.1で導入されたドリルダウンの計算機能に対応しました。 グループ化するときに、計算対象のカラム名を:calc_targetオプションに、 取得したい値を:calc_typesオプションに指定すると、グループごとに 最大値、最小値、合計値、平均値を算出できます。 @items.add("key1", :type => "a", :score => 10) @items.add("key2", :type => "a", :score => 20) @items.add("key3", :type => "b", :score => 10) @items.add("key4", :type => "b", :score => 10) @items.group("type", :calc_target => "score", :calc_types => [:max, :min, :sum, :average]).each do |group| p [group.key, group.max, group.min, group.sum, group.average] end 出力例: ["a", 20, 10, 30, 15.0] ["b", 10, 10, 20, 10.0] 各メソッドのリファレンスはnewsページからリンクでたどれます。 http://ranguba.org/rroonga/ja/file.news.html#5-0-0 疑問点はお気軽にお問い合わせください。 ## Windowsユーザーの方へのお願い Groonga 4.1.1から、Windowsでデータベースの初期サイズをよりコンパクト にできるという実験的な変更が入っています。 Groonga 4.1.1リリース http://groonga.org/ja/blog/2015/01/29/release.html 今回のリリースで、Windows用のRroongaにバンドルされているGroongaでも この機能が使えるようになったので、手軽に試せるようになりました。 そこで、WindowsでRroongaを使っている方は、この機能を有効にして 動かしてみてもらえないでしょうか。手順は以下のような感じです。 1. 環境変数で機能を有効にする(コマンドプロンプトで作業する例) 現在のウィンドウで一時的に有効にする場合 > set GRN_IO_VERSION=1 ユーザー環境変数に設定する場合(ウィンドウを開き直すと有効になる) > setx GRN_IO_VERSION 1 2. データベースを作成する(Milkodeで試す例) > mkdir tmp > cd tmp > set MILKODE_DEFAULT_DIR=%CD% > milk init 3. 普段と同じように動かしてみる ※試す際、GRN_IO_VERSION=1を有効にすると古いGroongaではそのデータベース を開けなくなることにだけ注意してください。 動かしてみたら、大丈夫でも大丈夫じゃなくてもぜひ教えてください。 ## Rroongaの開発への協力のお願い RroongaはGitHubで開発を進めているのですが、issueが溜まってきています。 もし開発に協力してくれる方がいれば、↓を見て、できる範囲でよいので協力 してくれるとうれしいです。 https://github.com/ranguba/rroonga/issues よろしくお願いします。 -- 横山 昌史 <Masafumi Yokoyama> E-mail: yokoy****@clear***** 株式会社クリアコード 〒170-0005 東京都豊島区南大塚3-29-9 中野ビル3階 TEL : 03-5927-9440 FAX : 03-5927-9441 WWW : http://www.clear-code.com/ クリアコードの開発スタイル: http://www.clear-code.com/philosophy/development/style.html コードリーダー育成支援 - 自然とリーダブルコードを書くチームへ: http://www.clear-code.com/services/code-reader/ Groongaベースの全文検索システムを総合サポート: http://groonga.org/ja/support/