Fedora13にHyper Estraierをいれてみた。
MySQLの検索に絡んで、FedoraにHyper Estraierを入れてみた。むかーし、日経LinuxにEstraierの記事があって、試しにインストールしたことがある。
本家サイトをみてみると、流行りのKey-ValueストアTokyo Cabinetの平林幹雄氏によるプロダクトと知って、すごい人がいるものだなぁ、と思ってしまった。
基本的には、本家サイトのマニュアル通りに入れれば大丈夫なのだが、覚書きしておく。
まず、Fedora13にはgccとgcc++が必要なので、yumでインストールしておく。(MeCabのコンパイルでg++のエラーが出たら、gcc++が入っていないので、以下でインストール。)
今回は、テキスト(html)とpdfの検索がしたい。
必要なのは、
と結構たくさん。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-ipadic
これは、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は、たくさんの機能とオプションを持っているので、ユーザーガイドが参考になる。