HyperEstraierでwebクローラを使ってみる

HyperEstraierでpublic_html配下のhtmlファイルやドキュメントから
indexを作成することはできたが、cakephpで作成する動的なページでは
この方法は使えないので(※1)、webクローラーを流してみることに。

※1.※testフォルダのhtmlに対してindexを作成する
estcmd gather -il ja -sd casket /home/rubytest/www/test


①まず、public_htmlやwww以下にインデックスを作成。
$cd www
$mkdir casket
$estwaver init casket

※※※※※
特定フォルダを見に行く場合はオプションをつけれる

    • クロールする

$estwaver crawl -revcont /home/rubytest/www/casket

    • テストする

$estcmd search -vs /home/rubytest/www/casket/_index "test"
※※※※※

②次にconfファイルの中身を設定。
$vi casket/_conf

                                                                                              • -

seed: 1.0|http://apparelclip.com/



language: 1



特定のURLのみに指定
allowrx: ^http://[^/]*\.apparelclip\.com/ 又は
allowrx: ^http://apparelclip\.com/

                                                                                              • -


クローラーを起動
$estwaver crawl casket


クローラーを起動すると数十行後にout of memoryで落ちる。
再度起動してもERROR casket: could not openでオープンできず。
さくらのapache側のメモリー制限に引っかかってる様子。
回避するためにconfファイルにて下記項目を再設定。


④再設定箇所
$vi casket/_conf

                                                                                              • -

その1.並列処理数の設定を10->1に変更する
# number of threads running in parallel
threadnum: 1

その2.負荷をかけすぎないために500ページでストップ
docnum: 500

その3.キャッシュサイズの見直し
cashesize: 256


⑤再度クローラーを起動
$estwaver crawl casket

今回は落ちずに成功。
/cgi/estseek.cgiをブラウザからアクセスし、実際に検索してみると正しい表示結果が取得できました。
めでたし。
オプションで、削除されたページを消したり、差分を取るようなコマンドがあるそうなので、試してみよう。