Webサーバ上の全文検索システム Hyper Estraier に挑戦してみました。
PDFやWordファイルも検索できるし、多言語に対応するなど高機能で、かつ速い。インストールは簡単。他のWebを検索できるWebクローラ機能もついている。といういいこと尽くめ。ただ、ファイル名やパスに日本語が含まれているとうまくいかない。検索はできるのだけど、ブラウザ上からクリックで表示できないのです。
he.png
インデックス作成コマンド

estcmd.exe gather -il ja -fx .pdf,.rtf,.doc,.xls,.ppt T@estxfilt -ic CP932 -pc CP932 -sd -cm indexfile C:\htdocs

検索用CGIの設定ファイル estseek.confの一部

indexname: indexfile
replace: ^file:///C|/htdocs/{{!}}http://localhost/
replace: ^http://localhost/\|{{!}}
replace: /index\.html?${{!}}/
showlreal: false #<= Web表示用 #showlreal: true  #<= ローカル表示用

原因は、Hyper Estraierのポリシーにあるらしく、ローカルファイルの場合には日本語名を含むパスを、UNCそのまま表示できるのだけど、Web上の場合は、URIに強制的にエンコードしてしまう。
インターネット上で日本語バス名を使うこと自体、おかしなことなのだけど、イントラネット内では普通に行われている。LAN内でファイルサーバに特化していればいいのだろうなあ。
うむ。なかなか思うようにいかない。


(2009.09.11 追記)

解決しました

何のことはない。ドキュメントをよく読めば、replaceマッチは正規表現が必要とのこと。
検索用CGIの設定ファイル estseek.confの一部

replace: ^C:\\xampp\\htdocs{{!}}http://localhost
showlreal: true


よくよく考えれば、単純なことでした。ちなみに正規表現とは
  ^ 先頭マッチ  $末尾マッチ
  「\」や「.」にはエスケープ文字「\」を前置する
   \.htm${{!}}.html」とすると、末尾の「.htm」を「.html」に変換
これもみんな、ちゃんとドキュメントに書いてありました。
PDFやOffice文書も検索できるし、これはいいです。2007形式はだめみたいだけど、これは使えそうです。


(2009.09.12追記)
 Hyper EstraierをWindows+IIS環境で動かすには、もう一つ障壁がありました。
検索用CGI(estseek.cgi)がバイナリなため、Perlから実行しようとするのです。estseek.cgi自体は実行形式ファイルなので、estseek.cgi.exeにリネームして、設定ファイルestseek.confもestseek.cgi.confにすることまでは考えつきました。IISのWebサービス拡張で、estseek.cgi.exeに実行許可を与え、かつ、保存したディレクトリで、スクリプトと実行形式ファイルに実行権限を与えます。でもだめでした。
一晩悩みましたが、下記のような書き込みを発見。
 http://hidensan.blog.shinobi.jp/Entry/116/
 estseek.cgi.conf をwwwrootに置かなければならないようです。
 またestseek.cgi.exeも、cgi-binディレクトリではなく、wwwroot下におくことで、ようやく実行可能になりました。exeファイルがcgi-binで動かないのはよくわかりませんが、ディレクトリの参照権限を細かく設定することで、なんとか切り抜けました。
それにしてもインデックスを作成する速度は素晴らしく速い。PDFファイル40個ほどでも、わずか数秒です。これはいいですね。使えそうです。

By sryo

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください