[groonga-dev,03972] [ANN] Rroonga 6.0.0

Back to archive index

Masafumi Yokoyama yokoy****@clear*****
2016年 3月 8日 (火) 08:41:23 JST


横山です。

Rroonga 6.0.0をリリースしました。
約1年ぶりのメジャーバージョンアップです!

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

○ Rroonga(るるんが)とは

RubyからGroongaのDB API層の機能を使えるライブラリーです。
Groongaの速度をそのまま生かしつつ、Rubyらしく書けることを大事
にしています。

○ インストール

   % gem install rroonga

詳細: http://ranguba.org/rroonga/ja/file.install.html

○ チュートリアル

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

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

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

先月末のうるう肉の日にリリースされたGroonga 6.0.0に対応しました。
Groonga 5.1.2以前はサポートしなくなったのでご注意ください。

このリリースでは多くの変更が入っています。
特にGroonga::Table#selectの動作がいろいろと改善されています。

例えば、RubyらしいAPIが追加されていたりします。
今までは以下のように呼んでいたのが、

     # Rroonga 5.1.1以前(6.0.0でも使える)
     @shops.select do |record|
       record.call("geo_in_rectangle",
                   record.location,
                   "35.7185,139.7912",
                   "35.7065,139.8069")
     end

以下のように呼べるようになります。

     # Rroonga 6.0.0
     @shops.select do |record|
       record.location.geo_in_rectangle("35.7185,139.7912",
                                        "35.7065,139.8069")
     end

なお、一つ後方非互換な変更が入っています。
Groonga::Table#selectの条件ブロック内で数値オブジェクトを自動でレコード 
IDに変換することをやめました。
影響があるのは、以下のようにブロック内で数値型のキーを持つレコードオブ 
ジェクトを比較しているケースです。

     Groonga::Schema.define do |schema|
       schema.create_table("Users", key_type: :integer) do |table|
         table.short_text("name")
       end
       schema.create_table("Records", type: :array) do |table|
         table.reference("user", "Users")
       end
     end

     users = Groonga["Users"]
     alice = users.add(2, name: "Alice")
     p alice.id # => 1
     bob = users.add(1, name: "Bob")
     p bob.id # => 2

     records = Groonga["Records"]
     records.add(user: alice)
     records.add(user: bob)

     selected_records = records.select do |record|
       record.user == 1
     end
     p selected_records.collect {|record| record.user.name}
     # Rroonga 5.1.1は「1」がIDとして扱われるため ["Alice"] が返る
     # Rroonga 6.0.0は「1」がキーとして扱われるため ["Bob"] が返る

6.0.0で右辺値としてレコードIDを指定したい場合はレコードオブジェクトを渡 
してください。

     selected_records = records.select do |record|
       record.user == alice
     end

影響がある方はあまりいないとは思いますが、ご注意ください。

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

○ Ruby on Railsとの連携について

RroongaはRuby on Railsからでも使うことができます。
ただ、Railsで全文検索機能を実現したいときは、Rroongaよりも
Mroonga(むるんが)かPGroonga(ぴーじーるんが)を使う方が簡単です。
SQLで使えるのでActive Recordと相性がよいからです。

Ruby on RailsでMySQLとMroongaを使って日本語全文検索を実現する方法:
   http://www.clear-code.com/blog/2015/11/10.html

Ruby on RailsでPostgreSQLとPGroongaを使って日本語全文検索を実現する方法:
   http://www.clear-code.com/blog/2015/11/9.html

Rroongaだけでなくこちらも使ってみてください。


それでは、RubyでもGroongaでガンガン全文検索してください!

-- 
横山 昌史 <Masafumi Yokoyama>
E-mail: yokoy****@clear*****
株式会社クリアコード
〒170-0005 東京都豊島区南大塚3-29-9
Tel: 03-5927-9440
Web: http://www.clear-code.com/




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