(57)【特許請求の範囲】
【請求項１】
少なくとも１つのプロセッサと、前記プロセッサにより実行される、以下のコンポーネントを格納する１以上のメモリを備える、ウェブクローリングを促進するコンピュータ実装システムであって、
いつウェブページが変更するか予測するために予測分析を行い、いつウェブクローリングを実施するか、さらに、どのようにウェブクローリングを実施するかを判定するマネージングコンポーネントと、
起こり得る検索結果からなるカタログ中の、ページを発見し、アップデートするために、前記予測分析に応じてウェブページのサブセットをクロールするウェブクローリングコンポーネントを具備するサーバコンピュータコンポーネントと、
前記少なくとも１つのウェブページをクロールするのに適した時を判定するために、少なくとも部分的には、
収集した履歴に基づく統計モデルのみから算出された確率Ｐｒと、
各結果に関連づけられたユーティリティファクターＵｔｉｌｉｔｙ（Ｏ）と、
前記少なくとも１つのウェブページであって、起こり得るアクションの集合Ａから、
【数１】
0004806201.tif 000004
（ここで、ｏは、起こり得る結果の集合Ｏから選択された結果である。）
の値が最大になるように選択されたアクションａと、
に基づいて少なくとも１つのウェブページにおける変更に関する予測を行う決定理論コンポーネントと
を備えることを特徴とするシステム。
【請求項２】
前記ウェブクローリングコンポーネントからＵＲＬ情報を受け取り、予測に基づいて、前記ＵＲＬを新しいチャンクにパッケージし直すことができるバンドリングコンポーネントを、
さらに備えることを特徴とする請求項１に記載のシステム。
【請求項３】
前記ウェブクローリングコンポーネントは、
サブセット中のウェブページを順次クロールし、すべてのウェブページがクローリング期間内にクロールされるようにするラウンドロビン・クローリングコンポーネントと、
各ページに関連づけられたスコアに従って非順次にページをクロールする貪欲クローリングコンポーネントと、
を備えることを特徴とする請求項１に記載のシステム。
【請求項４】
いつウェブクローリングを実施するか、さらに、どのようにウェブクローリングを実施するかを判定するために、いつウェブページが変更するか予測すること、
起こり得るウェブページの検索結果からなるカタログをつくるために、上記いつウェブページが変更するかの予測に基づいて、ウェブページのサブセットをクロールすること、
前記ウェブページをクロールするのに適した時を判定するために、少なくとも部分的には、
収集した履歴に基づく統計モデルのみから算出された確率Ｐｒと、
各結果に関連づけられたユーティリティファクターＵｔｉｌｉｔｙ（Ｏ）と、
前記少なくとも１つのウェブページであって、起こり得るアクションの集合Ａから
【数２】
0004806201.tif 000005
（ここで、ｏは、起こり得る結果の集合Ｏから選択された結果である。）
の値が最大になるように選択されたアクションａと、
に基づいて少なくとも１つのウェブページにおける変更に関した予測することをコンピュータに行わせるためのコンピュータ実行可能命令を、
格納していることを特徴とするコンピュータ可読記録媒体。
【請求項５】
前記ウェブクローリングからＵＲＬ情報を受け取り、予測に基づいて、前記ＵＲＬを新しいチャンクにパッケージし直す命令を、さらに備えることを特徴とする請求項４に記載のコンピュータ可読記録媒体。
【請求項６】
前記クロールする命令は、クローリング期間内にサブセット内のウェブページを順次クロールし、各ページに関連づけられたスコアに従って非順次にページをクロールする指示を備えることを特徴とする請求項４に記載のコンピュータ可読記録媒体。
【請求項７】
ウェブクローリングを促進させるために、コンピュータに実行させる、以下のプログラムコンポーネントを格納していることを特徴とするコンピュータ可読記録媒体であって、前記プログラムコンポーネントは、
いつウェブページが変更するか予測するために予測分析を行い、いつウェブクローリングを実施するか、さらに、どのようにウェブクローリングを実施するかを判定するマネージングコンポーネントと、
起こり得る検索結果からなるカタログ中の、ページを発見し、アップデートするために、前記予測分析に応じてウェブページのサブセットをクロールするウェブクローリングコンポーネントを具備するサーバコンピュータコンポーネントと、
前記少なくとも１つのウェブページをクロールするのに適した時を判定するために、少なくとも部分的には、
収集した履歴に基づく統計モデルのみから算出された確率Ｐｒと、
各結果に関連づけられたユーティリティファクターＵｔｉｌｉｔｙ（Ｏ）と、
前記少なくとも１つのウェブページであって、起こり得るアクションの集合Ａから
【数３】
0004806201.tif 000006
（ここで、ｏは、起こり得る結果の集合Ｏから選択された結果である。）
の値が最大になるように選択されたアクションａと、
に基づいて少なくとも１つのウェブページにおける変更に関した予測を行う決定理論コンポーネントと
を備えることを特徴とするコンピュータ可読記録媒体。
【請求項８】
前記ウェブクローリングコンポーネントからＵＲＬ情報を受け取り、予測に基づいて、前記ＵＲＬを新しいチャンクにパッケージし直すことができるバンドリングコンポーネントを、さらに備えることを特徴とする請求項７に記載のコンピュータ可読記録媒体。
【請求項９】
前記ウェブクローリングコンポーネントは、
サブセット中のウェブページを順次クロールし、すべてのウェブページがクローリング期間内にクロールされるようにするラウンドロビン・クローリングコンポーネントと、
各ページに関連づけられたスコアに従って非順次にページをクロールする貪欲クローリングコンポーネントと、
を含むことを特徴とする請求項７に記載のコンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ分析に関し、より詳細には、分散型ウェブクローラ(distributed web-crawler)を使って、ネットワーク接続されたシステム(networked system)から情報を取得するシステムおよび方法に関する。
【背景技術】
【０００２】
高コスト、低性能のデータ処理システムから、低コスト、高性能の通信システム、問題解決システム、および娯楽システムへの、コンピュータおよびネットワーク技術の発展は、書簡のやり取り、請求書の支払い、買物、予算の立案、および情報収集など、日常業務を行うための負担を軽減する、コスト効率が高く時間を節約する手段をもたらした。たとえば、有線またはワイヤレス技術を介してインターネットとインターフェイスをとる計算機システムは、世界中にあるウェブサイトおよびサーバのリポジトリにある大量の情報に、ユーザが指一本で、ほぼ瞬時に近いアクセスをするためのチャネルをユーザに提供する。
【０００３】
一般に、ウェブサイトおよびサーバを介して利用可能な情報は、ウェブクライアント（たとえばコンピュータ）上で実行されるウェブブラウザを介してアクセスされる。たとえば、ウェブユーザは、ウェブブラウザを展開し、ウェブサイトのＵＲＬ（ユニフォームリソースロケータ）（たとえば、ウェブアドレスおよび／またはインターネットアドレス）をウェブブラウザのアドレスバーに入力し、キーボード上のエンターキーを押下しまたはマウスで「ｇｏ」ボタンをクリックすることによって、ウェブサイトにアクセスすることができる。ＵＲＬは通常、アクセスを容易にする４つの情報を含む。すなわち、情報交換のための１組の規則および標準を示すプロトコル（互いに通信するためのコンピュータ用言語）と、ウェブサイトまでの場所指定と、ウェブサイトを維持する組織名と、組織のタイプを識別する添字（たとえば、ｃｏｍ、ｏｒｇ、ｎｅｔ、ｇｏｖ、およびｅｄｕ）である。
【０００４】
いくつかの場合において、ユーザは、自分がアクセスしたいと望むサイトもしくはサーバの名称、および／またはサイトもしくはサーバへのＵＲＬを先験的に知っている。このような状況において、ユーザは、上述したように、アドレスバーにＵＲＬを入力しサイトに接続することによって、サイトにアクセスすることができる。しかし、多くの場合、ユーザは、ＵＲＬもサイト名も知らない。代わりに、ユーザは、検索エンジンを利用して、自分が提供したキーワードに基づいてサイトの発見を円滑に行う。概して、検索エンジンは、キーワードを求めてウェブサイトおよびサーバのコンテンツを検索するとともに、キーワードが発見されたウェブサイトおよびサーバへのリンクの一覧を返す、実行可能なアプリケーションまたはプログラムからなる。基本的に、検索エンジンは、（たとえば、ドキュメントに関連づけられたＵＲＬを取得することによって）できるだけ多くのドキュメントを取得するウェブ「クローラ(crawler)」（別名、「スパイダー(spider)」または「ロボット(robot)」）を組み込む。この情報は次いで、インデクサが、取得されたデータを処理することができるように格納される。インデクサは、ドキュメントを読み出し、各ドキュメントに含まれるキーワードおよびドキュメントの他の属性に基づいて、優先順位つきの索引を作成する。それぞれの検索エンジンは概して、独自のアルゴリズムを利用して、クエリに対して有意義な結果が返されるように、索引を作成する。
【０００５】
したがって、ウェブクローラ(web-crawler)は、検索エンジン(search engine)の動作にとって重要である。現在および最新の検索結果(search result)を提供するために、クローラは、ウェブを絶えず検索して、新しいウェブページを見つけ、古いウェブページ情報をアップデートし、消去されたページを削除しなければならない。インターネット上に見られるウェブページの数は天文学的である。したがって、ウェブクローラは、極度に高速であることが要求される。ほとんどのウェブクローラは、ウェブページを提供するサーバにポーリングを行うことによってデータを集めるので、クローラは、ある特定のサーバにアクセスするとき、できるだけ目立たないようにもしなければならない。極端な場合、クローラは、サーバの資源すべてを非常に高速に吸収し、サーバをシャットダウンさせてしまう場合がある。概して、クローラは、サーバのウェブページにアクセスする前に、サーバに対してそれ自体を識別し、アクセス許可を求める。この時点で、サーバは、サーバの資源すべてを盗む不正クローラに対して、アクセスを拒否することができる。ウェブページをホストするサーバは一般に、検索エンジンがユーザにウェブページをより容易に見つけさせるので、検索エンジンから利益を受ける。したがって、ほとんどのサーバは、サーバの資源(server's resource)を使い過ぎない限りクローラを受け入れるので、ユーザは、サーバのコンテンツを活用することができにくくなり得る。
【０００６】
今日、インターネット上の莫大な量の情報は、効率的なウェブクローリング(web-crawling)にとって、克服し難いほどの障害をもたらしている。たとえば、インターネット上のすべてのページをカタログしようと試みる一般的なウェブクローラは、そうしたページを１つずつたどるのに、数週間または数カ月もかかる場合がある。クロールされた直後にアップデートされるページは、数カ月の間再クロールされないであろうから、この場合、そのページに関連づけられた情報は、正確にカタログされず、その結果、ユーザが検索に関連した情報を受け取る効率を低下させることになる。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
したがって、こういった分野において、ウェブクローリングの速度および効率を向上させるシステムおよび方法に対する、まだ対処されていない必要性がある。
【課題を解決するための手段】
【０００８】
以下では、本発明のいくつかの態様の基本的な理解をもたらすために、本発明の簡略な要約を提示する。この要約は、本発明の包括的な概要ではない。本発明の主要な／重大な要素を明らかにすることも、本発明の範囲を詳述することも意図されていない。後で提示するより詳細な説明の前置きとして、本発明のいくつかの概念を簡略な形で提示することだけを目的としている。
【０００９】
本発明は、クロールされるウェブページに優先順位をつける決定理論手法(decision-theoretic approach)を介して、ウェブページの予測分析(predictive analysis)を円滑に行うシステムおよび方法を提供する。本発明の態様によると、ウェブページがいつ変更されるかを予測する統計的手法(statistical approach)が適用され得る。決定理論的(decision-theoretic)なウェブクローリング手法(web-crawling approach)は、期待される成果を最大限にするように、ダウンロードするページを選択的に選ぶことができる。この決定理論手法は、１組の行われ得るアクション(a set of possible actions to be taken)、そのアクションについて１組の起こり得る結果(a set of possible outcomes of the actions)、ある特定の結果(particular outcome)がある特定のアクション(particular action)から生じる確率(probability)、および、結果の値(value of the outcome)を取り込んでいる、各結果(outcome)に対するユーティリティ・ファクター(utility factor)に基づいて、クローリングのためのページ選択(page selection)を円滑に行うアルゴリズムを含む。このようなアルゴリズムは、最大期待(maximum expected)ユーティリティ原理を適用することにより、最良のアクション(best action)を選択するために利用される。
【００１０】
本発明の関連態様によると、ウェブページの変更(web page change)は、ページクローリングの優先度(page crawling priority)に関する判定(determination)を円滑に行うために予測(predict)することができる。最後にクロールされたときからウェブページが変更された確率は、たとえば、対象となっている特定のページ（群）(specific page(s))に関連する変更履歴情報(historical change information)、ならびに他のページに関する変更履歴データの分析によって判定することができる。さらに、ページの様々な特徴(feature)が、ページがいつ変更されるかを予測するのに利用され得る。たとえば、ページのＵＲＬは、「．ｈｔｍｌ」、「．ｃｏｍ」などで終わるか否か判定するために分析される。同様に、ドキュメントまたはＨＴＭＬの特徴（たとえば、テーブル、写真を含むか否かなど）は、ページ変更(page change)を予測するために評価(assess)される。さらに、ページのダウンロード中に取得される、ページおよび／またはＨＴＴＰステータス情報における単語の特徴は、ページがいつ変更されるかを予測するのに利用され得る。
【００１１】
本発明の別の態様によると、ウェブページの変更予測(web page change prediction)を強化するために、フィードバック／フィードフォワードループが提供され。この態様は、ＵＲＬのサンプルセット(a sample set of URLs)を作成し、確率プレディクタ(probability predictor)、クロール方針(crawl strategy)の調整パラメータ(tuning parameter)などを学習(learn)するためのトレーニングデータを集めるために、変更確率に関わらず定期的にサンプルセットをクロールすることを可能にする。サンプルは、たとえば、ユーザ検索に対する結果セット(a result set)にＵＲＬが現れた回数、検索に対する結果セットとしてＵＲＬを受け取ったユーザによってそのＵＲＬがクリックされた頻度、などによって決定されるような値によって重みづけされる。サンプルセットは、個々のＵＲＬまたはＵＲＬのサブセットが、サンプルセットの中のものと交換され得るように、定期的にアップデートされることができ、そうすることによって、一定の期間（たとえば、１カ月、２カ月など）の後、サンプルセットが全く新しいものになり得る。あるいは、サンプルセットは、予め定められたスケジュールに従って、完全に交換されてもよい。
【００１２】
上記の目的および関連する目的を達成するために、本発明の例示的な態様が、本明細書において、以下の記述および添付の図面に関連して説明される。ただし、こうした態様は本発明の原理が利用され得る様々な方法のごくわずかを示すに過ぎず、本発明は、このようなすべての態様およびその等価物を含むことを意図する。本発明の他の利点および新規の特徴は、本発明の以下の詳細な説明を図面と併せ読むことにより、明らかになるであろう。
【発明を実施するための最良の形態】
【００１３】
以下、図面を参照して本発明を説明していく。同じ参照番号は、全体を通して同じ要素を指すのに使われる。以下の記述では、説明のために、多くの具体的な詳細が、本発明の完全な理解をもたらすために述べられる。ただし、こうした具体的な詳細なしでも本発明が実施され得ることが明らかであろう。他の例では、本発明の説明を円滑にするために、公知の構造およびデバイスがブロック図の形で示される。
【００１４】
本出願において使用される「コンポーネント(component)」という用語は、コンピュータ関連のエンティティ、すなわちハードウェア、ハードウェアおよびソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかを指すことを意図している。たとえば、コンポーネントは、プロセッサ上で実行されている処理、プロセッサ、オブジェクト、実行ファイル、実行スレッド、プログラム、および／またはコンピュータでよいが、それに限定されない。例として、サーバ上で実行されているアプリケーションおよびそのサーバ両方がコンピュータコンポーネントとなることができる。１つまたは複数のコンポーネントが実行の処理および／またはスレッド中に常駐することができ、コンポーネントは、１台のコンピュータに配置されることも、かつ／または２台以上のコンピュータの間に分散されることもできる。「スレッド(thread)」とは、オペレーティングシステムの核が実行のためにスケジュールする処理におけるエンティティである。当該分野において公知であるように、各スレッドは、スレッドの実行に関連づけられた揮発性データである、関連する「コンテキスト(context)」を有する。スレッドのコンテキストは、システムレジスタのコンテンツおよびスレッドの処理に属す仮想アドレスを含む。したがって、スレッドのコンテキストを含む実際のデータは、実行時に変化する。
【００１５】
本発明は、ウェブドキュメントの索引を維持する、改良されたシステムおよび方法を提供する。索引は、他のタイプの情報のデータを取り出し維持するのにも利用することができる。従来のウェブクローラは、本発明によって軽減される特定の欠点を有する。各クライアント（たとえば、ウェブにアクセスする任意の人のマシン）は、ローカルな情報を格納し、したがって、クライアントが最後に訪れたときから、ウェブページが変更されているか否かを知ることができる。変更されている場合、クライアントは、この情報を検索エンジンに伝達することができる。同様に、サーバは、クライアントが訪れたウェブページについての情報を用いて、現時点でサーバにとって未知であるページを見つけることができる。ドキュメントを効率よく見つけ、そうしたドキュメントについての現時点での知識を維持することは、イントラネットおよびインターネット検索両方にとって、非常に重要なタスクである。本発明は、イントラネット検索などの状況でも利用されることができ、その場合、ページをクロールし、サーバ上でページ情報を新鮮に保つことは、さらに重要な挑戦課題である。
【００１６】
検索エンジンの（インターネット、イントラネット、またはそれ以外にとって）重要なコンポーネントは、データクローラまたはドキュメントクローラである。ウェブクローラは、２つの主要タスクを実施する。すなわち、検索エンジンによって索引づけられるべき未知のドキュメントを見つけること、および、そのドキュメントが、既知の各ドキュメントについての最新の知識を有することを保証しようと試みることである。こうしたタスクは両方とも、困難であり、（ページ順位の質とともに）検索エンジンにおいて最も重要であり目に見える品質差別化要因に属する。ドキュメントクローラは一般に、サーバモデルに基づく。検索エンジンは、トポロジ検索によってウェブをクロールする。既知のウェブページからなるシードセットから始まり、クローラは、そうしたページからのリンクをたどり、そうすることによって、シードセットからのパス（ＵＲＬ参照の組）を介してつながれているすべてのウェブページを見つけることができる。検索エンジンがドキュメントの集合体についての最新の知識をもつようにするために、クロールは、頻繁に繰り返されなければならない。クローラは、クロールを行う度にウェブページを再訪するので、どの程度頻繁にページ（またはサブページ）が変更されるかを知ることができ、たとえば過去の変更頻度、予測される今後の変更（群）などに基づいて、特定のページを他のページより頻繁に再クロールする。
【００１７】
現在の、サーバベースのクローリングパラダイムには、いくつかの脆弱性がある。たとえば、検索エンジンは、クローラがページを再訪したときに、ドキュメントに対する変更（たとえば、コンテンツの変更や、既に存在しないページなど）を知ることしかできない。従来のシステムは一般に、頻繁に変更されるページをクロールする頻度を、それ程効率よく調節することができない。本発明は、上述した脆弱性を改善するやり方で、既知のドキュメントについての最新の知識を保持するシステムおよび方法を提供する。
【００１８】
本明細書で使用する、「推論(inference)」という用語は概して、イベントおよび／またはデータを介して獲得された１組の観察結果から、システム、環境、および／またはユーザの状態について論理的に判断しまたは推論する処理を指す。推論は、ある特定のコンテキストまたはアクションを識別するのに利用されることもでき、たとえば状態に関する確率分布を生成することもできる。推論は、確率に基づくことができる。つまり、データおよびイベントの検討に基づく、対象となる状態に関する確率分布の計算である。推論は、１組のイベントおよび／またはデータからより高レベルのイベントを構成するのに利用される技術も指し得る。このような推論の結果として、イベントが時間的な近接性において相関しているか否か、およびイベントおよびデータが１つまたは複数のイベントおよびデータソースからのものであるか否かに関わらず、１組の観察されたイベントデータおよび／または格納されたイベントデータから新たなイベントまたはアクションが構築される。
【００１９】
図１は、クロールするページに優先順位をつけるための予測的な手法をもたらすシステム１００の例である。システム１００は、起こり得る検索結果からなるカタログ中でウェブページを発見しアップデートするためにページをクロールするウェブクローリング・コンポーネント(web-crawling component)１０２を備える。ウェブクローリング・コンポーネント１０２は、ページのユーティリティ(utility of pages)に基づいてウェブページに優先順位をつけて組(set)、または「チャンク(chunk)」に分けるバンドリング・コンポーネント(bundling component)１０４に動作可能に関連づけられる。バンドリング・コンポーネント１０４はさらに、ＵＲＬなど、アイテムのサブセットを含む検索サーバ１０６に動作可能に関連づけられ、こうしたサブセットは、クローリング・コンポーネント１０２によるクローリングのために、マネージング・コンポーネント(managing component)１０８によって選択される。このようにして、検索サーバ１０６は、クローリング・コンポーネント１０２によってクロールされ、バンドリング・コンポーネント１０４によって繰り返し優先順位をつけ直されることができる。
【００２０】
システム１００は、変更が起きたときにウェブページのクローリングを促進するために、ウェブページがいつ変更されるかという予測を円滑に行い、そうすることによって、検索サーバは、それ程遅れることなくアップデートされ得るようになる。このような予測は、ページが最後にクロールされたときから変更されている確率を算定することによって行われ得る。ウェブページが変更されている確率を判定するために、問題となっている特定のページに関連する履歴情報（たとえば、これまでにページが変更された回数、変更（群）の規模など）、ならびに他のページの変更に関係する履歴データが評価され得る。さらに、ページのＵＲＬの特徴（たとえばＵＲＬが「．ｈｔｍｌ」、「．ｃｏｍ」などで終わるか否か）、ドキュメントもしくはＨＴＭＬの特徴（たとえば、テーブル、写真を含むか否か、など）、ページで使われている単語の特徴、および／またはページをダウンロードするときに取得されるＨＴＴＰステータス情報を利用することもできる。
【００２１】
マネージング・コンポーネント１０８は、ウェブページの変更に関する確率を予測するための統計モデルを構築することができる。このような統計モデルは、たとえば、ロジスティック回帰、サポートベクトルマシンの確率バージョンなどでよい。統計モデルを構築するために、マネージング・コンポーネント１０８は、１組のページに関する、ウェブページの変更タイミング（および、より一般的な意味では、たとえばページの閲覧回数、変更の程度など、起こり得る結果を記述する他の特徴）に密接に関係するトレーニングデータ、ならびに各ページがいつ変更されたかという具体的な履歴を収集することができる。マネージング・コンポーネント１０８はさらに、ページのコンテンツ、ページの変更履歴、ページのＵＲＬ、ページのダウンロードに関連づけられたＨＴＴＰステータスメッセージなど、各ページの特徴を抽出することによって、トレーニングセットを組み立てることができる。「新規ページ(new page)」というシナリオに対する予測の場合（たとえば履歴情報が利用できない場合）、マネージング・コンポーネント１０８は、この情報のサブセットを使うことができる。
【００２２】
本発明の別の態様によると、システム１００は、変更されたウェブページを発見しアップデートする際のクローリング・コンポーネント１０２の効率を最大限にするための、ページを選択的にダウンロードする決定理論をサポートするために、ウェブページがいつ変更されるかという予測を用いることができる。ある特定のページをクロールするのに適したときについての決定理論選択を円滑に行うために、様々な因子が利用され得る。たとえば、このような因子は、１組の起こり得るアクションＡ、１組の起こり得る結果Ｏ、ある特定の結果が起こる確率Ｐｒ、および、特定の結果の値を取り込む、各結果に関連づけられたユーティリティ・ファクターＵｔｉｌｉｔｙ（Ｏ）を含み得る。このような因子は、最大期待ユーティリティ原理の適用により、最良のアクションを選択するのに使うことができる。たとえば、
【００２３】
【数１】
0004806201.tif 000002
【００２４】
の値を最大にする、ａ∈Ａであるアクションが選択される。
【００２５】
すべてのアクションの組Ａは、検索サーバ１０６からダウンロードされることができるページからなる、可能なすべてのサブセットを含むことができる。各単一ページは、アクションの選択を容易にするために他のページとは独立して検討されることができ、ページ（群）の組は、その個々の順位づけに基づいて選ばれることができる。この手法は、当期間においてどのページをアップデートするかという決定を円滑に行い、数週間または数カ月にもなり得る、すべてのページをクロールするのに要する時間に関連する問題を軽減する。
【００２６】
選ばれた各アクションに対して、いくつかの結果Ｏが起こり得る。たとえば、結果は、ページをダウンロードしないという判断、ページをダウンロードする試みの失敗、変更されていないページのダウンロード、および／または変更されたページのダウンロードでよい。起こり得る結果の変形体は、たとえば、近いうち（たとえば、１日、一週間、１カ月など）にページが閲覧され得る回数、ページの変更（群）の規模など、他の特徴を含むように拡張されてもよい。
【００２７】
ユーティリティ関数(utility function)は、各結果の値を重みづけし、そうすることによって、ページの値は、ページの重要性、ページが所与の期間に閲覧される回数、ページがクリックされる回数、ページ上でクリックされた特定のリンク、変更されたページの変更程度、様々なビジネスルール（たとえば、４週間ごとにすべてのページを一度クロールする、多くとも１日に一度ページをクロールする、など）、および／またはページの重要性に関連づけられた他のいずれかの適切な特徴の関数になり得る。
【００２８】
所与の結果が起こる確率の判定は、最も重要である。ウェブクローリングの基本的な目的は、ページが、最後にクロールされたときから変更されている確率を算定することである。ある特定の結果が起こる確率を正確に予測するために、マネージング・コンポーネントは、閲覧中の特定のページに関係する履歴データ、ならびに他のページの変更履歴などを利用することができる。
【００２９】
このような広大なページを選択的にクロールするには、現在および今後の期間において、どのページをクロールするかを決定する方針が必要である。たとえば、閲覧中のページが新しいページである場合、ページ変更の確率予測の基となる、マネージング・コンポーネント１０８にとって利用可能な履歴データがない。この例によると、マネージング・コンポーネントは、ページのコンテンツ、ページのＵＲＬなどに依拠することができる。ページが新しくない場合、マネージング・コンポーネントは、新しいページを参照して上述した情報に加え、ページの利用可能な変更履歴も調べることができる。さらに、決定理論は、ページが変更されるレートについての情報を増やし、かつ／または取得するために、新しいページをより頻繁にクロールすることも円滑に行うことができる。たとえば、確率予測因子が、ページがいつ変更されるかという予測が不確かであることを指す場合、決定理論は、慎重になることを選ぶとともにそのページを頻繁にクロールすることができ、そうすることによって、ページが、容認できないほど古くなる危険を低下させ、今後の確率予測の正確さを高め得るより多くの履歴データを提供する。
【００３０】
さらに、マネージング・コンポーネント１０８は、クローリングコンポーネント１０２に、たとえば、「野球」、「株価」などのカテゴリを利用してカテゴリ特有のクローリングを実施するよう命令することができる。このようにして、クローリングコンポーネント１０２は、ある特定のカテゴリの印を含むページを選択的にクロールすることができる。同様に、マネージング・コンポーネント１０８は、クローリングコンポーネント１０２に、クエリ特有のクローリング（たとえば、「全豪オープン」、「株Ｘ」など）を実施するよう命令することができる。このような例は、情報が頻繁に変更される対象を表し、したがって、そうした対象に関連するウェブページ（たとえば、スコア、価格など）は、頻繁にアップデートされる。このようなクエリ特有のクローリングは、ウェブページの変更予測の効率を上げる。さらに、結果空間は、ページが今後閲覧される回数、ページの変更の数および／または規模などを含むように拡張されることができる。
【００３１】
図２は、本発明の態様に従って、ＵＲＬをそのユーティリティによってバンドルするシステム２００の例示である。マネージング・コンポーネント２０２は、検索サーバ２０４から、ウェブページのチャンクをダウンロードすることができる。チャンクとは、たとえば、６５，５３６ページ、３２，７６８ページ、またはグループ化された他のウェブページ数でよい。マネージング・コンポーネント２０２は、ダウンロードしたチャンクのサブセットから情報を集め、各サブセットは、少なくとも１つのウェブページを含む。マネージング・コンポーネント２０２によって集められた情報は、たとえば、ページのコンテンツ、ＵＲＬ、ＨＴＴＰヘッダ情報、履歴情報などを含むことができる。マネージング・コンポーネント２０２は次いで、ある特定のページまたはページのサブセットが、前回のクロール時から変更された、または予定されている次回のクロール前に変更される確率の予測をたて、ウェブクローラ２０６に、所望の結果を円滑にもたらすためのアクションをとる（たとえば、変更が差し迫っている場合はそのページをクロールし、変更が起こりそうにないので予定されているクロールまでそのページを無視する、など）よう命令することができる。さらに、ページ変更のタイミングおよび／またはページが、ある特定の日に変更され、またはある特定の過去の日に実際に変更された確率に関して、予測が行われることもできる。このような予測は、いくつかの日付のうちのある１日にページが変更される確率を表す分布曲線をもたらすのに利用されることができる。このような予測は、ページが、どのチャンクの部分であるかを明確にすることができる。
【００３２】
選択されたページがクロールされ、関連情報がアップデートされると、バンドリング・コンポーネント２０８が、ウェブクローラ２０６からＵＲＬ情報を受け取り、たとえば、いつページ（群）が変更されるかという予測に基づいて、ＵＲＬを新しいチャンク（チャンク＊）にパッケージし直すことができる。バンドリング・コンポーネント２０８は次いで、パッケージし直されたチャンク＊を、検索サーバ２０４に戻すことができる。
【００３３】
図３は、本発明の態様による、本明細書において述べられるウェブクローラのコンポーネントの例示である。ラウンドロビン・コンポーネント３０２は、列挙されたページ１〜ｎを、垂直下方向の破線矢印で示されるように上から下まで１つずつクロールするものとして示される。ラウンドロビン・コンポーネントはこのように、指定されたクローリング期間（たとえば２８日）以内にすべてのページがクロールされるようにし、そうすることによって、どのページも２８日より前のものにならないことを保証する。クローリング期間は、検索サーバをクロールするのに十分などの期間でもよく、２８日という期間に限定されないことが理解されるべきである。
【００３４】
図３によると、ラウンドロビン・コンポーネント３０２は、チャンク１をクロール済みであり（チャンク１の左下隅の「ＲＲ」という印で示される）、チャンク２のクロールを処理中である。チャンク２のクロールが完了すると、ラウンドロビン・コンポーネント３０２は、チャンク３のクロールに進んで、そのコンテンツを判定することができる。しかし、貪欲(Greedy)コンポーネント３０４が、チャンク３のクロール処理中であり、したがって、ラウンドロビン・コンポーネント３０２は、チャンク３はクローリングを必要としないという指示を受け取ることができる。したがって、ラウンドロビン・コンポーネント３０２がクロールする次のチャンクはチャンク４である。貪欲コンポーネント３０４は、チャンクＮをクロール済みであり、貪欲コンポーネントに関連づけられた破線垂直矢印は、貪欲コンポーネント３０４が、クロールする際にチャンクの順序に束縛されていないことを示すために、組の中のチャンクのリストに沿って両方向に伸びていることに留意されたい。チャンクの順序に束縛されるのではなく、貪欲コンポーネント３０４は、たとえば、予測スコア（たとえば、最後のクロールのときから変更されている最大平均確率）、ユーティリティスコア（たとえば最大平均ユーティリティ）、および／または決定理論スコア（たとえば最大期待ユーティリティ）などのベストスコアに基づいて、クロールするチャンク（個々のページでよい）を選択することができる。このようにして、ラウンドロビン・コンポーネント３０２は、規定の期間内にすべてのチャンクがクロールされるようにすることができ、貪欲コンポーネントは、ユーティリティスコアおよび／または変更が起こり得るスコアが最も高いチャンクが、スコアが低いものの前に検索されるようにする。さらに、ラウンドロビン・コンポーネント３０２が、現在のクローリング期間内に貪欲コンポーネント３０４によってチャンクがクロールされたことを認識できることによって、チャンク、検索サーバなどをクロールするのに要する時間が削減される。ラウンドロビン・コンポーネント３０２および貪欲コンポーネント３０４が協同で作用する方法を記述するアルゴリズムは、図７〜図９を参照して後に説明する。
【００３５】
図４は、本発明の態様による、本明細書において述べられるウェブクローラのコンポーネントの例示である。この図は、ラウンドロビン・コンポーネント４０２によって実施される、チャンクの順序づけられたクローリングを例示するために、チャンク（たとえば、アイテムまたはページなどのサブセット）の周辺にあるラウンドロビン・コンポーネント４０２を示している。図に示すように、ラウンドロビン・コンポーネント４０２は、チャンク１をクロール済みであり、チャンク２のクロール処理中である。チャンク１および２は、各チャンクが、ラウンドロビン・コンポーネント４０２によって既にクロールされており、または現在クロールされていることを示すように、左下隅に「ＲＲ」と示されている。貪欲コンポーネント４０４は、ラウンドロビンの順序に関わらず、貪欲コンポーネント４０４がすべてのチャンクにアクセスできることをより明確に示すために、チャンクの中心に示されている。たとえば、貪欲コンポーネント(Greedy component)は、貪欲コンポーネント４０４をチャンク３に接続する通信リンクによって示されるように、チャンク３を現在クロールしている。しかし、チャンク５は、チャンク３の後に配置されているにも関わらず、貪欲コンポーネント４０４によって既にクロールされていることに留意されたい。この例によると、貪欲コンポーネント４０４は、（たとえば、予測、ユーティリティ、および／または決定理論などの）スコアがチャンク３より高いチャンクを判定し、したがってチャンク３の前にチャンク５をクロールしている。ラウンドロビン・コンポーネント４０２は、チャンク２を完了するとチャンク３のクロールを試みることができるが、チャンク３が貪欲コンポーネント４０４によってクロールされていることを認識し得る。したがって、ラウンドロビン・コンポーネントがクロールする次のチャンクは、チャンク４となる。
【００３６】
説明を簡単にするために、本明細書においてたとえばフローチャートの形で示される１つまたは複数の方法は、一連の作用として示され説明されるが、本発明は作用の順序によって限定されないことを理解されたい。というのは、いくつかの作用は、本発明に従って異なる順序で起こることもでき、かつ／または本明細書において示され説明される他の作用と同時に起こることもできるからである。たとえば、方法は、状態図でのように、相関する一連の状態またはイベントとしても表され得ることが当業者には理解されよう。さらに、例示したすべての作用が、本発明による方法の実施に必要とされ得るわけではない。
【００３７】
図５は、本発明の態様による貪欲アルゴリズムによる予測的ウェブクローリングの方法の例示である。５０２において、チャンクが、クロールされる検索サーバからダウンロードされる。５０４において、どのチャンクをクロールするかという判定を円滑に行うために、チャンクスコアが決定される。たとえば、チャンクスコアは、予測スコア（たとえば、最後にクロールされたときから変更されている、最大平均確率など）、ユーティリティスコア（たとえば、最大平均ユーティリティなど）、および／または決定理論スコア（たとえば、最大期待ユーティリティなど）でよい。５０６において、チャンクスコアに関して、所与のチャンクのスコアが貪欲クロールを認可するか否か（たとえば、クローラが予定より早くクロールを行うべきか、など）、判定が行われ得る。所与のチャンクのスコアが貪欲クロールを認可しない場合、そのチャンクは、すぐにはクロールされない。チャンクのスコアが、貪欲クロールを認可するのに十分なほど高い場合、５０８において、十分なスコアをもつチャンクがクロールされることができる。
【００３８】
図６は、クローリングのために選ばれるチャンクの数が、たとえばクローリング容量に基づくことができる、本発明の態様による方法を示す。６０２において、ウェブクローラのクローリング容量が判定される（たとえば、クロールされ得るチャンクの最大数Ｍが算定される）。６０４において、起こり得るクローリングのために、チャンクが検索サーバからダウンロードされることができる。６０６において、どのチャンクをクロールするかという判定を円滑に行うために、（たとえば、予測的、ユーティリティに基づく、および／または決定理論）チャンクスコアが決定されることができる。６０８において、チャンクスコアに関して、および所与のチャンクのスコアが貪欲クロールを認可するか否か（たとえば、クローラが予定より早くクロールを行うべきか、など）、判定が行われ得る。所与のチャンクのスコアが貪欲クロールを認可しない場合、そのチャンクは、すぐにはクロールされない。チャンクのスコアが、貪欲クロールを認可するのに十分なほど高い場合、６１０において、ベストスコアをもつチャンクがクロールされることができる。
【００３９】
図７は、貪欲アルゴリズムが、ラウンドロビンアルゴリズムとともに利用される、本発明の態様による方法７００の例示である。本発明のこの態様は、予測的、ユーティリティに基づく、および／または決定理論スコアを使ってチャンクを選ぶとともに、すべてのチャンクがＤ日間よりも古くならないように、（今後）クロールされ得ることを保証する貪欲アルゴリズムを利用する。７０２において、どのＵＲＬもＤ日間より古くならないことを保証する（たとえば、すべてのページが少なくともＤ日に一度クロールされることを保証する）ために、ラウンドロビンによってクローリング容量(crawling capacity)の何パーセント（ｒｒ％）が必要とされるかに関して、判定が行われる。たとえば、利用可能なクローリング容量の５０％が、ラウンドロビンアルゴリズムを用いて、どのチャンクも２８日より古くならないことを保証することができる場合、ラウンドロビンアルゴリズムは、その期限に従ってチャンクをクロールすることができる。期限は、たとえば、チャンクが最後にクロールされた日を算定することによって決定することができる。たとえば、チャンクＡが１４日前にクロールされた場合、その期限は１４日後である。チャンクＢが７日前にクロールされた場合、その期限は２１日後である。したがって、チャンクＡは、チャンクＢの前にクロールされる。この例によると、７０４において、クローリング容量の５０％が、ラウンドロビンに割り当てられ得る。
【００４０】
７０６において、残りのクローリング容量（１−ｒｒ％）が、貪欲クローリングのために、貪欲アルゴリズムに割り当てられる（ｇ％）。次いで７０８において、クローリング速度は既知の値であるが、たとえば、選択されたチャンクのサイズおよび期間の長さを算定することによって、期間中にクロールされ得るチャンクの最大数（Ｍ）が決定される。７１０において、どの特定のチャンクがクロールされるべきか（ＴＢＣ）に関して、判定が行われ得る。次に、７１２において、ＴＢＣに追加される、ベストスコアをもつチャンクの数に対して、公式ｇ％＊Ｍを用いてフロア(floor)が選択される。たとえば、ｇ％が５５％であり、Ｍが５に等しい場合、ｇ％＊Ｍは、２．７５に等しく、フロア(floor)は２となる。最後に、７１４において、公式(formula)Ｍ−ｓｉｚｅによって最も古いチャンク（ＴＢＣ）の選択が行われ、こうしたチャンクは、ＴＢＣに追加される。このようにして、貪欲クローリングのためにチャンクが選択され、ラウンドロビンアルゴリズムは、すべてのチャンクが所与の期間内にクロールされるようにする。
【００４１】
図８は、貪欲アルゴリズムが、ラウンドロビン・アルゴリズムとともに利用される、本発明の態様による方法８００の例示である。８０２において、どのＵＲＬもＤ日より古くならないことを保証する（たとえば、すべてのページが少なくともＤ日に一度クロールされることを保証する）ために、ラウンドロビンによってクローリング容量の何パーセント（ｒｒ％）が必要とされるかに関して、判定が行われる。次に８０４において、ラウンドロビンにクローリング容量が割り当てられることができる。８０６において、残りのクローリング容量（１−ｒｒ％）が、貪欲クローリングのために、貪欲アルゴリズムに割り当てられることができる（ｇ％）。次に８０８において、クローリング速度は既知の値であるが、たとえば、選択されるチャンクのサイズおよび期間の長さを算定することによって、期間中にクロールされ得るチャンクの最大数（Ｍ）が決定されることができる。８１０において、どの特定のチャンクがクロールされるべきか（ＴＢＣ）に関して、判定が行われ得る。
【００４２】
８１２において、ＴＢＣに追加されるチャンクの数に対して、公式ｒｒ％＊Ｍに基づいてシーリング(ceiling)が選択される。たとえば、ｒｒ％が５３％に等しく、Ｍが１０に等しい場合、ｒｒ％＊Ｍは５．３に等しく、その結果、シーリングの値は６となる。８１４において、（たとえば、予測的、ユーティリティ、および／または決定理論などの）ベストスコアを有する、Ｍ−ｓｉｚｅ分の最も古い（ＴＢＣ）チャンクが選択され、ＴＢＣに追加される。このようにして、貪欲クローリングのためにチャンクが選択され、ラウンドロビン・アルゴリズムは、すべてのチャンクが所与の期間内にクロールされるようにする。
【００４３】
図９は、貪欲アルゴリズムが、ラウンドロビン・アルゴリズムとともに利用される、本発明の態様による方法９００の例示である。ラウンドロビンは、上述した方法を利用するとき、チャンクすべてをクロールし終える必要があるとすぐにクロールし終えることができる。このことは、貪欲アルゴリズムもチャンクをクロールしているので起こり得る。たとえば、チャンクすべてが２８日以内にクロールされる必要がある場合、方法７００または８００を利用すると、ページすべては実際には２０日間でクロールされ得る。こうしたことが起こり得る理由を説明するために、以下のアルゴリズムが詳細に説明される。
【００４４】
Ｃをチャンクの組とし、Ｃ０、Ｃ１、．．．、Ｃｎは、Ｃｊがｊという期間を期限とするチャンクである場合のＣの区分であり、ＮｊをＣｊ中のチャンクの数とする。Ｃの区分中のメンバ数（たとえばｎ）は、最大期限切れ許容度の関数である。Ｌを、（たとえば、どのチャンクもＤ日より古くならないように保証するために）ある期間中にクロールされることが望まれるチャンクの最大数とし、Ｍを、ある期間中にクロールされ得るチャンクの最大数とし、ここで、ＭはＬ以上である。ＴＢＣを、当期間中にクロールされるチャンクの組とする。以下の「ｆｏｒ」ループにおいて、Ｒは、期日＜ｊである当日以降にクロールされる必要があるチャンク数を格納するのに用いられ、ＰＱは、チャンクに対するスコアによって優先順位をつけられる、チャンクからなる優先キューであることに留意されたい。
【００４５】
【表１】
0004806201.tif 000003
【００４６】
引き続き図９を参照すると、９０２において、各チャンクＣ０．．．Ｃｎは、本明細書において上で説明されたように、（たとえば予測的、ユーティリティ、および／または決定理論）スコアを割り当てられる。９０４において、チャンクは、期日に従ってソートされる（たとえば、ｊという時間にクロールされることになっているチャンクは、Ｎｊ個のチャンクを有する組Ｃｊで構成される）。９０６において、Ｃｊ中のチャンクが、優先キュー（ＰＱ）に追加される。次いで、９０８において、ＰＱのサイズの判定が、値ｊ＊Ｌに関して行われ、ここで、Ｌは、クロールされるチャンクの望ましい最大数である。ＰＱがｊ＊Ｌより小さい場合、このような情報は、フィードバックを提供するのに利用されることができ、方法は、チャンクをさらに追加するために９０６に戻り得る。ＰＱがｊ＊Ｌより大きい場合、９１０において、ＰＱ中のトップチャンクは、クロールされるチャンク（ＴＢＣ）の組に移動され得る。９１２において、Ｍに対するＴＢＣのサイズに関して判定が行われ、ここで、Ｍは、期間中にクロールされ得るチャンクの最大数である。ＴＢＣがＭより小さい（たとえば、ＴＢＣ中に、より多くのチャンクのための余地がある、などの）場合、方法は、ＰＱ中の次のトップチャンクをＴＢＣに移動するために、９１０に戻り得る。９１２において、ＴＢＣのサイズがＭより小さくないと判定された場合、９１４において、ＴＢＣは、クローリングのためにウェブクローラに戻され得る。このようにして、チャンク状況およびクローリング期限は、ラウンドロビンおよび貪欲アルゴリズムが、必要とされるよりも短い時間でクロールを協同で実施する機会を利用するために、連続してアップデートされることができる。
【００４７】
本発明は、ウェブページの変更予測とともにフィードバックループ（群）を利用し得ることが理解されるべきである。たとえば、上述したレギュラーのクローリングに加え、ＵＲＬのサンプルが、確率プレディクタを学習しクローリング方針を調整するためのトレーニングデータをもたらすために、変更の確率に関わらず、定期的に選択されクロールされることができる。このようにすることにより、クローリング方針のテスト、このようなテストのための基準の構築、およびクローリング方法の確認を円滑に行うことができるデータも提供することができる。たとえば、６４，０００個のＵＲＬというサンプルサイズは、実用的であるのに十分に大きい可能性があり、サンプルは、すべてのＵＲＬにおいて一様である必要はなく、値によって重みづけられてよい。一態様によると、サンプル値は、所与の検索エンジンを使ってユーザに送られる結果セットからＵＲＬを選ぶことによって判定することができる。さらに、利用可能なクリックスルー情報が、結果セット中の他のサンプルよりも、提示されたＵＲＬを重みづけするためにユーザがクリックするこのようなＵＲＬの判定を円滑に行うのに利用することができる。
【００４８】
クローリング間隔(crawling interval)は、制作環境においてクローリングが発現する最大頻度（たとえば、毎日、一時間ごと、など）に適合されることができる。本発明は、このような間隔によって限定されないことが理解されるべきである。さらに、クロール方針の制作に依存しないので、ランダムなクローリングも有用であり得る。
【００４９】
サンプル中のページも、正常にクロールすることができる。この態様によると、ＵＲＬは、このサンプルに移動される必要はなく、このサンプルにコピーされることができる。周期的（たとえば、毎月、２カ月ごと、など）に、新しいサンプルが入手され得る。あるいは、１カ月（または２カ月など）の間、サンプルが前の月と新たに比較されるように、ＵＲＬが円滑に交換されてもよい。この態様によると、レギュラーのクローリングの場合よりも、各ＵＲＬについての大量のデータが保持され得る。例として、レギュラーのクローリングは、ウェブページが変更された回数、ページが同じである回数、および／またはウェブページのクロールの平均間隔の保持のみを許可し得るであろう。ただし、本明細書において説明したフィードバックプロトコルは、たとえば、ウェブページが所与の日に変更されたか否かに関する情報の保持を許可することができる。さらに、サンプル中の各ＵＲＬごとに、その初期状態に関する記録（たとえば、通常のクロール中に集められた、ある特定のページについての情報）が維持されることができる。したがって、ウェブクローリングのシミュレーションは、サンプル中の各ＵＲＬが新しいＵＲＬであると仮定する必要はない。このようにして、ウェブクローリング方針は、変更頻度の低いページと比較して高い頻度で変更を行うことによってページの新鮮さを高めるように強化されることができ、そうすることによって、はるかに少ないマシンを利用してはるかに新鮮な結果を生じるようにさせる。
【００５０】
本発明の様々な態様を実施する状況をさらに提供するために、図１０および以下の説明では、本発明の様々な態様が実施され得る適切な計算機環境１０００の、簡潔な全体説明を提供することを意図している。これまでは、ローカルコンピュータおよび／またはリモートコンピュータ上で実行されるコンピュータプログラムのコンピュータ実行可能命令という一般的な状況において本発明が説明されたが、本発明は他のプログラムモジュールとの組合せでも実施され得ることが当業者には理解されよう。概して、プログラムモジュールは、特定のタスクを実施し、かつ／または特定の抽象データタイプを実施するルーチン、プログラム、コンポーネント、データ構造などを含む。さらに、本発明の方法は、他のコンピュータシステム構成とともに実施され得ることが当業者には理解されよう。他のコンピュータシステム構成には、シングルプロセッサコンピュータシステムまたはマルチプロセッサコンピュータシステム、ミニコンピュータ、メインフレームコンピュータ、ならびにパーソナルコンピュータ、可搬型計算装置、マイクロプロセッサベースの家電製品および／またはプログラム可能な家電製品などがあり、それぞれが１つまたは複数の関連するデバイスと動作可能に通信することができる。図示した本発明の態様は、通信ネットワークを介してリンクされるリモート処理ユニットによって特定のタスクが実施される分散型計算機環境でも実施されることができる。ただし、すべてではなくともいくつかの本発明の態様は、独立型のコンピュータにおいても実施されることができる。分散型計算機環境では、プログラムモジュールは、ローカルメモリ記憶装置および／またはリモートメモリ記憶装置内に配置されることができる。
【００５１】
本明細書において使用する「コンポーネント」という用語は、ハードウェア、ハードウェアおよびソフトウェアの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかであるコンピュータ関連エンティティを指すことを意図している。たとえば、コンポーネントは、プロセッサで実行中の処理、プロセッサ、オブジェクト、実行ファイル、実行のスレッド、プログラム、およびコンピュータでよいが、それに限定されない。実例として、サーバ上で実行中のアプリケーションおよび／またはそのサーバがコンポーネントとなり得る。さらに、コンポーネントは、１つまたは複数の下位コンポーネントを含むことができる。
【００５２】
図１０を参照すると、本発明の様々な態様を実施する例示的なシステム環境１０００は、従来のコンピュータ１００２を含み、このコンピュータは、処理ユニット１００４、システムメモリ１００６、およびシステムメモリなどの様々なシステムコンポーネントを処理ユニット１００４に結合するシステムバス１００８を含む。処理ユニット１００４は、市販されているどのプロセッサでも、固有のどのプロセッサでもよい。さらに、この処理ユニットは、並列に接続され得るような複数のプロセッサから形成されるマルチプロセッサとして実施されることができる。
【００５３】
システムバス１００８は、従来の様々なバスアーキテクチャ、たとえばいくつか例を挙げると、ＰＣＩ、ＶＥＳＡ、マイクロチャネル、ＩＳＡ、およびＥＩＳＡのいずれかを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスなどいくつかのタイプのバス構造のいずれでもよい。システムメモリ１００６は、ＲＯＭ（読出し専用メモリ）１０１０およびＲＡＭ（ランダムアクセスメモリ）１０１２を含む。ＢＩＯＳ（基本入出力システム）は、たとえば起動中にコンピュータ１００２内部の要素間の情報の転送を助ける基本ルーチンを含み、ＲＯＭ１０１０に格納される。
【００５４】
コンピュータ１００２は、たとえば、ハードディスクドライブ１０１４、たとえば取外し可能ディスク１０１８からの読出しまたはそこへの書込みを行うための磁気ディスクドライブ１０１６、および、たとえばＣＤ−ＲＯＭディスク１０２２または他の光学媒体からの読出しまたはそこへの書込みを行う光ディスクドライブ１０２０を含むこともできる。ハードディスクドライブ１０１４、磁気ディスクドライブ１０１６、および光ディスクドライブ１０２０は、それぞれハードディスクドライブインターフェイス１０２４、磁気ディスクドライブインターフェイス１０２６、および光ドライブインターフェイス１０２８によって、システムバス１００８に接続される。ドライブ１０１４〜１０２０およびそれに関連するコンピュータ可読媒体は、データ、データ構造、コンピュータ実行可能命令などを含む不揮発性の記憶をコンピュータ１００２に提供する。上記のコンピュータ可読媒体の説明では、ハードディスク、取外し可能な磁気ディスク、およびＣＤに言及したが、コンピュータ可読な他のタイプの媒体、たとえば磁気カセット、フラッシュメモリカード、デジタル映像ディスク、ベルヌーイカートリッジなども、例示的な動作環境１０００において使われることができ、さらに、このようなどの媒体も、本発明の方法を実施するコンピュータ実行可能命令を含むことができることが当業者には理解されよう。
【００５５】
オペレーティングシステム１０３０、１つまたは複数のアプリケーションプログラム１０３２、他のプログラムモジュール１０３４、およびプログラムデータ１０３６などいくつかのプログラムモジュールは、ドライブ１０１４〜１０２０およびＲＡＭ１０１２に格納されることができる。オペレーティングシステム１０３０は、適切などのオペレーティングシステムでも、オペレーティングシステムの組合せでもよい。一例として、アプリケーションプログラム１０３２およびプログラムモジュール１０３４が、本発明の態様によるクライアントベースのウェブクローリングを円滑に行うことを含むことができる。
【００５６】
ユーザは、キーボード１０３８およびポインティングデバイス（たとえばマウス１０４０）など１つまたは複数のユーザ入力デバイスを介して、コマンドおよび情報をコンピュータ１００２に入力することができる。他の入力デバイス（図示せず）には、マイクロホン、ジョイスティック、ゲーム用パッド、衛星パラボラアンテナ、ワイヤレスリモコン、スキャナなどがあり得る。こうしたおよび他の入力デバイスはしばしば、システムバス１００８に結合されるシリアルポートインターフェイス１０４２を介して処理ユニット１００４に接続されるが、他のインターフェイス、たとえば並列ポート、ゲームポート、またはＵＳＢ（ユニバーサルシリアルバス）によって接続されることもできる。モニタ１０４４または他のタイプの表示デバイスも、ビデオアダプタ１０４６などのインターフェイスを介してシステムバス１００８に接続される。モニタ１０４４に加えて、コンピュータ１００２は、他の周辺出力デバイス（図示せず）、たとえばスピーカ、プリンタなども含むことができる。
【００５７】
コンピュータ１００２は、１つまたは複数のリモートコンピュータ１０４８への論理接続を使用してネットワーク接続された環境において動作できることを理解されたい。リモートコンピュータ１０４８は、ワークステーション、サーバコンピュータ、ルータ、ピア装置、または他の共通ネットワークノードでよく、通常、コンピュータ１００２に関連して説明した要素の多くまたはすべてを含むが、簡潔にするために、メモリ記憶装置１０５０のみを図１０に示した。図１０に示した論理接続は、ＬＡＮ（ローカルエリアネットワーク）１０５２およびＷＡＮ（ワイドエリアネットワーク）１０５４を含むことができる。このようなネットワーク環境は、会社、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいてよく見られる。
【００５８】
ＬＡＮネットワーク環境において使われる場合、たとえば、コンピュータ１００２は、ネットワークインターフェイスまたはアダプタ１０５６を介してローカルネットワーク１０４８に接続される。ＷＡＮネットワーク環境において使われる場合、コンピュータ１００２は通常、（たとえば、電話、ＤＳＬ、ケーブルなどの）モデム１０５８を含み、またはＬＡＮ上の通信サーバに接続され、あるいは、たとえばインターネットなどのＷＡＮ１０５４を介した通信を確立する他の手段を有する。モデム１０５８は、コンピュータ１００２の内部にあっても外部にあってもよく、シリアルポートインターフェイス１０４２を介してシステムバス１００８に接続される。ネットワーク接続された環境では、プログラムモジュール（アプリケーションプログラム１０３２など）および／またはプログラムデータ１０３６は、リモートメモリ記憶装置１０５０に格納されることができる。図示したネットワーク接続は例示的なものであり、本発明の態様を実施する際に、コンピュータ１００２と１０４８の間の通信リンクを確立する他の手段（たとえば、有線またはワイヤレス）も使われ得ることが理解されよう。
【００５９】
他の指示がない限り、コンピュータプログラミングの当業者による実施に従って、コンピュータ、たとえばコンピュータ１００２またはリモートコンピュータ１０４８によって実施される作用および象徴的に表した動作を参照して本発明が説明された。このような作用および動作は、ときにはコンピュータに実行されるものとして言及される。こうした作用および象徴的に表した動作は、処理ユニット１００４による、データビットを表す電気信号の処理を含み、その結果、電気信号表現を変換または減少させ、メモリシステム（システムメモリ１００６、ハードドライブ１０１４、フロッピー（登録商標）ディスク１０１８、ＣＤ−ＲＯＭ１０２２、およびリモートメモリ１０５０など）内のメモリロケーションにデータビットを保持させ、そうすることによって、コンピュータシステムの動作、ならびに他の信号処理を再構成し、あるいは変更することが理解されよう。このようなデータビットが保持されるメモリロケーションは、データビットに対応する特定の電気属性、磁気属性、または光学属性を有する物理的な場所である。
【００６０】
図１１は、本発明と相互作用する一例である計算機環境１１００の別のブロック図である。システム１１００はさらに、１つまたは複数のクライアント（群）１１０２を含むシステムを示す。クライアント（群）１１０２は、ハードウェアおよび／またはソフトウェア（たとえば、スレッド、処理、計算装置）でよい。システム１１００は、１つまたは複数のサーバ（群）１１０４も含む。サーバ（群）１１０４は、ハードウェアおよび／またはソフトウェア（たとえば、スレッド、処理、計算装置）でよい。サーバ１１０４は、たとえば、本発明を利用して変換を実施するためのスレッドを収容することができる。クライアント１１０２とサーバ１１０４の間の可能な１つの通信形体は、２つ以上のコンピュータ処理の間で伝送されるように適合されたデータパケットの形をとることができる。システム１１００は、クライアント（群）１１０２とサーバ（群）１１０４の間の通信を円滑に行うのに利用され得る通信フレームワーク１１０６を含む。クライアント（群）１１０２は、クライアント（群）１１０２にローカルな情報を格納するのに利用され得る、１つまたは複数のクライアントデータストア（群）１１０８に動作可能に接続される。同様に、サーバ（群）１１０４は、サーバ１１０４にローカルな情報を格納するのに利用され得る、１つまたは複数のサーバデータストア（群）１１１０に動作可能に接続される。
【００６１】
本発明の一例では、ウェブクローリングを円滑に行う、２つ以上のコンピュータコンポーネントの間で伝送されるデータパケットは、少なくとも部分的には、ウェブクローリング用の分散型システムを少なくとも部分的に使用するウェブクローリングに関する情報からなる。
【００６２】
本発明の別の例では、ウェブクローリングを円滑に行うシステムの、コンピュータ実行可能なコンポーネントを格納するコンピュータ可読媒体は、少なくとも部分的には、ウェブクローリング用の分散システムによって編集される、ウェブページに関連する情報を少なくとも部分的に判定するウェブクローリングシステムからなる。
【００６３】
本発明のシステムおよび／または方法は、コンピュータコンポーネント、および非コンピュータ関連コンポーネントを同様に支援するウェブクローリングシステムにおいて利用され得ることを理解されたい。さらに、本発明のシステムおよび／または方法は、有線および／またはワイヤレスなどでよい、コンピュータ、サーバ、および／または可搬型電子装置などを含むがそれに限定されない広範囲の電子関連技術において利用可能であることが当業者には理解されよう。
【００６４】
本発明は、サーバ−クライアントベースのクローリングシステムだけでなく、ピアツーピアのクローリングシステムにも利用され得ることも当業者には理解されよう。クライアントは、一般に「サーバ」行動に関連づけられたタスクを実施することができ、したがって、本発明のいくつかの例において、サーバに関連づけられたいくつかの特性をクライアントに転送することも可能である。本発明の一事例として、クライアントは、他のクライアントに対して「部分クロール(sub-crawl)」を実施して、サーバに送信するための情報を確認し、かつ／または取り出す。この例は、たとえば、特定のクライアントとサーバの間のボトルネックを有するネットワークにおいて有益であり得る。データは、サーバへの最高のアクセス権を有するクライアントに転送されることができる。本発明の他の例では、クライアントは、イントラネットシステムにおいて部分クロールを開始することによってサーバの行動を示すことができ、したがって、イントラネット上に存在する唯一の、および／または大幅に削減された数のクライアントから、サーバに情報を報告する。このようにして、検索サーバは、クライアントにおいて複数の部分クロールを開始して、サーバのクロール用資源を拡張することができる。
【００６５】
上記の説明内容は、本発明のいくつかの例を含む。当然ながら、本発明を説明するためのコンポーネントまたは方法のあらゆる組合せを説明することはできないが、本発明のさらに多くの組合せおよび入替えが可能であることが当業者には理解できよう。したがって、本発明は、特許請求の範囲の精神および範囲内であるこのようなすべての変更形態、修正形態、および変形形態を包含することを意図したものである。
【図面の簡単な説明】
【００６６】
【図１】本発明の実施形態によるウェブクローリングシステム１００を示す図である。
【図２】本発明の実施形態によるウェブクローリングシステム２００を示す図である。
【図３】共働ウェブクローリング・コンポーネントを列挙した実施形態によるウェブクローリング・システム３００を示す図である。
【図４】共働ウェブクローリング・コンポーネントを列挙した実施形態によるウェブクローリングシステム４００を示す図である。
【図５】本発明の実施形態による方法５００を示す図である。
【図６】本発明の実施形態による方法６００を示す図である。
【図７】本発明の実施形態による方法７００を示す図である。
【図８】本発明の実施形態による方法８００を示す図である。
【図９】本発明の実施形態による方法９００を示す図である。
【図１０】本発明の実施形態による例示的な計算機環境１０００を示す図である。
【図１１】本発明の実施形態による例示的な計算機環境１１００を示す図である。
【符号の説明】
【００６７】
１０２  ＷＥＢクローラ・コンポーネント
１０４  バンドリング・コンポーネント
１０６  検索サーバ
１０８  マネージング・コンポーネント
２０２  マネージング・コンポーネント
２０４  検索サーバ
２０６  ＷＥＢクローラ
２０８  バンドリング・コンポーネント
３０２  ラウンドロビン・クローラ
３０４  貪欲（グリーディ）・クローラ
４０２  ラウンドロビン・クローラ
４０４  貪欲（グリーディ）クローラ
１００４  処理ユニット
１００６  システムメモリ
１００８  バス
１０１８  ディスク
１０２０  ＣＤドライブ
１０２２  ディスク
１０２４  インターフェイス
１０２６  インターフェイス
１０２８  インターフェイス
１０３０  オペレーティングシステム
１０３２  アプリケーション
１０３４  モジュール
１０３６  データ
１０３８  キーボード
１０４０  マウス
１０４２  入力デバイスインターフェイス
１０４４  モニタ
１０４６  ビデオアダプタ
１０４８  リモートコンピュータ（群）
１０５０  メモリ／ストレージ
１０５６  ネットワークアダプタ
１０５８  モデム
１１０２  クライアント（群）
１１０４  サーバ（群）
１１０６  通信フレームワーク
１１０８  クライアントデータストア（群）
１１１０  サーバデータストア（群）
【図１】
0004806201.tif 000007
【図２】
0004806201.tif 000008
【図３】
0004806201.tif 000009
【図４】
0004806201.tif 000010
【図５】
0004806201.tif 000011
【図６】
0004806201.tif 000012
【図７】
0004806201.tif 000013
【図８】
0004806201.tif 000014
【図９】
0004806201.tif 000015
【図１０】
0004806201.tif 000016
【図１１】
0004806201.tif 000017