[groonga-dev,01521] [ANN] rroonga 3.0.4

Back to archive index

Kouhei Sutou kou****@clear*****
2013年 7月 5日 (金) 12:33:53 JST


須藤です。

groongaのRubyバインディングであるrroonga 3.0.4をリリースしま
した。

Web: http://ranguba.org/ja/#about-rroonga

○ rroongaとは

rroongaはRubyらしい書き方でgroongaを操作できることを重視しています。
同時に、groongaの速度をそのまま生かすことも大事にしています。

○ 今回のリリースについて

今回のリリースからgroonga 3.0.5で追加されたサブレコード機能
に対応しました。サブレコード機能とは、ドリルダウンしたあとの
各項目について、実際に集約したレコード(= サブレコード)を取
り出す機能です。

この機能を使うと、例えば、ジャンルでドリルダウンした結果のそ
ばに具体的にどういうアイテムがあるかを表示することができます。

  * 本(1238件)
    * Ruby(29件) ← ジャンル
      * たのしいRuby ← サブレコード!
      * 初めてのRuby ← サブレコード!
      * ...
    * Python(13件) ← ジャンル
      * ...
    * PHP(23件) ← ジャンル
      * ...

コード例です。詳細はコメントを参考にしてください。

----
require "fileutils"

require "groonga"

db_dir = "/tmp/db"
FileUtils.rm_rf(db_dir)
FileUtils.mkdir_p(db_dir)

Groonga::Database.create(:path => "#{db_dir}/db")

# ユーザーが複数のブックマークをする、というスキーマ。
Groonga::Schema.define do |schema|
  schema.create_table("Users",
                      :type => :hash,
                      :key_type => :short_text) do |table|
    table.short_text("name")
  end

  schema.create_table("Bookmarks") do |table|
    table.short_text("url")
    table.reference("user")
  end
end

# ユーザーを3人登録
users = Groonga["Users"]
users.add("mori", :name => "Daijiro MORI")
users.add("kou", :name => "Kouhei Sutou")
users.add("s-yata", :name => "Susumu Yata")

bookmarks = Groonga["Bookmarks"]
# groonga.orgをブックマーク
bookmarks.add(:url => "http://groonga.org/", :user => "mori")
bookmarks.add(:url => "http://groonga.org/", :user => "kou")
bookmarks.add(:url => "http://groonga.org/", :user => "s-yata")
# mroonga.orgをブックマーク
bookmarks.add(:url => "http://mroonga.org/", :user => "kou")
# ranguba.orgをブックマーク
bookmarks.add(:url => "http://ranguba.org/", :user => "kou")
bookmarks.add(:url => "http://ranguba.org/", :user => "mori")

# ブックマークをユーザーごとにグループ化
# 取得する最大サブレコード数は2
bookmarks.group("user", :max_n_sub_records => 2).each do |group|
  # グループ化した結果レコードから実際の値(ユーザー)を取得
  user = group.key
  # ユーザーID(key)と全サブレコード数を出力。
  # 全サブレコード数は:max_n_sub_records => 2の影響を受けない
  puts "#{user.key} (#{group.n_sub_records})"
  # グループ化したときに集約された各レコード(= サブレコード)の情報を出力
  # ブックマークテーブルをグループ化したのでサブレコードはブックマークレコード
  # ただし、:max_n_sub_records => 2で最大で2件までに制限されている。
  group.sub_records.each do |bookmark|
    puts "  #{bookmark.url}"
  end
end
# 結果:
#   mori (2)
#     http://groonga.org/
#     http://ranguba.org/
#   kou (3)
#     http://groonga.org/
#     http://mroonga.org/
#   s-yata (1)
#     http://groonga.org/
#
# kouユーザーは3サブレコードあるが、:max_n_sub_records => 2で
# 最大2件に制限しているため2件しか表示されていない。
----

○ インストール

  % gem install rroonga

○ チュートリアル

irbを使ったrroongaのチュートリアルがあります。
  http://ranguba.org/rroonga/ja/file.tutorial.html

はじめての方はまずこちらを試してみてください。

3.0.2からの変更点は以下の通りです。
  http://ranguba.org/rroonga/ja/file.news.html#3-0-4

3.0.4: 2013-07-04
=================

修正
----

  * Windows用のrroogna 3.0.3 gemパッケージを修正。

3.0.3: 2013-07-04
=================

改善
----

  * groonga >= 3.0.5を必須とした。
  * Groonga::Table#selectの結果テーブル作成時のエラーチェックを追加。
  * Groonga::Operator::AND_NOTを追加。
  * Groonga::Operator::BUTを非推奨にした。これはgroongaが非推奨にしたためである。 代わりにGroonga::Operator::AND_NOTを使うこと。
  * Groonga::Array#unblockを追加。
  * Groonga::Table#groupに :max_n_sub_records オプションを追加。
  * Groonga::Table#each_sub_recordを追加。
  * groongaからベクターの値を読み込めるようにした。
  * Groonga::Expression#define_variableに :reference => true オプションを追加。 これは、参照型の変数を定義するためのものである。
  * レコードのサブレコードを返すGroonga::Record#sub_recordsを追加。 サブレコードはGroonga::SubRecordsのインスタンスである。

修正
----

  * Groonga::Expression#[]の返り値の型を修正。値そのものではなくGroonga::Variableを返すようにした。注意: これは後方非互換の変更である。

-- 
須藤 功平 <kou****@clear*****>
株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270)

groongaサポート:
  http://groonga.org/ja/support/
パッチ採用はじめました:
  http://www.clear-code.com/recruitment/
コミットへのコメントサービスはじめました:
  http://www.clear-code.com/services/commit-comment.html




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