我正在使用nutch 2.0和solr 4.0并且我获得了最小的成功我有3个网址并且我的regex-urlfilter.xml设置为允许所有内容。 我运行了这个脚本
#!/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
----------------------------
当然我在运行脚本之前注入了bin / nutch,但是当我查看日志时,我看到跳过:不同的批处理ID和我看到的一些url不在seed.txt和我想要包括它们 进入solr,但他们没有添加。 我的seed.txt中有3个网址
我运行这个脚本后,我试过了
bin/nutch parse -force -all
bin/nutch updatedb
bin/nutch solrindex http://127.0.0.1:8983/solr/sites -reindex
我的问题如下。
1.最后三个命令为什么必要?
2.如何在解析作业期间获取所有URL,即使使用-force -all我仍然会获得不同的批处理ID跳过
3.上面的脚本,如果我将生成-topN设置为5.这是否意味着如果一个站点有另一个站点到另一个站点的链接到另一个站点到另一个站点到另一个站点。它将被包含在fetch / parse循环中?
这个命令怎么样,为什么甚至提到这个:
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的网页,而且我一直试图解决这个问题几个星期。
答案 0 :(得分:2)
我看到的一些网址是seed.txt中没有的网址
我认为这是由于网址规范化而发生的。 Nutch执行此url规范化,因为原始URL被更改或转换为更标准的格式。
对于#1:你注入然后执行generate-fetch阶段..正确吗?解析已爬网数据,使用新发现的页面更新数据库并分别为它们编制索引,需要解决这些问题中的3个阶段。
对于#2:抱歉,但我没有得到你的问题。
对于#3:没有。 topN设置为5意味着nutch将选择前5个网址,而这些网址可以用于fething。它只考虑这些选定的高得分网址。
for#4:这是一个自动调用所有nutch阶段的命令。所以你不必为每个阶段手动执行单独的命令。只需要一个命令就可以完成所有工作。
对于#5,hadoop日志中会记录一些异常。提供堆栈跟踪和错误消息,以便我对它进行评论。没有我我什么都想不到。