トップ «前の日記(2006-10-11) 最新 次の日記(2006-10-14)» 編集

Route 477



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)

成功した場合は、 keybufが指定され、bufsizeがkey長以上であれば、カレントレコードのkeyををkeybufにコピーし、 scoreにNULL以外の値が指定された場合はカレントレコードのスコアを*scoreにセットします。

sen_records_next()の説明が難解すぎる件。

Rubyのメソッド→SWIGによるラッパー関数→SennaのC API となっていてややこしい。

まぁSWIGによるラッパー関数そのままだと「C言語風にRubyを書く」はめになってしまうので、Rubyの皮が被せてあるのは嬉しいかも。

[prog] Senna(4)

使用方法の調査がてらに、Rubyバインディングのドキュメントを書き中。*1

optarg回りのインターフェイスをもうちょっと何とかした方が良い気がするなぁ。

*1 といってもC APIのを書き換えてるだけだが

[prog] Senna(5)

http://mono.kmc.gr.jp/~yhara/w/?RubySenna

とりあえず今日はここまで。

[web] プチ改装

文字を小さくしてみた。

なんとなく心理的に、文字が大きいとどうでもいいことを書きにくいような気がする。