Google Desktop Searchがあまり正確に単語を拾ってくれないので、全文検索システムがほしい。定番のNamazuでもいいんだけど、Hyper Estraierが目に付いて、インストールが簡単そうだったので導入してみる。
この手のツールはLinuxとかの方が導入は簡単なんだけど、諸事情により*1Windows + Cygwin bashを想定してます。
1.アーカイブ入手、インストール
http://hyperestraier.sourceforge.net/win/
にwindows用バイナリがあるのでダウンロード。
hyperestraier-1.3.3-win32.zipを適当なディレクトリに解凍する。
2.indexの作成
$ estcmd gather -il ja -sd casket D:\\home\\docs\\
Cygwinのbash上で実行したのですが、estcmdはPOSIX pathを解釈しないので、win32形式のpathで指定する必要があります。カレントディレクトリにcasketというディレクトリができて、その中にindexが作成されます。
3.apacheの設定
検索のインターフェイスはCGIとして動作するので、ローカルにhttpdを立てることに。httpdなら何でもいいんだけど、定番のapache for win32を使おうと思います。設定は以下の通り。
DocumentRootを適当に設定する。
DocumentRoot "D:\home\docs"
ディレクトリ内の設定。インデックスとかCGIとか適当に設定する。あと、ローカル専用で使いたいので、127.0.0.1以外のアクセスを禁止する。
<Directory /> Options Indexes FollowSymLinks ExecCGI AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.1 </Directory>
htdocsの設定はコメントアウトしておく。
#<Directory "D:/home/local/apache2.2/htdocs"> .. .. #</Directory>
あとは趣味でいろいろ。apacheっぽいアイコンが出たほうが盛り上がるので、httpd-autoindex.confをIncludeする。そしてDocumentRoot同様、127.0.0.1以外のアクセスを拒否するようにhttpd-autoindex.confを適当に設定する。
# Fancy directory listings Include conf/extra/httpd-autoindex.conf
4.CGIの動作
estseek.cgiと同じディレクトリに、Hyper EstraierのインストールディレクトリにあるDLLをコピーする。パスを通しただけではなぜか500エラーになってしまうので、コピーする必要があるみたい。
で、使ってみました
すごい!早い!そして正確!!ローカルのマニュアル検索に使ってるんだけど、GDSでは絶対拾ってくれなかった、マニュアルの片隅のマイナーな単語まで拾ってくれて超うれしい。
大体70000弱のファイル数にサイズが1.5GBほどのHTMLなのですが、インデックスサイズが200MB強でインデックス作成時間が10分かからなかったと思う*2。検索時間は1秒かからない。それでいてGDSより正確とくれば、使うしかないでしょ!これで仕事がすげー楽になるわ。