2006-10-19 [長年日記]

[Q3] 親メッセージを見つける

マクロで親メッセージを見つけるには、

@Progn(@Set('id', @References(1)),
       @If($id,
           @FindEach(@Messages(@Folder()),
                     @Equal(@MessageId(), $id),
                     @True()),
           @False()))

のようにすればできますが、当然かなり遅いです。

Message-Idからのメッセージのルックアップは、以前からやりたいことの一つなのですが、別にテーブルを用意するとクラッシュした場合などにデータの不整合が起きがちなのと、パフォーマンスの問題もあって保留になっています。

今日つらつらと考えていたのですが、全文検索と一体化して実装したら結構いけるのではないかという気がしています。HyperEstraierのライブラリを組み込みにして、全文検索のインデックス更新はバックグラウンドでやることにし、そのときに属性インデックスにMessage-IdとメッセージのURIを放り込んでおけばうまくいきそうです。IMAP4と全文検索の組み合わせの場合に、クライアントに本文をキャッシュしなくても全文検索できるようになりますし。

Message-Idのテーブルだけだとバックグラウンドで更新して即時反映されないのはかなり違和感がありますが、全文検索の属性の一部だというスタンスならばそれもありかなと。

本日のツッコミ(全2件) [ツッコミを入れる]
# miri (2006-10-24 22:54)

どうもご無沙汰しています。
ところで、Google Desktop SearchなんてのはQMAILと組み合わせて使っている例は無いもんでしょうか?
時間を置いて何度か探しているのですが、なかなか見つからず...。
HyperEstraierも悪くは無いんでしょうが、すでにGDSになじんでしまっているので(^^;

# snak (2006-10-25 11:11)

GDSとの組み合わせは見たことがないですね。昔調べたときには、
*インデックス対象にするためにはプラグインを書く必要がある(中身はmessage/rfc822なので普通にインデックス対象にできるものの、拡張子を認識しないため)
*検索はローカルホストに対してHTTPでリクエストを投げる必要があるので、WSHか何かで検索リクエストを出し、標準出力にマッチしたファイル名を出すようにして、それを検索コマンドで指定する
という感じでできそうだなと感じました。

[]