Apache Nutch(v1.5.1)を使用して、特定のドメインですべてのWebサイトのインデックスを作成し始めました。私のドメインには膨大な数のWebサイト(数百万のオーダー)があり、プロセス全体の終了を待つのではなく、段階的にインデックスを作成する必要があります。
私はこれをnutchwiki(ここではhttp://wiki.apache.org/nutch/NutchTutorial/#A3.2_Using_Individual_Commands_for_Whole-Web_Crawling)で見つけました。アイデアは、スクリプトウィッチが、特定の量のデータ(たとえば、1000 URL)に対して、プロセスのすべてのステップ(クロール、フェッチ、解析など)を周期的に呼び出すようにすることです。
bin/nutch inject crawl/crawldb crawl/seed.txt
bin/nutch generate crawl/crawldb crawl/segments -topN 25
s1=`ls -d crawl/segments/2* | tail -1`
echo $s1
bin/nutch fetch $s1
bin/nutch parse $s1
bin/nutch updatedb crawl/crawldb $s1
bin/nutch generate crawl/crawldb crawl/segments -topN 25
s2=`ls -d crawl/segments/2* | tail -1`
echo $s2
bin/nutch fetch $s2
bin/nutch parse $s2
bin/nutch updatedb crawl/crawldb $s2
...
bin/nutch invertlinks crawl/linkdb -dir crawl/segments
bin/nutch index crawl/indexes crawl/crawldb crawl/linkdb crawl/segments/*
私の質問は、この設定をNutchに直接指定して、彼にこのようなことを並行してより透明な方法で行わせる方法はありますか?たとえば、分離されたスレドでは?
答えてくれてありがとう。
アップデート
スクリプトを作成しようとしましたが(コードは上にあります)、残念ながら、リンクの反転フェーズでエラーが発生します。これは出力です:
LinkDb: starting at 2012-07-30 11:04:58
LinkDb: linkdb: crawl/linkdb
LinkDb: URL normalize: true
LinkDb: URL filter: true
LinkDb: internal links will be ignored.
LinkDb: adding segment: file:/home/apache-nutch-1.5-bin/crawl/segments/20120730102927
LinkDb: adding segment: file:/home/apache-nutch-1.5-bin/crawl/segments/20120704094625
...
LinkDb: adding segment: file:/home/apache-nutch-1.5-bin/crawl/segments/20120704095730
LinkDb: org.apache.hadoop.mapred.InvalidInputException: Input path does not exist:
file:/home/apache-nutch-1.5-bin/crawl/segments/20120730102927/parse_data
Input path does not exist:
file:/home/apache-nutch-1.5-bin/crawl/segments/20120704094625/parse_data
...
ご協力いただきありがとうございます。