(57)【特許請求の範囲】
【請求項１】
１以上のハードウェアプロセッサを備えるパーソナルコンテンツアイテムの検索システムであって、
前記１以上のプロセッサが、
オンラインコンテンツ管理サービスによって提供されるコンテンツアイテムであって、該サービスに保持される複数のユーザアカウントのうちの特定のユーザアカウントに関連付けられる前記コンテンツアイテムの基本インデックスを生成し、
前記特定のユーザアカウントに関連付けられるユーザコンピュータへネットワークを介して前記生成した基本インデックスを送信し、
前記コンテンツアイテムの少なくとも１つへの変更であって、前記少なくとも１つのコンテンツアイテムの新たなバージョンとなる前記変更を検知し、
前記少なくとも１つのコンテンツアイテムが属する特定のコンテンツアイテムの名前空間であって、前記オンラインコンテンツ管理サービスによって提供されるコンテンツアイテムを含む複数のコンテンツアイテムの名前空間の１つであり、前記特定のユーザアカウントに関連付けられた前記特定のコンテンツアイテムの名前空間の識別子を判定し、
前記少なくとも１つのコンテンツアイテムへの前記変更を反映するインデックス変更情報であって、前記少なくとも１つのコンテンツアイテムにインデックスを付与するために使用する１以上のトークンと、前記少なくとも１つのコンテンツアイテムへインデックスを付与するために使用されない１以上のトークンとの少なくとも１つを含み、かつ、前記特定のコンテンツアイテムの名前空間の前記識別子を含む前記インデックス変更情報を生成し、
インデックス変更情報のジャーナルに前記インデックス変更情報を格納し、
前記インデックス変更情報の前記特定のコンテンツアイテムの名前空間の前記識別子の少なくとも一部に基づいて、前記ユーザコンピュータに対してのものであるとして、前記インデックス変更情報のジャーナルの前記インデックス変更情報を識別し、
前記ネットワークを介して、前記生成したインデックス変更情報の前記少なくとも１つのコンテンツアイテムにインデックスを付与するために使用される１以上のトークン及び前記少なくとも１つのコンテンツアイテムにインデックスを付与するために使用されない１以上のトークンの少なくとも１つを前記ユーザコンピュータへ送信するように構成されることを特徴とする検索システム。
【請求項２】
前記１以上のハードウェアプロセッサは、さらに、
前記ユーザコンピュータに関連付けられるローカルインデックスのタイムスタンプと、前記生成したインデックス変更情報と関連付けられるタイムスタンプとを比較し、
前記生成したインデックス変更情報に関連付けられる前記タイムスタンプが前記ユーザコンピュータに関連付けられる前記ローカルインデックスのタイムスタンプより新しい場合に、前記ネットワークを介して、前記生成したインデックス変更情報の前記少なくとも１つのコンテンツアイテムにインデックスを付与するために使用される１以上のトークン及び前記少なくとも１つのコンテンツアイテムにインデックスを付与するために使用されない１以上のトークンの少なくとも１つを前記ユーザコンピュータへ送信するように構成されることを特徴とする請求項１に記載の検索システム。
【請求項３】
前記１以上のハードウェアプロセッサは、さらに、
前記インデックス変更情報に対するタイムスタンプを生成し、
ディスク上のジャーナルへ、前記タイムスタンプ及び前記インデックス変更情報を含むエントリを付与するように構成されることを特徴とする請求項１に記載の検索システム。
【請求項４】
前記少なくとも１つのコンテンツアイテムへの前記変更は、前記少なくとも１つのコンテンツアイテムの前記新たなバージョンを生成する、前記少なくとも１つのコンテンツアイテムの第１バージョンへの修正を含み、
前記１以上のハードウェアプロセッサは、さらに、
１以上のトークンの第１セットを生成するために、前記少なくとも１つのコンテンツアイテムの前記第１バージョンをトークン化し、
１以上のトークンの第２セットを生成するために、前記少なくとも１つのコンテンツアイテムの前記新たなバージョンをトークン化し、
１以上のトークンの第３セットとして、前記第２セットのトークンの中で前記第１セットのトークンにはない１以上のトークンを識別するように構成され、
前記生成したインデックス変更情報は、前記ユーザコンピュータで前記少なくとも１つのコンテンツアイテムにインデックスを付与するために使用される前記１以上のトークンとして、前記第３セットのトークンを含むことを特徴とする請求項１に記載の検索システム。
【請求項５】
前記少なくとも１つのコンテンツアイテムへの前記変更は、前記少なくとも１つのコンテンツアイテムの前記新たなバージョンを生成する、前記少なくとも１つのコンテンツアイテムの第１バージョンへの修正を含み、
前記１以上のハードウェアプロセッサは、さらに、
１以上のトークンの第１セットを生成するために、前記少なくとも１つのコンテンツアイテムの前記第１バージョンをトークン化し、
１以上のトークンの第２セットを生成するために、前記少なくとも１つのコンテンツアイテムの前記新たなバージョンをトークン化し、
１以上のトークンの第３セットとして、前記第１セットのトークンの中で前記第２セットのトークンにはない１以上のトークンを識別するように構成され、
前記生成したインデックス変更情報は、前記ユーザコンピュータで前記少なくとも１つのコンテンツアイテムにインデックスを付与するために使用されない前記１以上のトークンとして、前記第３セットのトークンを含むことを特徴とする請求項１に記載の検索システム。
【請求項６】
前記基本インデックスは第１の基本インデックスであり、
前記１以上のハードウェアプロセッサは、さらに、
前記少なくとも１つのコンテンツアイテムへの前記変更後に、前記ユーザアカウントに関連付けられる前記コンテンツアイテムの第２の基本インデックスを生成するように構成され、
前記第２の基本インデックスは、前記少なくとも１つのコンテンツアイテムへの少なくとも前記変更を反映し、
前記ネットワークを介して前記ユーザコンピュータへ前記生成した第２の基本インデックスを送信するように構成されることを特徴とする請求項１に記載の検索システム。
【請求項７】
１以上のハードウェアプロセッサによって実行されるコンピュータで実行可能な方法であって、
前記方法は、
前記１以上のハードウェアプロセッサの少なくとも１つによって、オンラインコンテンツ管理サービスによって提供されるコンテンツアイテムであって、該サービスに保持される複数のユーザアカウントのうちの特定のユーザアカウントに関連付けられる前記コンテンツアイテムの基本インデックスを生成する工程と、
前記１以上のハードウェアプロセッサの少なくとも１つによって、前記特定のユーザアカウントに関連付けられるユーザコンピュータへネットワークを介して前記生成した基本インデックスを送信する工程と、
前記１以上のハードウェアプロセッサの少なくとも１つによって、前記コンテンツアイテムの少なくとも１つへの変更であって、前記少なくとも１つのコンテンツアイテムの新たなバージョンとなる前記変更を検知する工程と、
前記少なくとも１つのコンテンツアイテムが属する特定のコンテンツアイテムの名前空間であって、前記オンラインコンテンツ管理サービスによって提供されるコンテンツアイテムを含む複数のコンテンツアイテムの名前空間の１つであり、前記特定のユーザアカウントに関連付けられた前記特定のコンテンツアイテムの名前空間の識別子を判定する工程と、
前記１以上のハードウェアプロセッサの少なくとも１つによって、前記少なくとも１つのコンテンツアイテムへの前記変更を反映するインデックス変更情報であって、前記少なくとも１つのコンテンツアイテムにインデックスを付与するために使用する１以上のトークンと、前記少なくとも１つのコンテンツアイテムへインデックスを付与するために使用されない１以上のトークンとの少なくとも１つを含み、かつ、前記特定のコンテンツアイテムの名前空間の前記識別子を含む前記インデックス変更情報を生成する工程と、
インデックス変更情報のジャーナルに前記インデックス変更情報を格納する工程と、
前記インデックス変更情報の前記特定のコンテンツアイテムの名前空間の前記識別子の少なくとも一部に基づいて、前記ユーザコンピュータに対してのものであるとして、前記インデックス変更情報のジャーナルの前記インデックス変更情報を識別する工程と、
前記１以上のハードウェアプロセッサの少なくとも１つによって、前記ネットワークを介して、前記生成したインデックス変更情報の前記少なくとも１つのコンテンツアイテムにインデックスを付与するために使用される１以上のトークン及び前記少なくとも１つのコンテンツアイテムにインデックスを付与するために使用されない１以上のトークンの少なくとも１つを前記ユーザコンピュータへ送信する工程と
を含むことを特徴とする方法。
【請求項８】
前記１以上のハードウェアプロセッサの少なくとも１つによって、前記ユーザコンピュータに関連付けられるローカルインデックスのタイムスタンプと、前記生成したインデックス変更情報と関連付けられるタイムスタンプとを比較する工程と、
前記１以上のハードウェアプロセッサの少なくとも１つによって、前記生成したインデックス変更情報に関連付けられる前記タイムスタンプが前記ユーザコンピュータに関連付けられる前記ローカルインデックスのタイムスタンプより新しい場合に、前記ネットワークを介して、前記生成したインデックス変更情報の前記少なくとも１つのコンテンツアイテムにインデックスを付与するために使用される１以上のトークン及び前記少なくとも１つのコンテンツアイテムにインデックスを付与するために使用されない１以上のトークンの少なくとも１つを前記ユーザコンピュータへ送信する工程と
をさらに含むことを特徴とする請求項７に記載の方法。
【請求項９】
前記１以上のハードウェアプロセッサの少なくとも１つによって、前記インデックス変更情報におけるタイムスタンプを生成する工程と、
前記１以上のハードウェアプロセッサの少なくとも１つによって、ディスク上のジャーナルへ、前記タイムスタンプ及び前記インデックス変更情報を含むエントリを付与する工程と
をさらに含むことを特徴とする請求項７に記載の方法。
【請求項１０】
前記少なくとも１つのコンテンツアイテムへの前記変更は、前記少なくとも１つのコンテンツアイテムの前記新たなバージョンを生成する、前記少なくとも１つのコンテンツアイテムの第１バージョンへの修正を含み、
前記方法は、さらに、
前記１以上のハードウェアプロセッサの少なくとも１つによって、１以上のトークンの第１セットを生成するために、前記少なくとも１つのコンテンツアイテムの前記第１バージョンをトークン化する工程と、
前記１以上のハードウェアプロセッサの少なくとも１つによって、１以上のトークンの第２セットを生成するために、前記少なくとも１つのコンテンツアイテムの前記新たなバージョンをトークン化する工程と、
前記１以上のハードウェアプロセッサの少なくとも１つによって、１以上のトークンの第３セットとして、前記第２セットのトークンの中で前記第１セットのトークンにはない１以上のトークンを識別する工程とを含み、
前記生成したインデックス変更情報は、前記ユーザコンピュータで前記少なくとも１つのコンテンツアイテムにインデックスを付与するために使用される前記１以上のトークンとして、前記第３セットのトークンを含むことを特徴とする請求項７に記載の方法。
【請求項１１】
前記少なくとも１つのコンテンツアイテムへの前記変更は、前記少なくとも１つのコンテンツアイテムの前記新たなバージョンを生成する、前記少なくとも１つのコンテンツアイテムの第１バージョンへの修正を含み、
前記方法は、さらに、
前記１以上のハードウェアプロセッサの少なくとも１つによって、１以上のトークンの第１セットを生成するために、前記少なくとも１つのコンテンツアイテムの前記第１バージョンをトークン化する工程と、
前記１以上のハードウェアプロセッサの少なくとも１つによって、１以上のトークンの第２セットを生成するために、前記少なくとも１つのコンテンツアイテムの前記新たなバージョンをトークン化する工程と、
前記１以上のハードウェアプロセッサの少なくとも１つによって、１以上のトークンの第３セットとして、前記第１セットのトークンの中で前記第２セットのトークンにはない１以上のトークンを識別する工程とを含み、
前記生成したインデックス変更情報は、前記ユーザコンピュータで前記少なくとも１つのコンテンツアイテムにインデックスを付与するために使用されない前記１以上のトークンとして、前記第３セットのトークンを含むことを特徴とする請求項７に記載の方法。
【請求項１２】
前記基本インデックスは第１の基本インデックスであり、
前記方法は、さらに、
前記１以上のハードウェアプロセッサの少なくとも１つによって、前記少なくとも１つのコンテンツアイテムへの前記変更後に、前記ユーザアカウントに関連付けられる前記コンテンツアイテムの第２の基本インデックスを生成する工程と、
前記第２の基本インデックスは、前記少なくとも１つのコンテンツアイテムへの少なくとも前記変更を反映し、
前記１以上のハードウェアプロセッサの少なくとも１つによって、前記ユーザコンピュータへ前記ネットワークを介して前記生成した第２の基本インデックスを送信する工程と
をさらに含むことを特徴とする請求項７に記載の方法。
【請求項１３】
１以上のプロセッサによって実行されると方法を実行する１以上のコンピュータプログラムであって、前記方法は、
少なくとも１つの前記プロセッサによって、オンラインコンテンツ管理サービスによって提供されるコンテンツアイテムであって、該サービスに保持される複数のユーザアカウントのうちの特定のユーザアカウントに関連付けられる前記コンテンツアイテムの基本インデックスを生成する工程と、
前記プロセッサの少なくとも１つによって、前記特定のユーザアカウントに関連付けられるユーザコンピュータへネットワークを介して前記生成した基本インデックスを送信する工程と、
前記プロセッサの少なくとも１つによって、前記コンテンツアイテムの少なくとも１つへの変更であって、前記少なくとも１つのコンテンツアイテムの新たなバージョンとなる前記変更を検知する工程と、
前記少なくとも１つのコンテンツアイテムが属する特定のコンテンツアイテムの名前空間であって、前記オンラインコンテンツ管理サービスによって提供されるコンテンツアイテムを含む複数のコンテンツアイテムの名前空間の１つであり、前記特定のユーザアカウントに関連付けられた前記特定のコンテンツアイテムの名前空間の識別子を判定する工程と、
前記プロセッサの少なくとも１つによって、前記少なくとも１つのコンテンツアイテムへの前記変更を反映するインデックス変更情報であって、前記少なくとも１つのコンテンツアイテムにインデックスを付与するために使用する１以上のトークンと、前記少なくとも１つのコンテンツアイテムへインデックスを付与するために使用されない１以上のトークンとの少なくとも１つを含み、かつ、前記特定のコンテンツアイテムの名前空間の前記識別子を含む前記インデックス変更情報を生成する工程と、
インデックス変更情報のジャーナルに前記インデックス変更情報を格納する工程と、
前記インデックス変更情報の前記特定のコンテンツアイテムの名前空間の前記識別子の少なくとも一部に基づいて、前記ユーザコンピュータに対してのものであるとして、前記インデックス変更情報のジャーナルの前記インデックス変更情報を識別する工程と、
前記プロセッサの少なくとも１つによって、前記ネットワークを介して、前記生成したインデックス変更情報の前記少なくとも１つのコンテンツアイテムにインデックスを付与するために使用される１以上のトークン及び前記少なくとも１つのコンテンツアイテムにインデックスを付与するために使用されない１以上のトークンの少なくとも１つを前記ユーザコンピュータへ送信する工程と
を含むことを特徴とする１以上のコンピュータプログラム。
【請求項１４】
前記方法は、さらに、
前記プロセッサの少なくとも１つによって、前記ユーザコンピュータに関連付けられるローカルインデックスのタイムスタンプと、前記生成したインデックス変更情報と関連付けられるタイムスタンプとを比較する工程と、
前記プロセッサの少なくとも１つによって、前記生成したインデックス変更情報に関連付けられる前記タイムスタンプが前記ユーザコンピュータに関連付けられる前記ローカルインデックスのタイムスタンプより新しい場合に、前記ネットワークを介して、前記生成したインデックス変更情報の前記少なくとも１つのコンテンツアイテムにインデックスを付与するために使用される１以上のトークン及び前記少なくとも１つのコンテンツアイテムにインデックスを付与するために使用されない１以上のトークンの少なくとも１つを前記ユーザコンピュータへ送信する工程と
をさらに含むことを特徴とする請求項１３に記載の１以上のコンピュータプログラム。
【請求項１５】
前記方法は、さらに、
前記プロセッサの少なくとも１つによって、前記インデックス変更情報におけるタイムスタンプを生成する工程と、
前記プロセッサの少なくとも１つによって、ディスク上のジャーナルへ、前記タイムスタンプ及び前記インデックス変更情報を含むエントリを付与する工程と
をさらに含むことを特徴とする請求項１３に記載の１以上のコンピュータプログラム。
【請求項１６】
前記少なくとも１つのコンテンツアイテムへの前記変更は、前記少なくとも１つのコンテンツアイテムの前記新たなバージョンを生成する、前記少なくとも１つのコンテンツアイテムの第１バージョンへの修正を含み、
前記方法は、さらに、
前記プロセッサの少なくとも１つによって、１以上のトークンの第１セットを生成するために、前記少なくとも１つのコンテンツアイテムの前記第１バージョンをトークン化する工程と、
前記プロセッサの少なくとも１つによって、１以上のトークンの第２セットを生成するために、前記少なくとも１つのコンテンツアイテムの前記新たなバージョンをトークン化する工程と、
前記プロセッサの少なくとも１つによって、１以上のトークンの第３セットとして、前記第２セットのトークンの中で前記第１セットのトークンにはない１以上のトークンを識別する工程とを含み、
前記生成したインデックス変更情報は、前記ユーザコンピュータで前記少なくとも１つのコンテンツアイテムにインデックスを付与するために使用される前記１以上のトークンとして、前記第３セットのトークンを含むことを特徴とする請求項１３に記載の１以上のコンピュータプログラム。
【請求項１７】
前記少なくとも１つのコンテンツアイテムへの前記変更は、前記少なくとも１つのコンテンツアイテムの前記新たなバージョンを生成する、前記少なくとも１つのコンテンツアイテムの第１バージョンへの修正を含み、
前記方法は、さらに、
前記プロセッサの少なくとも１つによって、１以上のトークンの第１セットを生成するために、前記少なくとも１つのコンテンツアイテムの前記第１バージョンをトークン化する工程と、
前記プロセッサの少なくとも１つによって、１以上のトークンの第２セットを生成するために、前記少なくとも１つのコンテンツアイテムの前記新たなバージョンをトークン化する工程と、
前記プロセッサの少なくとも１つによって、１以上のトークンの第３セットとして、前記第１セットのトークンの中で前記第２セットのトークンにはない１以上のトークンを識別する工程とを含み、
前記生成したインデックス変更情報は、前記ユーザコンピュータで前記少なくとも１つのコンテンツアイテムにインデックスを付与するために使用されない前記１以上のトークンとして、前記第３セットのトークンを含むことを特徴とする請求項１３に記載の１以上のコンピュータプログラム。
【請求項１８】
前記基本インデックスは第１の基本インデックスであり、
前記方法は、さらに、
前記プロセッサの少なくとも１つによって、前記少なくとも１つのコンテンツアイテムへの前記変更後に、前記ユーザアカウントに関連付けられる前記コンテンツアイテムの第２の基本インデックスを生成する工程と、
前記第２の基本インデックスは、前記少なくとも１つのコンテンツアイテムへの少なくとも前記変更を反映し、
前記プロセッサの少なくとも１つによって、前記ユーザコンピュータへ前記ネットワークを介して前記生成した第２の基本インデックスを送信する工程と
をさらに含むことを特徴とする請求項１３に記載の１以上のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にはパーソナルコンテンツアイテムの検索システムお及び方法に関する。より詳細には、本発明の実施形態は、ユーザのユーザコンピュータでオンラインコンテンツ管理サービスによって提供されるユーザのパーソナルコンテンツアイテムに局所的にインデックスを付すことによって、ユーザがホストのコンテンツアイテムを検索するためにユーザコンピュータを使用させることを許容するパーソナルコンテンツアイテムの検索システム及び方法に関する。
【背景技術】
【０００２】
コンピュータは膨大な量の情報の中で関連情報を検索するための非常に強力なツールである。インデックスは、コンピュータを使用して、大規模なコーパスの情報の中で注目の情報を効率的に識別するための一般的な仕組みである。通常のインデックスは、当該キーワードが抽出される文書情報への、体系化したキーワードのマッピングである。一例として、世界の公開されたアクセス可能なウェブページのインデックスとしては、当該ウェブページの単語を、当該単語を含むウェブページのサブセットへマッピングしてもよい。
【０００３】
実際の物理的なインデックス自身（例えば、１以上のコンピュータに格納されるインデックスデータ）とシステムのユーザとの間で、検索システムが、ソフトウェアクッション又はレイヤとして通常提供される。本質的には、検索システムは、基本的なインデックスの詳細について既知の又は均等なケアリングからユーザを保護する。通常、インデックスの情報に対するユーザからの全ての要求（リクエスト）は検索システムによって処理される。基本的なインデックスの実装の知識を全てのユーザが有していなくても、例えば、情報に対するユーザの要求に関連する文書が検索システムによってインデックスを用いて識別されうる。この方法では、検索システムは、情報がどのようにインデックス化されたかという関心なしで関連情報への素早いアクセスをユーザへ提供する。世界の公開されているアクセス可能なウェブページの中から、関連情報を識別するための１つの良く知られた検索システムは、カリフォルニアのマウンテンデューにあるＧｏｏｇｌｅ（登録商標）  Ｉｎｃによって提供されるＧＯＯＧＬＥ（登録商標）インターネット検索エンジンである。
【０００４】
検索システムの１つの機能は、検索クエリ（ここでは単に短縮して“クエリ（問い合わせ）”）に応答することである。クエリは、１以上の検索タームのセットを含む論理的な表現で定義されてもよく、インデックス化された文書のサブセットの識別子となる。例えば、インターネット検索エンジンからの情報に対する要求の扱いを考慮しなければならない。動作中に、本要求は、通常、サーバコンピュータ上でインデックスからの特定の検索結果を取り出すための１以上のハイパーテキストトランスファープロトコル（“ＨＴＴＰ”）要求としてクライアントシステムによって発行される。例えば、要求は、ワード“ｃｏｌｌｅｇｅ”及び“ｂａｓｋｅｔｂａｌｌ”を含むインターネットウェブページのリストに  対して行われてもよい。当該要求への応答において、検索システムは、通常、検索ターム“ｃｏｌｌｅｇｅ”及び“ｂａｓｋｅｔｂａｌｌ”に最も関連するものと考えられるそれらのインターネットウェブページへのハイパーリンクを含むウェブページを返す。
【０００５】
インターネット検索エンジンは、インターネット上で公的に利用可能な世界の全ての情報を検索するのに非常に適している。しかしながら、最近では、複数のユーザが、インターネット上で公的にアクセス可能でない、又は、インターネット検索エンジンによってインデックス化されていない、かなりの量の個人のデジタル情報を蓄積し始めている。そのような情報は、他の個人のデジタル情報及びプライベートなデジタル情報の中で、例えば、個人のデジタル写真や、学校及び仕事の文書を含むことができる。いくつかの例で、ユーザの個人的なデジタル情報は、特定のグループユーザの間で共有される。例えば、従業員は、仕事の文書を他の同僚と共有してもよいし、或いは、ユーザはデジタル写真を友達や家族と共有してもよい。
【０００６】
ユーザがそれらの全ての個人のデジタル情報を格納し管理し始めている１つの方法は、オンラインのコンテンツ管理サービスを用いることである。そのようなサービスは、ユーザに対して、ユーザコンピュータを使用して、インターネット又は他の通信ネットワークを通じて、当該サービスのサーバコンピュータ上にそれらの個人的なデジタル情報をアップロードして格納することを許容する。１つの良く知られたオンラインコンテンツ管理サービスは、サンフランシスコのカルフォルニアにあるＤｒｏｐｂｏｘ社によって提供されるＤＲＯＰＢＯＸである。
【０００７】
オンラインコンテンツ管理サービスのユーザは、そのようなサービスによって提供されるそれらの個人的なデジタル情報の検索方法や配置方法の良さを認識するであろう。そのような個人的なデジタル情報は、通常、インターネット上で公的にアクセス可能ではない。本理由及び他の理由において、インターネット検索エンジンは、一般的には、それらのユーザの検索ニーズに合致するような適切なものではない。
【発明の概要】
【０００８】
本システム及び方法の種々の実施形態は、ユーザがオンラインコンテンツ管理サービスによって提供される、ユーザのパーソナルコンテンツアイテムを検索するためにユーザコンピュータを使用することを可能にし、オンラインコンテンツ管理サービスは、ユーザがホストのコンテンツアイテムの基本インデックスを生成するように構成されるインデクサーコンピュータと、ユーザコンピュータへ生成した基本インデックスを送信するように構成される基本インデックスサーバコンピュータと、ユーザがホストのコンテンツアイテムへの変更を反映するインデックス変更情報を生成するように構成されるインデックス変更情報生成コンピュータと、ユーザコンピュータへ生成したインデックス変更情報を送信するように構成されるインデックス変更情報サーバコンピュータとを備える。本発明の実施形態において、インデックス変更情報は、ホストのコンテンツアイテムにインデックスを付与するために使用する１以上のインデックストークン、及び、コストのコンテンツアイテムにインデックスを付与するために使用されない１以上のインデックストークンとの少なくとも１つを含む。
【０００９】
パーソナルコンテンツアイテムの検索システムのいくつかの実施形態の特徴は、ユーザがホストのコンテンツアイテムの検索と、それらへの変更がユーザコンピュータによって受信される基本インデックス及びインデックス変更情報に基づいて構成される、ユーザコンピュータでのローカルインデックスを用いてユーザコンピュータにおいて行われることである。当該特徴の利点は、ユーザコンピュータが検索のタイミングでオンラインコンテンツ管理サービスへ接続されていない場合であっても、ユーザがホストのコンテンツアイテムをユーザが検索し、それらへ変更できることである。当該特徴の他の利点は、ローカルインデックスが通信ネットワークを介して検索クエリを送信する必要なく識別されかつ提供されるべき応答を許容するため、ユーザの検索クエリがユーザへより素早く提供されることである。
【００１０】
パーソナルコンテンツアイテムの検索システムのいくつかの実施形態の他の特徴は、基本インデックスがオンラインコンテンツ管理サービスによって生成されるということである。当該特徴の利点は、ユーザコンピュータの処理サイクルが基本インデックスを生成するために消費されないことであり、これにより、他の、おそらくはより重要なアプリケーションを実行するためにユーザコンピュータの処理電力を節約することができる。ユーザコンピュータの代わりにオンラインコンテンツ管理サービスに基本インデックスを生成させることによってユーザコンピュータの処理電力を節約することはまた、ユーザコンピュータのバッテリ寿命を延ばすことにもなり、当該ユーザコンピュータがバッテリ動作の携帯型ユーザコンピュータであれば、バッテリチャージの期間を増加させることとなる。当該特徴の他の利点は、オンラインコンテンツ管理サービスのクラスタ型コンピュータ及び分散型コンピュータによって提供される比較的大きな処理パワーがより包括的な基本インデックスを生成するために使用されうることである。例えば、オンラインコンテンツ管理サービスは、デジタル画像を基本インデックスでインデックス化するテキストを生成する顔認識アルゴリズム及び光学文字認識アルゴリズムの少なくとも１つを適用することができ、これらは限定した処理能力のユーザコンピュータで行うのは実質的なものではない。例えば、顔認識又は光学文字認識アルゴリズムを実行するための必須の特別なソフトウェアは、例えばそのようなソフトウェアを購入するのに必要な高額なコストなどの様々な種々の理由でユーザコンピュータ上にはインストールされていないかもしれない。
【００１１】
本発明の実施形態における上述の利点及び他の利点は、添付の図面と結合して参照されることにより、以下のより詳細な説明から明らかになるであろう。上述の利点が本発明の種々の形態によって達成されることができ、本発明の追加の利点が、相乗効果が組み合わせの技術から得られるように上述の独立した利点の種々の組み合わせを取り込むであろう。
【図面の簡単な説明】
【００１２】
本発明の実施形態の詳細な説明が、添付の図面を参照しながらいかに記載され、同様の参照符号は図面を通じて対応する部分を示す。
【図１】図１は、本発明のいくつかの実施形態に係る、ユーザコンピュータとオンラインコンテンツ管理サービスとを含む通信ネットワーク環境を示す図である。
【図２】図２は、本発明のいくつかの実施形態に係る、オンラインコンテンツ管理サービスによって提供されるユーザのコンテンツアイテムの、ユーザコンピュータでのローカルインデックスを示す概略図である。
【図３】図３は、本発明のいくつかの実施形態に係る、ローカルインデックスに対する、基本的なクエリ処理操作を示す概略図である。
【図４】図４は、本発明のいくつかの実施形態に係る、ユーザコンピュータでローカルインデックスの種々の可能な状態を示す状態図である。
【図５Ａ】図５Ａは、本発明のいくつかの実施形態に係る、インデックスの変形がローカルインデックスへ適用される前のユーザコンピュータでのユーザインデックスを示す概略図である。
【図５Ｂ】図５Ｂは、本発明のいくつかの実施形態に係る、インデックスの変形がローカルインデックスへ適用された後のユーザコンピュータでのユーザインデックスを示す概略図である。
【図６】図６は、本発明のいくつかの実施形態に係る、オンラインコンテンツ管理サービスにおけるインデックス変更情報生成コンピュータでのインデックス変形ジャーナルを示す概略図である。
【図７】図６は、本発明のいくつかの実施形態に係る、オンラインコンテンツ管理サービスにおけるインデックス変更情報生成コンピュータでのインデックス変形ジャーナルを示す概略図である。
【図８】図８は、本発明のいくつかの実施形態に係る、ユーザコンピュータでのユーザがホストのコンテンツアイテムをインデックス化するための処理を示すフローチャートである。
【図９】図９は、本発明のいくつかの実施形態に係る、ユーザコンピュータでのユーザがホストのコンテンツアイテムを検索するための処理を示すフローチャートである。
【図１０】図１０は、本発明のいくつかの実施形態を実装するために使用されうる基本的なコンピュータコンポーネントを示す概略図である。
【図１１】図１１は、図１０の基本的なコンピュータの動作を制御するために使用されうる基本的なソフトウェアシステムを示す概略図である。
【発明を実施するための形態】
【００１３】
本発明の種々の実施形態は、それらのパーソナルコンテンツアイテムを提供（ホスト）するユーザへ、ユーザコンピュータを用いて彼らがホストのコンテンツアイテムの発見、検索、閲覧及び配置をより容易にかつ効果的にするオンラインコンテンツ管理サービス（例えば、ファイル提供サービス、クラウドデータストレージプロバイダ）を提供するパーソナルコンテンツアイテムシステムと方法に関連する。例えば、パーソナルコンテンツアイテムシステムの種々の実施形態は、ユーザのコンピュータがオンライン接続されていない場合（例えば、通信ネットワークによってオンラインコンテンツ管理サービスへ接続されていない場合）の種々の状況、又は、ユーザコンピュータがオンライン接続されているもののクエリ（問い合わせ）に対する応答を提供するために通信ネットワークを介して検索クエリを送信する必要がない場合、即ち、クエリに対する応答をより素早くユーザへ提供することにより、携帯型ユーザコンピュータにおけるバッテリ電力を節約しバッテリ寿命を延ばす場合の種々の状況でのサービスで、ユーザがユーザコンピュータを用いてユーザのパーソナルコンテンツアイテムのフルテキスト検索を実行することを容易にする。
【００１４】
本発明のいくつかの実施形態によれば、フルテキスト検索は、ユーザコンピュータで局所的にユーザがホストのコンテンツアイテムのインデックスを保持することによって容易にされる。検索クエリに対する応答は、ユーザコンピュータがおオンラインか又はオフラインかに依存して、少なくとも２つの方法でユーザコンピュータにおいてユーザに提供されうる。１つ目は、ユーザコンピュータがオンライン又はオフラインである場合に、当該応答は、ユーザコンピュータにおいて、ローカルインデックスのみを調べることによって提供されうる方法である。２つ目は、ユーザコンピュータがオンラインである場合に、当該応答がユーザコンピュータにおいてローカルインデックスを調べ、通信ネットワークを介してオンラインコンテンツ管理サービスへ検索クエリを送信し、その後、コンテンツ管理サービスから返される結果とローカルインデックスの結果とを合成し、ユーザへ提供される応答にすることによって提供されうる方法である。
【００１５】
本発明の一実施形態によれば、ユーザへ提供される応答は、ユーザコンピュータがコンテンツ管理サービスからの結果が返されるのを待機している間は、まず、ローカルインデックスからの結果のみを含んでもよい。オンラインコンテンツ管理サービスからの結果がユーザコンピュータで受信されると、当該応答は、その後、コンテンツ管理サービスからの結果を含むようにアップデートされてもよい。この方法において、ユーザコンピュータがオンラインの場合、ユーザは、ローカルインデックスからの結果で検索クエリに対する仮の応答が素早く提供され、その後まもなく、オンラインコンテンツ管理サービスからの結果で検索クエリに対するより総合的な応答が提供される。
【００１６】
１．０  ネットワーク環境
本発明の種々の実施形態は、通信ネットワーク、例えばインターネット、モバイル電話ネットワーク、又は広域ネットワーク上などで互いに接続された１以上のコンピュータ、例えば、ユーザコンピュータ及び１以上のオンラインコンテンツ管理サービスコンピュータなどによって実行される際に、ここで説明される種々の機能を実行するように構成されるコンピュータで実行可能な命令の１以上の組合せに従って動作する。
【００１７】
図１は、本発明のいくつかの実施形態に従って動作するネットワークシステムを示す。図１を参照すると、オンラインコンテンツ管理サービス１１０は、インターネットなどの通信ネットワーク１２０上で動作する。オンラインコンテンツ管理サービス１１０は、基本インデックス生成コンピュータ１１１と、基本インデックスサーバコンピュータ１１２と、インデックス変更情報コンピュータ１１３と、インデックス変更情報サーバコンピュータ１１４と、バックエンド検索クエリプロセッサコンピュータ１１５と、フロントエンド検索クエリプロセッサコンピュータ１１６と、トークン格納部１１７と、トークナイザコンピュータ１１８とを含む。
【００１８】
本明細書及び添付の特許請求の範囲で使用される場合、”コンピュータ（ｃｏｍｐｕｔｅｒ）”の単数形は、別段の明確な示唆がない限り、複数形を含むことも意図している。例えば、本発明の一実施形態に係る機能、特徴、又はステップが単一のコンピュータによって実現されるようにここで説明した場合、別段の明確な示唆がない限り、当該機能、特徴、又はステップは、例えばコンピューティングクラスタ又は分散コンピューティング環境で構成される複数のコンピュータによって実現される他の実施形態であってもよい。さらに、異なるコンピュータによって実行されるようないくつかの実施形態においてここで説明される機能、特徴、又はステップは、同一のコンピュータ又は同一のコンピュータの組み合わせによって実行される他の実施形態と代わってもよい。
【００１９】
基本インデックスサーバコンピュータ１１２、フロントエンド検索クエリプロセッサコンピュータ１１６、及びインデックス変更情報サーバコンピュータ１１４は、通信ネットワーク１２０によって１以上のユーザコンピュータ１３０へ接続されてもよい。通信ネットワーク１２０は、インターネット、モバイル電話ネットワーク、又は、有線、無線若しくはそれらのハイブリッドで構成された任意の他の適切な通信ネットワークなどの公衆ネットワークを含んでもよい。
【００２０】
ユーザコンピュータ１３０は、人間のユーザ１３１によって使用されうる。ユーザコンピュータ１３０は、有線及び無線ネットワーク通信機能の少なくとも１つを有する、例えばデスクトップコンピュータ、ワークステーションコンピュータ、ラップトップコンピュータ、モバイル電話、セルラー電話、スマートフォン、セットトップデバイス、車載コンピュータ、携帯端末、又は、有線及び無線通信ネットワーク機能の少なくとも１つを有する他のパーソナルコンピュータなどの、従来からのパーソナルコンピュータであってもよい。  
高信頼のネットワーク通信環境、例えば、ユーザコンピュータ１３０が有線のローカルエリアネットワークによって通信ネットワーク１２０に接続される場合において、ユーザコンピュータ１３０は、オンラインコンテンツ管理サービス１１０に継続して、又は、ほとんど継続して接続される。しかしながら、信頼の低いネットワーク通信環境において、ユーザコンピュータ１３０の構成及びユーザコンピュータ１３０が位置しているネットワーク環境の少なくとも１つに従って、当該ユーザコンピュータ１３０は、通信ネットワーク１２０によってオンラインコンテンツ管理サービス１１０へ、単に断続的に又は定期的に接続されてもよい。例えば、ユーザコンピュータ１３０は、種々の理由（例えば、コスト及びネットワーク性能の少なくとも１つ）により、ユーザコンピュータ１３０が所定のタイプのネットワーク、例えば、有線又は無線のローカルエリアネットワークによって通信ネットワーク１２０に接続される場合のみにおいて、通信ネットワーク１２０を介してオンラインコンテンツ管理サービス１１０へ接続するように構成されてもよい。反対に、ユーザコンピュータ１３０が他のタイプのネットワーク、例えばモバイル電話ネットワークなどによって通信ネットワーク１２０へ接続される場合には、ユーザコンピュータ１３０は、通信ネットワーク１２０を介してオンラインコンテンツ管理サービス１１０へ接続されないように構成されてもよい。いくつかの場合において、ユーザコンピュータ１３０は、オンラインコンテンツ管理サービス１１０へ通信ネットワーク１２０を介してユーザコンピュータ１３０が接続するための利用可能なネットワークがないような、物理的な環境、例えば飛行機に、又は遠隔の地理的領域に設置されうる。本発明の種々の実施形態では、ユーザコンピュータ１３０が通信ネットワーク１２０によってオンラインコンテンツ管理サービス１１０へ断続的に又は定期的に接続されるのみの半接続状態の環境において、ユーザコンピュータ１３０のユーザ１３１が、当該ユーザ１３１がホストのコンテンツアイテム１４１を検索することを可能にする。
【００２１】
例示の実施形態において、サンフランシスコ、カリフォルニアのＤｒｏｐｂｏｘ社によって提供されるＤＲＯＰＢＯＸコンテンツ管理サービスであるオンラインコンテンツ管理サービス１１０は、ユーザのパーソナルコンテンツアイテム１４１を、そのサーバコンピュータ及びサービス１１０が管理するサーバコンピュータの少なくとも１つに格納（提供）してもよい。ユーザ１３１がホストのコンテンツアイテム１４１が格納されるサーバコンピュータは、例示の実施形態においてシアトル、ワシントンのＡｍａｚｏｎ．ｃｏｍによって提供されるオンラインファイル・ホスティング・ウェブサービスＡＭＡＺＯＮ  Ｓ３であるストレージプレーン１４０の一部であってもよい。限定はしないが、ユーザ１３１がホストのコンテンツアイテム１４１によって消費されるストレージプレーン１４０の所定量の格納スペースまでが無料であるか、又は、期間中にユーザ１３１がホストのコンテンツアイテム１４１によって消費されうるストレージプレーン１４０の所定量の格納スペースに基づきユーザ１３１へ無課金の月ごと、年ごと若しくは他の期間ごとのサービス、を含む種々の異なる無料の構成に従って、オンラインコンテンツ管理サービス１１０の機能がユーザ１３１に提供されてもよい。
【００２２】
１．１ ホストのコンテンツアイテム
ユーザ１３１がホストのコンテンツアイテム１４１は、幅広い種々の異なるタイプのコンテンツアイテムを含んでもよい。”コンテンツアイテム”は、テキストコンテンツ及びテキストコンテンツに関連付けられるものの少なくとも１つを含む、デジタル情報の収集物として定義されてもよい。コンテンツアイテムのいくつかの非限定の例示は、限定しないものの、ワード処理文書と、スプレッドシート文書と、デジタル画像と、他のタイプのファイル、文書及びデジタルメディアとを含む。例えば、ワード処理文書は、頻繁に、文書の作成者による単語及び文章形式でのテキストコンテキストを含み、スプレッドシートの文書は、単語及び数字の形式でのテキストコンテキストを含んでもよく、デジタル画像（例えば、デジタル写真）そのヘッダ（例えば、交換可能な画像ファイル形式（Ｅｘｉｆ））にテキストコンテンツを含んでもよい。
【００２３】
コンテンツアイテムは、コンテンツアイテムのコンテンツが当該ファイルタイプに一致する標準化の又は従来のデータ形式を有するように、標準化の又は従来のファイルタイプに対応してもよい。コンテンツアイテムが対応するいくつかの標準化の及び従来のファイルタイプは、限定はしないが画像ファイルタイプ（例えば、．ｊｐｇ、．ｔｉｆｆ、．ｇｉｆｆ）、音楽ファイルタイプ（例えば、．ｍｐ３、．ａｉｆｆ、．ｍ４ａ、．ｗａｖ）、動画ファイルタイプ（例えば、．ｍｏｖ、．ｍｐ４、．ｍ４ｖ）、ワード処理ファイルタイプ（例えば、．ｄｏｃ、．ｄｏｃｘ、．ｐａｇｅｓ）、プレゼンテーションファイルタイプ（例えば、．ｐｐｔ、．ｐｐｔｘ、．ｋｅｙ）、スプレッドシートファイルタイプ（例えば、．ｘｌｓ、．ｘｌｓｘ、．ｎｕｍｂｅｒｓ）、ウェブページファイルタイプ（例えば、．ｈｔｍ、．ｈｔｍｌ）、テキストファイルタイプ（例えば、．ｔｘｔ）、及び、テキストコンテキスト及び当該テキストコンテキストに関連するものを含む他の標準化ファイル又は従来ファイルのタイプを含む。いくつかの例において、コンテンツアイテムが標準化の又は従来のファイルタイプに対応する一方で、他の例では、コンテンツアイテムは、私有の又は知られていないファイルタイプに対応する。それらの例においても、コンテンツアイテムは、まだテキストコンテンツ及び当該テキストコンテンツに関連するものを含むものであってもよい。
【００２４】
コンテンツアイテムは、コンテンツアイテムの内容を説明するテキストコンテンツ（コンテンツアイテムの”テキストメタデータ”とも称する）に関連してもよい。例えば、コンテンツアイテムの名称（例えば、ファイル名）は、コンテンツアイテムに対するテキストメタデータであってもよい。他の例として、デジタル画像のテキストメタデータは、画像のコンピュータ解析によって（例えば、光学文字認識（ＯＣＲ）又は顔認識アルゴリズムによって）生成されてもよい。コンテンツアイテムに対するテキストメタデータの他の形式は、例えば、コンテンツアイテムを参照する（例えば、ハイパーリンクによって）、コンテンツアイテムについて言及する（例えば、ソーシャルネットワークポストにおいて）、又は、コンテンツアイテムを議論する（例えば、ブログポスト又はユーザコメントポストにおいて）、ウェブページからのコンテンツアイテムについてのテキストを含んでもよい。
【００２５】
説明のために、コンテンツアイテムに関連するテキストメタデータは、コンテンツアイテム自身のテキストコンテンツの一部であることが考慮されうる。従って、ここでコンテンツアイテム”に含まれる（ｃｏｎｔａｉｎｅｄ  ｉｎ）”、コンテンツアイテム”に現れる（ｏｃｃｕｒｒｉｎｇ  ｉｎ）”又はコンテンツアイテム”の（ｏｆ）”についての参照は、コンテンツアイテム自身のテキストコンテンツと同様に、別段の明確な示唆がない限り、コンテンツアイテムに関連する任意のテキストメタデータも含むことを意味している。
【００２６】
上述は、ユーザ１３１がホストのコンテンツアイテム１４１の中からであってもよいコンテンツアイテムの可能なタイプのいくつかの例示を提供する。
【００２７】
１．２  コンテンツアイテムの同期
ユーザ１３１がホストのコンテンツアイテム１４１は、限定はしないがユーザコンピュータ１３０からコンテンツアイテム１４１を通信ネットワーク１２０を介してストレージプレーン１４０にアップロードすることによる方法、及び、ユーザコンピュータ１３０からコンテンツアイテム１４１を通信ネットワーク１２０を介して、ユーザコンピュータ１３０からパーソナルコンテンツアイテム１４１を受信するとストレージプレーン１４０に当該コンテンツアイテム１４１を格納するオンラインコンテンツ管理サービス１１０にアップロードすることによる方法、の少なくとも１つを含む種々の異なる方法でストレージプレーン１４０への格納用にオンラインコンテンツ管理サービス１１０へ提供されてもよい。オンラインコンテンツ管理サービス１１０及びストレージプレーン１４０はまた、例えば通信ネットワーク１２０などの通信ネットワークによって接続されてもよい。ストレージプレーン１４０は、当該ストレージプレーン１４０からコンテンツアイテムを読み込む（ダウンロードする）ため、及び、当該ストレージプレーン１４０へコンテンツアイテム１４１を書き込む（アップロードする）ために、ネットワーク通信プロトコル（例えば、ＨＴＴＰ又はＨＴＴＰＳ）に従って通信ネットワーク１２０を介してユーザコンピュータ１３０及びオンラインコンテンツ管理サービス１１０の少なくとも１つによってアクセス可能なネットワークインタフェースを提供してもよい。オンラインコンテンツ管理サービス１１０は前記ユーザコンピュータ１３０へ同様のネットワークインタフェースを提供してもよい。
【００２８】
ユーザ１３１がホストのコンテンツアイテム１４１は、ユーザコンピュータ１３０に格納されるコンテンツアイテムと同期化されてもよい。当該構成において、ユーザコンピュータ１３０でのコンテンツアイテムへの変更は、オンラインコンテンツ管理サービス１１０及びストレージプレーン１４０の少なくとも１つへ通信ネットワーク１２０を介して送信されてもよい。ユーザコンピュータ１３０からの変更を受信すると、当該変更は、ストレージプレーン１４０に格納されるユーザ１３１がホストのコンテンツアイテム１４１の対応するものに適用されてもよく、これにより、ユーザコンピュータ１３０で変更されたコンテンツアイテムをストレージプレーン１４０の対応するコンテンツアイテム１４１へ同期することができる。当該変更がストレージプレーン１４０の対応するコンテンツアイテムへ適用された後に、ユーザコンピュータ１３０のコンテンツアイテムは、ストレージプレーン１４０の対応するコンテンツアイテム１４１と一致することになる。
【００２９】
同期化は双方向に行われてもよい。例えば、ユーザ１３１は、１つのユーザコンピュータより多くのものにコンテンツアイテムを格納してもよい。例えば、ユーザ１３１は、ラップトップコンピュータ１３０にコンテンツアイテムを格納し、モバイル電話１３０にもコンテンツアイテムを格納してもよい。この場合、ユーザ１３１のラップトップコンピュータ１３０でのコンテンツアイテムへの変更は、上述したように、ストレージプレーン１４０の対応するコンテンツアイテム１４１への適用のため、オンラインコンテンツ管理サービス１１０及びストレージプレーン１４０の少なくとも１つへ送信されてもよい。さらに、変更はまたオンラインコンテンツ管理サービス１１０及びストレージプレーン１４０の少なくとも１つから、ユーザ１３１のモバイル電話１３０に格納される対応するコンテンツアイテムへの適用のため、ユーザ１３１のモバイル電話１３０へ送信されてもよい。この双方向の同期化動作後、ユーザのラップトップコンピュータ１３０のコンテンツアイテム、ストレージプレーン１４０の対応するコンテンツアイテム、及びユーザ１３１のモバイル電話１３０の対応するコンテンツアイテムが一致することになる。
【００３０】
ユーザコンピュータ１３０からオンラインコンテンツ管理サービス１１０及びストレージプレーン１４０の少なくとも１つへ送信されるコンテンツアイテムへの変更は、ユーザコンピュータ１３０で発生する種々の異なるイベントによって引き起こされてもよい。例えば、コンテンツアイテムは、ユーザコンピュータ１３０において、直近に、修正され、作成され又は削除されたものであってもよい。ユーザコンピュータ１３０は、例えばソフトウェアプログラム又はコンピュータで実行可能な命令のセットとして実行される同期化アプリケーションで構成されてもよい。
【００３１】
ユーザコンピュータ１３０の同期化アプリケーションは、限定はしないが、ユーザコンピュータ１３０でのコンテンツアイテムへの変更を検知する工程と、オンラインコンテンツ管理サービス１１０及びストレージプレーン１４０の少なくとも１つへ通信ネットワーク１２０を介して検知したコンテンツアイテムの変更を送信する工程と、オンラインコンテンツ管理サービス１１０及びストレージプレーン１４０の少なくとも１つから通信ネットワーク１２０を介してコンテンツアイテムの変更を受信する工程と、ユーザコンピュータ１３０のコンテンツアイテムへ受信したコンテンツアイテムの変更を適用する工程とを含む、コンテンツアイテムに対する種々の同期化動作を実行するように構成されてもよい。
【００３２】
いくつかの場合において、ユーザ１３１がホストのコンテンツアイテム１４１は、オンラインコンテンツ管理サービス１１０の１以上の他のユーザと共有されてもよい。例えば、ユーザ１３１は、オンラインコンテンツ管理サービス１１０を通じてコンテンツアイテムを協働で共有するユーザのチームに属するかもしれない。この場合、チームメンバのユーザコンピュータ１３０の１つでのコンテンツアイテムの変更は、ストレージプレーン１４０の対応するコンテンツアイテム１４１及び他のチームメンバのユーザコンピュータ１３０の対応するコンテンツアイテムと同期されうる。
【００３３】
このように、同期化又は他の要因のいずれかのため、ユーザ１３１がホストのコンテンツアイテム１４１は時々変更されうる。本発明の種々の実施形態は、ユーザ１３１がホストのコンテンツアイテム１４１への変更を、ユーザ１３１がユーザコンピュータ１３０で変更が行われてから間もなく検索することを許容する。
【００３４】
いくつかの場合、ユーザ１３１がホストのコンテンツアイテム１４１の１以上は、ユーザ１３１のユーザコンピュータ１３０の特定の１つと同期化（格納）されない。言い換えれば、ユーザ１３１がホストのコンテンツアイテム１４１は、特定のユーザコンピュータ１３０と選択的に同期化される。例えば、ユーザ１３１は、ユーザ１３１のモバイル電話１３０の同期化アプリケーションを、モバイル電話１３０でユーザ１３１がホストのデジタル写真１４１を同期化しないが、モバイル電話１３０でユーザ１３１がホストのコンテンツアイテム１４１の他の全てを同期化するように設定してもよい。ユーザ１３１は、本方法で同期化アプリケーションを、例えば、モバイル電話１３０でデータ格納スペースを節約するために、或いは、他の理由（例えば、モバイル電話１３０へデジタル写真をダウンロードしないことによってネットワークの帯域幅を節約するなど）のために設定してもよい。他の例として、モバイル電話１３０の同期化アプリケーションは、ユーザ１３１がホストのコンテンツアイテム１４１のいずれがモバイル電話１３０で同期化（に格納）するように自動的に決定されるように設定されてもよい。例えば、同期化アプリケーションは、直近にアクセスされた、及び、将来アクセスされそうなユーザ１３１がホストのコンテンツアイテム１４１の少なくとも１つがモバイル電話１３０で同期される（にキャッシュされる）、ユーザ１３１がホストのいくつかのコンテンツアイテム１４１のローカルキャッシュとしてモバイル電話１３０を扱うように設定されてもよい。このように、同期化を選択できるため、ユーザ１３１のユーザコンピュータ１３０は、ユーザ１３１がホストのコンテンツアイテム１４１のサブセットのみを所定の時間にオンラインコンテンツ管理サービス１１０で格納してもよい。本発明の種々の実施形態は、ユーザ１３１がホストのコンテンツアイテム１４１のいくつか又は全てが検索のタイミングでユーザコンピュータ１３０において同期化されない（に格納されない）場合であっても、ユーザ１３１がユーザコンピュータ１３０でユーザ１３１がホストのコンテンツアイテム１４１を検索することを許容する。
【００３５】
１．３  ユーザアカウント
ストレージプレーン１４０は、複数のユーザ（例えば、１００万又はそれ以上）におけるコンテンツアイテム１４１を格納してもよい。特定のユーザ（例えば、１３１）に属する、ストレージプレーン１４０に格納される全てのコンテンツアイテム１４１の中で所定のコンテンツアイテム１４１のセットが、ユーザがオンラインコンテンツ管理サービス１１０で保持するユーザアカウントによって規定されてもよい。例えば、ユーザ１３１は、オンラインコンテンツ管理サービス１１０でユーザアカウントを保持し、ユーザ１３１がホストのコンテンツアイテム１４１がユーザアカウントに関連付けられてもよい。この方法で、オンラインコンテンツ管理サービス１１０は、ストレージプレーン１４０のコンテンツアイテム１４１のいずれがユーザ１３１のコンテンツアイテム１４１かを判定することができる。この判定の一部として、オンラインコンテンツ管理サービス１１０は、ユーザアカウントのデータベース（不図示）のユーザ１３１のユーザアカウントを識別するためにユーザコンピュータ１３０によって提供される有効な認証クレデンシャル（例えば、有効なユーザ名／パスワードのペア）でユーザ１３１を認証してもよい。識別すると、オンラインコンテンツ管理サービス１１０及びストレージプレーン１４０の少なくとも１つは、識別されたコンテンツアイテムがユーザ１３１のユーザアカウントに関連付けられるかどうかに基づき、リクエストで識別されるストレージプレーン１４０のコンテンツアイテム１４１へアクセスする（例えば、読み出す又は書込む）ための、ユーザコンピュータ１３０（例えば、ユーザコンピュータ１３０上の同期化アプリケーション）からのリクエストを認証する（許可又は却下する）。
【００３６】
ユーザ１３１のユーザアカウントと、ストレージプレーン１４０のユーザ１３１がホストのコンテンツアイテム１４１との関連は、コンテンツアイテム１４１の固有の識別子を用いて規定されてもよい。例えば、コンテンツアイテムの識別子は、コンテンツアイテム１４１を固有に識別する固有の６４ビット値を含むものであってもよい。しかしながら、コンテンツアイテムの識別子は、それぞれの特定の実装の要件に従って、より少ないビット又はより多いビットで表されてもよい。
【００３７】
１．４  コンテンツアイテムの名前空間
ユーザ１３１がホストのコンテンツアイテム１４１は、１以上の”コンテンツアイテムの名前空間”へ体系化されてもよい。コンテンツアイテムの名前空間は、共有アクセス制御の下で、１以上のコンテンツアイテム１４１の収集物として定義されてもよい。共有アクセス制御は、ユーザ及びユーザグループの少なくとも１つのいずれがコンテンツアイテム１４１へのアクセスを有するかと、ユーザ及びユーザグループの少なくとも１つがコンテンツアイテムの名前空間に属するコンテンツアイテム１４１上にどんなアクセス（例えば、読み出しアクセス、書込みアクセス、共有アクセス、プレビューアクセス、ダウンロードアクセスなど）を有するかと、を特定する及び／又は示す、明示的な許可及び暗黙的な許可の少なくとも１つに基づくことができる。明示的な許可は、ユーザ及びユーザグループの少なくとも１つのいずれがコンテンツアイテム１４１へのアクセスを有するかと、ユーザ及びユーザグループの少なくとも１つがコンテンツアイテムの名前空間のコンテンツアイテム１４１上にどんなアクセスを有するかと、を特定する及び／又は示す、例えばコンテンツアイテムの名前空間（又は、それらの識別子）に関連付けられる１以上のアクセス制御リスト（ＡＣＬ）及び他のデータの少なくとも１つの形式で行ってもよい。暗黙的な許可の一例は、ユーザ１３１がユーザ１３１のユーザアカウント（又は、それらの識別子）に関連付けられるコンテンツアイテムの名前空間の全てのコンテンツアイテム１４１へのアクセスを有するものである。
【００３８】
本発明の例示の実施形態において、”デフォルト”のコンテンツアイテムの名前空間は、例えば、前述したＤＲＯＰＢＯＸコンテンツ管理サービスなどのクラウドデータストレージサービスで保持されるユーザ１３１のユーザアカウントに関連付けられるコンテンツアイテム１４１を含む。ユーザアカウントに対する認証が成功すると（例えば、有効なユーザ名／パスワード）、ユーザ１３１は、ユーザ１３１のユーザアカウントと関連付けられるデフォルトのコンテンツアイテムの名前空間においてコンテンツアイテム１４１へのアクセスを暗黙的に有する。
【００３９】
本発明の例示の実施形態において、”共有”のコンテンツアイテムの名前空間は、例えば前述したＤＲＯＰＢＯＸコンテンツ管理サービスなどのオンラインデータストレージサービスで保持される複数のユーザアカウントの中で共有されるコンテンツアイテム１４１のコレクションへ属しているコンテンツアイテム１４１を含む。いくつかの例で、コンテンツアイテム１４１のコレクションは、”共有フォルダ”と称してもよい。コンテンツアイテム１４１のコレクションが共有されるためのユーザアカウントに対する認証が成功すると、ユーザ１３１は、共有のコンテンツアイテムの名前空間においてコンテンツアイテム１４１へのアクセスを有する。
【００４０】
ユーザ１３１のユーザアカウントとユーザ１３１がホストのコンテンツアイテム１４１の固有の識別子との間における直接的な関連の代わりに、ユーザ１３１のユーザアカウントとユーザ１３１がホストのコンテンツアイテム１４１の固有の識別子との間における間接的な関連は、コンテンツアイテム１４１が属するコンテンツアイテムの名前空間における固有の識別子を用いて規定されてもよい。例えば、コンテンツアイテムの名前空間の識別子は、コンテンツアイテムの名前空間を固有に識別する固有の６４ビット値を含んでもよい。しかしながら、コンテンツアイテムの名前空間における識別子は、それぞれの特定の実装の要件に従って、より少ないビット又はより多いビットで表されてもよい。この場合、コンテンツアイテムの名前空間と、ユーザ１３１のコンテンツアイテム１４１をそれらが属するコンテンツアイテムの名前空間へマッピングするコンテンツアイテムの識別子との間で直接的な関連でそれらは区別されてもよい。一実施例において、ユーザ１３１のユーザアカウントは、固有の識別子、例えば、ＡＢＣＤやＤＥＦＧで２つのコンテンツアイテムの名前空間に関連付けられてよい。さらに、例えばデフォルトのコンテンツアイテムの名前空間であってもよいコンテンツアイテムの名前空間ＡＢＣＤは、デフォルトのコンテンツアイテムの名前空間ＡＢＣＤに属する１以上のコンテンツアイテム１４１の固有の識別子に関連付けられ、例えば共有のコンテンツアイテムの名前空間であってもよいコンテンツアイテムの名前空間ＤＥＦＧは、共有のコンテンツアイテムの名前空間ＤＥＦＧに属する１以上のコンテンツアイテム１４１の固有の識別子に関連付けられてもよい。それらの関連から、ユーザ１３１が認証されユーザ１３１のユーザアカウントが識別されるとすぐに、ユーザ１３１のコンテンツアイテムの名前空間と、ユーザ１３１がホストのコンテンツアイテム１４１との固有の識別子は、オンラインコンテンツ管理サービス１１０によって識別されうる。
【００４１】
１．５  クエリの処理アプローチ
グラフィカルユーザインタフェースは、ユーザコンピュータ１３０によってユーザ１３１へ提示されてもよい。例えば、ユーザコンピュータ１３０は、例えばコンピュータ１０００のディスプレイ１０１２などのビデオディスプレイデバイス上でグラフィカルユーザインタフェースを提示してもよい。グラフィカルユーザインタフェースを通じて、ユーザ１３１は、検索クエリを提供し、検索クエリへの応答を受信する。いくつかの実施形態において、グラフィカルユーザインタフェースは、ユーザ１３１から検索クエリを受信し、検索クエリへの応答をユーザ１３１へ提示するためにウェブページ又はウェブページのシリーズを含む。しかしながら、グラフィカルユーザインタフェースは、ウェブページに限定されず、グラフィカルユーザインタフェースは、ユーザ１３１から検索クエリを受信し、検索クエリの応答をユーザ１３１へ提示するための他のタイプのウィンドウ、アイコン、メニュー、及びグラフィックを含んでもよい。
【００４２】
ユーザコンピュータ１３０でグラフィカルユーザインタフェースを通じてユーザ１３１によって提供される検索クエリは、検索式を含んでもよい。検索式の構文は、１以上のブール演算子（例えば、ＡＮＤ、ＯＲ、ＮＯＴなど）によって共に関連付けが可能な、１以上の検索トークンのシーケンスを含んでもよい。トークンは、１以上の文字の文字列として定義されてもよい。トークンの文字は、従来の文字符号化手法（例えば、ＡＳＣＩＩ、ＵＴＦ−８、及び同等のもの）に従って符号化されてもよい。
【００４３】
クエリのトークンは、検索クエリで現れるトークンとして定義されてもよい。例えば、単一の結合検索の問い合わが［ｂａｇｕｅｔｔｅ  ｆｒｏｍａｇｅ］（同封する括弧なしで）の場合を検討する。当該検索クエリを満足するホストのコンテンツアイテム１４１は、コトークン“ｂａｇｕｅｔｔｅ”と、トークン“ｆｒｏｍａｇｅ”との両方を含んでもよく、コンテンツアイテム１４１の中で互いが隣接する必要はなく、かつコンテンツアイテム１４１の中でトークン“ｆｒｏｍａｇｅ”の前にトークン“ｂａｇｕｅｔｔｅ”が現れる必要はない。しかしながら、トークン“ｂａｇｕｅｔｔｅ”と、トークン“ｆｒｏｍａｇｅ”とを互いに近くに含み、トークン“ｆｒｏｍａｇｅ”の前にトークン“ｂａｇｕｅｔｔｅ”を含むホストのコンテンツアイテム１４１は、検索クエリを満足するユーザ１３１がホストの他のコンテンツアイテム１４１よりも関連があるものとみなされてもよい。
【００４４】
ユーザコンピュータ１３０のグラフィカルユーザインタフェースで提示される検索クエリへの応答は、リストの検索結果の概要を含んでもよい。そのような概要のそれぞれは、検索クエリへの関連として、インデックスで識別されるコンテンツアイテム１４１に対応してもよい。検索クエリへの関連としてインデックスで識別され、検索クエリへの応答に含まれるコンテンツ１４１はまた、ここでは検索クエリの“検索結果”或いは単に“結果”と称する。検索の応答の概要は、例えば、識別されるコンテンツアイテム１４１の識別子（例えば、名称、タイトルなど）、識別されるコンテンツアイテム１４１の短い説明（例えば、概要、要約、引用、抜粋など）、ダウンロード、閲覧又はいくつかの他のユーザアクションを行うための識別されるコンテンツアイテム１４１へのインタラクティブなハイパーリンク（例えば、ユニフォーム・リソース・ロケータ（ＵＲＬ））、及び、識別されるコンテンツアイテム１４１について可能な他の有用な情報（例えば、関連するコンテンツアイテム１４１のサムネイル画像）を含んでもよい。
【００４５】
幾つかの場合において、検索クエリの概要に対応するコンテンツアイテム１４１は、ユーザコンピュータ１３０で格納される対応するコンテンツアイテムを有していなくてもよい。例えば、対応するコンテンツアイテムは、選択的な同期化のため、ユーザコンピュータ１３０に格納されなくてもよい。本発明のいくつかの実施形態によれば、ユーザコンピュータ１３０のグラフィカルユーザインタフェースで提示される検索応答の概要は、検索応答の概要に対応するコンテンツアイテム１４１がユーザコンピュータ１３０に格納される対応のコンテンツアイテムを有するかどうかを視覚的に示す。視覚的な指標は、ユーザコンピュータ１３０に格納される対応するコンテンツアイテムを有しないコンテンツアイテム１４１に対応する他の検索応答の概要で視覚的なグループ化、検索応答の概要と結合して若しくは近くに（隣接して）表示されるテキスト若しくはグラフイカルな指標、又は、対応するコンテンツアイテム１４１がユーザコンピュータ１３０に格納される対応するコンテンツアイテムを有しないことを示すいくつかの他の視覚的な指標であってもよい。そのような指標を提供することによって、ユーザ１３１は、コンテンツアイテムにアクセスする（例えば、閲覧する）ために、ユーザ１３１がオンラインコンテンツ管理サービス１１０を通じてストレージプレーン１４０に格納されるコンテンツアイテム１４１にアクセスする必要があるかを理解することができる。
【００４６】
幾つかの場合において、検索応答の概要に対応するコンテンツアイテム１４１は、ユーザコンピュータ１３０に格納される対応するコンテンツアイテムのバージョンよりも新しいバージョンのコンテンツアイテムである。例えば、ストレージプレーン１４０に格納されるより新しいバージョンのコンテンツアイテムに行われる変更は、検索が行われたタイミングでユーザコンピュータ１３０にまだ同期されていないかもしれない。本発明のいくつかの実施形態によれば、ユーザコンピュータ１３０でのグラフィカルユーザインタフェースで提示される検索応答の概要は、検索応答  お概要に対応するコンテンツアイテム１４１がユーザコンピュータ１３０に格納される対応するコンテンツアイテムのバージョンより新しい（より最近の）ものであるかどうかを視覚的に示す。そのような指標を提供することによって、ユーザ１３１は、ユーザコンピュータ１３０に格納される対応するコンテンツアイテムのバージョンがストレージプレーン１４０に格納されるコンテンツアイテムのバージョンに対して古いかもしれないことを理解することができる。
【００４７】
ユーザコンピュータ１３０は、ユーザコンピュータ１３０のグラフィカルユーザインタフェースを通じて、ユーザ１３１によって提供される検索クエリを処理するためのローカルクエリプロセッサを含んでもよい。ローカルクエリプロセッサは、検索クエリに関連し、検索クエリへの応答に含めるユーザ１３１のコンテンツアイテム１４１を識別するために、種々の異なる方法で検索クエリを処理することができる。３つの可能なクエリの処理アプローチを以下に説明するとともに、“ローカルアプローチ”、“リモートアプローチ”、及び“ハイブリッドローカル／リモートアプローチ”と称する。それらの以下で説明されるものとは異なるクエリ処理アプローチが、それぞれの特定の実装の要件に従って使用されてもよい。
【００４８】
検索クエリを処理するためのローカルアプローチ、リモートアプローチ、及びハイブリッドローカル／リモートアプローチの以下の説明では、より明確な例示を提供するために、用語“ローカル”及び“リモート”はユーザコンピュータ１３０に関連して定義される。
【００４９】
検索クエリを処理するための“ローカルアプローチ”において、ローカルクエリプロセッサは、検索クエリに関連するユーザ１３１のコンテンツアイテム１４１を識別し、検索クエリへのローカル応答に含めるために検索クエリでローカルインデックスを参考にする。検索クエリを処理するためのローカルアプローチは、検索クエリの受信に応じてユーザ１３１へ応答を素早く提供するのに有用である。検索クエリが通信ネットワーク（例えば、１２０）を介して検索クエリを送信する必要がなく、通信ネッワークで戻される検索クエリへの応答を待つ必要もなく、ユーザコンピュータ１３０で局所的に処理されうるため、当該応答は素早く提供されうる。ローカルアプローチはまた、ユーザコンピュータ１３０が現在通信ネットワーク１２０でネットワークに又はオンラインコンテンツ管理サービス１１０に接続していないようなユーザコンピュータ１３０がオフラインネットワーク通信環境にある場合も有用である。
【００５０】
検索クエリを処理するための“リモートアプローチ”において、ローカルクエリプロセッサは、通信ネットワーク１２０を介して検索クエリをオンラインコンテンツ管理サービス１１０のフロントエンドクエリ処理コンピュータ１１６へ送信する。検索クエリは、その後、オンラインコンテンツ管理サービス１１０のリモートクエリプロセッサによって処理される。リモートクエリプロセッサは、フロントエンドクエリプロセッサコンピュータ１１６及びバックエンドクエリプロセッサコンピュータ１１５の少なくとも１つによって実装される。リモートクエリプロセッサは、ユーザ１３１のコンテンツアイテム１４１を識別し、フロントエンドクエリプロセッサコンピュータ１１６によって通信ネットワーク１２０を介してユーザコンピュータ１３０に返される検索クエリへのリモート応答に含めるためにリモートインデックスを参考にしてもよい。検索クエリを処理するリモートアプローチは、検索クエリへのより大局的な応答が要望される場合に有用である。検索クエリでリモートインデックスを参考にすることによって取得されるリモート応答は、リモートインデックスがストレージプレーン１４０に格納されるユーザ１３１がホストのコンテンツアイテム１４１の現在の状態に対してより最新のものでありうるため、検索クエリでローカルインデックスを参考にすることによって取得されるローカル応答よりも圧縮されたものであってもよい。例えば、バックエンドクエリプロセッサコンピュータ１１５へのストレージプレーン１４０のネットワーク近接性及び利用可能性のため、ユーザ１３１がホストのコンテンツアイテム１４１の１つへの変更は、ユーザコンピュータ１３０でのローカルインデックスに付与される変更よりも早くリモートインデックスに付与されうるユーザコンピュータ１３０から受信した検索クエリを処理するためのフロントエンドクエリプロセッサコンピュータ１１６及びバックエンドクエリプロセッサコンピュータ１１５によって採用される幾つかの実施形態の技術は、以下の関連出願：米国出願第１４／５５５，１４７号明細書、“パーソナル検索における方法を有するマルチユーザ検索システム”、２０１４年１１月２６日出願と、米国出願第１４／５５１，１７１号明細書、“パーソナライズされた検索クエリのオートコンプリートにおける方法を有するマルチユーザ検索システム”、２０１４年１１月２６日出願とに説明される。それらのアプリケーションのそれぞれの全体の内容は、全ての目的において参照によりここに組み込まれるものとする。
【００５１】
”ハイブリッドローカル／リモートアプローチ”において、ユーザコンピュータ１３０のローカルクエリプロセッサは、（１）検索クエリを有するローカルインデックスを調べることと、（２）フロントエンドクエリプロセッサコンピュータ１１６へ通信ネットワーク１２０を介して検索クエリを送信することとの両方を行う。当該アプローチは、ローカルアプローチと同様に、検索クエリに対するローカル応答を素早く取得するのに有用であり、リモートアプローチと同様に、より大局的な応答を取得するのにも有用である。典型的なシナリオにおいてローカルクエリプロセッサは、ユーザコンピュータ１３０がフロントエンドクエリプロセッサコンピュータ１１６からのリモート応答を受信する前に、ローカルインデックスからローカル応答を取得するであろう。ローカル応答は、当該ローカル応答が取得されるとすぐに、ユーザコンピュータ１３０のグラフィックユーザインタフェースにおいてユーザ１３１に提示されうる。リモート応答がユーザコンピュータ１３０で受信されると、提示された応答がその後、リモート応答からの結果で更新されうる。
【００５２】
いくつかの実施形態において、ローカル応答の検索結果に対するランキングスコアと、リモート応答の検索結果に対するランキングスコアとは、同一のランキングアルゴリズムに従って計算される。特に、ローカル応答の検索結果に対するランキングスコアを計算するためにローカルクエリプロセッサによって使用されるローカルランキングアルゴリズムは、リモート応答の検索結果に対するランキングスコアを計算するためのリモートクエリプロセッサによって使用されるリモートランキングアルゴリズムと同様であってもよい。そのように行うことによって、ローカル及びリモート検索結果に対するランキングスコアは比較可能であり、ローカルクエリプロセッサは、受信したリモート応答のリモート検索結果に対するランキングスコアに基づき、任意のリモート検索結果がユーザコンピュータ１３０のグラフィックユーザインタフェースに現在提示されている最も悪く（最下位に）ランク付けしたローカル検索結果よりも良い（例えば、より高い）ランキングスコアを有するかどうかを決定することができる。そのようなより良くランク付けされた検索結果があれば、その後、グラフィックユーザインタフェースは、最も悪くランク付けされたローカル検索結果に追加して又はの代わりにより良くランク付けされた検索結果を表示するように構成されてもよい。
【００５３】
１．６  トークナイザ及びトークン格納部
トークナイザコンピュータ１１８は、ストレージプレーン１４０に格納されるコンテンツアイテム１４１をトークン化し、トークン格納部１１７にトークン化したコンテンツアイテム１４０におけるトークンのセットを格納する。トークナイザコンピュータ１１８は、定期的を基礎（例えば）、１日１回、１週間に１回）に、又は、コンテンツアイテム１４１が変更された後のタイミングを含む種々の異なるタイミングで、ストレージプレーン１４０コンテンツアイテム１４１をトークン化してもよい。トークナイザコンピュータ１１８は、ストレージプレーン１４０のコンテンツアイテム１４１をトークン化する場合、トークナイザコンピュータ１１８は、トークンのセットを生成し、トークン格納部１１７にトークンのセットを格納する。所定のコンテンツアイテム１４１に関し、トークン格納部１１７は、トークンの１以上のセットを格納してもよく、その１つは、トークナイザコンピュータ１１８によってトークン化された所定のコンテンツアイテム１４１のもっとも最近のバージョンに対応する。所定のコンテンツアイテム１４１に対するトークン格納部１１７のトークンの他のセットは、トークナイザコンピュータ１１８によってトークン化された所定のコンテンツアイテム１４１の以前のバージョンに対応してもよい。
【００５４】
一例として、テキスト”２つの問題を解決した”を含むコンテンツアイテム１４１の第１のバージョンは、ストレージプレーン１４０に格納されてもよい。１回目に、トークナイザコンピュータ１１８は、トークナイザコンピュータ１１８がトークン格納部１１７にその後格納するトークンのセット：  ”解決した”、”２つ”、”問題”を生成するために、コンテンツアイテム１４１の第１のバージョンをトークン化してもよい。その後、上記１回目の後の２回目において、テキスト”３つの問題を解決した”を含むコンテンツアイテム１４１の第２のバージョンは、ストレージプレーン１４０に格納されてもよい。トークナイザコンピュータ１１８は、その後、トークナイザコンピュータ１１８がまたトークン格納部１１７に格納する”解決した”、”３つの”、”問題”のトークンのセットを生成するためにコンテンツアイテム１４１の第２のバージョンをトークン化してもよい。コンテンツアイテム１４１の第１及び第２のバージョンを処理する工程の一部として、トークナイザコンピュータ１１８は、”解決した”、”３つの”、”問題”のトークンのセットがコンテンツアイテム１４１の第２のバージョン対してのものであること、及び、”解決した”、”２つの”、”問題”のトークンのセットがコンテンツアイテム１４１の第１のバージョンに対するものであることを示すメタデータ（例えば、バージョン情報）をトークン格納部１１７に格納してもよい。
【００５５】
本発明のいくつかの実施形態において、トークン格納部１１７は、例えば、ＡＰＡＣＨＥ  ＨＢＡＳＥデータベースシステムなどのカラム指向型の分散データベースシステムを含む。しかしながら、データベースシステムの他のタイプが、それぞれにおける特定の実装の要件に従って、他の実施形態に使用されてもよい。例えば、独自の、関係型、又は、独立型のデータベースシステムが、オープンソース、カラム指向型又は分散型のものの代わりに使用されてもよい。
【００５６】
トークナイザコンピュータ１１８は、コンテンツアイテム１４１のテキストコンテンツをトークン化することによってコンテンツアイテム１４１に対するトークンのセットを生成してもよい。コンテンツアイテム１４１のテキストコンテンツ呼び戻すことは、コンテンツアイテム１４１自身の任意のテキストコンテンツと同様に、コンテンツアイテム１４１に関連付けられた任意のテキストのメタデータを含んでもよい。コンテンツアイテム１４１のテキストコンテンツのトークン化する工程は、テキストコンテンツの１以上の文字列を取得する工程を含んでもよい。種々の技術がテキストコンテンツの形式に従って、テキストコンテンツの文字列を取得するトークナイザによって使用されてもよい。例えば、使用される当該技術は、テキストコンテンツの文字符号化手法（例えば、ＡＳＣＩＩ、Ｕｎｉｃｏｄｅ、ＵＴＦ−８、マイクロソフトＷＯＲＤ、ＡＤＯＢＥ、ＰＤＦなど）に従ってテキストコンテンツを復号する工程と、テキストコンテンツが圧縮されているかどうか（例えば、ＺＩＰ圧縮によって）に従ってテキストコンテンツを解凍する工程との少なくとも１つを含んでもよい。  
テキストコンテンツの文字列が取得されるとすぐに、トークナイザコンピュータ１１８は、同時にトークン上で言語プロセスを実行することが可能なように、文字列を、トークンと称する複数の小片に分割してもよい。言語プロセスは、例えば、所定の文字列（例えば、句読点）を無視する工程、共通の単語（例えば、ストップワード）を除外する工程、並びに、語幹解釈及び見出語解釈の少なくとも１つを含んでもよい。言語プロセスはまた、付加記号、アクセント及び大文字化／大文字変換の少なくとも１つなどを取り除く工程を含むトークンの正規化を含んでもよい。
【００５７】
１．７  基本インデックス
基本インデックス生成コンピュータ１１１は、ユーザ１３１がホストのコンテンツアイテム１４１のいくつか又は全ての”基本インデックス”を生成するように構成されてもよい。基本インデックス生成コンピュータ１１１は、限定はしないが、定期的なタイミング（例えば、１日１回、１週間に１回）及び検出したイベントに応じた（例えば、基本インデックスを生成するためにコマンドを受信ことに応じて）タイミングの少なくとも１つのタイミングを含む、種々の異なるタイミングで基本インデックスを生成してもよい。
【００５８】
通常、基本インデックスは、インデックストークンの辞書や対応する登録を有する逆インデックスとして構成されうる。より詳細には、基本インデックスは、鍵が辞書のインデックストークンに対応し、かつ、その値が登録（ポスティング）の登録リスト（ポスティングリスト）に対応する鍵値の組の集合（例えば、関連配列）として構成されてもよい。基本インデックスにインデックス化されるべき所定のコンテンツアイテム１４１に関し、基本インデックス生成コンピュータ１１１は、トークナイザコンピュータ１１８によってトークン化される所定のコンテンツアイテム１４１の最新のバージョンに対してトークン格納部１１７のトークンのセットを取得する。当該トークンのセットが取得されるとすぐに、基本インデックス生成コンピュータ１１１は、トークンのセットに基づき、基本インデックスの鍵値の組を追加又は修正してもよい。特に、トークンのセットにおける所定のトークンに関し、基本インデックスの所定のトークンに対する鍵値の組が現在なければ、基本インデックス生成コンピュータ１１１は、所定のトークンを含む鍵と所定のコンテンツアイテム１４１を識別する登録リストを含む値とで、基本インデックスの新たな鍵値の組を作成してもよい。代替的に、基本インデックスの所定のトークンに対する鍵値の組があれば、基本インデックス生成コンピュータ１１１は、その後、所定のコンテンツアイテム１４１を識別するために、登録リストの値を修正してもよい。  
基本インデックスサーバコンピュータ１１２は、基本インデックス生成コンピュータ１１１によって生成された基本インデックスを、通信ネットワーク１２０を介してユーザコンピュータ１３０に提供するように構成されてもよい。基本インデックスサーバコンピュータ１１２は、限定はしないが、ユーザコンピュータ１３０から受信したネットワークリクエストに応じる場合を含む種々の異なるタイミングで通信ネットワーク１２０を介してユーザコンピュータ１３０へ、生成した基本インデックスを提供してもよい。
【００５９】
いくつかの実施形態において、基本インデックスサーバコンピュータ１１２は、ストレージプレーン１４０の一部であってもよい。それらの実施形態において、基本インデックス生成コンピュータ１１１によって生成された基本インデックスは、ユーザ１３１がホストのコンテンツアイテム１４１の１つとして取り扱われ、コンテンツアイテムの同期化動作の一部として通信ネットワーク１２０を介してユーザコンピュータ１３０へ提供される。それらの実施形態によれば、基本インデックス生成コンピュータ１１１は、ユーザ１３１がホストのコンテンツアイテム１４１に基づいて基本インデックスを生成した後に、ストレージプレーン１４０に基本インデックスを格納してもよい。その後、基本インデックスは、ユーザコンピュータ１３０の現在の基本インデックスで、ストレージプレーン１４０の基本インデックスを同期化する目的で、ユーザ１３１がホストのコンテンツアイテム１４１の１つとして取り扱われる。有意に、ストレージプレーン１４０の基本インデックスは、ストレージプレーン１４０の基本インデックスがユーザコンピュータ１３０の現在の基本インデックスから異なる場合、或いは、ユーザコンピュータ１３０に現在の基本インデックスがない場合のみに、コンテンツアイテムの同期化動作の一部として、ユーザコンピュータ１３０へ提供されてもよい。本方法において、ユーザコンピュータ１３０は、ユーザコンピュータ１３１の同期化アプリケーションと、オンラインコンテンツ管理サービス１１０との間での、正規的な、定期的な、又は適時的なコンテンツアイテムの同期化動作の一部として、ユーザ１３１がホストのコンテンツアイテム１４１の基本インデックス生成コンピュータ１１１によって生成される最新の基本インデックスを受信してもよい。
【００６０】
１．８  インデックス変更情報
トークナイザコンピュータ１１８は、コンテンツアイテム１４１をトークン化し、トークン格納部１１７の変更したコンテンツアイテム１４１に対して生成したトークンのセットを格納した後に、インデックス変更情報生成コンピュータ１１３に通知してもよい。例えば、インデックス変更情報生成コンピュータ１１３は、ストレージプレーン１４０においてユーザ１３１がホストのコンテンツアイテム１４１の１つが修正された又は削除された後に、トークナイザコンピュータ１１８によって通知されてもよい。  
トークナイザコンピュータ１１８からの変更されたコンテンツアイテム１４１の通知を受信することに応じて、インデックス変更情報生成コンピュータ１１３は、変更されたコンテンツアイテム１４１への変更を反映するインデックス変更情報を生成し、インデックス変更情報生成コンピュータ１１３のインデックス変更情報ジャーナルに上記インデックス変更情報を格納してもよい。いくつかの実施形態において、インデックス変更情報ジャーナルは、分散型の付加のみのコミット履歴（ｃｏｍｍｉｔ  ｌｏｇ）として実装されてもよい。  
変更されたコンテンツアイテム１４１がストレージプレーン１４０において修正された場合、その後、当該変更について生成されたインデックス変更情報は、変更されたコンテンツアイテム１４１にインデックスを付与するために使用される１以上のトークンと、変更されたコンテンツアイテム１４１にインデックスを付与するために使用されない１以上のトークンとの少なくとも１つを含んでもよい。変更されたコンテンツアイテム１４１にインデックスを付与するために使用される１以上のトークンは、変更後にコンテンツアイテム１４１に含まれるが変更前にコンテンツアイテム１４１に含まれなかったトークンを含んでもよい。変更されたコンテンツアイテム１４１にインデックスを付与するために使用されない１以上のトークンは、変更前にコンテンツアイテム１４１に含まれていたが、変更後にコンテンツアイテム１４１に含まれないトークンを含んでもよい。
【００６１】
変更されたコンテンツアイテム１４１がストレージプレーン１４０において修正された場合、インデックス変更情報生成コンピュータ１１３は、修正したコンテンツアイテム１４１にインデックスを付与するために使用する任意のトークンと、修正したコンテンツアイテム１４１にインデックスを付与するために使用されない任意のトークンとを、トークン格納部１１７のコンテンツアイテム１４１の最新のバージョンに対するトークンのセットと、トークン格納部１１７のコンテンツアイテム１４１の以前のバージョンに対するトークンのセットとを比較することによって、識別する。例えば、修正後のコンテンツアイテム１４１の最新のバージョンに対するトークン格納部１１７のトークンのセットが”解決した”、”３つの”、”問題”であり、修正前のコンテンツアイテム１４１の以前のバージョンに対するトークン格納部１１７のトークンのセットが”解決した”、”２つの”、”問題”である場合を想定する。この場合、インデックス変更情報生成コンピュータ１１３は、修正したコンテンツアイテム１４１にインデックスを付与するために使用するトークンとしてトークン”３つ”を識別し、修正したコンテンツアイテム１４１にインデックスを付与するために使用されないトークンとしてトークン”２つ”を識別してもよい。
【００６２】
変更されたコンテンツアイテム１４１がストレージプレーン１４０へ追加される場合、その後、インデックス変更情報は、新たなコンテンツアイテム１４１へインデックスを付与するために使用される１以上のトークンを含んでもよい。例えば、追加後に、コンテンツアイテム１４１の現在のバージョンに対するトークン格納部１１７のトークンのセットが”解決した”、”３つの”、”問題”であると想定する。この場合、インデックス変更情報生成コンピュータ１１３は、新たなコンテンツアイテム１４１へインデックスを付与するために使用されるトークンとして、トークン”解決した”、”３つの”、及び”問題”を識別してもよい。
【００６３】
変更されたコンテンツアイテム１４１がストレージプレーン１４０から削除された場合、その後、インデックス変更情報は、削除したコンテンツアイテム１４１へインデックスを付与するために使用されない１以上のトークンを含んでもよい。例えば、削除前に、コンテンツアイテム１４１の最新のバージョンに対するトークン格納部１１７のトークンのセットが”解決した”、”３つの”、”問題”であると想定する。この場合、インデックス変更情報生成コンピュータ１１３は、削除したコンテンツアイテム１４１へインデックスを付与するために使用されないトークンとして、トークン”解決した”、”３つの”、及び”問題”を識別してもよい。
【００６４】
上述したように、インデックス変更情報生成コンピュータ１１３による変更されたコンテンツアイテム１４１に対して生成されるインデックス変更情報は、インデックス変更情報生成コンピュータ１１３のインデックス変更情報ジャーナルに格納されてもよい。そうすることで、インデックス変更情報生成コンピュータ１１３は、コンテンツアイテム１４１が変更された時間を反映する”ジャーナルタイムスタンプ”に関連付けてジャーナルにインデックス変更情報を格納してもよい。このように、コンテンツアイテム１４１への変更に対するインデックス変更情報は、コンテンツアイテム１４１への変更が発生した際のオーダーを反映するオーダーのジャーナルに格納されてもよい。
【００６５】
インデックス変更情報サーバコンピュータ１１４は、インデックス変更情報ジャーナルからインデックス変更情報を、通信ネットワーク１２０を介してユーザコンピュータ１３０へ送信してもよい。インデックス変更情報サーバコンピュータ１１４は、限定はしないが、ユーザコンピュータ１３０からのネットワークリクエストに応じて、インデックス変更情報サーバコンピュータ１１４がインデックス変更情報ジャーナルにインデックス変更情報を格納することに応じて、及び、周期間隔（例えば、１分間隔）の発生に応じての少なくとも１つのタイミングを含む種々の異なるタイミングで、インデックス変更情報を、通信ネットワーク１２０を介してユーザコンピュータ１３０へ送信してもよい。
【００６６】
インデックス変更情報ジャーナルの何れのインデックス変更情報をユーザコンピュータ１３０へ送信するかを決定するために、インデックス変更情報サーバコンピュータ１１４は、インデックス変更情報ジャーナルのインデックス変更情報と関連付けられたジャーナルタイムスタンプと、ユーザコンピュータ１３０に関連付けられた”ローカルインデックスのタイムスタンプ”とを比較してもよい。ローカルインデックスのタイムスタンプは、ユーザコンピュータ１３０の”ローカルインデックス”がユーザ１３１がホストのコンテンツアイテム１４１への変更に関して最新となる時点を反映する。
【００６７】
ユーザコンピュータ１３０におけるローカルインデックスのタイムスタンプは、ユーザコンピュータ１３０に格納され、インデックス変更情報サーバコンピュータ１１４へ提供されてもよい。代替的に、オンラインコンテンツ管理サービス１１０は、ユーザコンピュータ１３０におけるローカルインデックスのタイムスタンプを保持してもよい。何れかの場合、ユーザコンピュータ１３０におけるローカルインデックスのタイムスタンプは、限定はしないが、ユーザコンピュータ１３０が新たな基本インデックスを取得する度に、及び、ユーザコンピュータ１３０がインデック変更情報を取得する度に、というタイミングを含む種々の異なるタイミングで更新されてもよい。上述したように、インデックス変更情報サーバコンピュータ１１４は、ユーザコンピュータ１３０へ提供するインデックス変更情報ジャーナルのユーザコンピュータ１３０に対するインデックス変更情報を決定するために、インデックス変更情報ジャーナルのインデックス変更情報に関連付けられるジャーナルタイムスタンプをユーザコンピュータ１３０におけるローカルインデックスのタイムスタンプと比較してもよい。
【００６８】
インデックス変更情報ジャーナルの所定のインデックス変更情報がユーザコンピュータ１３０へ提供されるべきであるかどうかを決定するために、インデックス変更情報サーバコンピュータ１１４は、インデックス変更情報ジャーナルの所定のインデックス変更情報に関連付けられたジャーナルタイムスタンプと、ユーザコンピュータ１３０における現在のローカルインデックスのタイムスタンプとを比較してもよい。所定のインデックス変更情報に対するジャーナルタイムスタンプがユーザコンピュータ１３０のローカルインデックスのタイムスタンプよりも新しい場合、その後、インデックス変更情報サーバコンピュータ１１４は、ユーザコンピュータ１３０にインデックス変更情報を提供するように決定してもよい。一方で、所定のインデックス変更情報に対するジャーナルタイムスタンプがローカルインデックスのタイムスタンプよりも古い場合、その後、インデックス変更情報サーバコンピュータ１１４は、ユーザコンピュータ１３０にインデックス変更情報を提供しないように決定してもよい。この方法において、ユーザコンピュータ１３０は、ユーザコンピュータ１３０のローカルインデックスに既に付与されていないユーザ１３１がホストのコンテンツアイテム１４１への変更に対するインデックス変更情報が提供されてもよい。
【００６９】
上述した背景を考慮した、ユーザコンピュータ１３０のローカルインデックスの構造及び動作、インデックス変更情報生成コンピュータ１１３のインデックス変更情報ジャーナル、トークン格納部１１７の一実施形態に続けて、ユーザコンピュータ１３０でのユーザ１３１がホストのコンテンツアイテム１４１にインデックスを付与するための例示の処理、及びユーザコンピュータ１３０でのユーザ１３１がホストのコンテンツアイテム１４１を検索するための例示の処理を以下に説明する。
【００７０】
２．０  ローカルインデックス
図２を参照すると、本発明のいくつかの実施形態に係る、ユーザ１３１がホストのコンテンツアイテム１４１の、ユーザコンピュータ１３０に格納されうるローカルインデックス２１０の概略図が示されている。ローカルインデックス２１０は、辞書２１３と、対応する登録２１７を含む逆インデックスのように構築されてもよい。
辞書２１３は、ユーザ１３１がホストのコンテンツアイテム１４１にユーザコンピュータ１３０においてインデックスを付与するためのインデックストークン２１４を含んでもよい。辞書２１３はまた、登録リスト（例えば、２１８Ａ）への各インデックストークン（例えば、２１４Ａ）に対するポインタを含む。各登録リスト（例えば、２１８Ａ）は、対応するインデックストークン（例えば、２１４Ａ）が存在するどのユーザ１３１のコンテンツアイテム１４１を識別する１以上のコンテンツアイテムの識別子を含む。ローカルインデックス２１０のインデックストークン（例えば、２１８Ａ）は、ユーザ１３１がホストのコンテンツアイテム１４１の１つ以上のテキストコンテンツをトークン化する際にトークナイザコンピュータ１１８によって生成されたトークンに対応してもよい。
【００７１】
辞書２１３はまた、例えばインデックストークン頻度情報、又は、クエリに依存した方法及び／又はクエリとは独立した方法で検索クエリへのコンテンツアイテム１４１の関連をランク付けする若しくは決定するランキングアルゴリズムでローカルクエリプロセッサによって使用されうる他の情報などの、例えばインデックストークン属性情報などのインデックストークン２１４以外の情報を含んでもよい。
【００７２】
登録２１７の登録リスト（例えば、２１８Ａ）は、コンテンツアイテム識別子以外の情報、例えば、特定のコンテンツアイテム１４１の中でのインデックストークン（２１４Ａ）の頻度、特定のコンテンツアイテム１４１の中でのインデックストークン（例えば、２１４Ａ）の１つの位置又は複数の位置などの情報、又は、クエリに依存した方法及び／又はクエリとは独立した方法で検索クエリへのコンテンツアイテム１４１の関連をランク付けする若しくは決定するランキングアルゴリズムでローカルクエリプロセッサによって使用されうる他の情報を含んでもよい。
【００７３】
いくつかの実施形態によれば、以下のコンテンツアイテムのインデックストークン属性の全て又はそれらのサブセット若しくは上位セットが、ローカルインデックス２１０の対応するインデックストークン（例えば、２１４Ａ）に対する登録リスト（例えば、２１８Ａ）におけるコンテンツアイテム１４１のコンテンツアイテム識別子に関連付けられる：
・対応するインデックストークンがコンテンツアイテム１４１のファイル名の一部であるかどうかを示す値、
・対応するインデックストークンがコンテンツアイテム１４１のファイル名の拡張子の一部であるかどうかを示す値、
・対応するインデックストークンがコンテンツアイテム１４１のファイルパスの一部であるかどうかを示す値、
・対応するインデックストークンがコンテンツアイテム１４１のタイトルの一部であるかどうかを示す値、及び／又は、
・対応するインデックストークンがコンテンツアイテム１４１のテキストコンテンツの太字又は他の強調部であるかどうかを示す値。
【００７４】
クエリに依存した方法及び／又はクエリとは独立した方法でクエリへのコンテンツアイテム１４１の関連をランク付けする若しくは決定するランキングアルゴリズムにおいて、上記コンテンツアイテムのインデックストークン属性の何れかを使用することに加えて、ローカルクエリプロセッサは、クエリに一致するコンテンツアイテム１４１の検索応答の概要を生成する場合に、上記コンテンツアイテムのインデックストークン属性の何れかを使用してもよい。例えば、クエリのクエリトークンがコンテンツアイテム１４１のファイル名から生成されたインデックストークン（例えば、２１４Ａ）と一致する場合、その後、生成した検索応答の概要は、例えば、検索応答の概要のコンテンツアイテム１４１のファイル名を表示し、ファイル名が現れるインデックストークンを視覚的に強調する（例えば、太字又は下線により）ことによって当該事実を示してもよい。
【００７５】
いくつかの実施形態によれば、以下のコンテンツアイテム属性の全て、又は、それらのサブセット若しくは上位セットは、ローカルインデックス２１０のインデックス化されたコンテンツアイテム１４１のコンテンツアイテム識別子とユーザコンピュータ１３０において関連付けられる：
・コンテンツアイテム１４１のサイズ（例えば、バイト）、
・コンテンツアイテム１４１の修正日時、
・コンテンツアイテム１４１がストレージプレーン１４０から削除されたかどうかを示す値、
・コンテンツアイテム１４１に対応するコンテンツアイテムがユーザコンピュータ１３０において格納されているかどうかを示す値、
・コンテンツアイテム１４１に対応するコンテンツアイテムがユーザコンピュータ１３０に格納されている場合に、ユーザコンピュータ１３０に格納されたコンテンツアイテム１４１に対応するコンテンツアイテムのバージョンがローカルインデックス２１０でインデックス化されたコンテンツアイテム１４１のバージョンに対して最新のものであるかどうかを示す値、
・ローカルインデックス２１０でインデックス化されたコンテンツアイテム１４１のバージョンを示す値、
・コンテンツアイテム１４１の全ての利用可能なテキストコンテンツがトークナイザコンピュータ１１８によってトークン化されているかどうかを示す値、
・コンテンツアイテム１４１がオンラインコンテンツ管理サービス１１０の１人のユーザよりも多くのユーザの間で共有されているかどうかを示す値（例えば、オンラインコンテンツ管理サービス１１０の１つのユーザアカウントよりも多くのアカウントと関連付けられているか）、
・コンテンツアイテム１４１がオンラインコンテンツ管理サービス１１０の１人のユーザよりも多くのユーザの間で共有されている場合、当該コンテンツアイテム１４１を共有する１以上のユーザのユーザ識別子（及び／又は、ユーザアカウント識別子）のリスト、
・コンテンツアイテム１４１がストレージプレーン１４０に格納された日時を示すタイムスタンプ、
・トークナイザコンピュータ１１８によってコンテンツアイテム１４１から抽出されたトークンの数、
・コンテンツアイテム１４１のテキスト概要／要約、及び／又は、
・コンテンツアイテム１４１からのテキスト片。
【００７６】
クエリ依存型及びクエリ独立型の方法でランク付けを行うために、さもなければ、クエリへのコンテンツアイテム１４１の関連を決定するためにランキングアルゴリズムの上記コンテンツアイテム属性のいずれかを使用することに加えて、ローカルクエリプロセッサは、クエリに一致するコンテンツアイテム１４１の検索応答概要を生成する際に上記コンテンツアイテムのインデックストークン属性のいずれかを使用してもよい。例えば、コンテンツアイテム１４１のテキスト概要／ダイジェスト及びコンテンツアイテム１４１からのテキストの断片の少なくとも一方は、コンテンツアイテム１４１の検索クエリの概要に提示されてもよい。
【００７７】
本発明のいくつかの実施形態において、空間の効率化に関し、かつ、登録２１７のコンピュータストレージサイズを低減するために、登録リスト２１８のコンテンツアイテム識別子は、ユーザコンピュータ１３０に対して局所的なローカル識別子を含み、グローバルコンテンツアイテム識別子を表すために必要とされるバイト数に関するサイズよりも大きいグローバルコンテンツアイテム識別子の代わりとなる。ローカルコンテンツアイテム識別子は、当該ローカルコンテンツアイテム識別子が代わりとなるグローバルコンテンツアイテム識別子よりもローカルコンテンツアイテム識別子を表すのに必要となるバイト数に関するサイズにおいて小さくともよい。本説明において、明示的に説明がない限り、コンテンツアイテム１４１の“コンテンツアイテム識別子”は、コンテンツアイテム１４１のローカルコンテンツアイテム識別子と、コンテンツアイテム１４１のグローバルコンテンツアイテム識別子とを含むコンテンツアイテム１４１を直接的に又は間接的に（例えば、マッピングを通じて）、固有に識別するコンテンツアイテム識別子の全ての可能な形式を参照する。
【００７８】
本発明のいくつかの実施形態によれば、検索クエリがローカルクエリプロセッサにおいて受信されると、ローカルクエリプロセッサは、対応する登録リスト２１８を識別するために、ローカルインデックス２１０の辞書２１３へ鍵としてクエリのクエリトークンを使用する。クエリに複数のクエリトークンがあれば、対応する登録リスト２１８は、複数のクエリのトークンが論理式として全体にどのように関連するのかに従って適切にマージされてもよい。多くの異なるマージアルゴリズムがそれぞれの特定の実装の要件に従ってこの目的で使用されてもよい。
【００７９】
ローカルインデックス２１０に対して検索クエリを処理する場合、ユーザコンピュータ１３０のローカルクエリプロセッサは、不揮発性のストレージ（例えば、フラッシュメモリ、ハードディスク）から、より効果的にアクセスするためにユーザコンピュータ１３０の揮発性メモリ（例えば、ＲＡＭ）へ辞書２１３（若しくはその一部）をロードしてもよい。登録リスト（例えば、２１８Ａ）はまた、より効果的にアクセスするために、ユーザコンピュータ１３０の揮発性メモリにキャッシュとして格納されてもよい。キャッシュされた登録リスト２１８は、例えば少なくとも最近アクセスされたポリシーなどのキャッシュ退避ポリシーに従ってユーザコンピュータ１３０の揮発性メモリから退避される。ローカルクエリプロセッサはまた、登録２１７から受信した複数の登録リスト２１８上で実行されるマージアルゴリズムの結果として、生成される登録リスト（例えば、２１８Ａ）をユーザコンピュータ１３０の揮発性メモリにキャッシュしてもよい。そうすることによって、ローカルクエリプロセッサは、その後、例えば、前に処理したクエリと共通したクエリトークンを有するように検索クエリが処理された場合に、複数の登録リスト２１８上でマージアルゴリズムを実行する必要性を回避することができる。
【００８０】
３．０  基本クエリ処理
次に、図３を参照して、本発明のいくつかの実施形態に係る、ローカルインデックス２１０に対して検索クエリを処理する際に、ユーザコンピュータ１３０のローカルクエリプロセッサによって実行される基本クエリ処理の概要図について説明する。辞書２１３はインデックストークンを含んでもよく、登録２１７は図３に示される以外の登録リストを含んでもよい。
【００８１】
複数のクエリトークンを有する検索クエリがユーザ１３１から受信され、ローカルクエリプロセッサへ提供されると、検索クエリのトークンは、関連登録リストが揮発性メモリに既にキャッシュ（格納）されていなければ、ローカルインデックス２１０からの登録２１７の関連登録リストをキャッシュ（格納）するためにユーザコンピュータ１３０の揮発性メモリに使用される。その後、ローカルクエリプロセッサは、クエリを満足するコンテンツアイテム１４１を識別するために、関連登録リスト上でマージアルゴリズムを実行する。  
例示により基本クエリ処理を説明するために、検索クエリ［２つの問題］（括弧［］を含まない）を考慮する。本例において、ローカルインデックス２１０は、ユーザ１３１のコンテンツアイテム１４１の少なくとも２つを含む。明示の実施例を提供するために、２つのコンテンツアイテム１４１がそれぞれＤ２及びＤ３の識別子を有することを想定する。さらに、コンテンツアイテム１４１のＤ２がテキストコンテンツ”解決した２つの問題”を含み、コンテンツアイテム１４１のＤ３がテキストコンテンツ”解決した３つの問題”を含むことを想定する。したがって、コンテンツアイテム１４１のＤ２は、インデックストークン”解決した”、”２つの”、及び”問題”によってローカルインデックス２１０にインデックス化され、コンテンツアイテム１４１のＤ３は、インデックストークン”解決した”、”３つの”、及び”問題”によってローカルインデックス２１０にインデックス化される。
【００８２】
ユーザ１３１からクエリ［２つの問題］を受信することに応じて、ローカルクエリプロセッサは、登録リストが揮発性メモリに既にキャッシュ（ロード）されていなければ、クエリのクエリトークンが一致するインデックストークンと関連付けられるローカルインデックス２１０からの登録リストを、ユーザコンピュータ１３０の揮発性メモリにキャッシュ（格納）する。具体的には、それぞれがインデックストークン３１４Ａ”問題”と、インデックストークン３１４Ｄ”２つの”に関連付けられる登録リスト３１８Ａ及び３１８Ｂは、既にロードされていなければ、揮発性メモリにキャッシュされる。一度キャッシュされると、ローカルクエリプロセッサは、ロードした登録リスト３１８Ａ及び３１８Ｄ上でマージアルゴリズムを実行することによってクエリを満足するコンテンツアイテム１４１を識別する。本例において、マージアルゴリズムは、ユーザ１３１のクエリを満足するように、コンテンツアイテム１４１のＤ３でなく、コンテンツアイテム１４１のＤ２を識別するために登録リスト３１８Ａ及び３１８Ｄに渡って適用される。コンテンツアイテム１４１のＤ２がクエリを満足する指標がその後、ユーザコンピュータ１３０のグラフィカルユーザインタフェースに提示される検索クエリの概要でユーザ１３１へ提供されてもよい。
【００８３】
４．０  基本インデックス及び差分インデックス
次に、図４を参照して、本発明のいくつかの実施形態に係る、ユーザコンピュータ１３０でローカルインデックス２１０の種々の可能な状態を示す状態図について説明する。付加的に更新可能なローカルインデックス２１０を容易にするために、ローカルインデックス２１０は、基本インデックス４２０及び差分インデックス４４０を含んでもよい。差分インデックス４４０がユーザコンピュータ１３０で変更可能にされてもよい一方で、基本インデックス４２０がユーザコンピュータ１３０で変更可能にされる必要がないという点で、基本インデックス４２０は差分インデックス４４０とは異なる。言い換えれば、基本インデックス４２０は、ユーザコンピュータ１３０で不変のものとして取り扱われてもよく、インデックス変更情報サーバコンピュータ１１４から受信されるインデックス変更情報で、差分インデックス４４０のみがユーザコンピュータ１３０で変更可能にされ、基本インデックス４２０は変更可能にされない。典型的には、差分インデックス４４０は、基本インデックス４２０がユーザコンピュータ１３０の揮発性メモリに全体的に格納されることを許容するよりもバイト単位で非常に小さく（例えば、１桁小さい）、基本インデックス４２０を変更するよりもより効果的に変更されうるものであり、基本インデックス４２０の一部（例えば、基本インデックス４２０の登録リスト）が時にはユーザコンピュータ１３０の揮発性メモリにキャッシュされるものの、差分インデックス４４０は、通常、ユーザコンピュータ１３０の不揮発性メモリに（例えば、ディスクに）格納される。
【００８４】
動作において、ユーザコンピュータ１３０は、ローカルインデックス２１０を最初に有していなくてもよい。ローカルインデックス２１０は、オンラインコンテンツ管理サービス１１０から基本インデックス４２０が受信された際に、ユーザコンピュータ１３０で作成されてもよい。その後、ユーザ１３１がホストのコンテンツアイテム１４１への変更がストレージプレーン１４０に行われると、ユーザコンピュータ１３０は、ユーザ１３１がホストのコンテンツアイテム１４１への変更を反映するオンラインコンテンツ管理サービス１１０からインデックス変更情報を受信してもよい。差分インデックス４４０は、受信した変更情報に基づいて変更されてもよい。このように、所定の時間において、ユーザコンピュータ１３０のローカルインデックス２１０が単に基本インデックス４２０のみを含むか、或いは、基本インデックス４２０及び差分インデックス４４０の両方を含んでもよい。基本インデックス４２０及び差分インデックス４４０は同様の構造であってもよい。つまり、基本インデックス４２０及び差分インデックス４２０の両方は、インデックストークンの辞書や対応する登録を有する逆インデックスとして構成されうる。クエリがユーザ１３１から受信されると、ユーザコンピュータ１３０のローカルクエリプロセッサは、基本インデックス４２０の対応するエントリに優先して（の代わりに）、差分インデックス４４０のインデックスエントリで、基本インデックス４２０及び差分インデックス４４０の両方を調べてもよい。
【００８５】
本発明のいくつかの実施形態に係るユーザコンピュータ１３０でのローカルインデックス２１０の可能なライフサイクルを図４に示す。まず、状態４０２Ａで、ユーザコンピュータ１３０はローカルインデックス２１０を有していなくてもよい。
【００８６】
ユーザコンピュータ１３０は、オンラインコンテンツ管理サービス１１０から基本インデックス４２０の第１のバージョンを受信することに応じて状態４０２Ａから４０２Ｂへの遷移４０４Ａ−Ｂを行ってもよい。基本インデックス４２０の第１のバージョンは、ある時点までユーザ１３１がホストのコンテンツアイテム１４１の状態を反映する。
【００８７】
状態４０２Ｂで、基本インデックス４２０の第１のバージョンがユーザコンピュータ１３０でローカルインデックス２１０の一部としてインストールされ、ユーザコンピュータ１３０のローカルクエリプロセッサは、ユーザ１３１から受信した検索クエリに応答するために基本インデックス４２０を使用する。
【００８８】
ユーザコンピュータ４２０は、変更したコンテンツアイテム１４１に対するインデックス変更情報がインデックス変更情報サーバコンピュータ１１４から受信されると、状態４０２Ｂから状態４０２Ｃへの遷移４０４Ｂ−Ｃを行ってもよい。状態４０２Ｃで、差分インデックス４４０は、受信したインデックス変更情報を反映するために変更されてもよい。状態４０２Ｃで、ユーザコンピュータ１３０のローカルクエリプロセッサは、ユーザ１３１からの検索クエリを処理するために基本インデックス４２０及び差分インデックス４４０の両方を使用する。この場合、差分インデックス４４０のインデックスエントリが基本インデックス４２０の対応するインデックスエントリに優先する（の代わりとなる）。例えば、特定のコンテンツアイテム１４１が検索クエリトークンに対応するインデックストークン（例えば、２１４Ａ）と関連付けられる差分インデックス４４０の登録リスト（例えば、２１８Ａ）に識別されるため、当該差分インデックス４４０は、特定のコンテンツアイテム１４１が検索クエリトークンと一致することを示してもよい。しかしながら、同時に、基本インデックス４２０は、特定のコンテンツアイテム１４１が検索クエリトークンに一致しないことを示してもよい。この場合、差分インデックス４４０及び基本インデックス４２０の間の競合が差分インデックス４４０に優先して解決され、特定のコンテンツアイテム１４１が検索クエリのトークンに一致するように考慮される。差分インデックス４４０が基本インデックス４２０に関連してユーザ１３１がホストのコンテンツアイテム１４１への最新の変更を反映するため、競合は、差分インデックス４４０を優先して解決される。
【００８９】
また、遷移４０４Ｃ−Ｃに示されるように、新たなインデックス変更情報がインデックス変更情報サーバコンピュータ１１４から受信されると、ユーザコンピュータ１３０の差分インデックス４４０がさらに変更されてもよい。
【００９０】
新たな基本インデックス４２０がオンラインコンテンツ管理サービス１１０からユーザコンピュータ１３０で受信されると、ユーザコンピュータ１３０は、状態４０２Ｂに戻る遷移４０４Ｃ−Ｂを行ってもよい。
【００９１】
限定はしないが、ローカルインデックス２１０がユーザコンピュータ１３０から削除又は取り除かれた場合を含む種々の異なるイベントの発生に従って、ユーザコンピュータ１３０は、状態４０２Ｃから状態４０２Ａへの遷移４０４Ｃ−Ａか、又は、状態４０２Ｂから状態４０２Ａへの遷移４０４Ｂ−Ａを行ってもよい。
【００９２】
通常の動作において、ユーザコンピュータ１３０が状態４０２Ｂへ遷移するたびにオンラインコンテンツ管理サービス１１０から受信した最新の基本インデックス４２０がローカルインデックス２１０の一部としてインストールされ、遷移４０４Ｂ−Ｃ及び４０４Ｃ−Ｂによって形成されるサイクルが継続して繰り返されてもよい。受信した基本インデックス４２０は、ユーザコンピュータ１３０で現在の基本インデックス４２０がユーザ１３１がホストのコンテンツアイテム１４１への変更をインデックス化した時点よりも後の（よりも最近の）時点でのユーザ１３１がホストのコンテンツアイテム１４１への変更をインデックス化するという意味でより最新のものでありうる。オンラインコンテンツ管理サービス１１０から受信したより最新の基本インデックス４２０でユーザコンピュータ１３０の現在の基本インデックス４２０を周期的に置き換えることはまた、ユーザコンピュータ１３０の揮発性メモリにおける差分インデックス４４０のコンピュータストレージサイズが非常に増大してしまうことを防ぐ効果を有する。現在の基本インデックス４２０がより最新の基本インデックス４２０で置き換えられる度に、現在の差分インデックス４４０のエントリが破棄されうるため、当該効果が達成される。その後、新たなインデックス変更情報がオンラインコンテンツ管理サービス１１０から受信されると、ユーザコンピュータが状態４０２Ｂへ戻る遷移４０４Ｃ−Ｂが行われる次の基本インデックス４２０が受信されるまで、受信したインデックス変更情報に基づいて差分インデックス４４０にエントリが追加される。
【００９３】
ユーザコンピュータ１３０のローカルインデックスのタイムスタンプは、種々の異なる時間、限定はしないが、ユーザコンピュータ１３０が状態４０２Ａから状態４０２Ｂへの遷移４０４Ａ−Ｂを行った場合、状態４０２Ｂから状態４０２Ｃへの遷移４０４Ｂ−Ｃを行った場合、状態４０２Ｃから状態４０２Ｂへの遷移４０４Ｃ−Ｂを行った場合、及び、状態４０２Ｃから状態４０２Ｃへの遷移４０４Ｃ−Ｃを行った場合に、更新されてもよい。ローカルインデックスのタイムスタンプが更新されるたびに、ユーザ１３１がホストのコンテンツアイテム１４１への変更に関してローカルインデックス２１０が最新のものとなる時点までを反映するように更新されてもよい。当該時点は、種々の異なる方法、限定はしないが、新たな基本インデックス又はインデックス変更情報がオンラインコンテンツ管理サービス１１０から受信された場合にユーザコンピュータ１３０のシステムクロックから取得される現在の日時、オンラインコンテンツ管理サービス１１０から受信される新たな基本インデックス４２０が関連付けられるタイムスタンプ、又は、オンラインコンテンツ管理サービス１１０から受信される新たなインデックス変更情報と関連付けられるタイムスタンプで決定されてもよい。
【００９４】
５．０  基本差分インデックス変更動作
次に、図５Ａ及び図５Ｂを参照して、本発明のいくつかの実施形態に係るユーザコンピュータ１３０のローカルインデックス２１０に適用される基本インデックス変更動作の概略図について説明する。図５Ａはインデックス変更情報が適用される前のローカルインデックス２１０を表し、図５Ｂはインデックス変更情報が適用された後のローカルインデックス２１０を表す。辞書２１３は、インデックストークンを含んでもよく、登録２１７は図５Ａ及び図５Ｂに示されるもの以外の登録リストを含んでもよい。
【００９５】
本例において、インデックス変更情報がコンテンツアイテム１４１のＤ２に対してのものであり、トークン”３つの”をコンテンツアイテム１４１のＤ２にインデックスとして付与するために使用することを特定し、トークン”２つの”をコンテンツアイテム１４１のＤ２にインデックスとして付与するために使用しないことを特定することを想定する。  
さらに、インデックス変更情報がローカルインデックス２１０へ提供される前に、インデックストークン”解決した”５１４Ｂ、”２つの”５１４Ｃ、及び”問題”５１４Ａによってローカルインデックスの基本インデックス４２０でコンテンツアイテム１４１のＤ２へインデックスとして付与されてもよい。
【００９６】
インデックス変更情報がローカルインデックス２１０へ適用された後に、インデックストークン５１４Ｄ”３つの”及びコンテンツアイテム１４１のＤ２を特定する登録リスト５１８Ａを有するインデックスエントリが差分インデックス４４０に存在する。さらに、インデックストークン５１３Ｃ”２つの”及びコンテンツアイテム１４１のＤ２がインデックストークン５１３Ｃ”２つの”によってもはやインデックス化されないことを特定する登録リスト５１８Ｂを有するインデックスエントリが差分インデックス４４０に存在する。重要なことは、本例では、インデックス変更情報がローカルインデックス２１０へ適用された場合には基本インデックス４２０が変更されないことである。代わりに、基本インデックス４２０が基本インデックス生成コンピュータ１１１によって生成されたため、差分インデックス４４０が、ユーザ１３１がホストのコンテンツアイテム１４１への変更を表すように変更される。
【００９７】
６．０  インデックス変更情報ジャーナル
次に、図６を参照して、本発明のいくつかの実施形態に係るインデックス変更情報生成コンピュータ１１３によってメンテナンスされうるインデックス変更情報ジャーナル６１０の概略図について説明する。ユーザがホストのコンテンツアイテム１４１が変更された場合、インデックス変更情報生成コンピュータ１１３には変更が通知されてもよい。それに応じて、インデックス変更情報生成コンピュータ１１３は、変更を反映するインデックス変更情報６２２を生成し、ジャーナルタイムスタンプ６２１とともにインデックス変更情報６２２を、ジャーナルエントリ６２０の一部として、インデックス変更情報ジャーナル６１０に格納する。
【００９８】
いくつかの実施形態において、インデックス変更情報ジャーナル６１０は、商品コンピューティングハードウェアで構築される追記専用の分散型コミットログ（ｃｏｍｍｉｔ  ｌｏｇ）として実装される。このように、インデックス変更情報生成コンピュータ１１３は処理することができ、インデックス変更情報ジャーナル６１０は変更情報６２２をストレージプレーン１４０のコンテンツアイテム１４１への変更を高速に（例えば、毎秒何万という変更を）格納することができる。ジャーナル６１０を商品コンピューティングハードウェアを用いて追記専用の分散型コミットログとして実装することによって、インデックス変更情報ジャーナル６１０は、ストレージプレーン１４０がより多くのコンテンツアイテム１４１を格納するように、及び／又は、コンテンツアイテム１４１への変更速度が増加するように、より効果的にスケーリングされうる。さらに、以前のジャーナルエントリ６２０の位置に隣接するコンピュータストレージの位置において、次のジャーナルエントリ６２０を格納する（追記する）ことによって、ストレージデバイス（例えば、ディスク）のスキャニングが低減される。
【００９９】
図示するように、ジャーナルエントリ６２０は、変更されたコンテンツアイテム１４１に対してインデックス変更情報生成コンピュータ１１３によって生成される、ジャーナルタイムスタンプ６２１及びインデックス変更情報６２２を含んでもよい。
【０１００】
まず変更されたコンテンツアイテム１４１に対して生成されるインデックス変更情報６２２について、インデックス変更情報６２２は、コンテンツアイテムの名前空間の識別子６２３と、コンテンツアイテムの識別子６２４と、変更したコンテンツアイテム１４１にインデックスを付与するために使用する１以上のトークンのセット６２５と、変更したコンテンツアイテム１４１にインデックスを付与するために使用されない１以上のトークンのセット６２６の少なくとも１つを含んでもよい。コンテンツアイテムの名前空間の識別子６２３は、変更したコンテンツアイテム１４１が属するコンテンツアイテムの名前空間を識別する。
【０１０１】
ジャーナル６１０のエントリ６２０は、ユーザコンピュータのローカルインデックス２１０がインデックス変更情報６２２に関して最新のものであるかどうかを決定するために、ユーザコンピュータ（例えば、１３０）に対するローカルインデックスのタイムスタンプと比較しうるジャーナルタイムスタンプ６２１を含んでもよい。
【０１０２】
７．０  トークン格納部
図７は、本発明のいくつかの実施形態に係る、トークン格納部１１７における可能なスキーマを示す。当該スキーマによれば、トークン格納部１１７は２つのテーブル：”文書”テーブル７１０と、”インデクサー文書”テーブル７２０を含む。
【０１０３】
文書テーブル７１０は、トークナイザ１１８によって処理されるホストのコンテンツアイテム１４１のバージョンに対するトークンとメタデータのセットを格納する。特定の実施形態において、文書テーブル７１０は、所定の時点で、コンテンツアイテム１４１の最新バージョンの番号γへのみの情報を格納し、当該γは例えば文書テーブル７１０の所望の最大サイズ又はそれぞれの特定の実装の要件に従った他の要因を含む種々の要因に基づいて選択されてもよい。いくつかの実施形態によれば、基本インデックス生成コンピュータ１１１は、基本インデックス４２０を生成するために文書テーブル７１０の情報を使用する。
【０１０４】
インデクサー文書テーブル７２０は、インデックス変更情報生成コンピュータ１１３によって処理されたホストのコンテンツアイテム１４１の現在のバージョンに対するトークン及びメタデータのセットを格納する。いくつかの実施形態において、コンテンツアイテム１４１の現在のバージョンは、インデックス変更情報生成コンピュータ１１３によって処理されたコンテンツアイテム１４１の最も後の（最新の）バージョンである。いくつかの実施形態によれば、インデックス変更情報生成コンピュータ１１３は、インデックス変更情報ジャーナル６１０に格納されるインデックス変更情報を生成するために、文書テーブル７１０とインデクサー文書テーブル７２０の情報を使用する。
【０１０５】
文書テーブル７１０は、多くの列を含む。文書テーブル７１０の列は、列キー（例えば、７１１）によって鍵を掛けられてもよい。いくつかの実施形態において列キー（例えば、７１１）はコンテンツアイテムの名前空間の識別子、コンテンツアイテムの識別子、及びコンテンツアイテムのバージョン識別子を含むバイト配列である。コンテンツアイテムの識別子は、コンテンツアイテム１４１を識別する。コンテンツアイテムのバージョン識別子は、コンテンツアイテム１４１の特定のバージョンを識別する。このように、文書テーブル７１０の列は、コンテンツアイテムのバージョンに対応してもよい。コンテンツアイテムの名前空間の識別子は、コンテンツアイテム１４１が属するコンテンツアイテムの名前空間を識別する。コロン文字（’；’）若しくは他の文字又は文字列が、コンテンツアイテムの名前空間識別子、コンテンツアイテム識別子、及びコンテンツアイテムのバージョン識別子を互いに区別するように、バイト配列に使用されてもよい。
【０１０６】
文書テーブル７１０は、”トークン”のカラムファミリーを含んでもよい。文書テーブル７１０の各列に関し、トークンのカラムファミリーは、対応するコンテンツアイテムのバージョンからトークナイザコンピュータ１１８によって作成されたトークンのリスト（例えば、７１２）を格納する。図７には示していないが、トークンのカラムファミリーはまた、トークンの種々のコンテンツアイテムのバージョンにおけるトークン属性を格納してもよい。そのようなコンテンツアイテムのバージョンにおけるトークン属性は、例えば、対応するコンテンツアイテムのバージョンのトークンの頻度及びトークンの位置の少なくとも一方を含んでもよい。
【０１０７】
本発明のいくつかの実施形態によれば、文書テーブル７１０に格納されうる対応するコンテンツアイテム１４１のバージョンに対するトークンにおけるいくつかのコンテンツアイテムのバージョンにおけるトークン属性は、以下に記載するもののサブセット又は上位セットを含む：
・対応するトークンがコンテンツアイテム１４１のバージョンのファイル名の一部であるかどうかを示す値、
・対応するトークンがコンテンツアイテム１４１のバージョンにおけるファイル名の拡張子の一部であるかどうかを示す値、
・対応するトークンがコンテンツアイテム１４１のバージョンにおけるファイルパスの一部であるかどうかを示す値、
・対応するトークンがコンテンツアイテム１４１のバージョンにおけるタイトルの一部であるかどうかを示す値、及び／又は、
・対応するトークンがコンテンツアイテム１４１のバージョンにおけるテキストコンテンツの太字又は他の強調部であるかどうかを示す値。
【０１０８】
いくつかの実施形態において、文書テーブル７１０の列に関し、トークンのカラムファミリーは、トークンのリスト（例えば、７１２）と、コンテンツアイテムのバージョンにおけるトークン属性のリストを格納する。トークンのリストは、コンテンツアイテムのバージョンにおけるトークン属性と同じ長さであってもよい。コンテンツアイテムのバージョンにおけるトークン属性のリストの位置ｉの要素は、トークンのリストの位置ｉのトークンに対するコンテンツアイテムのバージョンにおけるトークン属性を含む。或いは、２つのリストの代わりに単一のリストが格納されてもよい。単一のリストの各要素は、トークンと当該トークンのコンテンツアイテムのバージョンにおけるトークン属性とを含むタプルである。
【０１０９】
文書テーブル７１０はまた、”メタデータ”のカラムファミリーを含む。文書テーブル７１０の各列において、メタデータのカラムファミリーは、対応するコンテンツアイテムのバージョンの名づけられたコンテンツアイテムのバージョンにおける属性（例えば、７１３）のセットを格納する。例えば、文書テーブル７１０において、コンテンツアイテムのバージョンにおける属性、名づけられた”リビジョン”は、対応する文書バージョンのコンテンツアイテムのバージョンにおける識別子である。他の文書バージョンにおける属性も可能である。
【０１１０】
本発明のいくつかの実施形態によれば、コンテンツアイテムの“リビジョン”に加えて、文書テーブル６１０に格納されうる対応するコンテンツアイテムのバージョンに対するいくつかのコンテンツアイテムのバージョン属性は、以下のコンテンツアイテムのバージョン属性、又は、サブセット若しくは上位セットを含む：
・コンテンツアイテム１４１のバージョンのサイズ（例えば、バイト）、
・コンテンツアイテム１４１のバージョンの修正日時、
・コンテンツアイテム１４１がストレージプレーン１４０から削除されたかどうかを示す値、
・コンテンツアイテム１４１に対応するコンテンツアイテムがユーザコンピュータ１３０に格納されているかどうかを示す値、
・コンテンツアイテム１４１に対応するコンテンツアイテムがユーザコンピュータ１３０に格納されていれば、ユーザコンピュータ１３０に格納されているコンテンツアイテム１４１に対応するコンテンツアイテムのバージョンがコンテンツアイテム１４１のバージョンに対し古いものであるかどうかを示す値、
・コンテンツアイテム１４１のバージョンを示す値、
・コンテンツアイテム１４１のバージョン全ての利用可能なテキストコンテンツがトークナイザ１１８によってトークン化されているかどうかを示す値、
・コンテンツアイテム１４１がオンラインコンテンツ管理サービス１１０の１以上のユーザの中で共有されている（例えば、オンラインコンテンツ管理サービス１１０の１以上のユーザアカウントと関連付けられている）かどうかを示す値、
・コンテンツアイテム１４１がオンラインコンテンツ管理サービス１１０の１以上のユーザの中で共有されていれば、コンテンツアイテム１４１を共有する１以上のユーザのユーザ識別子（及び／又はユーザアカウント識別子）のリスト、
・コンテンツアイテム１４１がストレージプレーン１４０に格納された日時を示すタイムスタンプ、
・トークナイザ１１８によってコンテンツアイテム１４１のバージョンから抽出されたトークンの数、
・コンテンツアイテム１４１のバージョンのテキスト概要／ダイジェスト、及び／又は、
・コンテンツアイテム１４１のバージョンからのテキスト片。
【０１１１】
インデクサー文書テーブル７２０のスキーマは文書テーブル７１０と同様であってもよい。いくつかの実施形態において、インデクサー文書テーブル７２０の列の列キー（例えば、７２１）は、コンテンツアイテムの名前空間識別子と、コンテンツアイテム識別子を含むが、コンテンツアイテムのバージョン識別子を含まない。それらの実施形態において、インデクサー文書テーブル７２０の各列は、インデックス変更情報生成コンピュータ１１３のインデクサー３２３によって処理されたコンテンツアイテム最後の（最新の）バージョンに対応してもよい。
【０１１２】
図７の例において、例示の列キー７１１及び７２１が提供される。明示的な例を提供するために、例示の列キー７１１及び７２１は、“ａｂｃｄ”のコンテンツアイテムの名前空間識別子及び“ｄ２”のコンテンツアイテム識別子を含む。しかしながら、いくつかの実施形態において、コンテンツアイテムの名前空間識別子は、コンテンツアイテムの名前空間を固有に識別する６４ビットの固定長の値であり、コンテンツアイテムの識別子は、ストレージプレーン１４０のコンテンツアイテム１４１を固有に識別する６４ビットの固定長の値である。
【０１１３】
いくつかの実施形態において、コンテンツアイテムのバージョン識別子は、コンテンツアイテム１４１のバージョンを個別に識別し、コンテンツアイテム１４１の他のバージョンに関してバージョンの順序付けを提供する。例えば、コンテンツアイテム１４１の３つのバージョンに対するコンテンツアイテムのバージョン識別子は、それぞれ値“１”、“２”、“３”であってもよく、バージョン“３”がコンテンツアイテム１４１の最新のバージョンに対応し、バージョン“１”がコンテンツアイテム１４１のより早いバージョンに対応する。
【０１１４】
８．０  ユーザコンピュータでホストのコンテンツアイテムをインデックス化するための処理
次に、図８を参照し、ユーザコンピュータ１３０において、オンラインコンテンツ管理サービス１１０でホストのユーザ１３１のコンテンツアイテム１４１をインデックス化するための処理８００のフローチャートである。処理８００は、例えば、１以上の基本インデックス生成コンピュータ１１１、基本インデックスサーバコンピュータ１１２、インデックス変更情報生成コンピュータ１１３、インデックス変更情報サーバコンピュータ１１４、バックエンド検索クエリプロセッサコンピュータ１１５、フロントエンド検索クエリプロセッサコンピュータ１１６、トークナイザコンピュータ１１８、及び、ユーザコンピュータ１３０の少なくとも１つなどの、１以上のコンピュータによって実行されてもよい。
【０１１５】
処理８００は、ステップ８０１で開始され、ユーザ１３１がストレージプレーン１４０に格納された多数のコンテンツアイテム１４１を有し、ユーザ１３１がオンラインコンテンツ管理サービス１１０で保持するユーザアカウントに関連付けられることを想定する。
【０１１６】
ステップ８０３において、ユーザ１３１がホストのコンテンツアイテム１４１の基本インデックス４２０は、オンラインコンテンツ管理サービス１１０によって生成される。
【０１１７】
ステップ８０５において、生成された基本インデックス４２０は、オンラインコンテンツ管理サービス１１０によってユーザコンピュータ１３０に提供される。この点において、ユーザコンピュータ１３０は、ユーザコンピュータ１３０のローカルインデックス２１０の一部として基本インデックス４２０をインストールしてもよく、ローカルインデック２１０は、ユーザ１３１の検索クエリを処理するためにユーザコンピュータ１３０においてローカルクエリプロセッサによって使用されてもよい。
【０１１８】
ステップ８０７において、オンラインコンテンツ管理サービス１１０は、イベントの発生を待機する。発生しうる他の可能性のあるイベントの中で、特定の興味ある２つの異なるタイプのイベントがある。  
第１のタイプのイベントの発生は、ユーザ１３１がホストのコンテンツアイテム１４１の新たな最新の基本インデックス４２０を生成する時間になることを意味する。第１のイベントの発生で、処理８００は、ステップ８０９からステップ８０３へ進む。  
一方で、第２のタイプのイベントの発生は、ユーザ１３１がホストのコンテンツアイテム１４１の１以上への変更が検出されたことを意味する。第２のタイプのイベントの発生で、処理８００は、ステップ８１１からステップ８１３へ進む。
【０１１９】
ユーザ１３１がホストのコンテンツアイテム１４１の新たな、最新の基本インデックス４２０を生成する時間を示す第１のタイプのイベントが、限定はしないが以下の種々の異なる理由に対してステップ８０７において発生する：
・基本インデックスの再生タイマが経過したため、  
・ユーザ１３１のコンテンツアイテム１４１の最後の基本インデックス４２０が生成されてから、ユーザ１３１のコンテンツアイテム１４１への閾値数の変更行われたため、
・ユーザ１３１のコンテンツアイテム１４１への変更の閾値変更率を超えたため。
【０１２０】
ステップ８１３において、ユーザ１３１がホストのコンテンツアイテム１４１への１以上の変更が検出されたことを示す第２タイプのイベントが発生すると、その後、オンラインコンテンツ管理サービス１１０は、それぞれ検出された変更に対するインデックス変更情報６２２を生成し、生成したインデックス変更情報６２２を、対応するジャーナルタイムスタンプ６１０に関連してインデックス変更情報ジャーナル６１０に格納する。
【０１２１】
ステップ８１５において、オンラインコンテンツ管理サービス１１０は、通信ネットワーク１２０を介してインデックス変更情報ジャーナル６１０からユーザコンピュータ１３０へ生成したインデックス変更情報６２２を提供する。ユーザコンピュータ１３０へ提供すべくジャーナル６１０のインデックス変更情報６２２を識別するために、オンラインコンテンツ管理サービス１１０は、ユーザコンピュータ１３０におけるローカルインデックスタイムスタンプと、ユーザコンピュータ１３０に関連付けられた１以上のコンテンツアイテムの名前空間識別子とを使用してもよい。ユーザコンピュータ１３０におけるローカルインデックスタイムスタンプと、１以上のコンテンツアイテムの名前空間識別子に基づき、オンラインコンテンツ管理サービス１１０は、（１）ユーザコンピュータ１３０におけるローカルインデックスタイムスタンプより最近のジャーナルタイムスタンプ６１０を有し、（２）ユーザコンピュータ１３０に関連付けられた１以上のコンテンツアイテムの名前空間識別子と一致するコンテンツアイテムの名前空間識別子６２３を有する、ユーザコンピュータ１３０へ提供するためにジャーナル６１０のインデックス変更情報６２２を識別することができる。ユーザコンピュータ１３０に関連付けられたローカルインデックスのタイムスタンプは、ユーザコンピュータ１３０のローカルインデックス２１０がストレージプレーン１４０のユーザ１３１がホストのコンテンツアイテム１４１への変更に対する日付までの時点を反映する。ユーザコンピュータ１３０に関連付けられた１以上の名前空間識別子のそれぞれは、ユーザ１３１がホストのコンテンツアイテム１４１に属するコンテンツアイテムの名前空間を識別する。
【０１２２】
処理８００は、ユーザ１３１がホストのコンテンツアイテム１４１の検索と、ユーザコンピュータ１３０によって受信される基本インデックス４２０とインデックス変更情報６２２とに基づいて構成されるユーザコンピュータ１３０のローカルインデックス２１０を用いてユーザコンピュータ１３０でのそれらへの変更とを実行することによって、ユーザ１３１がホストのコンテンツアイテム１４１を検索するためにユーザコンピュータ１３０を使用することをユーザ１３１に対して可能にする。処理８００によって提供される利点は、ユーザ１３１がホストのコンテンツアイテム１４１をユーザ１３１が検索し、ユーザコンピュータ１３０が検索のタイミングでオンラインコンテンツ管理サービス１１０へ接続されていない場合であっても、それらへ変更することができるということである。処理８００の他の利点は、ローカルインデックス２１０が通信ネットワーク１２０を介して検索クエリを送信する必要がなく、当該応答が識別され、かつ、ユーザ１３１へ提供されることを許容するため、ユーザ１３１の検索クエリへの応答がより素早く、又は、オフラインのネットワーク環境でユーザ１３１へ提供されることである。
【０１２３】
８．０  ユーザコンピュータにおいてホストのコンテンツアイテムを検索するための処理
次に、図９を参照して、本発明のいくつかの実施形態に係るユーザコンピュータ１３０でのユーザ１３１がホストのコンテンツアイテム１４１を検索するための処理９００のフローチャートを説明する。本例において、処理９００は、ユーザコンピュータ１３０によって実行される。
【０１２４】
処理はステップ９０１から開始される。ステップ９０１において、ユーザコンピュータ１３０は、通信ネットワーク１２０へ通信可能に接続されてもよく、或いは、接続されなくともよい。言い換えれば、ユーザコンピュータ１３０は、オフラインであってもよく（例えば、通信ネットワーク１２０へ通信可能に接続されていなくてもよく）、又は、オンラインであってもよい（例えば、通信ネットワーク１２０へ通信可能に接続されてもよい）。
【０１２５】
ステップ９０３において、ユーザコンピュータ１３０は、ユーザ１３１から検索クエリを受信してもよい。例えば、ユーザ１３１が、例えば物理的なキーボード又はタッチ感知式面（タッチスクリーンディスプレイ）などのユーザ入力機構を用いて、ユーザコンピュータ１３０で提示されるグラフィカルユーザインタフェースへ検索式を入力してもよい。ユーザコンピュータ１３０は、ユーザ１３１が例えば、“提示（ｓｕｂｍｉｔ）”、“送信”、又は“検索”ボタンなどのグラフィカルユーザインタフェースの要素を起動することに応じて、ユーザ１３１から検索クエリを受信してもよい。
【０１２６】
ステップ９０５において、ユーザコンピュータ１３０油浸した検索クエリでローカルインデックス２１０へアクセスする。選択的に、ユーザコンピュータ１３０がオンラインの場合、その後ステップ９０２でユーザコンピュータ１３０はまた、通信ネットワーク１２０を介してオンラインコンテンツ管理サービス１１０へ検索クエリを送信する。例えば、ユーザコンピュータ１３０は、通信ネットワーク１２０を介してフロントエンドクエリプロセッサコンピュータ１１６へ検索クエリを送信する。検索クエリは、例えば、ハイパーテキストトランスファープロトコル（ＨＴＴＰ）又はセキュアハイパーテキストトランスファープロトコル（ＨＴＴＰＳ）ネットワーキングプロトコルに従って検索リクエストで送信されてもよい。
【０１２７】
ステップ９０７において、ユーザコンピュータ１３０は、ローカルインデックス２１０で、検索クエリを満足する１以上のローカル結果を識別する。そのようなローカル結果のそれぞれは、ユーザ１３１がホストのコンテンツアイテム１４１の１つに対応し、ユーザコンピュータ１３０に格納されてもよいし格納されなくてもよく、ユーザコンピュータ１３０に格納される場合は、ストレージプレーン１４０に格納されるコンテンツアイテム１４１の最近のバージョンよりも古いコンテンツアイテム１４１のバージョンであってもよい。それぞれのそのようなローカル結果は、クエリ独立型又はクエリ依存型のランキング関数に従って関連性について評価されてもよい。
【０１２８】
ステップ９０９において、ユーザコンピュータ１３０のローカルクエリプロセッサは、それらの関連性のスコアに従ってローカルインデックス２１０で識別された１以上のローカル結果をランク付けする。
【０１２９】
ステップ９１１において、ユーザコンピュータ１３０は、ユーザコンピュータ１３１において提示されるグラフィカルユーザインタフェースの１以上のランク付けされたローカル結果を表示する。各表示されたローカル結果は、検索クエリの概要として表示されうる。
【０１３０】
ステップ９０５において検索クエリがオンラインコンテンツ管理サービス１１０へ送信された場合、その後ステップ９１３において、ユーザコンピュータ１３０は、オンラインコンテンツ管理サービス１１０から検索クエリへの１以上のリモートでの結果を受信する。多くの場合、通信ネットワーク１２０を介したネットワークの待ち時間のため、ユーザコンピュータ１３０は、ステップ９１３において２ン核の結果を受信する前に又は受信する間、ステップ９１１においてローカル結果を表示することができる。ステップ９１３において受信した各リモート結果は、ユーザ１３１がホストのコンテンツアイテム１４１の１つに対応する。それぞれのそのようなリモート結果は、クエリ独立型又はクエリ依存型のランキング関数に従って関連性について評価されてもよい。さらに、リモート結果は、オンラインコンテンツ管理サービス１１０によって計算されるように、それらの関連性の順にランク付けされたステップ９１３で受信されてもよい。リモート結果を評価するためにオンラインコンテンツ管理サービス１１０によって使用されるランキング関数は、ローカル結果を評価するためにユーザコンピュータ１３０によって使用されるランキング関数と同じであってもよい。この方法において、リモート結果についてのオンラインコンテンツ管理サービス１１０によって計算された関連性のスコアは、ローカル結果についてのユーザコンピュータ１３０によって計算された関連性のスコアと比較可能である。
【０１３１】
ステップ９１５において、ユーザコンピュータ１３０は、現在表示しているローカル結果に対応しないコンテンツアイテム１４１に対応する任意のそのようなリモート結果があれば、現在表示されているローカル結果の最も悪い（例えば、最低の）スコアより良い（例えば、より高い）関連性のスコアを有する、ステップ９１３において受信した１以上のリモート結果を表示するようにグラフィカルユーザインタフェースを更新する。
【０１３２】
処理９００は、ユーザ１３１がホストのコンテンツアイテム１４１の検索及びローカルインデックスを用いてユーザコンピュータ１３０でのそれらへの変更を実行することによって、ユーザ１３１がホストのコンテンツアイテム１４１を検索するためにユーザ１３１がユーザコンピュータ１３０を使用することを可能にする処理９００によって提供される利点は、ユーザコンピュータ１３０がオンラインでない場合であっても、ユーザ１３１がユーザ１３１がホストのコンテンツアイテム１４１を検索し、それらへ変更を行うことができるということである。処理９００の他の利点は、ユーザコンピュータ１３０がオンラインであれば、ローカルインデックス２１０が識別されるべき、かつ、ユーザ１３１へ提供される一次的な応答を通信ネットワーク１２０を介して検索クエリを送信する必要がないため、ユーザ１３１の検索クエリに対する応答がユーザ１３１に対して素早く提供されうることである。その後まもなく、一次的な応答の表示は、検索クエリに対してより大局的でとり最新の応答を提供するためにオンラインコンテンツ管理サービス１１０から受信されるリモート結果の表示で更新されうる。
【０１３３】
１０．０  基本コンピュータハードウェア
本発明は、例えば、１以上の基本インデックス生成コンピュータ１１１、基本インデックスサーバコンピュータ１１２、インデックス変更情報生成コンピュータ１１３、インデックス変更情報サーバコンピュータ１１４、バックエンド検索クエリプロセッサコンピュータ１１５、フロントエンド検索クエリプロセッサコンピュータ１１６、トークナイザコンピュータ１１８、及び、ユーザコンピュータ１３０の少なくとも１つなどの、１以上のコンピュータ上で実施されてもよい。そのようなコンピュータは、限定はしないが、クライアントコンピュータ、サーバコンピュータ、ネットワークデバイス、モバイルデバイス、セルラー電話、スマートフォン、ラップトップコンピュータ、デスクトップコンピュータ、ワークステーションコンピュータ、携帯情報端末、ブレードサーバコンピュータ、メインフレームコンピュータ、及び他のタイプのコンピュータを含む種々の形式で実装されてもよい。
【０１３４】
以下で説明する、それらの接続、関係、及び機能を含むコンピュータコンポーネントは、本発明の実施形態の一例を意味し、当該実施形態を限定する意図はない。本発明を実施するのに適切な他のコンピュータは、異なる接続関係及び機能を有するコンポーネントを含む異なるコンポーネントを含んでもよい。
【０１３５】
次に、図１０を参照し、本発明の種々の実施形態を実施するのに適した基本コンピュータ１０００の基本ブロック図について説明する。コンピュータ１０００は、ハードウェアバス１００２又はメインメモリ１００６をアドレス解決し、かつ、種々のコンピュータ１０００のコンポーネント間及びコンポーネントの中でデータを転送するための他の通信機構を含む。コンピュータ１０００はまた、情報を処理するためのバス１００２と結合したハードウェアプロセッサ１００４を含む。ハードウェアプロセッサ１００４は、一般用途マイクロプロセッサ、システム・オン・チップ（ＳｏＣ）、又は説明した技術を実施するのに適した他のプロセッサであってもよい。
【０１３６】
ランダムアクセスメモリ（ＲＡＭ）又は他の動的ストレージデバイスなどのメインメモリ１００６は、情報やプロセッサ１００４によって実行される指示を格納するためにバス１００２に結合される。メインメモリ１００６はまた、プロセッサ１００４によって実行されるべき指示の実行中に一時変数又は他の中間情報を格納するために使用されてもよい。プロセッサ１００４へアクセス可能な一時的でない記憶媒体に格納される場合、そのような指示は、コンピュータデバイス１０００を指示に特定される動作を実行するようにカスタマイズされた特定用途のコンピューティングデバイスへ変換する。
【０１３７】
コンピュータ１０００はさらに、静的情報及びプロセッサ１００４への指示を格納するためにバス１００２に結合された読み取り専用メモリ（ＲＯＭ）１００８又は他の静的ストレージデバイスを含む。
【０１３８】
大容量ストレージデバイス１０１０は、磁性式メモリ、光学式メモリ、半導体メモリ、光磁気メモリ、フラッシュメモリ、又は大容量ストレージ技術を利用可能な他のものなどの固定媒体若しくは取り外し可能な媒体に、情報及び命令を永続的に格納するためのバス１００２に結合される。大容量ストレージデバイスは、ネットワーク上で共有され、或いは、専用の大容量ストレージであってもよい。通常、大容量ストレージデバイス１０１０（例えば、デバイスに対するメインハードディスク）は、オペレーティングシステム、ユーザアプリケーションプログラム、ドライバ、他のサポートファイル、及び全ての種類の他のデータファイルを含む、コンピュータデバイスの動作を方向付けるためのプログラム本体とデータを格納する。
【０１３９】
コンピュータ１０００は、バス１００２を介して、情報をコンピュータユーザに表示するための液晶ディスプレイ（ＬＣＤ）又は他の電子的な視覚ディスプレイなどのディスプレイ１０１２へ結合されうる。ディスプレイ１０１２はまた、タッチジェスチャ（例えば、指又はスタイラス）入力をプロセッサ１００４へ通知するためのタッチ感知式のディスプレイであってもよい。
【０１４０】
アルファベットキー及び他のキーを含む入力デバイス１０１４は、情報及びコマンドの選択をプロセッサ１００４へ通知するためのバス１００２へ結合される。
【０１４１】
ユーザ入力デバイスの他のタイプは、プロセッサ１００４へ方向情報やコマンドの選択を通知し、ディスプレイ１０１２上でのカーソルの移動を制御するためのマウス、トラックボール、又はカーソル方向キーなどのカーソル制御部１０１６である。当該入力デバイスは、通常、デバイスが平面上の位置を特定することを許容する第１軸（例えば、ｘ）と第２軸（例えば、ｙ）の二軸の２つの自由度を有する。
【０１４２】
コンピュータ１０００は、カスタマイズされた配線論理、１以上の特定用途向け集積回路（ＡＳＩＣ）若しくは１以上のフィールドプログラマブルアレイ（ＦＰＧＡ）、ファームウェア、又は、コンピューティングデバイスと協働してコンピュータ１０００を特定用途向けの機械とさせる若しくはプログラムするプログラム論理を用いて、ここで説明される方法を実行することができる。
【０１４３】
ここで説明する方法は、メインメモリ１００６に含まれる１以上の指示の１以上のシーケンスを実行するプロセッサ１００４に応じて、コンピュータ１０００によって実行されてもよい。そのような指示は、ストレージデバイス１０１０などの他のストレージ媒体からメインメモリ１００６へと読み込まれてもよい。メインメモリ１００６に含まれる指示のシーケンスの実行は、プロセッサ１００４にここで説明する処理ステップを実行させる。代替の実施形態において、配線回路は、ソフトウェア命令の代わりに、又は、連結して使用されてもよい。
【０１４４】
ここで使用される用語“記憶媒体”は、コンピューティングデバイスを特定の様式で動作させるデータ及び命令の少なくとも１つを格納する非一時的な媒体として参照される。そのような記憶媒体は、不揮発性の媒体及び揮発性の媒体の少なくとも１つを備えてもよい。不揮発性媒体は、ストレージデバイス１０１０などの、例えば、光学ディスク、磁性ディスク、又は半導体ドライバを含む。揮発性媒体はメインメモリ１００６などの動的メモリを含む。記憶媒体の共通の形式は、例えば、フロッピーディスク、フレキシブル・ディスク、ハードディスク、半導体ドライバ、磁性テープ若しくは任意の他の磁性データ記憶媒体、ＣＤ−ＲＯＭ、任意の他の光学データ記憶媒体、ホールのパターン（空孔）を複数有する任意の物理的な媒体、ＲＡＭ、ＰＲＯＭ及びＥＰＲＯＭ、フラッシュＥＰＲＯＭ、ＮＶＲＡＭ、任意の他のメモリチップ、又はカートリッジを含む。
【０１４５】
記憶媒体は、送信媒体とは区別されるものの、当該送信媒体と連結して使用されてもよい。送信媒体は、記憶媒体間で情報を転送することに使用されてもよい。例えば、送信媒体は、バス１００２を備える有線を含む同軸ケーブル、銅線、及び光ファイバーを含む。送信媒体はまた、電波及び赤外データ通信中に生成されるものなどの、音波又は光波の形式をとることもできる。
【０１４６】
媒体の種々の形態は、実行するプロセッサ１００４への１以上の命令の１以上のシーケンスを実行することに用いられてもよい。例えば、命令は、リモートコンピュータの磁性ディスク又は半導体ドライバ上でまず実行されうる。リモートコンピュータは、その動的メモリへ命令をロードし、モデムを用いて電話線を介して命令を送信することができる。コンピュータ１０００固有のモデムが電話線でデータを受信し、当該データを赤外信号へ変換するために赤外送信機を使用することができる。赤外検出器は、赤外信号で実行されるデータを受信することができ、適切な回路はバス１００２上にデータを設置することができる。バス１００２は、プロセッサ１００４が命令を取り出して実行するためのデータをメインメモリ１００６へ伝達する。メインメモリ１００６によって受信される本命令は、プロセッサ１００４によって実行される前又は実行された後の何れかにストレージデバイス１０１０に選択的に格納されうる。
【０１４７】
コンピュータ１０００はまた、バス１００２へ結合される通信インタフェース１０１８を含み。通信インタフェース１０１８は、ローカルネットワーク１０２２（例えば、イーサネットネットワーク、無線ローカルエリアネットワーク、セルラー電話ネットワーク、Ｂｌｕｅｔｏｏｔｈ無線ネットワーク、又は同様のもの）へ接続された、有線又は無線のネットワークリンク１０２０へ結合する２つの方法のデータ通信を提供する。通信インタフェース１０１８は、種々のタイプの情報を表すデジタルデータストリームを伝達する電気信号、電磁信号、又は光信号を送受信する。例えば、通信インタフェース１０１８は、有線のネットワークインタフェースカード、一体化された無線アンテナを有する無線ネットワークインタフェースカード、又はモデム（例えば、ＩＳＤＮ、ＤＳＬ、又はケーブルモデム）であってもよい。
【０１４８】
ネットワークリンク１０２０は、通常、１以上のネットワークを通じて、他のデータデバイスへのデータ通信を提供する。例えば、ネットワークリンク１０２０は、ホストコンピュータ１０２４への、又は、インターネットサービスプロバイダ（ＩＳＰ）１０２６によって操作されるデータ機器へのローカルネットワーク１０２２を通じた接続を提供してもよい。ＩＳＰ１０２６は順に、”Ｉｎｔｅｒｎｅｔ”１０２８として通常参照されるワールド・ワイド・パケットデータ通信ネットワークを通じてデータ通信サービスを提供する。ローカルネットワーク１０２２及びＩｎｔｅｒｎｅｔ１０２８は、デジタルデータストリームを伝達する電気信号、磁性信号、又は光信号を使用する。コンピュータ１０００への及びコンピュータ１０００からのデジタルデータを伝達する、種々のネットワークを通じた信号、及び、ネットワークリンク１０２０上の、及び通信インタフェース１０１８を通じた信号は、送信媒体の例示の形式である。
【０１４９】
コンピュータ１０００は、ローカルネットワーク１０２２、インターネット１０２８、ＩＳＰ１０２６、ネットワークリンク１０２０、及びネットワークインタフェース１０１８を通じて、プログラムコードを含む、メッセージを送信し、データを受信することができる。インターネットの一例において、サーバコンピュータ１０３０は、インターネット１０２８、ＩＳＰ１０２６、ローカルエリアネットワーク１０２２、及び通信インタフェース１０１８を通じて、アプリケーションプログラムに対して要求されるコードを送信するかもしれない。
【０１５０】
受信コードは、受信した際にプロセッサ１００４によって実行されてもよく、及び、後の実行のためにストレージデバイス１０１０又は他の不揮発性のストレージに格納されてもよく、或いは、そのいずれもが行われてもよい。
【０１５１】
１１．０  基本ソフトウェアシステム
次に、図１１を参照して、本発明のいくつかの実施形態に従って、コンピュータ１０００の動作を制御するための基本ソフトウェアシステム１１００のブロック図について説明する。図示するように、コンピュータソフトウェアシステム１１００は、コンピューティングデバイス１０００の動作を方向付けるために提供される。システムメモリ（ＲＡＭ）１００６及び固定ストレージ（例えば、ハードディスク）１０１０に格納されるソフトウェアシステム１１００はカーネル又はオペレーティングシステム（ＯＳ）１１１０を含む。ＯＳ１１１０は、プロセス、メモリ配置、ファイル入力及び出力（Ｉ／Ｏ）、及びデバイスＩ／Ｏの実行を管理することを含む、コンピュータ動作のローレベルの態様を管理する。１以上のアプリケーションプログラム１１０２（例えば、１１０２Ａ、１１０２Ｂ、１１０２Ｃ・・・１１０２Ｎ）は、システム１１００による実行のために”ロードされ”うる（例えば、固定ストレージ１０１０からメモリ１００６へ転送される）。いくつかの例において、アプリケーションプログラム１１０２又はデバイス１０００上での使用を意図した他のソフトウェアはまた、ダウンロード可能で、コンピュータで実行可能な命令のセットとして、例えば、インターネット上の記憶場所から（例えば、ウェブサーバから）ダウンロード及びインストールするために格納されうる。
【０１５２】
ソフトウェアシステム１１００は、グラフィカルな（例えば、”ポイント・アンド・クリック”又は”タッチジェスチャ”）形式で、ユーザコマンド及びデータを受信するためのグラフィカルユーザインタフェース（ＧＵＩ）１１１５を含んでもよい。これらの入力は順に、オペレーティングシステム１１１０及びアプリケーションプログラム１１０２の少なくとも１つからの命令に従ってシステム１１００によって作動される。ＧＵＩ１１１５はまた、ユーザが追加の入力を供給したり、又は、セッションを終了させたりする（例えば、ログオフする）とすぐに、ＯＳ１１１０及びアプリケーションプログラム１１０２からの動作結果を表示するように務める。
【０１５３】
ＯＳ１１１０は、コンピュータ１０００のハードウェア（例えば、プロセッサ１００４）上で直接的に実行することができる。代替的に、ハイパーバイザ又は仮想マシンモニタ（ＶＭＭ）１１３０は、ハードウェア及びＯＳ１１１０の間に割り込んで設けられてもよい。この構成において、ＶＭＭ１１３０はコンピュータ１０００のＯＳ１１１０及びハードウェアの間のソフトウェア”クッション”又は仮想レイヤとして作動する。
【０１５４】
ＶＭＭ１１３０が存在すれば、仮想マシンインスタンス（例えばゲストマシン）を作成して実行する。各ゲストマシンは、ＯＳ１１１０などの”ゲスト”オペレーティングシステムと、ゲストオペレーティングシステム上で実行するように設計された、アプリケーションプログラム１１０２などの１以上のアプリケーションプログラムを含む。ＶＭＭ１１３０は、仮想オペレーティングプラットフォームを有するゲストオペレーティングシステムを提示し、ゲストオペレーティングシステムの実行を管理する。いくつかの例において、ＶＭＭ１１３０は、コンピュータ１０００のハードウェア上直接実行されているかのように、ゲストオペレーティングシステムを実行することを許容する。これらの例において、ハードウェア上で直接的に実行するように構成されたゲストオペレーティングシステムの同一のバージョンはまた、修正又は再構成なしにＶＭＭ１１３０上で実行されうる。言い換えれば、ＶＭＭ１１３０は、いくつかの例において、ゲストオペレーティングシステムへ完全なハードウェアと、ＣＰＵ仮想化を提供してもよい。他の例において、ゲストオペレーティングシステムは、効率的にＶＭＭ１１３０上で実行されるように特別に設計されるか、又は、構成されてもよい。それらの例において、ゲストオペレーティングシステムは、仮想マシンモニタ１１３０上で実行する”気付かれるもの”であってもよい。言い換えれば、ＶＭＭ１１３０は、いくつかの例において、ゲストオペレーティングシステムへ準仮想化を提供することができる。
【０１５５】
上述のコンピュータハードウェア及びソフトウェアは、本発明の種々の実施形態を実施するために採用されうる基本的な下層のコンピュータコンポーネントを示す目的で提示される。しかしながら、本発明は、任意の特定のコンピューティング環境又はコンピュータ構成に限定されない。代わりに、本発明の実施形態は、システムアーキテクチャ、又は、ここで説明したような実施形態をサポートすることが可能な処理環境の任意のタイプで実装されてもよい。
【０１５６】
本発明について例示の実施形態とともに前述したが、これは本発明を限定することを意図したものではない。実際には、前述は、本発明の精神及び範囲の中で説明していない全ての変形及び代替の構成をカバーするように意図される。
【要約】  本方法は、ユーザがオンラインコンテンツ管理サービスによって提供される、ユーザのパーソナルコンテンツアイテムを検索するためにユーザコンピュータを使用することを可能にするシステム及び方法に関し、オンラインコンテンツ管理サービスは、当該サービスによって提供されるユーザのコンテンツアイテムの基本インデックスを生成するように構成されるインデクサーコンピュータと、ユーザコンピュータへネットワークを介して、生成した基本インデックスを送信するように構成される基本インデックスサーバコンピュータと、ユーザがホストのコンテンツアイテムへの実質的な変更に対するインデックス変更情報を生成するように構成されるインデックス変更情報生成コンピュータと、ネットワークを介してユーザコンピュータへ生成したインデックス変更情報を送信するように構成されるインデックス変更情報サーバコンピュータとを備える。一態様において、ユーザがホストのコンテンツアイテムの検索と、ユーザコンピュータによって受信した基本インデックス及びインデックス変更情報に基づいて行われるユーザコンピュータへのインデックスローカルを用いて、ユーザコンピュータで行われるべきそれらへの変更を可能とする。【図２】
0005947988.tif 000002
【図３】
0005947988.tif 000003
【図４】
0005947988.tif 000004
【図５Ａ】
0005947988.tif 000005
【図５Ｂ】
0005947988.tif 000006
【図６】
0005947988.tif 000007
【図７】
0005947988.tif 000008
【図８】
0005947988.tif 000009
【図９】
0005947988.tif 000010
【図１０】
0005947988.tif 000011
【図１１】
0005947988.tif 000012
【図１】
0005947988.tif 000013