さてさて、続きです。
全文検索としてNamazuが有名ですが、ここはあえてHyper Estraier(ハイパーエストレイア?)を導入することにしました。
だってNmazu難しそうなんだもん。
さて、ここでHyper Estraierの紹介。
平林幹雄氏(現Mixi)が作成した、全文検索システム。
HPに詳しい説明が記載されているので一読するといいが、何分機能が多すぎて読む気が失せる。
が、それだけ高機能であるということか。
IPAの未踏ソフトウェア創造事業採択案件でもある。
動作環境はUnixだが、Windowsバイナリ版も公開されている。
で、今回の導入先は、Windows2003サーバーおよび、IIS6なので、Windowsバイナリ版をインストールする。
さぁ、がんばろう・・・
[1回]
「インストール」
インストールそのものはいたって簡単。
まずは、HyperEstraierの
Windowsバイナリ版をダウンロードする。
zip圧縮されているので、インストール先のドライブで、展開する。
今回はドライブ直下c: で展開。展開後はc:\Hyperestraier となる
で、コマンドが使えるように、環境変数 PATHの設定をする。
PATHの設定方法はわかりますよね?
「xdoc2txtのインストール]
今回の要求仕様はマイクロソフトのワード文書、エクセル、そしてPDFも検索できるようにすること。
Windows版HyperEstraierでは、xdoc2txtをフィルターとして使用しています。
が、同梱されているxdoc2txtは古いので2007の形式(.docx、.xlsxなど)には対応していません。
そこで、新しいxdoc2txtをダウンロードします。
ダウンロードはこちら
圧縮解凍した以下のファイルをHyperestraierフォルダに入れます。
xdoc2txt.exe、zlib.dll
これがないとPDFのテキスト抽出ができないのよねぇ。
「indexの作成」
HyperEstraierは、index検索方式なので、indexを作成しなくてはなりません。
コマンドプロンプトでインデックスを作成したいフォルダまたはドライブにCDします。
たとえば、c;\indexフォルダに"casket"というindexを作成したい場合は、
cd c:\index
estcmd gather -il ja -cl -fx .pdf,.rtf,.doc,.docx,.xls,.xlsx,.ppt,.pptx T@estxfilt -ic CP932 -pc CP932 -sd -cm -lf -1 -lt -1 casket "検索対象フォルダ"
"検索対象フォルダ"は、たとえばc:\documents フォルダ以下を検索対象とする場合は、
"c:\documents"とすればいいです。
サブコマンドの説明はマニュアルを見ていただくのが早いかと。
Windowsの場合は、 -ic CP932 (引数の文字コードをCP932とする)
-pc CP932 (ディレクトリの文字コードをCP932とする)
の二つがきもです。そうしないと、文字化けしてしまいます。CP932の意味は?深く考えないでください。
indexを作成している間中コマンドプロンプト画面がスクロールしていかにも処理していますよで好きなのですが、これではちゃんとできているかわからないので、私はログファイルに書き出すようにしています。
しかし、ログの出力は大量の文書をindex化するには不向き。文書毎に結果を吐き出しますから。
気を付けてくださいね。テストの段階では少なめの文書にしたほうがいいです。
estcmd gather -il ja -cl -fx .pdf,.rtf,.doc,.docx,.xls,.xlsx,.ppt,.pptx T@estxfilt -ic CP932 -pc CP932 -sd -cm -lf -1 -lt -1 casket "c:\document" > estgather.log
これをUTF-8で読み書きできるメモ帳でエラーがでていなければindex作成はOKです。
「ここでコマンドで検索」
一応テストしてみます。
コマンドプロンプトで、c:\indexに移動して・・・・
estcmd search -ic CP932 -vh -max 8 casket "検索語" > msg.txt
msg.txtに結果がかかれますから、UTF-8で読み書きできるメモ帳で開いて検索できていれば、検索エンジンの設定はOKです。
さぁ、次はWebから検索できるようにしましょう・・・・。
ってもう眠いのでまた次回に。
PR