Hyper Estraier導入

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\\

Cygwinbash上で実行したのですが、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より正確とくれば、使うしかないでしょ!これで仕事がすげー楽になるわ。

*1:会社用PCなので・・・

*2:ちなみにGDSだとインデックスで1GB超えます