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