Daisuke Maki
daisu****@wafu*****
2005年 6月 5日 (日) 10:26:29 JST
Jun Kuriyama wrote: > Namazu のような全文検索のための仕組みが欲しいな、と思ってます。 > > で、それを作るのに、主に登録・更新には sen_index_upd() を使うのだと > 思いますが、ローカルのファイルシステム上のファイルをインデックスに登録 > するには > > sen_index_upd(sen_index *index, const void *key, const char *oldvalue, const char *newvalue); > > の key にファイル名、newvalue にファイルの中身を全部入れた文字列、とい > う形で入れていけばいいのでしょうか? そのはずです。 追加 -> sen_index_upd(index, key, NULL, value); 削除 -> sen_index_upd(index, key, old, NULL ); 変更 -> sen_index_upd(index, key, old, new ); という感じで。 > その場合、更新時には oldvalue に前回入れたものを指定しないといけない、 > とすると、検索対象のディレクトリツリーとは別に、インデックスに登録した > 時のままのディレクトリツリーを保存しておく必要がある、という理解で合っ > てますか? 本当はファイルシステムに変更があった時に自動的にインデックスへ反映させて くれるトリガーがあるといいんですよね。ファイルの場合はちょっと難しいかも しれないですが、svnやcvsと組み合わせるとウマい事できるんじゃないかなぁ、 と夢想したりします。 ちなみにそこでトリガーにTie::Sennaのようなものを使うというのがいいのでは ないかと。 tie %hash, 'Tie::Senna', $index; $hash{$rel_path_in_file_system} = $file_contents; もしよかったらTie::Sennaのインターフェースもみてください(^^; --d