y-matsui::weblog

電子楽器、音楽、コンピュータ、プログラミング、雑感。面倒くさいオヤジの独り言

HyperEstraierのインデックス処理

HyperEstraierを使っていると、インデックスが結構壊れる。repairというコマンドがあるので、まずこれを試してみるのだが、完全に壊れてしまっている場合が結構ある。
壊れると再スキャン、再クロールが必要になり、かなりの時間が無駄になる。何よりもデータベースがロックされ、その間、検索が出来ないのが痛い。
そこで、
ここを参考にHyperEstraierのインデックスを一度コピーしておいて、メンテナンスし、最後に差し替えるようにスクリプトを書き替えた。
処理は、下記の通り
・前回処理の残骸が残っていたらスキップ
・現在のインデックスをコピーする
・コピーしたインデックスにテキスト系文書を追加登録する
・コピーしたインデックスにOffice系文書を追加登録する
・コピーしたインデックスにPDF文書を追加登録する
・コピーしたインデックスにXDW文書を追加登録する
・不要文書インデックスの削除を実行
・キーワードの抽出/DB登録処理
・最適化を実行
・処理情報を表示して終了
・現在のインデックスを削除する
・コピーしたインデックスを現在のインデックスとする

下記スクリプトをcronに登録すれば、幸せになれる。

■ファイルのクロール(ローカルクロール)&メンテナンス処理
/root/makeidx_wwwidx.sh

test -e /var/www/wwwidx-copy && exit
cp -R /var/www/wwwidx /var/www/wwwidx-copy
/usr/local/bin/estcmd gather -cl -il ja -sd -cm -kn 32 -um -aa @genre html /var/www/wwwidx-copy /var/www/html
cd /var/www/html
PATH=$PATH:/usr/local/share/hyperestraier/filter ; export PATH
/usr/local/bin/estcmd/estcmd gather -cl -il ja -fx ".doc,.xls,.ppt" "H@estfxmsotohtml" -fz -sd -cm -kn 32 -um -aa @genre file /var/www/wwwidx-copy .
usr/local/bin/estcmd/estcmd gather -cl -fx ".pdf" "H@estfxpdftohtml" -fz -il ja -sd -cm -kn 32 -um -aa @genre file /var/www/wwwidx-copy .
/usr/local/bin/estcmd gather -cl -il ja -fx ".xdw" "T@estfxxdwtotxt" -fz -ic CP932 -pc CP932 -sd -cm -kn 32 -um -aa @genre file /var/www/wwwidx-copy .
/usr/local/bin/estcmd purge -cl /var/www/wwwidx-copy
/usr/local/bin/estcmd extkeys -kn 32 -um /var/www/wwwidx-copy
/usr/local/bin/estcmd optimize /var/www/wwwidx-copy
/usr/local/bin/estcmd inform /var/www/wwwidx-copy || exit
rm -rf /var/www/wwwidx
mv /var/www/wwwidx-copy /var/www/wwwidx

■Webクロール&メンテナンス
/root/makeidx_crawldata.sh

test -e /var/crawldata-copy && exit
cp -R /var/crawldata /var/crawldata-copy
/usr/local/bin/estwaver crawl -revcont /var/crawldata-copy
/usr/local/bin/estcmd purge -cl /var/crawldata-copy
/usr/local/bin/estcmd extkeys -kn 32 -um /var/crawldata-copy
/usr/local/bin/estcmd optimize /var/crawldata-copy
/usr/local/bin/estcmd inform /var/crawldata-copy || exit
rm -rf /var/crawldata
mv /var/crawldata-copy /var/crawldata