2006-10-12
■ [prog] Senna
「組み込み型全文検索エンジン」Sennaを試し中。
なんか*.soの読み込みができなかったんだけど、/etc/ld.so.confに/usr/local/libを追加→/sbin/ldconfig とやれば良いと 教えてもらった。
■ [ruby] Senna(2)
Senna 0.8.1に標準添付されているRubyバインディングについて調査中。
def next size,_,score = Senna::sen_records_next(@handle, 0) if size > 0 _, res = Senna::sen_records_curr_key(@handle, size) else res = nil end return res end
こういう場合はいつもdummyという変数名を使うんですが、「_」という手があったか…。(ちょっとSchemeっぽい?)
■ [prog] Senna(3)
sen_records_next()の説明が難解すぎる件。成功した場合は、 keybufが指定され、bufsizeがkey長以上であれば、カレントレコードのkeyををkeybufにコピーし、 scoreにNULL以外の値が指定された場合はカレントレコードのスコアを*scoreにセットします。
Rubyのメソッド→SWIGによるラッパー関数→SennaのC API となっていてややこしい。
まぁSWIGによるラッパー関数そのままだと「C言語風にRubyを書く」はめになってしまうので、Rubyの皮が被せてあるのは嬉しいかも。