0

クローラーを作成し、結果をデータベース (MongoDB) に保存します。

もちろん、可能なクエリ パラメータの 1 つとして URL を使用することは重要です。しかし、それには問題もあります:

  • URL は非常に長くなる可能性があり、MongDB には有限の最大キー長があります
  • コンテンツの同義語はたくさんあり、1 ページだけをクロールしただけではわかりません。
  • HTTP 301、302、303、307 などの対処法 元の URL を保存するか、新しい場所を保存するか? これは特にリンク短縮サービスの問題です。
  • 「last.fm」の問題。lastfm.com == last.fm ~= lastfm.it (など) であり、サイトは 30x の結果コードを使用して示していません。複数のドメインからコンテンツを提供するだけです。

このデータベースの目標:

  • データベースにあるかもしれないし、ないかもしれない URL が与えられた場合、そのドキュメントを以前にクロールしたことがあるかどうかを妥当な精度で調べるためにクエリを実行させてください。

もちろん、「重複を気にせずにクロールして正確な URL を保存する」以外のスキームには、ある程度の誤検知があります。誤検知とは、以前にクロールした URL と同じと思われるが、実際には異なる URL です。

4

1 に答える 1

1

デフォルトでは、キーは1000バイト程度になると思います。本当にそれよりも大きい URL を使用するつもりですか? 最悪の場合、これは変更できるハードコードされた定数であると確信しています。

あなたの他の点について:

コンテンツの同義語はたくさんあり、1 ページだけをクロールしただけではわかりません。 - は?キーフレーズに焦点を当てたコンテンツの微妙な違いだけで、サイトが複製される可能性があり、それらのインデックス作成を避けたいということですか?

HTTP 301、302、303、307 などの対処法 元の URL を保存するか、新しい場所を保存するか? これは特にリンク短縮サービスの問題です。 - 目的地だと思いますが、誰かが同じ目的地を何度も短縮した場合はどうなりますか? 短縮リンクの有効期限が切れた場合、または短縮リンクがオフラインになった場合はどうなりますか? これらは、宛先 URL で同じことが起こっているよりもはるかに可能性が高いと思います。

「last.fm」の問題。lastfm.com == last.fm ~= lastfm.it (など) であり、サイトは 30x の結果コードを使用して示していません。複数のドメインからコンテンツを提供するだけです。-類似している可能性のある ドメインをチェックする簡単なアルゴリズムを書いていただけますか? Last.fm には、lastfm.com にある文字の 6/9 が含まれており、最初の 6 つは同一です。少しのメタデータも保存する場合は、関連性の高い一致が同一のドキュメントであるかどうかを確認できます。

データベースにあるかもしれないし、ないかもしれない URL が与えられた場合、そのドキュメントを以前にクロールしたことがあるかどうかを妥当な精度で調べるためにクエリを実行させてください。 - 最後のポイントを参照してください

お役に立てれば!

于 2011-04-12T23:27:55.347 に答える