[groonga-dev,03094] [ANN] Rroonga 5.0.0

Back to archive index

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/




groonga-dev メーリングリストの案内
Back to archive index