nutch-default.xmlの設定 - Nutch調査録
-
概要
nutchの動きを設定するconf/nutch-default.xmlを読んだ際の個人的まとめ。説明を読んで「こういうことかな?」と思って書いているだけで未検証なので、話半分に「こういうのがあるんだなぁ」という程度に見て頂きたい。
ちなみに下記は素敵な日本語訳ページ。
http://www.ubicast.com/tech/nutch/nutc-default-0.9.html@Author mwSoft
@Date 2010/12/11
@Env Nutch1.2/Fedora14 -
ユーザエージェント関連
http.agent.name
ユーザエージェントを設定する。デフォルトでは空になっているので、必ず設定しないといけない。身元が分かるユーザエージェントを設定するのがお行儀が良いと言われる。
http.agent.email
ユーザエージェントに付加するメールアドレスを設定する。お行儀が良いクローラは連絡先メールアドレスを書いている場合もあるらしい。
http.robots.agents
robots.txtの時にどの設定を見るかを指定する。デフォルトでは*を見に行く。特に変える必要はないと思われる。
-
取得するリソースの限定
file.content.limit
fileプロトコルで取得するコンテンツの最大サイズを指定する。デフォルトでは65536になっている。fileプロトコルを使う機会というのは少ないと思うのであまり気にしなくて良さそう。
http.content.limit
httpプロトコルで取得するコンテンツの最大サイズ。デフォルトは65536バイト、つまり64KB。負の値を設定すると限界なし。それなりにグダグダとタグが並ぶサイトは取り落とすことになる。個人的には4倍くらいの値を設定している。
ftp.content.limit
FTPについても設定できる。個人的にはFTPは取りに行ってないのでシカト。
-
HTTP通信に関する設定
http.accept.language
デフォルトはen-us,en-gb,en;q=0.7,*;q=0.3になっている。日本人ならja,en-us,en-gb,en;q=0.7,*;q=0.3にしておいた方が良いかも。
http.useHttp11
通信をHTTP1.1で行うか。デフォルトはfalse(HTTP1.0)。
http.timeout
ネットワークタイムアウトの時間。デフォルトは10000ミリ秒、つまり10秒が設定されている。まぁ、そんなもんか。
http.redirect.max
最大リダイレクト数。デフォルトは0(無制限)。
http.max.delays
busyとかの場合に何回くらい諦めずにトライするか。デフォルトは100回。
http.proxy.host, port, username, password
プロキシを噛ます時の、ホスト、ポート、ユーザ名、パスワードの設定。
-
クロールのスケジューラ設定
db.default.fetch.interval
取得したページに対して何日置きに更新を確認に行くか。デフォルトは30日。DEPRECATEDなので下のdb.fetch.interval.defaultを使えばいいのかな。
db.fetch.interval.default
取得したページに対して何秒置きに更新を確認しに行くか。デフォルトは2592000秒=30日。あくまでデフォルト値で、他に優先して取るものがいれば取りにいかないし、確認して更新がなかった場合は次回取得は遅くなる。
db.fetch.schedule.class
Fetchするスケジューリングをしているclass。デフォルトではDefaultFetchScheduleが設定されている。自前でスケジューリング用のクラスを作って設定することもできる。たぶん。
db.fetch.schedule.adaptive.inc_rate, dec_rate
inc_rateはFetchしてページが更新されていなかった場合の次回Fetchまでのインターバルの増加量。dec_rateは逆に更新があった場合のインターバルの減少量。
db.fetch.schedule.adaptive.min_interval
Fetchする際のインターバルの最小値。デフォルトは60.0秒。さすがに速いので個人的には1日(86400.0)にしている。
db.fetch.schedule.adaptive.max_interval
Fetchする際のインターバルの最大値。デフォルトは31536000.0秒=365日。
-
クロールする範囲の設定
db.ignore.external.links
trueを設定すると外部リンクを追わなくなる。デフォルトはfalse。これをtrueにするとinjectで入れたURLと同一ホスト以外は自動的に追わなくなる。URLフィルタで設定するより楽かも。
db.ignore.internal.links
trueを設定すると、同一ホストのリンクを追わなくなる。デフォルトはtrue。これを使うと「自サイト以外のリンクを追うことになる=質の高いリンクを追うことになる」ものなんだそうな。
-
Fetchする際の設定
fetcher.server.delay
リクエスト成功時の、同一サーバへのリクエスト間隔。デフォルトは5秒。一番問題になりそうな気がするところなので、個人的には30.0秒に設定している。
fetcher.max.crawl.delay
robots.txtに指定してある「何秒間隔空けてクロールしろ」という命令がここで指定した値よりも大きかったら、そのサイトはFetchしない。
fetcher.threads.fetch
Fetchする時に起動するスレッド数。デフォルトは10。広くクロールするならもう少し増やしても良いだろうか。
fetcher.threads.per.host
1つのホストに同時にアクセスするスレッドの数。デフォルトはもちろん1。これを高い数にすると相手のサーバに迷惑をかけるかもしれないのでやらない。
fetcher.store.content
Fetchしたコンテンツを保存するかどうか。デフォルトはtrue(保存する)。インデックスだけ作成して保存はしないということもできる。
-
インデックスの設定
indexer.max.title.length
タイトルは何文字までインデックスに入れるか。デフォルトは100。長いタイトルだと途中で切れる。個人的には250にしている。
indexer.max.tokens
インデックスを作る際の1個のフィールドのトークンの最大数。トークンの数が多過ぎる場合は特徴的なトークンだけが生き残って他は省略される。デフォルトは10000。
indexingfilter.order
適用するインデックスフィルタの順番。これを設定すると任意のフィルタを適用できるっぽい。ソース見たけどイマイチ振る舞いがよくわからない。
-
検索の設定
searcher.dir
crawlした結果が入っているディレクトリを指定。デフォルトはcrawl。ということでcrawlする時は-dir crawl指定しておく。
searcher.max.hits
検索の最大ヒット数。デフォルトは-1(無制限)。Googleとかの検索は1000件までしかいかないよね。用途的に1万までで十分とかがあれば指定しておく。
searcher.max.hits.per.page
1ページに表示できる最大検索結果。デフォルトは1000。
-
プラグインの設定
plugin.folders
プラグインを置くフォルダ。
plugin.includes
ロードするプラグインを選択するための正規表現。デフォルトは「protocol-http|urlfilter-regex|parse-(text|html|js|tika)|index-(basic|anchor)|query-(basic|site|url)|response-(json|xml)|summary-basic|scoring-opic|urlnormalizer-(pass|regex|basic)」になってる。自前でプラグインを追加する場合は適度に変更。
plugin.excludes
ロードするプラグインを除外するための正規表現。デフォルトは空。
-
パーサの設定
parse.plugin.file
利用するプラグインの設定ファイルの名前。デフォルトはparse-plugins.xml。conf/parse-plugins.xmlを見ると、mimeTypeごとにどのパーサプラグインを使うかが設定されてる。
parser.character.encoding.default
判定できなかった場合のデフォルトの文字コード。デフォルトはwindows-1252になってる。
parser.html.impl
利用するHTMLパーサ。デフォルトはneko。tagsoupを設定することもできる。
parser.html.form.use_action
フォームのActionからもURLを収集するか。デフォルトはfalse。
parser.timeout
パースに時間がかかっている場合はタイムアウトしてくれる。デフォルトは30秒。