2010年7月23日金曜日

Hyper Estraier を使うための超高速インストール、設定メモ

全文検索Hシステム Hypere Estraierを使うための超高速インストール、設定メモを残しておく。
章立ては以下の通り。

【事前準備】

【STAND ALONE型で使う場合】

【P2P型で使う場合】

【CRAWLER型で使う場合】



============================================================


【事前準備】
◆ HyperEstraierのインストール
% wget http://hyperestraier.sourceforge.net/hyperestraier-1.4.13.tar.gz
% tar zxvf hyperestraier-1.4.13.tar.gz
% cd hyperestraier-1.4.13
% ./configure --prefix=/usr/local/hyperestraier-1.4.13
% make
% su -
# make install
# ln -s /usr/local/hyperestraier-1.4.13 /usr/local/hyperestraier



◆ 各種文書ファイル用フィルタのインストール
HyperEstraierの設定手順内でestfxmsotohtmlとestfxpdftohtmlというフィルタを利用する
まずはそのフィルタが動作するように、必要なパッケージをインストールする。

・ estfxmsotohtml : Word/Excel/PowerPointのファイルをHTML形式に変換する
・ estfxpdftohtml : PDFのファイルをHTML形式に変換する

各種コマンドをラッピングしているだけである (estfxmsotohtml ツール内 抜粋)

*.doc)
wvWare --charset=UTF-8 --nographics "$infile" 2> "/dev/null" | output
;;
*.xls)
xlhtml "$infile" 2> "/dev/null" | output
;;
*.ppt)
ppthtml "$infile" 2> "/dev/null" | output
;;
*)
printf '
!!! UNKNOWN FORMAT !!!
\n' | output


wvware(doc用)パッケージのインストール
# yum install wv

xlhtml(xls用)、ppthtml(ppt用)パッケージのインストール
# yum install xlhtml

xpdf(pdf用)パッケージのインストール
# yum install xpdf





【STAND ALONE型で使う場合】

◆ コンフィグ変更(最低限必要なところのみ)
% vi estseek.conf
replace: ^file:///var/search/local/casket/{{!}}http://192.168.3.3/search/result/

% vi /etc/httpd/conf/httpd.conf
Alias /search/result/ "/var/tmp/file/"




◆ 文書の登録
% export PATH=$PATH:/usr/local/hyperestraier/share/hyperestraier/filter

% estcmd gather -cl -cm -pc utf-8 -il ja -bc -sd /var/search/casket /var/tmp/search/

% estcmd gather -cl -fx ".doc,.xls,.ppt" "H@estfxmsotohtml" -fz -ic UTF-8 -sd -cm /var/search/local/casket /var/tmp/search/

% estcmd gather -cl -fx ".pdf" "H@estfxpdftohtml" -fz -ic UTF-8 -sd -cm /var/search/local/casket /var/tmp/search/



◆ 検索
・ CUIで検索する場合
% estcmd search -ic utf-8 -vh /var/www/html/estseek/casket 検索ワード

・ GUIでの検索
http://192.168.3.3/search/index.rb



◆ その他覚えておくと便利なコマンド
属性名とデータ型を指定
% estcmd create -attr @title str -attr @mdate seq -attr @size seq /var/search/local/casket

削除文書の反映
% estcmd purge -cl /var/search/local/casket

インデックスの最適化
% estcmd optimize /var/search/local/casket





【P2P型で使う場合】
◆ casketファイルの作成
% estmaster init /var/search/master



◆ コンフィグ変更(最低限必要なところのみ)
% vi /var/search/master/_conf
uireplace: ^file:///var/tmp/file/{{!}}http://192.168.3.3/search/result/

cachesize: 512
実メモリの搭載量が1GBならば、その半分くらいの容量のキャッシュを使うのが望ましい



◆ 起動と停止
% estmaster start /var/search/master
% estmaster stop /var/search/master

バックグラウンドで起動させたければ下記のようにする
% estmaster start -bg /var/search/master



◆ ノードの登録
・ GUIから登録する場合
http://192.168.3.3:1978/master_ui へアクセス
user      : admin
password :admin
※iptablesを開放しておくこと


Manager Node として下記を登録
parent
child001
child002


・ CUIから登録する場合
% estcall raw -auth admin admin \
'http://localhost:1978/master?action=nodeadd&name=parent&label=PARENT'

% estcall raw -auth admin admin \
'http://localhost:1978/master?action=nodeadd&name=child001&label=CHILD001'

% estcall raw -auth admin admin \
'http://localhost:1978/master?action=nodeadd&name=child002&label=CHILD002'



◆ ノード間にリンクを張る
% estcall setlink -auth admin admin http://10.16.1.172:1978/node/parent \
http://10.16.1.172:1978/node/child001 CHILD001 10000

※親ノードから間違ってリンクを張ってしまった場合、信頼度を-1に変えてestcallすればよい



★P2P型ではなく、CROWLER型を利用する場合はここからの手順は不要である
◆ 文書の登録(手動)
% vi child001.est
@uri=data1
@title=title1_test

test1


% vi child002.est
@uri=data2
@title=title2_test

test2


% estcall put -auth admin admin http://192.168.3.3:1978/node/child001 child001.est estcall put -auth admin admin \ http://192.168.3.3:1978/node/child002 child002.est



◆ 文書の登録(がっつり1)
・ estmasterを起動させたままで登録可能な方法
% find /var/tmp/file -type f |
while read file
do
estcmd draft -fh -il ja $file |
estcall put -auth admin admin http://192.168.3.3:1978/node/child001
done


・ estmasterを停止させた状態で登録可能な方法
% export PATH=$PATH:/usr/local/hyperestraier/share/hyperestraier/filter

% estcmd gather -cl -cm -pc utf-8 -il ja -bc -sd /var/search/master/_node/child001 /var/tmp/search/

% estcmd gather -cl -fx ".doc,.xls,.ppt" "H@estfxmsotohtml" -fz -ic UTF-8 -sd -cm /var/search/master/_node/child001 /var/tmp/search/

% estcmd gather -cl -fx ".pdf" "H@estfxpdftohtml" -fz -ic UTF-8 -sd -cm /var/search/master/_node/child001 /var/tmp/search/



◆ 検索
・ GUIから検索する場合
下へアクセスし、キーワードを入力する
http://192.168.3.3:1978/node/parent/search_ui


・ CUIから検索する場合
% estcall search -dpt 1 http://192.168.3.3:1978/node/parent "hoge"

% estcall search http://192.168.3.3:1978/node/child001 "hoge"

% estcall search http://192.168.3.3:1978/node/child002 "hoge"





【CRAWLER型で使う場合】
◆ casketファイルの作成
% estwaver init /var/search/crawl/



◆ コンフィグ変更(最低限必要なところのみ)
% vi /var/search/crawl/_conf
seed: 1.5|http://hyperestraier.sourceforge.net/uguide-en.html

allowrx: ^http://[^/]*\.hyperestraier.sourceforge.net/

language: 1

textlimit: 40960

revisit: 1d
※再度URLを訪れるまでの期間の設定
ここでの設定時間以内にcrawlしても検索対象とならないので注意
0dにしたら毎回問い合わせる

nodeserv: 1|http://admin:admin@192.168.3.3:1978/node/child001
nodeserv: 2|http://admin:admin@192.168.3.3:1978/node/child002
※管理者ユーザを指定しないとnode側ではなく、crawler側に登録される

urlrule: \.doc${{!}}application/word
urlrule: \.xls${{!}}application/excel
urlrule: \.ppt${{!}}application/powerpoint
urlrule: \.pdf${{!}}application/pdf

typerule:^application/pdf${{!}}H@/usr/local/hyperestraier/share/hyperestraier/filter/estfxpdftohtml

typerule:^application/(word|excel|powerpoint)${{!}}H@/usr/local/hyperestraier/share/hyperestraier/filter/estfxmsotohtml

denyrx: \.(rtf|ps|eps|ai||sxw|sxc|sxi|xdw|jtd|oas|swf)$



◆ indexの登録
$ estwaver crawl -revcont /var/search/crawl



◆ 検索(nodeservを指定していないとき)
$ estcmd search -vs /var/search/crawl/_index 'hoge'