$ bin/nutch mergesegs digidesign.com-segment -dir crawl-20080705112059/segments $ bin/nutch readseg -dump `ls -d digidesign.com-segment/2008*` dump -nocontent -nofetch -nogenerate \ -noparse -noparsetext $ mkdir seeds100 $ cat dump/dump \ | grep 'http://digidesign.com/index.cfm' \ | grep 'langid=100' \ | sed -e 's/^.*http:/http:/' -e 's/ .*$//' \ | sort -u \ > seeds100/seeds.txt $ wc -l seeds100/seeds.txt 291 seeds100/seeds.txt $ vi conf/crawl-urlfilter.txt $ grep digidesing conf/crawl-urlfilter.txt +^http://digidesign.com/index.cfm[?].*langid=100 $ nohup bin/nutch crawl seeds100 -depth 10 & $ tail -f nohup.out crawl started in: crawl-20080706115317 rootUrlDir = seeds100 threads = 10 depth = 10 Injector: starting ... Fetcher: starting Fetcher: segment: crawl-20080706115317/segments/20080706120142 Fetcher: threads: 10 fetching http://digidesign.com/index.cfm?navid=103&langid=100& fetching http://digidesign.com/index.cfm?navid=3&langid=100&eid= fetch of http://digidesign.com/index.cfm?navid=103&langid=100& failed with: Http code=500,\ url=http://digidesign.com/index.cfm?navid=103&langid=100& fetch of http://digidesign.com/index.cfm?navid=3&langid=100&eid= failed with: Http code=500,\ url=http://digidesign.com/index.cfm?navid=3&langid=100&eid= Fetcher: done ... done merging crawl finished: crawl-20080706115317 $ bin/nutch readseg -list -dir crawl-20080706115317/segments | sort 20080706115322 291 2008-07-06T11:53:32 2008-07-06T12:01:24 291 273 20080706120142 2 2008-07-06T12:01:46 2008-07-06T12:01:48 2 0 20080706120153 2 2008-07-06T12:01:57 2008-07-06T12:01:59 2 0 NAME GENERATED FETCHER START FETCHER END FETCHED PARSED $ |
1回目の fetch で、2つの URL に対して、HTTP Error 500 (Internal server error) で失敗した他は、すべて fetch できました。outlink もあるので、昨日の crawl でも、depth=6 とすれば、英語のページはすべて fetch できたことになります。
同様にして、日本語(langid=5)のページを crawl してみます。
$ mkdir seeds5 $ cat dump/dump \ | grep 'http://digidesign.com/index.cfm' \ | grep 'langid=5[^0-9]' \ | sed -e 's/^.*http:/http:/' -e 's/ .*$//' \ | sort -u \ > seeds5/seeds.txt $ wc -l seeds5/seeds.txt 210 seeds5/seeds.txt $ $ grep digidesing conf/crawl-urlfilter.txt +^http://digidesign.com/index.cfm[?].*langid=5([^0-9].*)*$ $ nohup bin/nutch crawl seeds5 & $ tail -f nohup.out crawl started in: crawl-20080706124228 rootUrlDir = seeds5 threads = 10 depth = 5 Injector: starting ... crawl finished: crawl-20080706124228 $ bin/nutch readseg -list -dir crawl-20080706124228/segments | sort 20080706124234 210 2008-07-06T12:42:40 2008-07-06T12:48:25 210 197 20080706124841 63 2008-07-06T12:48:45 2008-07-06T12:50:25 63 57 20080706125035 5 2008-07-06T12:50:39 2008-07-06T12:50:44 5 0 NAME GENERATED FETCHER START FETCHER END FETCHED PARSED $ |
3回目までの fetch で、278 ページと、crawl が完了しました。昨日の crawl では、日本語のページは、3回目の fetch から始まっているので、やはり、depth=6 (or 7) 程度で、すべて fetch できるようです。各言語ごとには、300ページ弱のサイトのようです。
それでは、日本語のページだけを検索してみます。
日本語でも検索できました。なお、上の例では、わかりませんが、Nutch の Analyzer は、Uni-gram なので、日本語など CJK では、2/27/2007 に書いたような問題があります。
なお、検索ボックスに入力した日本語を正しく認識させるには、tomcat の設定を1箇所、確認しておく必要があります。
$ cd /usr/local/tomcat/conf $ cat server.xml ... <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" useBodyEncodingForURI="true" /> ... $ |
上記のように、server.xml に、useBodyEncodingForURI="true" を設定しておく必要があります。これは、default では設定されていないので、注意が必要です。
Tags: computer_technology