Windows Server 2003上のIISで動いているWebサイトの検索エンジンを、Namazuから、Hyper Estraierに変更しました。
変更理由:
(1) Namazuのインデックス作成が、あまりにも遅い。
(2) N-gram方式で漏れなく検索したい。
(3) 類似検索をしたい。
■ ダウンロード
Hyper Estraierのサイトから、Win32バイナリパッケージをダウンロードします。
http://hyperestraier.sourceforge.net/index.ja.html
しかし、ダウンロード先のリンクをクリックすると、HTTP/403 エラーになります。
これは、2008年10月23日に、ディレクトリ参照が不許可になったためです。
たとえば、以下のように直接zipアーカイブファイル名を指定すれば、ダウンロードできます。
http://hyperestraier.sourceforge.net/win/hyperestraier-1.4.10-win32.zip
※最新の 1.4.13 が欲しい人は、ソースを落としてビルドになります。
ダウンロードしたら解凍し、C:\hyperestraier に置き、環境変数でPathを通します。
■ インデックス作成
HTMLだけを対象にするなら、以下のようなコマンドを入力します。
estcmd gather -il ja -cl -fh -ic CP932 -pc CP932 -sd -cm casket “検索対象フォルダ”
めちゃめちゃ速いね!
Namazuで 2時間半かかっていたインデックス作成が、わずか、8分で終了。
■ コマンドラインで検索
インデックスが正しくできたか、コマンドラインで検索してチェックします。
UTF-8で出力されるので、いったん msg.txt などへリダイレクトして、UTF-8が扱えるテキストエディタで内容を確認します。
estcmd search -ic CP932 -vh -max 8 casket “検索語” > msg.txt
■ CGI の設定
IISのcgi-bin フォルダに、C:\hyperestraier\locale\ja にあるファイルと、estseek.cgi をコピーします。
estseek.cgi を、estseek.cgi.exe にコピーします。
estseek.conf を、estseek.cgi.conf にリネームし、wwwroot へコピーし、内容を修正します。
この際、indexname, tmplfile, topfile, helpfile は、フルパスで指定します。
また、replace は、環境に合わせて適宜修正します。(これは、あとでやってもよい)
※最初は、HTTP/500エラーで動かなかったのですが、ここを参考にして、対応しました。
ここまでやったら、Webブラウザから cgi のURLをたたけば、検索フォームが表示されます。
http://サーバーアドレス/cgi-bin/estseek.cgi.exe
■ Webフォームで検索
検索フォームの文字エンコーディングの指定を、Shift_JIS にします。
さくさく検索できます。
以上の作業に、約4時間ぐらいかかりました。
悩んだのは、IISで CGIが HTTP/500になったことです。
NamzuのCGIが動いていたので、Hyper EstraierのCGIが原因なのは分かっていて、cgiを cgi.exeにリネームしてコマンドラインで実行し、HTTP/500が解消されるように直していきました。
というわけで、サイト内検索が快適になりました。