[groonga-dev,01354] [ANN] rroonga 3.0.1

Back to archive index

Kouhei Sutou kou****@clear*****
2013年 5月 1日 (水) 18:12:07 JST


須藤です。

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

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

○ rroongaとは

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

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

今回のリリースからベクター型のカラムの値に重みを付けられるよ
うになりました。これは、groongaのコマンドではまだ実現できて
いない機能で、今のところrroongaだけで使えます。

この機能のユースケースはタグへの重み付けです。
ポイントは以下の3点です。

  (1) ベクター型のカラムにすること
  (2) インデックスカラムで重みサポートすること
  (3) 値を設定するときに重みも一緒に設定すること

以下に具体的な使い方を示します。「groonga」というタグだけ重
みをつけているため、「groonga」でヒットした場合のみスコアが
大きくなります。

  require "groonga"

  Groonga::Database.create(:path => "/tmp/db/db")

  Groonga::Schema.define do |schema|
    schema.create_table("Sites") do |table|
      table.short_text("name")
      # (1) ベクター型のカラムにすること
      table.short_text("tags", :type => :vector)
    end

    schema.create_table("Tags",
                        :type     => :patricia_trie,
                        :key_type => :short_text) do |table|
      # (2) インデックスカラムで重みサポートすること
      table.index("Sites.tags", :with_weight => true)
    end
  end

  sites = Groonga["Sites"]

  sites.add(:name => "groonga.org",
            :tags => [
              # (3) 値を設定するときに重みも一緒に設定すること
              # 「groonga」タグに重み10を設定
              {
                :value => "groonga",
                :weight => 10,
              },
              # 重みを設定していない
              {
                :value => "search engine",
              },
              # 重みを設定していない
              "fulltext search",
            ])

  records = sites.select do |record|
    record.tags =~ "groonga"
  end
  p records.collect(&:score) # => [11] (= 1 + 重み10)

  records = sites.select do |record|
    record.tags =~ "search engine"
  end
  p records.collect(&:score) # => [1] (= 1 + 重み0)

  records = sites.select do |record|
    record.tags =~ "fulltext search"
  end
  p records.collect(&:score) # => [1] (= 1 + 重み0)


○ インストール

  % gem install rroonga

○ チュートリアル

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

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

3.0.0からの変更点は以下の通りです。

3.0.1: 2013-05-01
=================

改善
----

  * groonga >= 3.0.3を必須にした。
  * 値に重みを指定できるようにした。
    詳細はGroonga::Table#set_column_value、
    Groonga::Record#initialize、Groonga::Record#[]=を参照。
  * Groonga::Logger.query_log_pathをGroonga::QueryLogger.pathへ改名した。
  * Groonga::Logger.query_log_path=をGroonga::QueryLogger.path=へ改名した。
  * Groonga::Logger.log_pathをGroonga::Logger.pathへ改名した。
  * Groonga::Logger.log_path=をGroonga::Logger.path=へ改名した。
  * "Packnga >= 0.9.7"への依存が抜けていたので追加した。 [takkanmさんが報告]

修正
----

  * エラー発生時にメモリリークする問題を修正。

感謝
----

  * @takkanmさん

-- 
須藤 功平 <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