自分の見たWebページを全文検索する (13:51)
- http://www.asahi-net.or.jp/~iw8n-tngc/dialy/200406.html#15_t1
- http://www.otsune.com/diary/2004/06/16.html#200406168
あたりから思いついたネタ。Windows+IEな人向け。
Estraier(http://estraier.sourceforge.net/)のWindows版バイナリをダウンロードする。C:\Estraierあたりにアーカイブを展開しておく。
自分のマシンのIEキャッシュに対して、検索インデックスを生成する。以下のようなコマンドを、[ファイル名を指定して実行]を使って実行する。
c:\estraier\estindex register casket "c:\documents and settings\[USER名]\Local Settings\Temporary Internet Files\"
最後のパラメータはIEのキャッシュフォルダ名。デフォルトはサンプルのような感じ。ただし[USER名]は自分のWindowsアカウント名に変えておくこと。IEの[インターネットオプション]−[全般]−[インターネット一時ファイル]−[設定]−[インターネット一時ファイルのフォルダ]あたりで、自分の環境の設定を確認しておいた方が無難かも。
このコマンドを実行すると、検索インデックスの生成処理が始まるわけだけど、初回はかなり時間がかかる。キャッシュファイルが多ければ多いほど時間がかかるんで、最初はいったん[インターネット一時ファイルの削除]を使って、キャッシュファイルを削除しておいた方がいいかも。2回目以降は、差分(更新されたファイルのみ)処理が行われるので、そんなに時間はかからない(まあ更新されたファイルがどれだけ多いかによるけど)。
2回目以降の検索インデックス生成を行った場合は、以下のコマンドを実行することで、不要なインデックスファイルのデータを破棄することができる。まあこれはやってもやらなくてもどっちでもいい。
c:\estraier\estindex purge casket "c:\documents and settings\[USER名]\Local Settings\Temporary Internet Files\"
続いて、Estraierの関連ドキュメント検索(あるドキュメントと似たドキュメントを検索する)機能用インデックスも作成する。ただしこれは関連ドキュメント検索機能を使わないならば実行しなくてもいい。けど、やっておくとおもしろいから実行しておいた方がいい。
c:\estraier\estindex relate casket
これで検索インデックスの準備は完成。で、この検索インデックスを使って検索を行う方法は複数通り用意されている。
- 適当なWebサーバーをローカルで動かして、estsearch.cgiを動かす方法。
- estxviewコマンドでXML形式の結果を取得し、それをパースしてそれなりの結果UIを得る方法。
- estserverで専用検索用サーバーを動かす方法。
ここでは一番手軽な3番目の方法を使ってみる。
※あらかじめc:\estraier\locale\ja以下のファイルをc:\estraierにコピーしておくと、説明等が日本語になる。
まず、c:\estraier\estsearch.confファイルを開き、16行目あたりにある
prefix: ./
ってのを、
prefix: file://
に変更して保存する。この作業は1回だけやればいい。これによって、検索結果画面からのリンクがきちんとキャッシュファイルに張られるようになる。
あとは、専用検索サーバーを起動する。
c:\estraier\estserver -port 8080
上記はポート8080でサーバーを動かす際の設定。ほかにWebサーバーをローカルで動かすつもりがないならば、80ポートで動かしておくとブラウザからアクセスするときにいちいちポートを指定する必要がなくなる。ともかく自分のマシン上の他のサービスとバッティングしないポートを指定すればいい。
すると、サーバーが立ち上がり、コマンドプロンプトの画面が表示される。特にその画面は使わないんで最小化して放置しておこう。
さて、実際に検索を実行してみる。ブラウザから
http://localhost:8080/
にアクセスしてみると、なにやらファイル一覧が表示されるはず。そこでファイル一覧が表示されないようだと、ちゃんとサーバーが動いていない可能性がある。別のポートに変えてみたり、あるいはファイアーウォールソフトの設定なんかをいじってみるといいかも。
右上のSearchをクリックすると検索フォームに移動する。そこから先はふつうのWeb検索フォームと同じ使い勝手。Estraierはデフォルトでいろいろ高機能なんで、ふつうに検索しているだけでも結構遊べる。
estserverはCTRL+Cで終了しようとしても、複数プロセスがなかなか全部終了してくれなかったりする。あと、estserverは起動時の検索インデックスを見ているみたいなんで、検索インデックスを生成し直したときにはestserverを立ち上げ直す必要がある。なんてところがあるんで、このままだと微妙に使いづらい。ほどよいラッパーツールを作ればその辺解決できそうなんで、誰か作ってくださいな。あとIE以外のブラウザのキャッシュでも似たようなことができそうだけど、自分では未調査。
c:\estraier\autoest.batとかに、
c:\estraier\estindex purge casket "c:\documents and settings\[USER名]\Local Settings\Temporary Internet Files\" c:\estraier\estindex register casket "c:\documents and settings\[USER名]\Local Settings\Temporary Internet Files\" c:\estraier\estindex relate casket c:\estraier\estserver -port 8080
とかを列挙しておいて、インデックス更新+サーバー起動をまとめてできるようにしておくといいかもね。
