日記
デスクトップ検索ツール (20:03)Edit

あれ、この市場ってそんなに熱かったのか。先を越されてモチベーションが下がる前に、作りかけで放置していたEstraierのWindowsクライアントをとっとと完成させておくべきかな。動作テスト用のプロトタイプはずいぶん前に完成したんだけど、Windows環境でOffice文書がうまく登録できなかったんで、そのまま放置しちゃったんだよな。

自分で作らなくても誰かが作ってくれればそれでいいんで、外部仕様だけ書いておくと、

  • 基本はWindows用常駐ツール
  • エクスプローラから、フォルダ・ファイル(パターンもあり)をEstraierの検索対象として登録することができる
  • ツールは、Estraierの検索対象となったフォルダ・ファイルの更新状況を監視している
  • フォルダ・ファイルに変更があった場合は、それらを次回インデックス更新対象として登録する
  • System Idleとか指定時間起動とかで、適切にEstraierのインデックスに更新をかける
  • インデックスは複数用意でき、どのフォルダがどのインデックスに対応するか等指定できる
  • あとはポップアップ等で起動する、Estraierの検索クライアント機能。検索窓にキーワードを入力すると、指定されたインデックス(複数可能)に対して検索をかけ、その結果を表示する。関連文書検索等もそのまま使える。

といった感じ。VB.NET+SQLite(UTF-8コンパイル版)で作っているけれども、estxviewの吐くXMLをパースできて、WindowsのUIが作れるならば、作るのはそんなに難しくないと思う。

あとは、

  • メールをプレーンテキストのままにファイルシステム上に保存するメールクライアント(fetchmailみたいなののWin32版ってあるのかな)
  • ブラウザの履歴を録画(保存)することができるツール(録画ボタンを押すと、それ以降閲覧したページがすべてローカルに保存され、検索対象となる。録画停止で止まる)

あたりを用意すると、Web+メールに対してローカルで気軽に高度な全文検索ができるシステムが完成する。という予定。

ブラウザ履歴に関しては、IEのキャッシュから該当URLのファイルを取り出すサンプルは作ってみたんで、あとはどうやって録画状態中のURL履歴を保持するかだな。専用ブラウザを作れば簡単なんだけど、それはさすがに面倒だしな。80ポート宛のリクエストを監視するとか? さすがにそれもなー。

SQLiteの用途

これだけだとSQLiteを何に使っているかわからないんで補足。SQLiteは、全文検索ではない検索インデックスとして使う。要は、

  • ファイル名
  • 拡張子(ファイル種別)
  • ファイル作成日時
  • ファイル更新日時
  • 該当ファイルごとのプロパティ
    • たとえばHTMLファイルならば、URL、タイトルとか
    • メールだったら、Subject、From、To、Dateとか

なんてあたり。Estraierを使って全文検索・類似文書検索などの曖昧度の高い検索を行い、SQLiteで基本的な検索やソートを行う感じ。

本当は検索ツールを別アプリにするのではなく、Explorerに埋め込んで表示できたりするとよりスマートなんだろうけど、どうもWindowsのShell周りって面倒くさそうなんで、あんまり手を出したくないんだよなー。

これだとWebとメール専用みたいだ

もちろんそんなことはなく、仕事用のフォルダとか資料用のフォルダとかを検索対象に入れておけば、そこもこのシステムから検索できるし、フォルダにファイルを追加したり更新したりすると、自動的にそのファイルも検索対象になる。どうせならば高林さん(http://namazu.org/~satoru/diary/)が作るらしい、ソースコード用検索システム(http://www.ipa.go.jp/jinzai/esp/2004mito1/gaiyou/2-23.html)の機能も取り込んで、ソース資産に対する検索も透過的にできるといいだろうなー。

Published At2004-08-05 00:00Updated At2004-08-05 00:00