Jun Kuriyama
kuriy****@imgsr*****
2005年 6月 5日 (日) 14:30:45 JST
At Sun, 05 Jun 2005 10:26:29 +0900,
Daisuke Maki wrote:
> > で、それを作るのに、主に登録・更新には 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 );
>
> という感じで。
なるほど。今やろうとしているのは、社内用のメーリングリストの検索、と
いうところからなんですが、例えば全文検索に加えて Subject: 内の検索、と
かもやろうとした場合、そもそも index を別のものにするのか、key の名前
付けにルールを付けてやるか、ですかね。
# 後者のメリットがあまりなさそうだから前者かなあ。
> > その場合、更新時には oldvalue に前回入れたものを指定しないといけない、
> > とすると、検索対象のディレクトリツリーとは別に、インデックスに登録した
> > 時のままのディレクトリツリーを保存しておく必要がある、という理解で合っ
> > てますか?
>
> 本当はファイルシステムに変更があった時に自動的にインデックスへ反映させて
> くれるトリガーがあるといいんですよね。ファイルの場合はちょっと難しいかも
> しれないですが、svnやcvsと組み合わせるとウマい事できるんじゃないかなぁ、
> と夢想したりします。
個人的に今やろうとしている、メールのインデックス化という点では、添付
ファイルのテキスト情報も拾える方が嬉しいよなあ、などと思ってしまうので、
メールの生アーカイブとは別に、MIME を解いて Word や PDF をテキスト化し
たものを value に突っ込まないといかんかな、と思いつつあります。なので
まあ、オリジナルのファイルとは別に、検索インデックス用の情報として保持
しておかない、とはなってしまうなあ、と。
> ちなみにそこでトリガーにTie::Sennaのようなものを使うというのがいいのでは
> ないかと。
>
> tie %hash, 'Tie::Senna', $index;
> $hash{$rel_path_in_file_system} = $file_contents;
>
> もしよかったらTie::Sennaのインターフェースもみてください(^^;
まだその辺の層の API を気にする所までいっていないので、細かくはわか
りませんが、この場合って同一キーの古い value は指定しなくてもいいんで
しょうか?
--
Jun Kuriyama <kuriy****@imgsr*****> // IMG SRC, Inc.
<kuriy****@FreeB*****> // FreeBSD Project