2012-08-26 32 views
1

我正在使用nutch 2.0和solr 4.0,并取得最小的成功我有3个网址,我的正则表达式-urlfilter.xml被设置为允许一切。 我跑这个剧本Nutch updatedb杀死并跳过批处理ID号

#!/bin/bash 

# Nutch crawl 

export NUTCH_HOME=~/java/workspace/Nutch2.0/runtime/local 

# depth in the web exploration 
n=1 
# number of selected urls for fetching 
maxUrls=50000 
# solr server 
solrUrl=http://localhost:8983 

for ((i = 1 ; i <= $n ; i++)) 
do 

log=$NUTCH_HOME/logs/log                                       

# Generate 
$NUTCH_HOME/bin/nutch generate -topN $maxUrls > $log 

batchId=`sed -n 's|.*batch id: \(.*\)|\1|p' < $log` 

# rename log file by appending the batch id 
log2=$log$batchId 
mv $log $log2 
log=$log2 

# Fetch 
$NUTCH_HOME/bin/nutch fetch $batchId >> $log 

# Parse 
$NUTCH_HOME/bin/nutch parse $batchId >> $log 

# Update 
$NUTCH_HOME/bin/nutch updatedb >> $log 

# Index 
$NUTCH_HOME/bin/nutch solrindex $solrUrl $batchId >> $log 

done 
---------------------------- 

我当然斌/ Nutch的我运行该脚本之前注入的网址,但是当我查看日志,我看到跳绳:不同批次ID和一些我看到的是网址那些不在seed.txt中的文件,我想将它们包含在solr中,但它们不会被添加。 我有3个网址,我seed.txt

后我跑这个剧本我曾试图 bin/nutch parse -force -all bin/nutch updatedb bin/nutch solrindex http://127.0.0.1:8983/solr/sites -reindex

我的问题如下。 1.最后三条命令为什么是必需的? 2.如何在解析作业期间获取所有网址,即使使用了-force -all我仍然获得不同的批次ID跳过 3.上面的脚本,如果我将生成-topN设置为5.这是否意味着如果一个网站有另一个网站到另一个网站到另一个网站到另一个网站到另一个网站的链接。它将被包含在提取/解析循环中? 4.为什么这个命令,为什么这甚至提到: bin/nutch crawl urls -solr http://127.0.0.1:8983/solr/sites -depth 3 -topN 10000 -threads 3. 5.当我运行bin/nutch updateb它需要1-2个mineuts然后回声被杀死。这关系到我。请帮忙。

是的,我已经阅读了很多关于nutch和solr的网页,我一直试图弄清楚这几个星期了。

回答

2

一些我看到的网址是那些在seed.txt

我认为这种情况的发生是由于URL规范化的arent。 Nutch做这个url归一化,因为原来的url被更改或转换为更标准的格式。

for#1: u注入然后执行generate-fetch phases ..right?分析抓取的数据,使用新发现的页面更新数据库并分别对它们编制索引时,需要在yr问题中的3个阶段。

for#2:对不起,但我没有得到年的问题。

for#3: no。 topN设置为5意味着nutch将会从一堆网站中选择前5个网址,并且这些网址可以显示出来。它会考虑只有这些选定的高分值网址才能获取。

for#4:这是一个自动调用所有自耦相位的单个命令。所以你不必为每个阶段手动执行单独的命令。只有单一的命令,它会做所有的事情。

for#5:在hadoop日志中会记录一些异常。提供堆栈跟踪和错误消息,以便我评论它。没有我不能想到任何事情。

+0

这可能有助于问题5,我在只有618 MB RAM的服务器上运行这个服务 –

+0

以及您可能面临OOM的高可能性。 –

+0

上述脚本中是否强制解析命令? – peter