1

私はnutch 2.0とsolr 4.0を使用しており、最小限の成功を収めています.3つのURLがあり、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
----------------------------

もちろん、スクリプトを実行する前に URL を bin/nutch 挿入しますが、ログを見ると、Skipping が表示されます: 別のバッチ ID と表示される URL の一部は、seed.txt に含まれていないものであり、それらをsolrに含めますが、追加されません。私のseed.txtには3つのURLがあります

このスクリプトを実行した後、私は試しました bin/nutch parse -force -all bin/nutch updatedb bin/nutch solrindex http://127.0.0.1:8983/solr/sites -reindex

私の質問は次のとおりです。1. 最後の 3 つのコマンドはなぜ必要なのですか? 2. -force -all を使用しても、解析ジョブ中にすべての URL を取得するにはどうすればよいですか? 3. 上記のスクリプトで、generate -t​​opN を 5 に設定した場合。別のサイトへの別のサイトへの別のサイトへの別のサイトへの別のサイトへのリンクがあります。フェッチ/解析サイクルに含まれますか? 4. このコマンドはどうですか? なぜこれが言及されているのですか bin/nutch crawl urls -solr http://127.0.0.1:8983/solr/sites -depth 3 -topN 10000 -threads 3. ? これは私に関係があります。助けてください。

そうです、私は Nutch と solr に関する多くのページを読み、何週間も前からこれを理解しようと試みてきました。

4

1 に答える 1

2

表示される URL の一部は、seed.txt

これは URL の正規化が原因で発生していると思います。Nutchは、元の URL が変更またはより標準的な形式に変換されるため、この URL の正規化を行います。

#1の場合:生成-フェッチフェーズを挿入してから実行しました...そうですか?あなたの質問のこれらの 3 つのフェーズは、クロールされたデータの解析、新しく発見されたページでのデータベースの更新、およびそれらのインデックス作成にそれぞれ必要です。

#2の場合:申し訳ありませんが、質問がわかりませんでした。

#3: No. topN5 に設定すると、Nutchwhileが取得可能な URL の束から上位 5 つの URL を選択することを意味します。これらの選択されたスコアの高い URL のみがフェッチ対象と見なされます。

#4の場合:これは、すべてのnutchフェーズを自動的に呼び出す単一のコマンドです。したがって、フェーズごとに個別のコマンドを手動で実行する必要はありません。単一のコマンドを使用するだけで、すべてのことを実行できます。

#5 の場合: Hadoop ログに例外が記録されます。私がコメントできるように、スタック トレースとエラー メッセージを提供してください。それがなければ何も考えられません。

于 2012-08-30T19:20:30.020 に答える