Fedora13にHyper Estraierをいれてみた。

MySQLの検索に絡んで、FedoraHyper Estraierを入れてみた。むかーし、日経LinuxEstraierの記事があって、試しにインストールしたことがある。
本家サイトをみてみると、流行りのKey-ValueストアTokyo Cabinetの平林幹雄氏によるプロダクトと知って、すごい人がいるものだなぁ、と思ってしまった。
基本的には、本家サイトのマニュアル通りに入れれば大丈夫なのだが、覚書きしておく。

まず、Fedora13にはgccgcc++が必要なので、yumでインストールしておく。(MeCabコンパイルでg++のエラーが出たら、gcc++が入っていないので、以下でインストール。)

yum install gcc-c++

今回は、テキスト(html)とpdfの検索がしたい。
必要なのは、

  • libiconv
  • zlib
  • xpdf
  • mecab
  • mecab-ipadic
  • qdbm
  • hyperestraier

と結構たくさん。yumにみんなあるんだけど、結局、zlibとxpdfだけをyumからインストール。
iconvも同梱されちゃっているのだが、libiconv.so.2がロードできないといって、hyperestraierのmakeがこけるので、GNUからダウンロードしてMakeした。

  • libiconv

GNUのlibiconvのサイトから、libiconv-1.13.1.tar.gzをダウンロード。

tar zxfv libiconv-1.13.1.tar.gz
cd libiconv-1.13.1
./configure --prefix=/usr/local
make
make install

MeCabの本家サイトから、mecab-0.98.tar.gzをダウンロード。

tar zxfv mecab-0.98.tar.gz
cd mecab-0.98
./configure
make
make install

これは、MeCabと同じsourceforgeダウンロードサイトからダウンロードできる。mecab-ipadic-2.7.0-20070801.tar.gzをダウンロード。

tar zxfv mecab-ipadic-2.7.0-20070801.tar.gz
cd mecab-ipadic-2.7.0-20070801
./configure --with-zlib
make
make install

  • qdbm

これは、平林氏の作なので、FAL Labsのページから、qdbm-1.8.78.tar.gzをダウンロード。

tar zxfv qdbm-1.8.78.tar.gz
cd qdbm-1.8.78
./configure
make
make install

  • hyperestraier

これも平林氏の作なので、FAL Labsのページから、hyperestraier-1.4.13.tar.gzをダウンロード。
ファイルのサイズ制限(text;128K, file; 32M)があるので、estcmd.cをtext;1M,file:128Mに修正した。

+ #define LIMITTSIZ      (1024*1024)        /* text size limitation */
- #define LIMITTSIZ      (1024*128)        /* text size limitation */
+ #define LIMITFSIZ      (1048576*128)      /* file size limitation */
- #define LIMITFSIZ      (1048576*32)      /* file size limitation */

tar zxfv hyperestraier-1.4.13.tar.gz
cd hyperestraier-1.4.13
./configure --enable-mecab
make
make install

これで(多分)大丈夫。
Hyper Estraierの検索画面はcgiなので、apache(今回は2.2.16)のcgiが実行できるディレクトリに以下をコピーする。

estseek.cgi
estseek.conf
estseek.help
estseek.tmpl
estseek.top

estseek.cgiで画面が表示されることを確認。

マニュアルに書いてあるが、estseek.confは、環境に合わせて変更する。今回は、/home/casketというディレクトリにインデックスなど(db)を配置するので、以下のように変更。/var/www/htmlはapache のドキュメントルート。

indexname: /home/casket
....
replace: ^file:///var/www/html/{{!}}http://localhost/

インデックスの作成と差分更新は、以下をシェルにすればよい。一行目は、estfxpdftohtml(xpdfに同梱されるpdftohtmlを使って、pdfをhtmlに変換するシェル)にパスを通すため。

export PATH=$PATH:/usr/local/share/hyperestraier/filter
estcmd gather -cl -sd -cm -il ja -kn 4096 -fx ".pdf" "H@estfxpdftohtml" /home/casket /var/www/html/
estcmd purge /home/casket

インデックスの最適化は

estcmd optimize /home/casket

で行うことができる。

estsmdは、たくさんの機能とオプションを持っているので、ユーザーガイドが参考になる。