[ruby-list:49103] [ANN] rroonga 2.1.0
From:
Kouhei Sutou <kou@...>
Date:
2012-12-29 01:34:07 UTC
List:
ruby-list #49103
須藤です。
今日は今年最後の肉の日ですね!
みなさん、今年はよい肉の日を過ごしたでしょうか?
さて、全文検索エンジンgroongaのRubyバインディングである
rroongaの新しいバージョン2.1.0をリリースしました!
同じく今日リリースされたgroonga 2.1.0と一緒に使います。
Web: http://ranguba.org/ja/#about-rroonga
○ rroongaとは
rroongaはRubyらしい書き方でgroongaを操作できるライブラリです。
高速な全文検索機能をあなたのRubyアプリケーションにさくっと組
み込むことができます。
インストールも簡単で、gem installだけでインストールできます。
(groongaがインストールされていなければ自動でインストールし
ます。)
gem install rroonga
Windowsでも簡単にインストールできます。
RubyInstaller(*1)を使っている場合は、↑のgem installでインス
トールできます。
(*1) http://rubyinstaller.org/
能楽堂(*2)を使っている場合は、すでに能楽堂にバンドルされてい
るので能楽堂をインストールしたらすぐに使えます。
(ただし、今回のリリースではなく、もう少し古いリリースがバン
ドルされています。能楽堂がバージョンアップするタイミングで
rroongaもバージョンアップされるはず。。。!)
(*2) http://www.artonx.org/data/nougakudo/jman.html
インストールしたらチュートリアルをやってみてください。どうやっ
て使うかがわかるはずです。
チュートリアル: http://ranguba.org/rroonga/ja/file.tutorial.html
○ 今回のリリースについて
今回のリリースには、後方互換性のない変更が含まれます。
今までGroonga::Table#sortメソッドは、組み込みクラスのArrayオブジェクト
を返していましたが、今回のバージョンからはGroonga::Arrayのオブジェクト
が返るように修正しました。
そのため、以前までのようにレコードからなるArrayオブジェクトを得るには、
次のコードのようにrecord.valueメソッドを使う必要があります。(recordは
ある1つのGroonga::Recordオブジェクト)
result_since_2_1_0 = table.sort(["sort_key"])
result_before_2_1_0 = result_since_2_1_0.collect do |record|
record.value
end
ただ、レコードに対してカラム名のメソッドを呼ぶことで、元のレコードの該
当するカラムの値を取得できます。そのため、レコードそのものではなくレコー
ドのあるカラムが持つ値がほしい場合は、record.valueメソッドは使わず
recordに対してカラム名のメソッドを呼ぶことをおすすめします。(例えば、
あるrecordのkeyはrecord.value.keyで取得できますが、record.keyも同じ値を
返します。)
他、インデックスカラムをダンプするツールや、文字列を正規化するメソッド
が実験的に追加されました。実験的なので、今後断りなく仕様が変わることが
あります。ご使用の際はご留意ください。また、ブロックで条件を指定するこ
とでレコードをまとめて削除する機能も追加されました。
○インストール
% sudo gem install rroonga
○チュートリアル
irbを使ったrroongaのチュートリアルがあります。
http://ranguba.org/rroonga/ja/file.tutorial.html
はじめての方はまずこちらを試してみてください。
2.0.7からの変更点は以下の通りです。
http://ranguba.org/rroonga/ja/file.news.html
2.1.0: 2012-12-27
-----------------
改良
^^^^
* groonga 2.1.0対応。
* ブロックを使ってまとめてレコードを削除できるようになった。
[groonga-dev,01138][ongaeshiさんが報告]
* Groonga::Normalizer.normalizeを追加。(ただし実験的です)このメソッ
ドは文字列を正規化します。
例)
Groonga::Normalizer.normalize("AbC") # => "abc"
今はこのメソッドは空白を自動で削除しますが、カスタマイズ可能にする予定です。
* DoubleArrayTrie, PatriciaTrie, Hash, Schemaを使ってテーブルを作ると
きに:normalizerオプションを指定可能にした。
* [table] 使用しているノーマライザーへのアクセサを追加。
* [table] キーが正規化可能かどうかをノーマライザーを使ってチェックするようにした。
* groonga-index-dumpコマンドを追加。(ただし実験的です)
このツールはDBからインデックスの情報をダンプします。
ダンプされた情報は"インデックス名.dump"というファイルに保存され、この
ファイルは"インデックス対象のテーブル名.index_インデックスカラム名"と
いうディレクトリに保存されます。
例)
$ cat index-dump.sdf
table_create --name Video --flags TABLE_HASH_KEY --key_type UInt32
table_create --name Tag --flags TABLE_HASH_KEY --key_type ShortText
column_create --table Video --name title --flags COLUMN_SCALAR --type ShortText
column_create --table Video --name tags --flags COLUMN_VECTOR --type Tag
column_create --table Tag --name index_tags --flags COLUMN_INDEX --type Video --source tags
load --table Video
[
{"_key":1,"title":"groonga Demo","tags":["IT","Server","groonga"]},
{"_key":2,"title":"Ultra Baseball","tags":["Sports","Baseball"]},
]
$ groonga --file index-dump.sdf -n index-dump.db
$ groonga-index-dump --output-directory=path/to/index/ index-dump.db
$ ls path/to/index/
Tag.index_tags
$ ls path/to/index/Tag.index_tags
Baseball.dump IT.dump Server.dump Sports.dump groonga.dump
$ cat path/to/index/Tag.index_tags/groonga.dump
index: Tag.index_tags\tterm: <groonga>\tdomain: Tag\trange: Video\thave_section: false\thave_weight: false\thave_position: false
weight\tposition term_frequency\trecord
0 2 1 Video[1].tags
* Groonga::IndexColumn#open_cursorにフラグに関するオプション
(:with_section, :with_weight, :with_position)を追加。インデックス
カラムを作るときにこれらオプションを指定していると、指定したオプショ
ンをデフォルトで使用可能になります。
* [Snippet] 指定されたGroonga::Contextオブジェクトがデータベースと結
びついていないときにエラーメッセージを表示するようにした。
* [inspect] インデックスカラム関連のフラグ(WITH_SECTION,
WITH_WEIGHT, WITH_POSITION)はインデックスカラムを表示するときにの
み表示するようにした。
* [inspect] デフォルトのトークナイザーとノーマライザーの情報を表示するようにした。
* Groonga::QueryLoggerをサポートした。このクラスはクエリログのロガー
です。詳しくはリファレンスマニュアルをご覧ください。
変更
^^^^
* groonga-query-log-extractコマンドをgroonga-query-logというgemに移動
しました。groonga-query-log-extractコマンドを使うには次のコマンドを
実行してgroonga-query-logをインストールしてください。
$ gem install groonga-query-log
* Groonga::Table#sortの返り値をArrayではなくGroonga::Arrayにした。
[GitHub: #8][Genki Takiuchiさんが報告]
注意: これは後方互換性のない変更です。元のレコードを使うにはrecordの
代わりにrecord.valueを使う必要があります。
感謝
^^^^
* ongaeshiさん
* Genki Takiuchiさん
それでは、よいお年を!
--
須藤 功平 <kou@clear-code.com>
株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270)
groongaサポート:
http://groonga.org/ja/support/
Mozilla Firefox/Thunderbirdサポート:
http://www.clear-code.com/services/mozilla/menu.html
迷惑メール対策:
http://www.clear-code.com/software/milter-manager.html