Senna on Ruby
■若しくは、Ruby on Senna
Sennaにて、まずはMySQLにおけるinstallをする。
% sudo apt-get install ruby1.8-dev % cd ~/work/senna/bindings/ruby % ruby extconf.rb % make % sudo make install
として、install完了。 そんじゃ、実際に使ってみるぞと…。
■Senna API on Ruby
RubyでのAPIは、すごくおおまかに言うとこんな感じ。
module Senna class Index def initialize(path, flags=0) # 引数: path, index fileのbasenameを指定する。flags, 未使用。 # 実行: sen_index_open(path), sen_index_create が呼ばれる。 end def upd(key, oldvalue, newvalue) # index内のkeyに対応するレコードの値をoldvalueからnewvalueに更新します。 # 引数: 現時点ではoldvalueであるkeyに対して、newvalueをいれる。 # 新規レコードである場合はoldvalueにnilを指定します。 # レコードを削除する場合はnewvalueにnilを指定します。 # oldvalueには前回indexに登録した時の値を正しく指定する必要があります。 # 実行: sen_index_upd(key, ov, nv) が呼ばれる。 # 返値: 成功したかどうかが、true, falseで返る? end def sel(string) # indexから値にstringを含むレコードを取り出し、Recordsインスタンスとし # て返します。 # 引数: keyに対するrecordsを取得する。 # 実行: sen_index_sel(string) が呼ばれる。 # 返値: Recordsが返る end def select(key) # 引数: keyに対するrecordsを取得する。 # 実行: sen_records_open, sen_index_select が呼ばれる。 # 返値: Recordsが返る end def check # 実行: sen_index_check が呼ばれる。 end end class Records def curr_score # カレントレコードのスコア(検索クエリーに対する適合度)を返します。 # 実行: sen_records_curr_score が呼ばれる。 # 返値: 結果が数値で返る。 end def next # カレントレコードを一つ進めます。 # 実行: sen_records_next が呼ばれる。 # 返値: 文字列が返る。無ければnilが返る。 end def rewind # カレントレコードを最初のレコードに戻します。 # 実行: sen_records_rewind が呼ばれる。 # 返値: 結果がtrue, falseで返る。 end def nhits # recordsに含まれるレコードの数を返します。 # 実行: sen_records_nhits が呼ばれる。 # 返値: その値が返る。 end def find(key) # recordsにkeyに対応するレコードが含まれているかどうかを調べます。 # 引数: recordsからkeyをさがす。 # 実行: sen_records_find(key) が呼ばれる。 # 返値: 値が返る。 end end end
- http://qwik.jp/senna/10.html Senna API
現時点では、元々のAPIを理解することが必須。 現在、Rubyからは簡易APIだけが見えているので、そこだけ見ればよい。
■test case
test caseをかいてみた。→→→→
Last modified: 2006-09-05
