[groonga-dev,01150] [ANN] rroonga 2.1.0

Zurück zum Archiv-Index

Kouhei Sutou kou****@clear*****
2012年 12月 29日 (土) 10:35:08 JST


須藤です。

今日は今年最後の肉の日ですね!
みなさん、今年はよい肉の日を過ごしたでしょうか?

さて、全文検索エンジン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*****>
株式会社クリアコード <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 メーリングリストの案内
Zurück zum Archiv-Index