(57)【特許請求の範囲】
【請求項１】
アグリゲーションを用いる複数のコンテンツ・プロバイダのメモリに格納されたコンテンツの増分巡回をコンピュータの情報処理により行う方法であって、
１つ又は複数の関連付けられたコンテンツ・プロバイダ上のメモリに格納されたコンテンツを巡回する要求を受信するステップと、
第１のコンテンツ・プロバイダ上のメモリに格納されたコンテンツに対する１つ又は複数の第１の参照を取得するステップと、
同じ要求のサブセットを１つ又は複数の第２のコンテンツ・プロバイダに送るステップと、
同じ要求の間に、前記１つ又は複数の第２のコンテンツ・プロバイダ上のメモリに格納されたコンテンツに対する１つ又は複数の第２の参照を取得するステップと、
前記第１及び第２の参照を集約するステップと、
前記集約された第１及び第２の参照を返すステップと、
を含む方法。
【請求項２】
状態情報を返すステップをさらに含み、前記状態情報は、前記関連付けられたコンテンツ・プロバイダ間で内部情報を渡すことを可能にする、請求項１に記載の方法。
【請求項３】
前記要求は、前記関連付けられたコンテンツ・プロバイダ上でアクセスされるコンテンツのサイズと関連付けられた閾値を含む、請求項１又は請求項２に記載の方法。
【請求項４】
前記第１のコンテンツ・プロバイダ上のコンテンツが前記閾値より少ないとの判定に応答して、前記要求が満たされるように前記第２の参照が返される、請求項３に記載の方法。
【請求項５】
前記関連付けられたコンテンツ・プロバイダ上のコンテンツでは前記要求を完全に満たすことができないとの判定に応答して、前記要求が可能な最大限の範囲において満たされるように前記集約された第１及び第２の参照が返される、請求項３に記載の方法。
【請求項６】
前記取得するステップは、将来の取得のために、前記関連付けられたコンテンツ・プロバイダ上の更新されたコンテンツの増分インデックス付けを含む、請求項１ないし５のいずれか一項に記載の方法。
【請求項７】
タイムスタンプを返すステップをさらに含み、前記タイムスタンプは、前記要求が提出されたときを識別し、
次の増分巡回セッションの間に前記タイムスタンプを用いて、識別された時間以後に更新された、前記関連付けられたコンテンツ・プロバイダ上のコンテンツにアクセスする、
請求項６に記載の方法。
【請求項８】
前記要求は開始インデックス値と範囲値とを少なくとも含み、
有効な状態情報が存在しないとの判定に応答して、リストの第１のコンテンツ・プロバイダに前記要求を送るステップと、
有効な状態情報が存在するとの判定に応答して、前記状態情報によって次のコンテンツ・プロバイダとして識別された第１のコンテンツ・プロバイダに前記要求を送るステップと、
参照、状態情報又はタイミング情報のうちの少なくとも１つを前記第１のコンテンツ・プロバイダから受信するステップと、
受信された参照、状態情報及びタイミング情報のうちの少なくとも１つを、それぞれ他の参照、状態情報及びタイミング情報と集約するステップと、
前記要求が可能な最大限の範囲において満たされなかったとの判定に応答して、前記リストの第２のコンテンツ・プロバイダに前記要求を送るステップと、
前記要求が可能な最大限の範囲において満たされたとの判定に応答して、前記次のコンテンツ・プロバイダ及び対応する次の開始インデックスによって前記状態情報を更新するステップと、
利用可能な場合には、前記集約された参照、前記更新された状態情報及び前記集約されたタイムスタンプを返すステップと、
をさらに含む、請求項１に記載の方法。
【請求項９】
前記開始インデックス値と、前記状態情報に格納されている前記最後に受信されたインデックスとを比較することによって、前記状態情報の有効性が判定される、請求項８に記載の方法。
【請求項１０】
リストの第１のコンテンツ・プロバイダに前記要求を送るステップは、
前記開始インデックス値によって前記範囲値を増分するステップと、
前記第１のコンテンツ・プロバイダに対応するタイミング情報がある場合にはそれを前記要求と共に渡すステップと、
をさらに含む、請求項８又は請求項９に記載の方法。
【請求項１１】
前記状態情報によって識別された第１のコンテンツ・プロバイダに前記要求を送るステップは、
前記開始インデックス値を、前記第１の状態情報によって次の開始インデックスとして示された値に設定するステップと、
前記第１のコンテンツ・プロバイダに対応する前記状態情報及びタイミング情報がある場合にはそれらを前記要求と共に渡すステップと、
をさらに含む、請求項８に記載の方法。
【請求項１２】
前記リストの第２のコンテンツ・プロバイダに前記要求を送るステップは、
前記第１のコンテンツ・プロバイダから受信された参照の数を用いて前記範囲値を減少させるステップと、
前記第２のコンテンツ・プロバイダに対応するタイミング情報がある場合にはそれを前記要求と共に渡すステップと、
をさらに含む、請求項８ないし請求項１１のいずれか一項に記載の方法。
【請求項１３】
前記状態情報を更新するステップは、
前記第１のコンテンツ・プロバイダから受信する参照がそれ以上残されていないとの判定に応答して、前記次のコンテンツ・プロバイダを前記リストの前記次のコンテンツ・プロバイダとして設定するステップと、
前記第１のコンテンツ・プロバイダから受信する参照がまだ残されているとの判定に応答して、前記次のコンテンツ・プロバイダを前記第１のコンテンツ・プロバイダとして設定するステップと、
をさらに含む、請求項８ないし請求項１２のいずれか一項に記載の方法。
【請求項１４】
アグリゲーションを用いる複数のコンテンツ・プロバイダに格納されたコンテンツの増分巡回のための装置であって、
１つ又は複数の関連付けられたコンテンツ・プロバイダ上のコンテンツを巡回する要求を受信するための手段と、
第１のコンテンツ・プロバイダ上のコンテンツに対する１つ又は複数の第１の参照を取得するための手段と、
同じ要求のサブセットを１つ又は複数の第２のコンテンツ・プロバイダに送るための手段と、
同じ要求の間に、前記１つ又は複数の第２のコンテンツ・プロバイダ上のコンテンツに対する１つ又は複数の第２の参照を取得するための手段と、
前記第１及び第２の参照を集約するための手段と、
前記集約された第１及び第２の参照を返すための手段と、
を含む装置。
【請求項１５】
請求項１ないし請求項１３のいずれか一項に記載の方法のすべてのステップをコンピュータに実行させる、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に検索エンジンに関し、より具体的には、アグリゲーションを用いる多数のコンテンツ・プロバイダの増分巡回のためのシステム及び方法に関する。
【背景技術】
【０００２】
テキスト、写真、音声、映像又は他のデータ形式のようなコンテンツは、通信ネットワーク（例えば、インターネット）に接続された多数のストレージ・システムに格納することができる。こうしたコンテンツは、典型的には、１つ又は複数の電子ファイルとして論理的に表現される。検索エンジンを用いて、特定のコンテンツにアクセスするために提出された特定の検索クエリを満たすファイルを識別することができる。検索エンジンが効率的に動作するためには、コンテンツに予めインデックス付けする必要がある。コンテンツのためのネットワーク上の種々のファイル又はサイトを巡回するために、ソフトウェア機構（例えば、クローラ）を用いることができる。巡回（crawling）という用語は、コンテンツを検索できるようにインデックス付けするために多数のファイルのコンテンツを収集するプロセスを指す。
【０００３】
現在のクローラは、典型的には、一度に１つのコンテンツ・プロバイダ（例えば、１つのサイト）を巡回するように実装される。例えば、システム上で４つのコンテンツ・プロバイダが利用可能である場合に、たとえコンテンツ・プロバイダのうちの２つのコンテンツを単一の要求を用いて巡回することができても、クローラは、一般的には、各コンテンツ・プロバイダを巡回するために少なくとも４つの別個の要求を提出する必要がある。換言すれば、現在のクローラは、異なるコンテンツ・プロバイダ上で利用可能なコンテンツを集約することによって巡回するようには設計されていない。さらに、現在利用可能なクローラは、以前の巡回セッション以降に更新されたコンテンツを効果的に識別することができず、従って最後の巡回以降にコンテンツが更新されていなくても各巡回セッションにおいてコンテンツ全体を再び巡回するため、動作が非効率的になる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述の問題を克服することができるシステム及び方法が必要とされる。
【課題を解決するための手段】
【０００５】
要約を目的として、本発明の特定の態様、利点及び新規な特徴を本明細書において説明した。こうした利点の全ては、本発明のいずれか１つの特定の実施形態によって実現できるわけではないことが理解されるべきである。従って、本発明は、本明細書において教示又は示唆することができる利点の全てを実現しなくても、１つの利点又は一群の利点を実現又は最適化するように、具体化又は実行することができる。
【０００６】
一実施形態によれば、アグリゲーションを用いる複数のコンテンツ・プロバイダに格納されたコンテンツの増分巡回のための方法が提供される。本方法は、１つ又は複数の関連付けられたコンテンツ・プロバイダ上のコンテンツを巡回する要求を受信することと、第１のコンテンツ・プロバイダ上のコンテンツに対する１つ又は複数の第１の参照を取得することと、同じ要求の間に、１つ又は複数の第２のコンテンツ・プロバイダ上のコンテンツに対する１つ又は複数の第２の参照を取得することと、第１及び第２の参照を集約することと、集約された第１及び第２の参照を返すこととを含む。
【０００７】
別の実施形態によれば、１つ又は複数の論理ユニットを含むシステムが提供される。１つ又は複数の論理ユニットは、上記で開示された方法に関連する機能及び動作を行うように構成される。さらに別の実施形態においては、コンピュータ可読プログラムを有するコンピュータ使用可能媒体を含むコンピュータ・プログラム製品が提供される。コンピュータ可読プログラムは、コンピュータ上で実行されるときに、上記で開示された方法と関連する機能及び動作をコンピュータに行わせる。
【０００８】
特定の代替的形態に加えて、上記で開示された実施形態のうちの１つ又は複数は、添付の図面を参照して下記にさらに詳しく提供される。しかしながら、本発明は、開示されたいずれの特定の実施形態にも限定されない。
【０００９】
本発明の実施形態は、下記に提供される添付図面の図を参照することによって理解される。
【図面の簡単な説明】
【００１０】
【図１】１つ又は複数の実施形態による、例示的な動作環境のハイレベル・ブロック図である。
【図２】一実施形態による、完全巡回セッション及び増分巡回セッションの間の状態情報及びタイミング情報を表す状態機械である。
【図３】一実施形態による、アグリゲーションを用いる多数のコンテンツ・プロバイダの増分巡回のための方法のフロー図である。
【図４】一実施形態による、アグリゲーションを用いる多数のコンテンツ・プロバイダの増分巡回のための方法のより詳細なフロー図である。
【図５】一実施形態による、多数のコンテンツ・プロバイダを含む例示的なシステムの増分巡回を示す。
【図６】一実施形態による、多数のコンテンツ・プロバイダを含む例示的なシステムの増分巡回を示す。
【図７】一実施形態による、多数のコンテンツ・プロバイダを含む例示的なシステムの増分巡回を示す。
【図８】一実施形態による、多数のコンテンツ・プロバイダを含む例示的なシステムの増分巡回を示す。
【図９】一実施形態による、多数のコンテンツ・プロバイダを含む例示的なシステムの増分巡回を示す。
【図１０】一実施形態による、多数のコンテンツ・プロバイダを含む例示的なシステムの増分巡回を示す。
【図１１】１つ又は複数の実施形態による、本発明のシステムが動作することができるハードウェア環境のブロック図である。
【図１２】１つ又は複数の実施形態による、本発明のシステムが動作することができるソフトウェア環境のブロック図である。
【発明を実施するための形態】
【００１１】
異なる図において同じ数字によって参照される本発明の特徴、要素及び態様は、１つ又は複数の実施形態による、同一の、等しい又は類似の特徴、要素又は態様を表す。
【００１２】
以下において、本発明の種々の実施形態を十分に説明するために、多数の具体的な詳細を示す。本発明の特定の実施形態は、これらの具体的な詳細がなくても、又は、細部における幾つかの変形を用いて、実現することができる。本発明の他の態様を分かり難くしないように、特定の特徴を詳細には説明しない場合もある。要素又は特徴の各々に関する詳細さの程度は、１つの特徴の新規性又は重要性が他の特徴より高いものとするように解釈すべきではない。
【００１３】
図１を参照すると、一実施形態によれば、例示的な動作環境は、クローラ１１０と、アグリゲータ１２０と、１つ又は複数のコンテンツ・プロバイダ１３０とを含むことができる。クローラ１１０及びアグリゲータ１２０は、通信ネットワーク（例えば、インターネット）において互いに及びコンテンツ・プロバイダ１３０に接続された１つ又は複数のコンピュータ・システム上で稼働するソフトウェア・アプリケーションとして実装することができる。コンテンツ・プロバイダ１３０は、コンテンツの配信若しくはストレージのために構成されたウェブ・サーバ又は他のコンピュータ・システムを含むことができる。
【００１４】
一実施態様によれば、クローラ１１０は、コンテンツ・プロバイダ１３０に格納されたコンテンツを分類する（例えば、インデックス付けする）ように構成することができる。アグリゲータ１２０は、クローラ１１０とコンテンツ・プロバイダ１３０との間の情報ルート（conduit）として機能して、クローラ１１０によって提出された要求を提供し、１つ又は複数のコンテンツ・プロバイダ１３０上で利用可能なコンテンツを識別する１つ又は複数の参照（例えば、ユニフォーム・リソース・ロケータ（ＵＲＬ））を取得するのを助けるように構成することができる。アグリゲータ１２０は、１つ又は複数のコンテンツ・プロバイダ１３０上で、又はクローラ１１０によって提出された要求を提供するためのプロキシとして機能する他のコンピュータ・システム上で、稼働するように実装することができる。下記でさらに詳細に示されるように、幾つかの実施形態においては、例えば幾つかのコンテンツ・プロバイダ１３０が互いに関連付けられるもの（即ち、関連コンテンツ・プロバイダ）として指定される場合には、２つ以上のアグリゲータ１２０（図示せず）が用いられることがある。
【００１５】
一実施形態によれば、クローラ１１０は、１つ又は複数のコンテンツ・プロバイダ１３０上のコンテンツにアクセスする要求をアグリゲータ１２０に送信することによって、巡回セッションを開始することができる。要求は、例えば、開始インデックス及び範囲を含むページ情報を含むことができる。このように、クローラ１１０は、開始インデックスを第１の値（例えば、５１）に設定し、範囲を第２の値（例えば、１０）に設定することによって、コンテンツ・プロバイダ１３０のコンテンツ（例えば、文書５１から６０まで）へのアクセスを要求することができる。
【００１６】
要求は、状態情報又はタイミング情報を含むこともできる。一実施形態においては、状態情報（例えば、Ｓｔａｔｅ’、Ｓｔａｔｅ’’、Ｓｔａｔｅ’’’、Ｓｔａｔｅ’’’’）は、コンテンツ・プロバイダ１３０間で内部情報を渡すためにコンテンツ・プロバイダ１３０によって生成される不透明オブジェクトを含むことができる。付加的な情報を挿入することができるオブジェクトを、アグリゲータ１２０に渡すことができる。クローラ１１０は、状態情報を用いて、単一の巡回要求の間に２つ以上のコンテンツ・プロバイダ１３０のコンテンツにアクセスすることができる。下記の表１は、状態情報の例示的な実施態様を示す。
【表１】
0005390601.tif 000002
【００１７】
一実施形態においては、タイミング情報（例えば、Ｔｉｍｅｓｔａｍｐ’、Ｔｉｍｅｓｔａｍｐ’’、Ｔｉｍｅｓｔａｍｐ’’’、Ｔｉｍｅｓｔａｍｐ’’’’）は、アプリケーションによって作成され、アプリケーションの内部のものすることができる不透明タイムスタンプ・オブジェクトを含むことができる。別の実施形態においては、タイミング情報は、特定のコンテンツ・プロバイダ１３０の内部のものであるタイムスタンプを含むことができる。さらに別の実施形態においては、タイミング情報は、最後に取得された文書についての文書識別番号を含むことができ、各々の更新は、新しい文書識別番号と関連付けられる。
【００１８】
クローラ１１０は、増分巡回セッションの際にタイミング情報を用いることができる。例えば、クローラ１１０は、コンテンツ・プロバイダ１３０上のコンテンツにアクセスするための１つ又は複数の巡回要求を提出することができる。しかしながら、クローラ１１０が、以前の巡回セッションの間にコンテンツ・プロバイダ１３０上のコンテンツをすでに巡回した場合には、クローラ１１０は、タイミング情報を用いることによって、コンテンツ・プロバイダ１３０上の更新されたコンテンツに巡回を限定することができる。
【００１９】
一実施形態によれば、図２は、完全巡回セッション及び増分巡回セッションの間の状態情報及びタイミング情報を表す状態機械（state machine）を示す。点Ａ（０，０）において、クローラ１１０は、コンテンツについての第１の要求によって、完全巡回セッションを開始する。第１の座標「０」は状態情報が存在しないことを示し、第２の座標「０」はタイミング情報が存在しないことを示す。点Ｂ（１，０）において、クローラ１１０は、コンテンツについての１つ又は複数の次の要求を提出する。これは第１の巡回セッションであるため、状態情報は存在するが、タイミング情報は存在しない。
【００２０】
クローラ１１０は、次に、完全巡回セッションを完了し、コンテンツ・プロバイダ１３０上のコンテンツを更新する。点Ｃ（０，１）において、クローラ１１０は、コンテンツについての第１の要求によって、増分巡回セッションを開始する。これは第１の要求であるため状態情報は存在しないが、以前の完全巡回セッションからのタイミング情報は存在する。点Ｄ（１，１）において、クローラ１１０は、コンテンツについての１つ又は複数の次の要求を提出する。状態情報及びタイミング情報の両方が存在する。しかしながら、タイミング情報は、要求の間で変化しない。クローラ１１０が別の完全巡回セッションを開始する場合には、クローラ１１０は、点Ａに戻り、タイミング情報を無視する。
【００２１】
図１及び図３を参照すると、一実施形態によれば、複数の関連付けられたコンテンツ・プロバイダ上のコンテンツを巡回する要求を受信する（Ｐ３００）と、アグリゲータ１２０は、第１のコンテンツ・プロバイダ１３０上のコンテンツに対する１つ又は複数の第１の参照を取得することができ（Ｐ３１０）、同じ要求の間に、１つ又は複数の第２のコンテンツ・プロバイダ１３０上のコンテンツに対する１つ又は複数の第２の参照を取得することができる（Ｐ３２０）。第１及び第２の参照が取得されると、アグリゲータ１２０は、第１及び第２の参照を集約することができる（Ｐ３３０）。
【００２２】
従って、クローラ１１０は、第１のコンテンツ・プロバイダ１３０上のコンテンツにアクセスして、第１のコンテンツ・プロバイダ１３０上で利用可能なコンテンツにインデックス付けすることができる。先に述べたように、実施態様に応じて、第１のコンテンツ・プロバイダ１３０によって巡回要求が満たされない場合には、次のコンテンツ・プロバイダ１３０についてプロセスＰ３２０を繰り返すことができる。例えば、５０文書が要求され、第１のコンテンツ・プロバイダ１３０が２０文書を有する場合には、アグリゲータ１２０は、他のコンテンツ・プロバイダ１３０上で利用可能な３０の付加的な文書をクローラ１１０に与えることができる。他のコンテンツ・プロバイダ１３０が要求を完全に満たすことができない場合には、要求は、可能な最大限の範囲において満たされる。
【００２３】
巡回要求に応答して、アグリゲータ１２０は、状態情報及びタイミング情報に加えて、第１のコンテンツ・プロバイダ１３０及び次のコンテンツ・プロバイダ１３０上で利用可能なコンテンツに対する１つ又は複数の参照をクローラ１１０に返すことができる（Ｐ３４０）。アグリゲータ１２０（又はクローラ１１０）は、状態情報をコンテンツ・プロバイダ１３０上で利用可能なコンテンツと関連付けるように構成することができる。一実施形態においては、状態情報は、コンテンツ・プロバイダ１３０によってコンテンツと直接関連付けられない。そのため、コンテンツは状態がないままであり、従って、幾つかのクローラ１１０は、破損又はデッドロックの危険がない状態でコンテンツに同時にアクセスすることができる。
【００２４】
換言すれば、一実施形態においては、コンテンツは、アグリゲータ１２０（又はクローラ１１０）によって追跡される状態情報とは無関係に、コンテンツ・プロバイダ１３０に格納されることが望ましい。コンテンツは、読み出し専用であり状態がないため、コンテンツ・プロバイダ１３０の側からみれば、第１のクローラによってアクセスされているコンテンツに第２のクローラが同時にアクセスするのを禁止するロック機構を実装する必要がない。実装態様に応じて、状態情報は、各コンテンツ・プロバイダ１３０上で利用可能なコンテンツへのクローラ１１０のアクセスと関連付けられたタイミング情報に基づいて、判定することができる。一実施形態においては、例えば、コンテンツにアクセスするための要求がクローラ１１０によってアグリゲータ１２０に提出された特定の時点を識別するために、タイミング情報をクローラ１１０によってアクセスされたコンテンツと関連付けることができる。
【００２５】
例えば、第１の巡回セッションの間にコンテンツと関連付けられたタイミング情報を次の巡回セッションの間に用いて、以前の巡回セッション以降にコンテンツが更新されたかどうかを判定することができる。更新された場合は、更新されたコンテンツを巡回し、古いコンテンツは巡回しない。すなわち、コンテンツが更新されなかった場合には、古いコンテンツを巡回することによって、第１の巡回セッションと同じ結果がもたらされることになる。換言すれば、古いコンテンツを巡回することは、事実上、時間の無駄となる。従って、タイミング情報を用いて、不必要な巡回を防止できるという利点がある。下記のより詳細な例によって、増分巡回プロセスを可能にするために、状態情報及びタイミング情報のデータをどのように利用することができるかをさらに示す。
【００２６】
図１及び図４を参照すると、一実施形態によれば、アグリゲータ１２０は、複数の関連付けられたコンテンツ・プロバイダ１３０上のコンテンツを巡回する要求を受信することができ、この要求は、少なくとも、開始インデックス値及び範囲値を含む（Ｐ３５０）。要求は、状態情報を含むこともできる。開始インデックス値が、状態情報に格納された最後に要求されたインデックス（例えば、ｌａｓｔＩｎｄｅｘ）と同じである場合には、状態情報は有効である。
【００２７】
有効な状態情報が存在しない場合には（Ｐ３５５）、アグリゲータ１２０は、関連付けられたコンテンツ・プロバイダ１３０のリストにある第１のコンテンツ・プロバイダ１３０に要求を送り、開始インデックス値だけ範囲値を増分し、第１のコンテンツ・プロバイダ１３０に対応するタイミング情報があればそれを要求と共に渡す（Ｐ３６０）。有効な状態情報が存在する場合には（Ｐ３５５）、アグリゲータ１２０は、次のコンテンツ・プロバイダ（例えば、ｎｅｘｔＳｏｕｒｃｅ）として状態情報によって識別された第１のコンテンツ・プロバイダ１３０に要求を送り、開始インデックス値を、次の開始インデックス（例えば、ｎｅｘｔＳｔａｒｔＩｎｄｅｘ）として第１の状態情報によって示された値に設定し、第１のコンテンツ・プロバイダ１３０に対応する状態情報及びタイミング情報があればそれを要求と共に渡す（Ｐ３６５）。
【００２８】
参照、状態情報又はタイミング情報を第１のコンテンツ・プロバイダから受信すると、アグリゲータ１２０は、受信された参照、状態情報及びタイミング情報を、それぞれ他の参照、状態情報（例えば、ａｇｇｒｅｇａｔｅｄ−Ｓｔａｔｅ）及びタイミング情報（例えば、ａｇｇｒｅｇａｔｅｄ−Ｔｉｍｅｓｔａｍｐ）と集約する（Ｐ３７０）。要求が、第１のコンテンツ・プロバイダ１３０によって可能な最大限の範囲において満たされない場合には（Ｐ３７５）、アグリゲータ１２０は、リストにある第２のコンテンツ・プロバイダ１３０に要求を送り、第１のコンテンツ・プロバイダ１３０から受信された参照の数を用いて範囲値を減らし、第２のコンテンツ・プロバイダに対応するタイミング情報があればそれを要求と共に渡す（Ｐ３８０）。プロセスＰ３７０、Ｐ３７５及びＰ３８０は、可能な最大限の範囲において要求が満たされるまで繰り返される。
【００２９】
要求が第１のコンテンツ・プロバイダによって可能な最大限の範囲において満たされた場合には（Ｐ３７５）、アグリゲータ１２０は、次のコンテンツ・プロバイダ１３０（例えば、ｎｅｘｔＳｏｕｒｃｅ）及び対応する次の開始インデックス（例えば、ｎｅｘｔＳｔａｒｔＩｎｄｅｘ）を設定することによって、状態情報を更新する（Ｐ３８５）。第１のコンテンツ・プロバイダ１３０から受信する参照がそれ以上残されていない場合には、アグリゲータ１２０は、次のコンテンツ・プロバイダ１３０がリストにある次のコンテンツ・プロバイダ１３０であると設定する（Ｐ３８５）。第１のコンテンツ・プロバイダ１３０から受信する参照がまだ残されている場合には、アグリゲータ１２０は、次のコンテンツ・プロバイダが第１のコンテンツ・プロバイダ１３０であると設定する（Ｐ３８５）。
【００３０】
要求が可能な最大限の範囲において満たされたと判定すると、アグリゲータ１２０は、利用可能な場合には、集約された参照、更新された状態情報及び集約されたタイムスタンプを返す（Ｐ３９０）。先に示したように、要求された数の参照が返された場合、又は、関連付けられたコンテンツ・プロバイダ１３０がそれ以上存在しない場合には、要求は可能な最大限の範囲において満たされる。
【００３１】
一方、タイミング情報を受信すると、コンテンツ・プロバイダ１３０は、情報を読み出して、最後の巡回セッション以降に更新された参照を返す。状態情報を受信すると、コンテンツ・プロバイダ１３０は、最適化のためにその情報を用いる。開始インデックス値がゼロの要求を受信すると、コンテンツ・プロバイダ１３０は、タイミング情報を返す。開始インデックス値がゼロの要求を受信すると、その要求は現在の巡回セッションにおける第１の要求ではないので、コンテンツ・プロバイダ１３０は、タイミング情報を返さない。
【００３２】
図５−図１０は、１つ又は複数の実施形態による、２つの例示的な巡回セッションを示す。第１の巡回セッションは、例えば２００８年１月１日の８：００に開始された巡回セッションである。図５に示されるように、一実施形態によれば、アグリゲータ１は、コンテンツ・プロバイダ（ＣＰ）１、アグリゲータ２及びＣＰ２と直接関連付けられる。アグリゲータ１は、アグリゲータ２を通して、コンテンツ・プロバイダＣＰ３及びＣＰ４とも関連付けられる。この例において、各コンテンツ・プロバイダは１０文書を有し、従って、第１の例示的な巡回セッションは３つのサブ要求を含む。
【００３３】
図６を参照すると、一実施形態によれば、クローラは、１５のコンテンツ・ページ（例えば、文書）にアクセスする要求をアグリゲータ１に送信する。範囲値は、０の開始インデックスずつ増分され、その結果、範囲値は１５である。巡回セッションが始まったばかりなので状態情報は存在せず、以前の巡回セッションが存在していないのでタイムスタンプは存在しない。アグリゲータ１は、要求をＣＰ１に送り、ＣＰ１は、ＣＰ１上の１０文書に対する参照のリストとタイムスタンプ（例えば、ｔｉｍｅｓｔａｍｐ＿ａ）とを返す。アグリゲータ１は、リスト及びタイムスタンプを受信すると、例示の擬似コード（Ｉ）に示される通りにその状態情報を更新する。
【表２】
0005390601.tif 000003
【００３４】
その状態情報を更新すると、アグリゲータ１は、範囲値を１０だけ減らし、要求をアグリゲータ２に送る。アグリゲータ２は、次に、要求をＣＰ３に送る。ＣＰ３は、５文書のリストとタイムスタンプ（例えば、ｔｉｍｅｓｔａｍｐ＿ｂ）とを返し、アグリゲータ２は、例示の擬似コード（ＩＩ）に示される通りにその状態情報を更新する。
【表３】
0005390601.tif 000004
【００３５】
その状態情報を更新すると、アグリゲータ２は、状態情報（例えば、ｓｔａｔｅ＿ｃ）及びタイムスタンプ（例えば、ｔｉｍｅｓｔａｍｐ＿ｃ）と共に、５文書のリストを返す。アグリゲータ１は、リスト、状態情報及びタイムスタンプを受信すると、状態情報（例えば、ｓｔａｔｅ＿ｄ）及びタイムスタンプ（例えば、ｔｉｍｅｓｔａｍｐ＿ｄ）と共に、１５文書（即ち、ＣＰ１からの１０文書及びアグリゲータ２からの５文書）のリストをクローラに返す。アグリゲータ１はまた、例示の擬似コード（ＩＩＩ）に示される通りにその状態情報を更新する。
【表４】
0005390601.tif 000005
【００３６】
図７を参照すると、一実施形態によれば、クローラは、以前の要求からの状態情報（例えば、ｓｔａｔｅ＿ｄ）と共に、次の１５文書にアクセスする要求をアグリゲータ１に送信する。要求は同じ巡回セッションに属するので、タイムスタンプは存在しない。要求及び状態情報を受信すると、アグリゲータ１は、受信された状態情報を読み出し、要求の開始インデックスを５に、範囲値を１５に設定し、要求をアグリゲータ２に送る。アグリゲータ２は、次に、その状態情報を読み出し、要求をＣＰ３に送る。要求及び状態情報を受信すると、ＣＰ３は、残りの５文書のリストを返す。開始インデックスは０ではない（即ち、要求は、この巡回セッションの第１の要求ではない）ので、ＣＰ３は、タイムスタンプを返さない。
【００３７】
アグリゲータ２は、５文書のリストを受信すると、要求が満たされていないので、要求をＣＰ４に送る。ＣＰ４は、１０文書のリスト及びタイムスタンプ（例えば、ｔｉｍｅｓｔａｍｐ＿ｆ）を返し、アクセスすべき文書がＣＰ４にはそれ以上存在しないことを示す。アグリゲータ２は、１０文書のリストを受信すると、１５文書（即ち、ＣＰ３からの５文書及びＣＰ４からの１０文書）のリストとタイムスタンプ（ｔｉｍｅｓｔａｍｐ＿ｇ）とを返し、アクセスすべき文書がアグリゲータ２にはそれ以上存在しないことを示す。アグリゲータ２はまた、例示の擬似コード（ＩＶ）に示される通りにその状態情報を更新する。
【表５】
0005390601.tif 000006
【００３８】
アグリゲータ１は、アグリゲータ２から１５文書のリストを受信すると、状態情報（例えば、ｓｔａｔｅ＿ｈ）及びタイムスタンプ（例えば、ｔｉｍｅｓｔａｍｐ＿ｈ）と共に、１５文書のリストをクローラに返す。アグリゲータ１はまた、例示の擬似コード（Ｖ）に示される通りにその状態情報を更新する。
【表６】
0005390601.tif 000007
【００３９】
図８を参照すると、一実施形態によれば、クローラは、以前の要求からの状態情報（例えば、ｓｔａｔｅ＿ｈ）と共に、次の１５文書にアクセスする要求をアグリゲータ１に送信する。このシナリオにおいては、この要求は同じ巡回セッションに属するので、タイムスタンプは存在しない。アグリゲータ１は、要求及び状態情報を受信すると、受信された状態情報を読み出し、要求の開始インデックスを０に、範囲値を１５に設定し、要求をＣＰ２に送る。ＣＰ２は、次に、１０文書のリストとタイムスタンプ（例えば、ｔｉｍｅｓｔａｍｐ＿ｉ）とを返し、アクセスすべき文書がＣＰ２上にはそれ以上存在しないことを示す。アグリゲータ１は、１０文書のリストを受信すると、１０文書のリストとタイムスタンプ（ｔｉｍｅｓｔａｍｐ＿ｊ）とを返す。アグリゲータ１はまた、例示の擬似コード（ＶＩ）に示される通りにその状態情報を更新する。
【表７】
0005390601.tif 000008
【００４０】
第２の巡回セッションは、例えば、２００８年１月１日の９：００に開始する増分巡回セッションである。第２の巡回セッションにおいて、クローラは、第１の巡回セッションから第２の巡回セッションの開始（例えば、現在時刻）までの間に行われた更新にアクセスする。このシナリオでは、第２の巡回セッションは、２つのサブ要求から構築される。図９に示されるように、一実施形態によれば、クローラは、第１の巡回セッションからの最新のタイムスタンプ（例えば、ｔｉｍｅｓｔａｍｐ＿ｊ）と共に、更新された１５文書にアクセスする要求をアグリゲータ１に送信する。範囲値は、０の開始インデックスずつ増分され、その結果、範囲値は１５である。巡回セッションが始まったばかりなので、状態情報は存在しない。
【００４１】
アグリゲータ１は、ＣＰ１のための関連タイムスタンプ（例えば、ｔｉｍｅｓｔａｍｐ＿ａ）と共に、要求をＣＰ１に送る。ＣＰ１は、要求及びタイムスタンプを受信すると、タイムスタンプを読み出し、２００８年１月１日の８：０５以後に更新された５文書のリストとタイムスタンプ（例えば、ｔｉｍｅｓｔａｍｐ＿ｋ）とを返す。アグリゲータ１は、リスト及びタイムスタンプを受信すると、例示の擬似コード（ＶＩＩ）に示される通りにその状態情報を更新する。
【表８】
0005390601.tif 000009
【００４２】
その状態情報を更新すると、アグリゲータ１は、範囲値を５だけ減らし、アグリゲータ２のための関連タイムスタンプ（例えば、ｔｉｍｅｓｔａｍｐ＿ｇ）と共に、要求をアグリゲータ２に送る。アグリゲータ２は、次に、ＣＰ３のための関連タイムスタンプ（例えば、ｔｉｍｅｓｔａｍｐ＿ｂ）と共に、要求をＣＰ３に送る。ＣＰ３は、２００８年１月１日の８：１０以後に更新された５文書のリストとタイムスタンプ（例えば、ｔｉｍｅｓｔａｍｐ＿ｌ）とを返す。
【００４３】
要求は満たされていないので、アグリゲータ２は、次に、ＣＰ４のための関連タイムスタンプ（例えば、ｔｉｍｅｓｔａｍｐ＿ｆ）と共に、要求をＣＰ４に送る。ＣＰ４は、２００８年１月１日の８：２５以後に更新された５文書のリストとタイムスタンプ（例えば、ｔｉｍｅｓｔａｍｐ＿ｍ）とを返し、アクセスすべき文書がＣＰ４上にはそれ以上存在しないことを示す。アグリゲータ２は、リスト及びタイムスタンプを受信すると、例示の擬似コード（ＩＩＸ）に示される通りにその状態情報を更新する。
【表９】
0005390601.tif 000010
【００４４】
その状態情報を更新すると、アグリゲータ２は、状態情報（例えば、ｓｔａｔｅ＿ｎ）及びタイムスタンプ（例えば、ｔｉｍｅｓｔａｍｐ＿ｎ）と共に、１０文書（即ち、ＣＰ３からの５文書とＣＰ４からの５文書）のリストを返す。アグリゲータ１は、リスト、状態情報及びタイムスタンプを受信すると、状態情報（例えば、ｓｔａｔｅ＿ｏ）及びタイムスタンプ（例えば、ｔｉｍｅｓｔａｍｐ＿ｏ）と共に、１５文書（即ち、ＣＰ１からの５文書及びアグリゲータ２からの１０文書）のリストをクローラに返す。アグリゲータ１はまた、例示の擬似コード（ＩＸ）に示される通りにその状態情報を更新する。
【表１０】
0005390601.tif 000011
【００４５】
図１０を参照すると、一実施形態によれば、クローラは、以前の要求からの状態情報（例えば、ｓｔａｔｅ＿ｏ）及び第１の巡回セッションからの最新のタイムスタンプ（例えば、ｔｉｍｅｓｔａｍｐ＿ｊ）と共に、次の更新された１５文書にアクセスする要求をアグリゲータ１に送信する。
【００４６】
アグリゲータ１は、要求及び状態情報を受信すると、受信された状態情報を読み出し、要求の開始インデックスを０に、範囲値を１５に設定し、ＣＰ２のための関連タイムスタンプ（例えば、ｔｉｍｅｓｔａｍｐ＿ｉ）と共に、要求をＣＰ２に送る。ＣＰ２は、次に、２００８年１月１日の８：２５以後に更新された５文書のリストとタイムスタンプ（例えば、ｔｉｍｅｓｔａｍｐ＿ｐ）とを返し、アクセスすべき文書がＣＰ２上にはそれ以上存在しないことを示す。アグリゲータ１は、リスト及びタイムスタンプを受信すると、５文書のリスト及びタイムスタンプ（例えば、ｔｉｍｅｓｔａｍｐ＿ｑ）をクローラに返す。アグリゲータ１はまた、例示の擬似コード（Ｘ）に示される通りにその状態情報を更新する。
【表１１】
0005390601.tif 000012
【００４７】
種々の実施形態においては、本発明は、完全にハードウェアの形態若しくは完全にソフトウェアの形態のいずれか、又は、ハードウェア要素及びソフトウェア要素両方の組み合わせの形態で、実施することができる。例えば、クローラ１１０、アグリゲータ１２０及びコンテンツ・プロバイダ１３０は、ハードウェア・コンポーネントと、本発明のシステムによって考えられる結果を実現するプロセスを行うように実行されるソフトウェア・コードとに関して主として提示することができる、制御されたコンピュータ・システム環境を含むことができる。
【００４８】
本発明は、効率的な増分巡回を容易にすることが利点である。上記で示されたシステム及び方法は、時間帯の同期を必要とせず、アグリゲータが状態情報を保存して多数のコンテンツ・プロバイダ上のコンテンツのインデックス付け又は検索を最適化できるようにする。また、コンテンツ・プロバイダの透過的な管理によって、長く、失敗した、又は故意に中断された巡回セッションの効率的な処理が可能になる。
【００４９】
図１１及び図１２を参照すると、例示的な実施形態によるコンピュータ・システム環境は、ハードウェア環境５００及びソフトウェア環境６００から成る。ハードウェア環境５００は、ソフトウェアのための実行環境を提供する機械及び機器を含み、ソフトウェアは、下記に示すように、ハードウェアのための実行命令を提供する。
【００５０】
本明細書で提供されるように、示されるハードウェア要素上で実行されるソフトウェア要素は、特定の論理／関数関係に関して説明される。しかしながら、ソフトウェアとして実装されるそれぞれの方法は、ＡＳＩＣ（特定用途向け集積回路）、ＦＰＧＡ（フィールド・プログラマブル・ゲート・アレイ）及びＤＳＰ（デジタル信号プロセッサ）といった、構成され且つプログラムされたプロセッサにより、ハードウェアとしても実装されることに留意されたい。
【００５１】
ソフトウェア環境６００は、システム・ソフトウェア６０２及びアプリケーション・ソフトウェア６０４を含む２つの主要な種類に分類される。システム・ソフトウェア６０２は、どのように機能して情報を処理するかをハードウェアに命令するオペレーティング・システム（ＯＳ）及び情報管理システムといった制御プログラムを含む。
【００５２】
一実施形態においては、クローラ１１０及びアグリゲータ１２０は、アグリゲーションを用いて多数のコンテンツ・プロバイダの増分巡回を容易にするために、１つ又は複数のハードウェア環境で実行されるシステム・ソフトウェア６０２又はアプリケーション・ソフトウェア６０４として実装することができる。アプリケーション・ソフトウェア６０４は、プログラム・コード、データ構造、ファームウェア、常駐ソフトウェア、マイクロコード、又は、マイクロコントローラによって読み出し、分析し、若しくは実行することができる他のいずれかの形態の情報若しくはルーティンを含むことができるが、これらに限定されるものではない。
【００５３】
代替的な実施形態においては、本発明は、コンピュータ若しくはいずれかの命令実行システムによって、又はこれに接続して、用いるためのプログラム・コードを提供するコンピュータ使用可能媒体又はコンピュータ可読媒体からアクセスできるコンピュータ・プログラム製品として実装することができる。この説明のために、コンピュータ使用可能媒体又はコンピュータ可読媒体は、命令実行システム、装置若しくはデバイスによって、又はこれに接続して、用いるためのプログラムを含み、格納し、通信し、伝搬し、又は伝送することができるいずれかの装置とすることができる。
【００５４】
コンピュータ可読媒体は、電子、磁気、光学、電磁、赤外線若しくは半導体のシステム（又は装置若しくはデバイス）又は伝搬媒体とすることができる。コンピュータ可読媒体の例として、半導体又は固体メモリ、磁気テープ、リムーバブル・コンピュータ・ディスケット、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、リジッド磁気ディスク及び光ディスクが挙げられる。光ディスクの現在の例として、コンパクト・ディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、コンパクト・ディスク読み出し／書き込み（ＣＤ−Ｒ／Ｗ）及びデジタル・ビデオディスク（ＤＶＤ）が挙げられる。
【００５５】
図１１を参照すると、システム・ソフトウェア６０２及びアプリケーション・ソフトウェア６０４の実施形態は、ハードウェア環境５００のようなデータ処理システム上で実行されるコンピュータ可読コードの形態のコンピュータ・ソフトウェアとして実装することができ、ハードウェア環境５００は、システム・バス５０４によって１つ又は複数のコンピュータ可読媒体又はメモリ要素に結合されたプロセッサ５０２を含む。コンピュータ可読媒体又はメモリ要素は、例えば、ローカル・メモリ５０６、ストレージ媒体５０８及びキャッシュ・メモリ５１０を含むことができる。プロセッサ５０２は、ストレージ媒体５０８からローカル・メモリ５０６に実行可能コードをロードする。キャッシュ・メモリ５１０は、実行のためにストレージ媒体５０８からコードをロードする回数を減らすように、一時的な記憶場所を提供する。
【００５６】
ユーザ・インターフェース・デバイス５１２（例えば、キーボード、ポインティング・デバイス等）及びディスプレイ画面５１４は、直接に、又は、例えば介在するＩ／Ｏコントローラ５１６を通して、コンピュータ・システムに結合することができる。ネットワーク・アダプタのような通信インターフェース・ユニット５１８をコンピュータ・システムに結合して、データ処理システムが、介在するプライベート・ネットワーク又は公衆ネットワークを通して他のデータ処理システム又は遠隔プリンタ若しくは遠隔ストレージ・デバイスと通信できるようにすることも可能である。有線又は無線のモデム及びイーサネット・カードは、例示的なネットワーク・アダプタの種類のほんの数例である。
【００５７】
１つ又は複数の実施形態においては、ハードウェア環境５００は、上記のコンポーネント全てを含むわけはなく、付加的な機能又は有用性のために他のコンポーネントを含むこともある。例えば、ハードウェア環境５００は、ラップトップ・コンピュータでもよく、又は、セット・トップ・ボックス、携帯情報端末（ＰＤＡ）、移動体通信ユニット（例えば、無線電話）、若しくは、情報処理及び／又はデータ・ストレージ及び通信能力を有する他の類似のハードウェア・プラットフォームのような埋め込みシステムにおいて具体化された他の携帯型コンピュータ・デバイスでもよい。
【００５８】
システムの特定の実施形態においては、通信インターフェース５１８は、プログラム・コードを含む多様なタイプの情報を表わすデジタル・データ・ストリームを運ぶ電気信号、電磁信号又は光信号を送受信することによって、他のシステムと通信する。通信は、遠隔ネットワーク（例えば、インターネット）によって、又は、代替的には搬送波による伝送によって、確立することができる。
【００５９】
図１２を参照すると、システム・ソフトウェア６０２及びアプリケーション・ソフトウェア６０４は、ストレージ媒体５０８からローカル・メモリ５０６にロードされた後にオペレーティング・システム上で実行される１つ又は複数のコンピュータ・プログラムを含むことができる。クライアント・サーバ・アーキテクチャにおいては、アプリケーション・ソフトウェア６０４は、クライアント・ソフトウェア及びサーバ・ソフトウェアを含むことができる。例えば、本発明の一実施形態においては、クライアント・ソフトウェアは、１つ又は複数のコンピュータ・システム（図示せず）で実行され、サーバ・ソフトウェアは、サーバ・システム（図示せず）で実行される。
【００６０】
ソフトウェア環境６００はまた、ローカル又は遠隔のコンピュータ・ネットワーク上で利用可能なデータにアクセスするためのブラウザ・ソフトウェア６０８を含むことができる。さらに、ソフトウェア環境６００は、ユーザ・コマンド及びデータを受信するためのユーザ・インターフェース６０６（例えば、グラフィカル・ユーザ・インターフェース（ＧＵＩ））を含むことができる。上述のハードウェア及びソフトウェアのアーキテクチャ及び環境は例示を目的とするものであり、本発明の１つ又は複数の実施形態は、いずれのタイプのシステム・アーキテクチャ又は処理環境上でも実装できることに留意されたい。
【００６１】
論理コード、プログラム、モジュール、プロセス、方法、及び、各方法のそれぞれのステップが行われる順序は、単なる例示であることも理解されたい。本開示において別段の定めがない限り、実装態様に応じて、ステップは、任意の順序で又は並列に行うことができる。さらに、論理コードは、いずれかの特定のプログラミング言語と関連するものでも、それに限定されるものでもなく、分散環境、非分散環境又はマルチプロセッシング環境において１つ又は複数のプロセッサで実行する１つ又は複数のモジュールを含むものとすることができる。
【００６２】
本発明は、特許請求の範囲内で修正及び変更を行って実施できることを理解されたい。この説明は、網羅的であること、又は、本発明を開示された形態そのものに限定することを意図するものではない。開示された実施形態のこれら及び種々の他の適用及び組み合わせは、本発明の範囲内であり、特許請求の範囲及びそれらの完全な均等物の範囲によってさらに定義される。
【図１】
0005390601.tif 000013
【図２】
0005390601.tif 000014
【図３】
0005390601.tif 000015
【図４】
0005390601.tif 000016
【図５】
0005390601.tif 000017
【図６】
0005390601.tif 000018
【図７】
0005390601.tif 000019
【図８】
0005390601.tif 000020
【図９】
0005390601.tif 000021
【図１０】
0005390601.tif 000022
【図１１】
0005390601.tif 000023