(57)【特許請求の範囲】
【請求項１】
コンピュータが実行する方法であって、
ユーザコンピュータにおいて、検索クエリを取得することと、
前記検索クエリを使用して、前記ユーザコンピュータのローカルインデックスにおいて、前記検索クエリを満足する、オンラインコンテンツ管理サービスにおいてホストされている１以上のコンテンツアイテムを識別することと、
前記ユーザコンピュータのグラフィカルユーザインタフェースに、前記ローカルインデックスにおいて識別された前記検索クエリを満足する前記１以上のコンテンツアイテムの各々に関する検索回答サマリを表示することと、
を備え、
前記ローカルインデックスにおいて識別された前記１以上のコンテンツアイテムのうちの特定のコンテンツアイテムのあるバージョンが、前記検索クエリが取得された時に前記ユーザコンピュータに格納されており、
前記特定のコンテンツアイテムに関する前記検索回答サマリは、前記ユーザコンピュータに格納されている前記特定のコンテンツアイテムの前記バージョンが、前記オンラインコンテンツ管理サービスによりホストされている前記特定のコンテンツアイテムのバージョンとは異なることを示す、
コンピュータが実行する方法。
【請求項２】
請求項１に記載のコンピュータが実行する方法であって、前記ローカルインデックスにおいて識別された前記１以上のコンテンツアイテムのうちの少なくとも１つは、前記検索クエリが取得された時には前記ユーザコンピュータに格納されておらず、前記少なくとも１つのコンテンツアイテムに関する前記検索回答サマリは、前記少なくとも１つのコンテンツアイテムが前記ユーザコンピュータに格納されていないことを示す、
コンピュータが実行する方法。
【請求項３】
請求項１に記載のコンピュータが実行する方法であって、前記ローカルインデックスにおいて識別された前記１以上のコンテンツアイテムのうちの少なくとも１つは、前記検索クエリが取得された時に前記ユーザコンピュータに格納されており、前記少なくとも１つのコンテンツアイテムに関する前記検索回答サマリは、前記少なくとも１つのコンテンツアイテムが前記ユーザコンピュータに格納されていることを示す、
コンピュータが実行する方法。
【請求項４】
請求項１に記載のコンピュータが実行する方法であって、前記ユーザコンピュータは、通信ネットワークに接続されており、前記方法は更に、
前記通信ネットワークを介して前記オンラインコンテンツ管理サービスへ前記検索クエリを送信することと、
前記通信ネットワークを介して前記オンラインコンテンツ管理サービスから前記検索クエリに対する１以上のリモート回答を受信することであって、前記１以上のリモート回答は、前記オンラインコンテンツ管理サービスにより前記検索クエリを満足するものとして識別された１以上のリモート回答コンテンツアイテムに対応する、ことと、
前記ユーザコンピュータにおいて、前記オンラインコンテンツ管理サービスにより前記検索クエリを満足するものとして識別された前記１以上のリモート回答コンテンツアイテムのうちの少なくとも１つに関する検索回答サマリを表示するように、前記グラフィカルユーザインタフェースを更新することと、
を備える、コンピュータが実行する方法。
【請求項５】
請求項４に記載のコンピュータが実行する方法であって、前記オンラインコンテンツ管理サービスにより前記検索クエリを満足するものとして識別された前記１以上のリモート回答コンテンツアイテムのうちの前記少なくとも１つのリモート回答コンテンツアイテムは、前記検索クエリが取得された時には前記ユーザコンピュータに格納されておらず、前記少なくとも１つのリモート回答コンテンツアイテムに関する前記検索回答サマリは、前記少なくとも１つのリモート回答コンテンツアイテムが前記ユーザコンピュータに格納されていないことを示す、
コンピュータが実行する方法。
【請求項６】
請求項４に記載のコンピュータが実行する方法であって、前記オンラインコンテンツ管理サービスにより前記検索クエリを満足するものとして識別された前記１以上のリモート回答コンテンツアイテムのうちの前記少なくとも１つのリモート回答コンテンツアイテムは、前記検索クエリが取得された時に前記ユーザコンピュータに格納されており、前記少なくとも１つのリモート回答コンテンツアイテムに関する前記検索回答サマリは、前記少なくとも１つのリモート回答コンテンツアイテムが前記ユーザコンピュータに格納されていることを示す、
コンピュータが実行する方法。
【請求項７】
請求項４に記載のコンピュータが実行する方法であって、前記オンラインコンテンツ管理サービスにより前記検索クエリを満足するものとして識別された前記１以上のリモート回答コンテンツアイテムのうちの前記少なくとも１つのリモート回答コンテンツアイテムのうちのあるバージョンが、前記検索クエリが取得された時に前記ユーザコンピュータに格納されており、前記少なくとも１つのリモート回答コンテンツアイテムに関する前記検索回答サマリは、前記ユーザコンピュータに格納されている前記少なくとも１つのリモート回答コンテンツアイテムの前記バージョンが、前記オンラインコンテンツ管理サービスによりホストされている前記少なくとも１つのリモート回答コンテンツアイテムのバージョンとは異なることを示す、
コンピュータが実行する方法。
【請求項８】
請求項４に記載のコンピュータが実行する方法であって、更に、前記ユーザコンピュータの前記グラフィカルユーザインタフェースに表示する、前記オンラインコンテンツ管理サービスにより前記検索クエリを満足するものとして識別された前記１以上のリモート回答コンテンツアイテムのうちの前記少なくとも１つのリモート回答コンテンツアイテムを、前記オンラインコンテンツ管理サービスにより前記少なくとも１つのリモート回答コンテンツアイテムについて算出された関連性スコアに基づいて、選択すること
を備える、コンピュータが実行する方法。
【請求項９】
請求項４に記載のコンピュータが実行する方法であって、前記オンラインコンテンツ管理サービスにより前記検索クエリを満足するものとして識別された前記１以上のリモート回答コンテンツアイテムは、前記ユーザコンピュータからリモートにあるインデックスを用いて、前記オンラインコンテンツ管理サービスにより前記検索クエリを満足するものとして識別される、
コンピュータが実行する方法。
【請求項１０】
請求項４に記載のコンピュータが実行する方法であって、更に、前記１以上のリモート回答のうちのリモート回答が前記ユーザコンピュータにおいて受信される前に、前記ローカルインデックスにおいて識別された前記１以上のコンテンツアイテムのうちの少なくとも１つのコンテンツアイテムに関する検索回答サマリを、前記ユーザコンピュータの前記グラフィカルユーザインタフェースに表示すること
を備える、コンピュータが実行する方法。
【請求項１１】
請求項４に記載のコンピュータが実行する方法であって、更に、
前記通信ネットワークを介して、前記ユーザコンピュータの前記ローカルインデックスを、前記オンラインコンテンツ管理サービスにより運営される１以上のサーバのリモートインデックスと同期することと、
前記ユーザコンピュータの前記ローカルインデックスの前記リモートインデックスとの前記同期の後に、前記オンラインコンテンツ管理サービスによりホストされている前記１以上のリモート回答コンテンツアイテムに対応する１以上のトークンを、前記ユーザコンピュータの前記ローカルインデックスに格納することと、
を備える、コンピュータが実行する方法。
【請求項１２】
請求項１に記載のコンピュータが実行する方法であって、
前記ユーザコンピュータは、通信ネットワークに接続されており、
前記方法は更に、
前記通信ネットワークを介して前記オンラインコンテンツ管理サービスへ前記検索クエリを送信することと、
前記通信ネットワークを介して前記オンラインコンテンツ管理サービスから前記検索クエリに対する１以上のリモート回答を受信することであって、前記１以上のリモート回答は、前記オンラインコンテンツ管理サービスにより前記検索クエリを満足するものとして識別された１以上のリモート回答コンテンツアイテムに対応する、ことと、
前記ユーザコンピュータにおいて、前記オンラインコンテンツ管理サービスにより前記検索クエリを満足するものとして識別された前記１以上のリモート回答コンテンツアイテムのうちの少なくとも１つに関する検索回答サマリを表示するように、前記グラフィカルユーザインタフェースを更新することと、を備え、
前記更新の後に、前記ユーザコンピュータの前記グラフィカルユーザインタフェースが、少なくとも、前記ローカルインデックスにおいて識別された前記検索クエリを満足する前記１以上のコンテンツアイテムの各々に関する前記検索回答サマリ、及び前記オンラインコンテンツ管理サービスにより前記検索クエリを満足するものとして識別された前記１以上のリモート回答コンテンツアイテムのうちの前記少なくとも１つに関する前記検索回答サマリの両方を、表示する、
コンピュータが実行する方法。
【請求項１３】
請求項１に記載のコンピュータが実行する方法であって、前記１以上のコンテンツアイテムのうちの少なくとも１つのコンテンツアイテムに関する検索回答サマリは、前記少なくとも１つのコンテンツアイテムが前記オンラインコンテンツ管理サービスで保持される複数のユーザアカウントの間で共有されているか否かのインジケーションを含む、
コンピュータが実行する方法。
【請求項１４】
１以上のプロセッサと、記録媒体と、前記記録媒体に格納され前記１以上のプロセッサにより実行されるように構成された１以上のプログラムと、を備えるコンピューティングシステムであって、前記１以上のプログラムは、請求項１〜１３のいずれか１項に記載の方法を実行するように構成された命令を含む、
コンピューティングシステム。
【請求項１５】
請求項１〜１３のいずれか１項に記載の方法を実行するように構成された命令を含む１以上のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、パーソナルコンテンツアイテム検索システム及び方法に関する。より具体的には、本発明の実施形態は、オンラインコンテンツ管理サービスによりホストされるユーザのパーソナルコンテンツアイテムを、ユーザのユーザコンピュータにおいてローカルにインデックスすることにより、ユーザがユーザコンピュータを用いてユーザのホストされたコンテンツアイテムを検索することを可能にする、パーソナルコンテンツアイテム検索システム及び方法に関する。
【背景技術】
【０００２】
コンピュータは、大量の情報の中から関連情報を検索するための、極めて強力なツールである。インデックスは、コンピュータを用いて大きな情報集合(corpus)の中から関心情報を効率的に識別するための、一般的なメカニズムである。典型的なインデックスは、キーワード抽出元の情報文書に対する、キーワードの整理されたマッピングである。例として、世界のパブリックにアクセス可能なウェブページのインデックスは、ウェブページ中の単語を、その単語を含んだウェブページのサブセットへとマッピングする。
【０００３】
実際の物理的インデックス自体（例えば、１以上のコンピュータに格納されたインデックスデータ）とシステムのユーザとの間には、ソフトウェアクッション又はレイヤとして検索システムが一般的に提供される。基本的に、検索システムは、背後にあるインデックスの詳細について、ユーザが知ることのないように、又はユーザが気にかけることすらないようにする。一般的に、ユーザからのインデックスにおける情報要求は全て、検索システムによって処理される。例えば、ユーザの情報要求に関連する文書は、背後にあるインデックスの実装に関するユーザの知識なしに全て、検索システムによりインデックスを用いて識別されうる。このように、検索システムは、情報がどのようにインデックスされているかに関する考慮なしに、関連情報に対するユーザの迅速なアクセスを提供する。世界のパブリックにアクセス可能なウェブページの中から関連情報を識別する１つのよく知られた検索システムは、Mountain View, CaliforniaのGoogle Inc.により提供されるGOOGLEインターネット検索エンジンである。
【０００４】
検索システムの１つの機能は、検索クエリ（又は、短縮して単に「クエリ」）に回答することである。クエリは、１以上の検索タームのセットを含んだ論理的表現として定義可能であり、インデックスされた文書のサブセットを識別する結果をもたらす。例えば、インターネット検索エンジンに対する情報要求の処理を考える。動作時に、この要求は一般的に、クライアントシステムによって、サーバコンピュータ上のインデックスから特定の検索結果を取得するための１以上のHyper Text Transfer Protocol（ＨＴＴＰ）要求として発行される。例えば、要求は、「大学(college)」及び「バスケットボール(basketball)」という単語を含んだインターネットウェブページのリストに関するものであってもよい。この要求に応じて、検索システムは一般的に、「大学(college)」及び「バスケットボール(basketball)」という検索タームに最も関連すると考えられるインターネットウェブページに対するハイパーリンクを含んだウェブページを返す。
【０００５】
インターネット検索エンジンは、インターネット上でパブリックに利用可能な世界の情報の全てを検索するのに適している。しかしながら、近頃、ユーザは、インターネット上でパブリックにアクセス可能でなかったりインターネット検索エンジンによりインデックスされなかったりする大量のパーソナルデジタル情報を蓄積し始めている。そのような情報には、例えば、パーソナルでプライベートなデジタル情報の中でもとりわけ、パーソナルデジタル写真、学校及び仕事の文書、などが含まれうる。幾つかの事例では、ユーザのパーソナルデジタル情報は、特定のユーザグループにより共有される。例えば、従業員は仕事の文書を他の同僚と共有する場合があるし、ユーザはデジタル写真を友人及び家族と共有する場合がある。
【０００６】
ユーザが全ての自己のパーソナルデジタル情報を格納して管理することを近頃開始した１つのやり方は、オンラインコンテンツ管理サービスを使用することによるものである。そのようなサービスは、ユーザが自己のユーザコンピュータを使用して、インターネット又は他の通信ネットワーク介してアクセス可能なサービスのサーバコンピュータに自己のパーソナルデジタル情報をアップロードして格納することを、可能にする。１つのよく知られたオンラインコンテンツ管理サービスは、San Francisco, CaliforniaのDropbox, Inc.により提供されるDROPBOXである。
【０００７】
オンラインコンテンツ管理サービスのユーザは、そのようなサービスによりホストされる自己のパーソナルデジタル情報を検索して場所を突き止める方法の価値を認めるであろう。そのようなパーソナルデジタル情報は、一般的に、インターネット上でパブリックにアクセス可能ではない。この理由などの理由により、インターネット検索エンジンは、一般的に、これらのユーザの検索ニーズを満たすのに適切ではない。
【発明の概要】
【０００８】
システム及び方法の様々な実施形態は、ユーザがユーザコンピュータを使用して、オンラインコンテンツ管理サービスによりホストされているユーザのパーソナルコンテンツアイテムを検索することを可能にし、オンラインコンテンツ管理サービスは、ユーザのホストされたコンテンツアイテムの基本インデックスを生成するように構成されたインデクサコンピュータと、生成された基本インデックスをユーザコンピュータに提供するように構成されたインデックスサーバコンピュータと、ユーザのホストされたコンテンツアイテムに対してなされた変更を反映したインデックス変更情報を生成するように構成されたインデックス変更情報生成コンピュータと、生成されたインデックス変更情報をユーザコンピュータに提供するように構成されたインデックス変更情報サーバコンピュータと、を有する。発明の実施形態において、インデックス変更情報は、ホストされたコンテンツアイテムをインデックスするのに使用する１以上のインデックストークン、及び／又は、ホストされたコンテンツアイテムをインデックスするのに使用しない１以上のインデックストークンを含む。
【０００９】
パーソナルコンテンツアイテム検索システムの幾つかの実施形態の特徴は、ユーザのホストされたコンテンツアイテムの検索及びそれに対する変更が、ユーザコンピュータにより受信された基本インデックス及びインデックス変更情報に基づいて構築された、ユーザコンピュータのローカルインデックスを使用してユーザコンピュータにおいて実行されることである。この特徴の利点は、検索時にユーザコンピュータがオンラインコンテンツ管理サービスに接続していない場合でさえ、ユーザがユーザのホストされたコンテンツアイテム及びそれに対する変更を検索することができるということである。この特徴の別の利点は、ローカルインデックスは通信ネットワークを介して検索クエリを送信する必要なしに回答を識別してユーザに提供することを可能にするので、より迅速に、ユーザの検索クエリに対する回答をユーザに提供可能であるということである。
【００１０】
パーソナルコンテンツアイテム検索システムの幾つかの実施形態の別の特徴は、基本インデックスがオンラインコンテンツ管理サービスにより生成されるということである。この特徴の利点は、基本インデックスを生成するのにユーザコンピュータの処理サイクルが消費されず、これにより、他の（恐らくはより重要な）アプリケーションを実行するためにユーザコンピュータの処理能力が節約されることである。ユーザコンピュータの代わりにオンラインコンテンツ管理サービスに基本インデックスを生成させることによりユーザコンピュータの処理能力を節約することはまた、ユーザコンピュータがバッテリー動作のポータブルユーザコンピュータである場合に、ユーザコンピュータのバッテリー寿命を延ばし、バッテリー充電間の時間を長くする。この特徴の別の利点は、オンラインコンテンツ管理サービスのクラスタ型及び／又は分散型のコンピュータにより提供される比較的大きな処理能力が、より包括的な基本インデックスを生成するために使用可能であることである。例えば、オンラインコンテンツ管理サービスは、デジタル画像に対して顔認識アルゴリズム及び／又は光学式文字認識アルゴリズムを適用して、基本インデックスの中にデジタル画像がインデックスされる元となるテキストを生成することができるが、これは限られた処理能力を持つユーザコンピュータにおいて行うのは実用的ではないかもしれない。例えば、顔認識又は光学式文字認識のアルゴリズムを実行するために必要な専用ソフトウェアは、様々な異なる理由（例えば、そのようなソフトウェアの購入に関連する高いコストなど）によりユーザコンピュータにインストールされていないかもしれない。
【００１１】
発明の実施形態の上述の及び他の利点は、添付の図面と共に理解されると、以下のより詳細な説明から明らかになるであろう。上述の利点は発明の異なる態様により達成可能であり、本発明の追加の利点は上述の個々の利点の様々な組み合わせを伴い、相互作用する利益が組み合わせられた技術から得られうるようになるということが意図されている。
【図面の簡単な説明】
【００１２】
添付の図面を参照して、発明の実施形態の詳細な説明を行う。ここで、同様の数字は図中の対応する部分を指す。
【００１３】
【図１】図１は、発明の幾つかの実施形態に従う、ユーザコンピュータ及びオンラインコンテンツ管理サービスを含む通信ネットワーク環境である。
【００１４】
【図２】図２は、発明の幾つかの実施形態に従う、オンラインコンテンツ管理サービスによりホストされるユーザのコンテンツアイテムの、ユーザコンピュータにおけるローカルインデックスの概略図である。
【００１５】
【図３】図３は、発明の幾つかの実施形態に従う、ローカルインデックスに対する基本クエリ処理動作の概略図である。
【００１６】
【図４】図４は、発明の幾つかの実施形態に従う、ユーザコンピュータにおけるローカルインデックスの様々な可能な状態に関する状態図である。
【００１７】
【図５Ａ】図５Ａは、発明の幾つかの実施形態に従う、インデックス変更情報がローカルインデックスに適用される前のユーザコンピュータにおけるローカルインデックスの概略図である。
【００１８】
【図５Ｂ】図５Ｂは、発明の幾つかの実施形態に従う、インデックス変更情報がローカルインデックスに適用された後のユーザコンピュータにおけるローカルインデックスの概略図である。
【００１９】
【図６】図６は、発明の幾つかの実施形態に従う、オンラインコンテンツ管理サービスのインデックス変更情報生成コンピュータにおけるインデックス変更情報ジャーナルの概略図である。
【００２０】
【図７】図７は、本発明の幾つかの実施形態に従う、オンラインコンテンツ管理サービスのトークン格納部の可能なスキーマの概略図である。
【００２１】
【図８】図８は、発明の幾つかの実施形態に従う、ユーザコンピュータにおいてユーザのホストされたコンテンツアイテムをインデックスする処理のフローチャートである。
【００２２】
【図９】図９は、本発明の幾つかの実施形態に従う、ユーザコンピュータにおいてユーザのホストされたコンテンツアイテムを検索する処理のフローチャートである。
【００２３】
【図１０】図１０は、発明の幾つかの実施形態を実装するのに使用可能な基本コンピュータコンポーネントの構成図である。
【００２４】
【図１１】図１１は、図１０の基本コンピュータの動作を制御するために使用可能な基本ソフトウェアシステムの構成図である。
【発明を実施するための形態】
【００２５】
発明の様々な実施形態は、自己のパーソナルコンテンツアイテムをホストするユーザに対して、ユーザコンピュータを使用して自己のホストされたコンテンツアイテムをより簡単かつ効果的に発見し、検索し、閲覧し、場所を突き止めるオンラインコンテンツ管理サービス（例えば、ファイルホスティングサービス、クラウドデータストレージプロバイダ）を提供する、パーソナルコンテンツアイテムシステム及び方法に関する。例えば、パーソナルコンテンツアイテムシステムの様々な実施形態は、ユーザコンピュータがオンラインではない状況（例えば、通信ネットワークによりオンラインコンテンツ管理サービスに接続されていない）において、又は、ユーザコンピュータがオンラインの状況にあるがクエリに対する回答を提供するために通信ネットワークを介して検索クエリを送信する必要なしに（これは、クエリに対する回答がより迅速にユーザに提供される結果をもたらしうるものであり、また、ポータブルユーザコンピュータについてバッテリーパワーを節約しバッテリー寿命を延ばしうる）、ユーザコンピュータを使用するユーザがサービスでホストされているユーザのパーソナルコンテンツアイテムのフルテキスト検索を実行することを促進する。
【００２６】
発明の幾つかの実施形態によれば、フルテキスト検索は、ユーザのホストされたコンテンツアイテムのインデックスをユーザコンピュータにおいてローカルに保持することにより、促進される。検索クエリに対する回答は、ユーザコンピュータがオンラインであるかオフラインであるかに応じて、少なくとも２つの方法で、ユーザコンピュータのユーザに提供可能である。第１に、ユーザコンピュータがオンラインであれオフラインであれ、回答は、ユーザコンピュータのローカルインデックスのみを調べることにより提供可能である。第２に、ユーザコンピュータがオンラインの場合、回答は、ユーザコンピュータのローカルインデックスを調べ、かつ、通信ネットワークを介してオンラインコンテンツ管理サービスに検索クエリを送信し、その後、ローカルインデックスからの結果をオンラインコンテンツ管理サービスにより返された結果と組み合わせてユーザに提供される回答にすることにより、提供可能である。
【００２７】
発明の実施形態によれば、ユーザに提供される回答は、最初は、ユーザコンピュータがオンラインコンテンツ管理サービスから返される結果を待っている間は、ローカルインデックスからの結果のみを含みうる。オンラインコンテンツ管理サービスからの結果がユーザコンピュータにおいて受信されると、回答は、オンラインコンテンツ管理サービスからの結果を含むように更新されうる。このようにして、ユーザコンピュータがオンラインの場合、ユーザに対して、ローカルインデックスからの結果により検索クエリに対する予備的な回答を迅速に提供可能であり、そのすぐ後に、オンラインコンテンツ管理サービスからの結果により検索クエリに対するより包括的な回答を提供可能である。
１．０  ネットワーク環境
【００２８】
本発明の様々な実施形態は、通信ネットワーク（例えば、インターネット、移動電話ネットワーク、又はワイドエリアネットワークなど）上で一緒に結合された１以上のコンピュータ（例えば、ユーザコンピュータなど）及び１以上のオンラインコンテンツ管理サービスコンピュータにより実行されると、本明細書に記載の様々な機能を実行するように構成された、１以上のコンピュータ実行可能命令セットに従って動作する。
【００２９】
図１は、本発明の幾つかの実施形態に従って動作するネットワークシステムを示す。図１を参照すると、オンラインコンテンツ管理サービス１１０は、インターネットのような通信ネットワーク１２０上で動作する。オンラインコンテンツ管理サービス１１０は、基本インデックス生成コンピュータ１１１と、基本インデックスサーバコンピュータ１１２と、インデックス変更情報生成コンピュータ１１３(index mutation generator computer)と、インデックス変更情報サーバコンピュータ１１４と、バックエンド検索クエリプロセッサコンピュータ１１５と、フロントエンド検索クエリプロセッサコンピュータ１１６と、トークン格納部１１７と、トークナイザコンピュータ１１８と、を含む。
【００３０】
本明細書及び添付の特許請求の範囲で使用されるように、単数形の「コンピュータ(computer)」は、文脈が別のことを明確に示していない限り、複数形も同様に含むことが意図されている。例えば、発明の実施形態の機能、特徴、又はステップが本明細書において単一のコンピュータにより実装されるものとして記載されている場合、その機能、特徴、又はステップは、文脈が別のことを明確に示していない限り、他の実施形態において例えばコンピューティングクラスタ又は分散コンピューティング環境にアレンジされた複数のコンピュータにより実装されてもよい。更に、本明細書において幾つかの実施形態において異なるコンピュータにより実行されるものとして記載されている機能、特徴、又はステップは、他の実施形態においては代わりに同一のコンピュータ又は同一のコンピュータセットにより実行されてもよい。 
【００３１】
基本インデックスサーバコンピュータ１１２、フロントエンド検索クエリプロセッサコンピュータ１１６、及びインデックス変更情報サーバコンピュータ１１４は、通信ネットワーク１２０により１以上のユーザコンピュータ１３０に結合されてもよい。通信ネットワーク１２０は、インターネットのようなパブリックネットワーク、移動電話ネットワーク、ローカルエリアネットワーク、又は、有線であれ無線であれそのハイブリッドであれ任意の他の適当な通信ネットワークを含むことができる。 
【００３２】
ユーザコンピュータ１３０は、人間ユーザ１３１により使用可能である。ユーザコンピュータ１３０は、有線及び／又は無線のネットワーク通信機能を備えた従来のパーソナルコンピュータ（例えば、デスクトップコンピュータ、ワークステーションコンピュータ、ラップトップコンピュータ、移動電話、セル電話、スマートフォン、セットトップデバイス、車載コンピュータ、パーソナルデジタルアシスタント、又は有線及び／無線のネットワーク通信機能を備えた他のパーソナルコンピュータ）であってもよい。 
【００３３】
高度に信頼可能なネットワーク通信環境（例えば、ユーザコンピュータ１３０が有線ローカルエリアネットワークにより通信ネットワーク１２０に結合されている場合など）においては、ユーザコンピュータ１３０は、連続的に又はほぼ連続的に、オンラインコンテンツ管理サービス１１０に結合されているかもしれない。しかしながら、あまり信頼できないネットワーク通信環境においては、ユーザコンピュータ１３０は、ユーザコンピュータ１３０及び／又はユーザコンピュータ１３０が置かれたネットワーク環境の構成に応じて、断続的に又は周期的にのみ、通信ネットワーク１２０によりオンラインコンテンツ管理サービス１１０に結合されるかもしれない。例えば、ユーザコンピュータ１３０は、様々な理由（例えば、コスト及び／又はネットワーク性能）により、ユーザコンピュータ１３０が何らかのタイプのネットワーク（例えば、有線又は無線のローカルエリアネットワークなど）により通信ネットワーク１２０に結合している場合にのみ、通信ネットワーク１２０を介してオンラインコンテンツ管理サービス１１０に結合するように構成されているかもしれない。反対に、ユーザコンピュータ１３０は、ユーザコンピュータ１３０が他のタイプのネットワーク（例えば、移動電話ネットワークなど）により通信ネットワーク１２０に結合している場合には、通信ネットワーク１２０を介してオンラインコンテンツ管理サービス１１０に結合しないように構成されているかもしれない。場合によっては、ユーザコンピュータ１３０は、通信ネットワーク１２０を介してオンラインコンテンツ管理サービス１１０に結合するためにユーザコンピュータ１３０が利用可能なネットワークが存在しない物理的環境（例えば、航空機内、又は遠隔の地理的エリア内など）に置かれているかもしれない。本発明の様々な実施形態は、ユーザコンピュータ１３０が断続的に又は周期的にのみ通信ネットワーク１２０によりオンラインコンテンツ管理サービス１１０に結合される半接続環境(semi-connected environments)において、ユーザコンピュータ１３０のユーザ１３１がユーザ１３１のホストされたコンテンツアイテム１４１を検索することを可能にする。
【００３４】
オンラインコンテンツ管理サービス１１０（例示的な実施形態においては、San Francisco, CaliforniaのDropbox, Inc.により提供されるDROPBOXコンテンツ管理サービスである）は、自己のサーバコンピュータ及び／又はサービス１１０が管理するサーバコンピュータに、ユーザ１３１のパーソナルコンテンツアイテム１４１を格納する（ホストする）ことができる。ユーザ１３１のホストされたコンテンツアイテム１４１が格納されているサーバコンピュータは、ストレージプレーン１４０（例示的な実施形態においては、Seattle, WashingtonのAmazon.comにより提供されるAMAZON S3オンラインファイルホスティングウェブサービス）の一部であってもよい。オンラインコンテンツ管理サービス１１０の特徴は、様々な異なる金銭的料金設定(monetary fee arrangements)（限定される訳ではないが、ユーザ１３１のホストされたコンテンツアイテム１４１によりストレージプレーン１４０のある量のストレージスペースが消費されるまで無料であるとか、月ごと、年ごと、又は他の定期的なサービス料金がユーザ１３１に課され、それが恐らくその期間にユーザ１３１のホストされたコンテンツアイテム１４１により消費されたストレージプレーン１４０のストレージスペースの量に基づいているとか、その他の可能な料金設定などが含まれる）に従ってユーザ１３１に提供されうる。
１．１  ホストされたコンテンツアイテム
【００３５】
ユーザ１３１のホストされたコンテンツアイテム１４１は、広範な異なるタイプのコンテンツアイテムを含みうる。「コンテンツアイテム」は、テキストコンテンツを含む、及び／又はテキストコンテンツに関連付けられる、デジタル情報の集合として定義可能である。コンテンツアイテムの非限定的な幾つかの例には、限定される訳ではないが、ワードプロセッシング文書、スプレッドシート文書、デジタル画像、及び他のタイプのファイル、文書、及びデジタルメディアが含まれる。例えば、ワードプロセッシング文書はしばしば、文書の著された単語及び文の形でテキストコンテキストを含むし、スプレッドシート文書は、単語及び数値の形でテキストコンテキストを含みうるし、デジタル画像（例えば、デジタル写真）は、そのヘッダ（例えば、Exchangeable image file format (Exif)）にテキストコンテンツを含み得る。
【００３６】
コンテンツアイテムは、標準化された又は一般的な(conventional)ファイルタイプに対応して、コンテンツアイテムの内容がそのファイルタイプに準拠する標準化された又は一般的なデータフォーマットを持つようになっていてもよい。コンテンツアイテムが対応しうる標準化された及び一般的なファイルタイプの中には、限定される訳ではないが、画像ファイルタイプ（例えば、jpg、.tiff、.gif）、ミュージックファイルタイプ（例えば、.mp3、.aiff、.m4a、.wav）、ムービーファイルタイプ（例えば、.mov、.mp4、.m4v）、ワードプロセッシングファイルタイプ（例えば、.doc、.docx、.pages）、プレゼンテーションファイルタイプ（例えば、.ppt、.pptx、.key）、スプレッドシートファイルタイプ（例えば、.xls、.xlsx、.numbers）、ウェブページファイルタイプ（例えば、.htm、.html）、テキストファイルタイプ（例えば、.txt）、及び、テキストコンテキストを含む及び／又はこれに関連付けられた任意の他の標準化された又は一般的なファイルタイプが含まれうる。幾つかの例においては、コンテンツアイテムは標準化された又は一般的なファイルタイプに対応するが、他の例においては、コンテンツアイテムはプロプライエタリな又は知られていないファイルタイプに対応する。これらの例において、コンテンツアイテムは依然としてテキストコンテンツを含む及び／又はこれに関連付けられていてもよい。
【００３７】
コンテンツアイテムは、コンテンツアイテムの内容を説明するテキストコンテンツ（本明細書において、コンテンツアイテムの「テキストメタデータ(textual metadata)」とも呼ばれる）に関連付けられてもよい。例えば、コンテンツアイテムの名前（例えば、ファイル名）は、コンテンツアイテムのためのテキストメタデータとなりうる。別の例として、デジタル画像のためのテキストメタデータは、画像のコンピュータ分析によって（例えば、光学式文字認識（ＯＣＲ）によって、又は顔認識アルゴリズムによって）生成されうる。コンテンツアイテムのための他の形式のテキストメタデータには、例えば、（例えばハイパーリンクによって）そのコンテンツアイテムを参照したり、（例えばソーシャルネットワーキングの投稿において）そのコンテンツアイテムに言及したり、又は（例えばブログ投稿又はユーザコメント投稿において）そのコンテンツアイテムについて論じたりしているウェブページから取得された、そのコンテンツアイテムに関するテキストが含まれうる。 
【００３８】
本説明の目的のために、コンテンツアイテムに関連付けられたテキストメタデータは、そのコンテンツアイテム自体のテキストコンテンツの一部であると考えることができる。従って、本明細書において、コンテンツアイテム「に含まれている」、「に存在する」、又は「の」テキストコンテンツという言及は、文脈が別のことを明確に示していない限り、コンテンツアイテム自体のテキストコンテンツだけではなくコンテンツアイテムに関連付けられた何らかのテキストメタデータをも含むことを意味している。
【００３９】
上述の議論は、ユーザ１３１のホストされたコンテンツアイテム１４１に含まれうるコンテンツアイテムの可能なタイプに関する幾つかの例を提供するものに過ぎない。
１．２  コンテンツアイテムの同期
【００４０】
ユーザ１３１のホストされたコンテンツアイテム１４１は、ストレージプレーン１４０に格納するために、様々な異なる方法（限定される訳ではないが、通信ネットワーク１２０を介してユーザコンピュータ１３０からストレージプレーン１４０へとコンテンツアイテム１４１をアップロードすることにより、及び／又は、通信ネットワーク１２０を介してユーザコンピュータ１３０からオンラインコンテンツ管理サービス１１０へとコンテンツアイテム１４１をアップロードし、オンラインコンテンツ管理サービス１１０がパーソナルコンテンツアイテム１４１をユーザコンピュータ１３０から受信するとコンテンツアイテム１４１をストレージプレーン１４０に格納することによるものが含まれる）でオンラインコンテンツ管理サービス１１０へ提供することができる。オンラインコンテンツ管理サービス１１０及びストレージプレーン１４０はまた、通信ネットワーク（例えば、通信ネットワーク１２０など）によっても接続可能である。ストレージプレーン１４０は、ネットワーク通信プロトコル（例えば、ＨＴＴＰ又はＨＴＴＰＳ）に従って通信ネットワーク１２０を介してユーザコンピュータ１３０及び／又はオンラインコンテンツ管理サービス１１０によりアクセス可能な、ストレージプレーン１４０から／へコンテンツアイテム１４１を読み（ダウンロードし）及び書く（アップロードする）ための、ネットワークインタフェースを提供することができる。オンラインコンテンツ管理サービス１１０は、ユーザコンピュータ１３０に対する同様のネットワークインタフェースを提供することができる。
【００４１】
ユーザ１３１のホストされたコンテンツアイテム１４１は、ユーザコンピュータ１３０に格納されたコンテンツアイテムと同期可能である。この構成において、ユーザコンピュータ１３０におけるコンテンツアイテムに対する変更は、通信ネットワーク１２０を介して、オンラインコンテンツ管理サービス１１０及び／又はストレージプレーン１４０へと送信されうる。ユーザコンピュータ１３０から変更を受信すると、この変更は、ストレージプレーン１４０に格納されたユーザ１３１のホストされたコンテンツアイテム１４１の対応するものに対して適用可能であり、これにより、ユーザコンピュータ１３０において変更されたコンテンツアイテムが、ストレージプレーン１４０における対応するコンテンツアイテム１４１に同期される。ストレージプレーン１４０の対応するコンテンツアイテム１４に対して変更が適用された後に、ユーザコンピュータ１３０のコンテンツアイテムは、ストレージプレーン１４０の対応するコンテンツアイテム１４１と同一になりうる。
【００４２】
同期は、双方向であってもよい。例えば、ユーザ１３１は、１よりも多くのユーザコンピュータにコンテンツアイテムを格納することができる。例えば、ユーザ１３１は、ラップトップコンピュータ１３０にコンテンツアイテムを格納し、移動電話１３０にもコンテンツアイテムを格納することができる。この場合、ユーザ１３１のラップトップコンピュータ１３０におけるコンテンツアイテムに対する変更は、上述の通り、ストレージプレーン１４０の対応するコンテンツアイテム１４１に対する適用のためにオンラインコンテンツ管理サービス１１０及び／又はストレージプレーン１４０へと送信されうる。加えて、この変更はまた、ユーザ１３１の移動電話１３０に格納された対応するコンテンツアイテムに対する適用のために、オンラインコンテンツ管理サービス１１０及び／又はストレージプレーン１４０からユーザ１３１の移動電話１３０へと送信されうる。この双方向同期操作の後、ユーザのラップトップコンピュータ１３０のコンテンツアイテム、ストレージプレーン１４０の対応するコンテンツアイテム、及びユーザ１３１の移動電話１３０の対応するコンテンツアイテムは、同一になりうる。
【００４３】
ユーザコンピュータ１３０からオンラインコンテンツ管理サービス１１０及び／又はストレージプレーン１４０へと送信される、コンテンツアイテムに対する変更は、ユーザコンピュータ１３０において発生する様々な異なるイベントにより引き起こされうる。例えば、コンテンツアイテムは、ユーザコンピュータ１３０において最近、修正され、生成され、又は削除されたかもしれない。ユーザコンピュータ１３０は、同期アプリケーションを備えるように構成可能であり、これは例えば、ソフトウェアプログラム又はコンピュータ実行可能な命令セットとして実装されうる。 
【００４４】
ユーザコンピュータ１３０の同期アプリケーションは、コンテンツアイテムに対して様々な同期操作（限定される訳ではないが、ユーザコンピュータ１３０におけるコンテンツアイテムに対する変更を検出すること、検出されたコンテンツアイテムの変更をオンラインコンテンツ管理サービス１１０及び／又はストレージプレーン１４０へ通信ネットワーク１２０を介して送信すること、コンテンツアイテムの変更をオンラインコンテンツ管理サービス１１０及び／又はストレージプレーン１４０から通信ネットワーク１２０を介して受信すること、及び、受信したコンテンツアイテムの変更をユーザコンピュータ１３０のコンテンツアイテムに適用することが含まれる）を実行するように構成可能である。 
【００４５】
場合によっては、１以上の、ユーザ１３１のホストされたコンテンツアイテム１４１を、オンラインコンテンツ管理サービス１１０の１以上の他のユーザと共有することができる。例えば、ユーザ１３１は、オンラインコンテンツ管理サービス１１０を介して協働してコンテンツアイテムを共有するユーザチームに所属することができる。この場合、チームメンバーのユーザコンピュータ１３０のうちの１つにおけるコンテンツアイテムに対する変更は、ストレージプレーン１４０の対応するコンテンツアイテム１４１と、そしてまた他のチームメンバーのユーザコンピュータ１３０の対応するコンテンツアイテムと、同期されうる。
【００４６】
それゆえ、同期が理由であれ他の理由であれ、ユーザ１３１のホストされたコンテンツアイテム１４１は、折に触れて変化しうる。本発明の様々な実施形態は、変更が行われた後すぐに（例えば、数分以内又は数秒以内に）、ユーザ１３１がユーザコンピュータ１３０においてユーザ１３１のホストされたコンテンツアイテム１４１に対する変更を検索することを可能にする。
【００４７】
場合によっては、１以上の、ユーザ１３１のホストされたコンテンツアイテム１４１は、ユーザ１３１のユーザコンピュータ１３０のうちの特定の１つとは同期されない（格納されない）。換言すると、ユーザ１３１のホストされたコンテンツアイテム１４１は、特定のユーザコンピュータ１３０と選択的に同期される。例えば、ユーザ１３１は、ユーザ１３１のホストされたデジタル写真１４１を移動電話１３０と同期しないが、他の全てのユーザ１３１のホストされたコンテンツアイテム１４１を移動電話１３０と同期するように、ユーザ１３１の移動電話１３０の同期アプリケーションを設定することができる。ユーザ１３１は、例えば、移動電話１３０のデータストレージスペースを節約するために、又は他の理由により（例えば、デジタル写真を移動電話１３０へダウンロードしないことによりネットワーク帯域を節約する）、このように同期アプリケーションを設定することができる。他の例として、移動電話１３０の同期アプリケーションは、ユーザ１３１のホストされたコンテンツアイテム１４１のうちのどれを移動電話１３０と同期する（に格納する）かを自動的に決定するように設定することができる。例えば、同期アプリケーションは、移動電話１３０を、ユーザ１３１のホストされたコンテンツアイテム１４１の一部のローカルキャッシュとして扱い、最も近時にアクセスされた及び／又は将来最もアクセスされそうなユーザ１３１のホストされたコンテンツアイテム１４１が移動電話１３０と同期され（にキャッシュされ）るように、設定することができる。それゆえ、選択的同期のために、ユーザ１３１のユーザコンピュータ１３０は、所与の時刻において、オンラインコンテンツ管理サービス１１０によりホストされているユーザ１３１のコンテンツアイテム１４１のサブセットのみを格納している場合がある。本発明の様々な実施形態は、ユーザ１３１のホストされたコンテンツアイテム１４１の一部又は全部が検索時にユーザコンピュータ１３０と同期されていない（に格納されていない）場合であっても、ユーザ１３１がユーザコンピュータ１３０においてユーザ１３１のホストされたコンテンツアイテム１４１を検索することを可能にする。
１．３  ユーザアカウント
【００４８】
ストレージプレーン１４０は、複数のユーザ（例えば、数百万ユーザ以上）のコンテンツアイテム１４１を格納することができる。ストレージプレーン１４０に格納されている全コンテンツアイテム１４１のうちの特定のユーザ（例えば、１３１）に属するコンテンツアイテム１４１のセットは、ユーザがオンラインコンテンツ管理サービス１１０で保持しているユーザアカウントにより画定されうる。例えば、ユーザ１３１は、オンラインコンテンツ管理サービス１１０にユーザアカウントを持つことができ、ユーザ１３１のホストされたコンテンツアイテム１４１は、このユーザアカウントに関連付けられうる。このようにして、オンラインコンテンツ管理サービス１１０は、ストレージプレーン１４０のコンテンツアイテム１４１のうちのどれがユーザ１３１のコンテンツアイテム１４１であるかを判定することができる。この判定の一部として、オンラインコンテンツ管理サービス１１０は、ユーザコンピュータ１３０により提供された有効な認証クレデンシャル(credentials)（例えば、有効なユーザ名／パスワードのペア）によりユーザ１３１を認証して、ユーザアカウントデータベース（不図示）内のユーザ１３１のユーザアカウントを識別することができる。識別されると、オンラインコンテンツ管理サービス１１０及び／又はストレージプレーン１４０は、ユーザコンピュータ１３０（例えば、ユーザコンピュータ１３０上の同期アプリケーション）からの、ストレージプレーン１４０のコンテンツアイテム１４１にアクセスする（例えば、読む又は書く）要求（これらの要求の中でコンテンツアイテム１４１が識別される）を、識別されたコンテンツアイテムがユーザ１３１のユーザアカウントに関連付けられているか否かに基づいて、オーソライズ（例えば、許可又は拒否）することができる。
【００４９】
ユーザ１３１のユーザアカウントとストレージプレーン１４０におけるユーザ１３１のホストされたコンテンツアイテム１４１のうちの１つとの間の関連付けは、コンテンツアイテム１４１の固有識別子を用いて確立することができる。例えば、コンテンツアイテム識別子は、コンテンツアイテム１４１を一意に識別する固有の６４ビット値を含んでもよい。しかしながら、コンテンツアイテム識別子は、手近な特定の実装に対する要求に従って、より少ない又はより多いビットにより表されてもよい。
１．４  コンテンツアイテムのネームスペース
【００５０】
ユーザ１３１のホストされたコンテンツアイテム１４１は、１以上の「コンテンツアイテムネームスペース」に整理可能である。コンテンツアイテムネームスペースは、共通のアクセス制御下にある１以上のコンテンツアイテム１４１の集合として定義することができる。共通のアクセス制御は、コンテンツアイテムネームスペース内のコンテンツアイテム１４１に対してどのユーザ及び／又はユーザグループがアクセスを持つか、及び、コンテンツアイテムネームスペースに属するコンテンツアイテム１４１に対してユーザ及び／又はユーザグループがどのアクセス（例えば、リードアクセス、ライトアクセス、共有アクセス、プレビューアクセス、ダウンロードアクセスなどのうちの１以上）を持つかを特定し及び／又は示す、明示的な及び／又は黙示的なパーミッションに基づくことができる。明示的なパーミッションは、例えば、コンテンツアイテムネームスペース内のコンテンツアイテム１４１に対してどのユーザ及び／又はユーザグループがアクセスを持つか、及び、コンテンツアイテムネームスペースに属するコンテンツアイテム１４１に対してユーザ及び／又はユーザグループがどのアクセスを持つかを特定し及び／又は示す、１以上のアクセス制御リスト（ＡＣＬ）、及び／又は、コンテンツアイテムネームスペース（又はその識別子）に関連付けられた他のデータの形式で存在してもよい。黙示的なパーミッションの一例は、ユーザ１３１が、ユーザ１３１のユーザアカウント（又はその識別子）に関連付けられたコンテンツアイテムネームスペース内の全てのコンテンツアイテム１４１に対するアクセスを持つ、ということでありうる。
【００５１】
本発明の例示的な実施形態において、「デフォルト」のコンテンツアイテムネームスペースは、クラウドデータストレージサービス（例えば、前述のDROPBOXコンテンツ管理サービスなど）に保持されるユーザ１３１のユーザアカウントに関連付けられたコンテンツアイテム１４１を含む。（例えば、有効なユーザ名／パスワードにより）ユーザアカウントを成功裏に認証することにより、ユーザ１３１は、ユーザ１３１のユーザアカウントに関連付けられたデフォルトのコンテンツアイテムネームスペースにあるコンテンツアイテム１４１に対するアクセスを黙示的に持つ。
【００５２】
発明の例示的な実施形態において、「共有の」コンテンツアイテムネームスペースは、オンラインデータストレージサービス（例えば、前述のDROPBOXコンテンツ管理サービスなど）に保持される複数のユーザアカウントで共有されるコンテンツアイテム１４１の集合に属するコンテンツアイテム１４１を含む。幾つかの例においては、コンテンツアイテム１４１の集合は、「共有フォルダ」と呼ばれる場合もある。コンテンツアイテム１４１の集合の共有に用いるユーザアカウントを成功裏に認証することにより、ユーザ１３１は、共有のコンテンツアイテムネームスペースの中のコンテンツアイテム１４１に対するアクセスを持つ。
【００５３】
ユーザ１３１のユーザアカウントとユーザ１３１のホストされたコンテンツアイテム１４１の固有識別子との間の直接的な関連付けの代わりに、コンテンツアイテム１４１が属するコンテンツアイテムネームスペースの固有識別子により、ユーザ１３１のユーザアカウントとユーザ１３１のホストされたコンテンツアイテム１４１との間の間接的な関連付けを確立してもよい。例えば、コンテンツアイテムネームスペース識別子は、コンテンツアイテムネームスペースを一意に識別する固有の６４ビット値を含んでもよい。しかしながら、コンテンツアイテムネームスペース識別子は、手近な特定の実装に対する要求に従って、より少ない又はより多いビットにより表されてもよい。この場合、ユーザ１３１のコンテンツアイテム１４１をそれが属するコンテンツアイテムネームスペースへとマッピングする、コンテンツアイテムネームスペース識別子とコンテンツアイテム識別子との間の別個の直接的な関連付けが存在してもよい。単純な例として、ユーザ１３１のユーザアカウントは、例えばＡＢＣＤ及びＤＥＦＧという固有識別子を持つ２つのコンテンツアイテムネームスペースに関連付けられてもよい。更に、コンテンツアイテムネームスペースＡＢＣＤ（これは例えば、デフォルトのコンテンツアイテムネームスペースであってもよい）は、デフォルトのコンテンツアイテムネームスペースＡＢＣＤに属する１以上のコンテンツアイテム１４１の固有識別子に関連付けられていてもよく、コンテンツアイテムネームスペースＤＥＦＧ（これは例えば、共有のコンテンツアイテムネームスペースであってもよい）は、共有のコンテンツアイテムネームスペースＤＥＦＧに属する１以上のコンテンツアイテム１４１の固有識別子に関連付けられていてもよい。これらの関連付けから、ユーザ１３１が認証されユーザ１３１のユーザアカウントが識別されると、オンラインコンテンツ管理サービス１１０により、ユーザ１３１のコンテンツアイテムネームスペース及びユーザ１３１のホストされたコンテンツアイテム１４１の固有識別子を識別することができる。
１．５  クエリ処理アプローチ
【００５４】
ユーザコンピュータ１３０により、グラフィカルユーザインタフェースがユーザ１３１に提示されうる。例えば、ユーザコンピュータ１３０は、ビデオディスプレイデバイス（例えば、コンピュータ１０００のディスプレイ１０１２など）にグラフィカルユーザインタフェースを提示することができる。グラフィカルユーザインタフェースを通じて、ユーザ１３１は、検索クエリを提供し、検索クエリに対する回答を受信することができる。幾つかの実施形態では、グラフィカルユーザインタフェースは、ユーザ１３１から検索クエリを受信して検索クエリに対する回答をユーザ１３１に提示するための、ウェブページ又は一連のウェブページを含む。しかしながら、グラフィカルユーザインタフェースはウェブページに限定されず、グラフィカルユーザインタフェースは、ユーザ１３１から検索クエリを受信して検索クエリに対する回答をユーザ１３１に提示するための、他のタイプのウインドウ、アイコン、メニュー、及びグラフィックスを含んでもよい。
【００５５】
ユーザコンピュータ１３０においてグラフィカルユーザインタフェースを介してユーザ１３１により提供される検索クエリは、検索式を含んでもよい。検索式のシンタックスは、恐らくは１以上のブーリアン演算子（例えば、ＡＮＤ、ＯＲ、ＮＯＴなど）により一緒に関連付けられる１以上のクエリトークンのシーケンスを含んでもよい。トークンは、１以上のキャラクタのシーケンスとして定義することができる。トークン中のキャラクタは、一般的なキャラクタ符号化スキーム（例えば、ＡＳＣＩＩ、ＵＴＦ−８、など）に従って符号化可能である。
【００５６】
クエリトークンは、検索クエリ中に現れるトークンとして定義可能である。例えば、[baguette fromage]（囲んでいる括弧は除く）という単純な連言検索クエリ(conjunctive search query)を考える。この検索クエリを満足するホストされたコンテンツアイテム１４１は、トークン「baguette」及びトークン「fromage」の両方を含みうるが、必ずしもコンテンツアイテム１４１において相互に隣り合ってはいないし、必ずしもコンテンツアイテム１４１においてトークン「baguette」がトークン「fromage」より前に現れはしない。しかしながら、トークン「baguette」及びトークン「fromage」を含むか又はこれに関連付けられ、これらが相互に近く、トークン「baguette」がトークン「fromage」より前にあるホストされたコンテンツアイテム１４１は、この検索クエリを満足するユーザ１３１のホストされたコンテンツアイテム１４１の他のものよりも関連性があると考えられるかもしれない。
【００５７】
ユーザコンピュータ１３０のグラフィカルユーザインタフェースに提示される検索クエリに対する回答は、リストの検索回答サマリを含んでもよい。そのようなサマリの各々は、検索クエリに関連するものとしてインデックスにおいて識別されたコンテンツアイテム１４１に対応してもよい。検索クエリに関連するものとしてインデックスにおいて識別され、検索クエリに対する回答に含まれるコンテンツアイテム１４１は、本明細書において、検索クエリの「検索結果」又は単に「結果」とも呼ばれる。検索回答サマリは、例えば、識別されたコンテンツアイテム１４１の識別子（例えば、名前、タイトルなど）、識別されたコンテンツアイテム１４１の短い説明（例えば、概要、要約、抜粋、引用など）、識別されたコンテンツアイテム１４１をダウンロードし、閲覧し、又は他の何らかのユーザアクションを行うための、識別されたコンテンツアイテム１４１へのインタラクティブハイパーリンク（例えば、Uniform Resource Locator（ＵＲＬ））、及び、恐らくは識別されたコンテンツアイテム１４１に関する他の有用な情報（例えば、関連するコンテンツアイテム１４１のサムネイル画像）を含みうる。
【００５８】
場合によっては、検索回答サマリに対応するコンテンツアイテム１４１は、ユーザコンピュータ１３０に格納された対応するコンテンツアイテムを持たなくてもよい。例えば、選択的同期のために、対応するコンテンツアイテムはユーザコンピュータ１３０に格納されていなくてもよい。本発明の幾つかの実施形態によれば、ユーザコンピュータ１３０のグラフィカルユーザインタフェースに提示される検索回答サマリは、検索回答サマリに対応するコンテンツアイテム１４１がユーザコンピュータ１３０に格納された対応するコンテンツアイテムを持つか否かを視覚的に示す。視覚的インジケーションは、ユーザコンピュータ１３０に格納された対応するコンテンツアイテムを持たないコンテンツアイテム１４１に対応する他の検索回答サマリとの視覚的グルーピングであってもよいし、検索回答サマリと共に又はその近くに（例えば、隣接して）表示されるテキスト又はグラフィックのインジケータであってもよいし、対応するコンテンツアイテム１４１がユーザコンピュータ１３０に格納された対応するコンテンツアイテムを持たないということを示す他の何らかの視覚的インジケータであってもよい。そのようなインジケーションを提供することにより、ユーザ１３１は、コンテンツアイテムにアクセスする（例えば、閲覧する）ためにはユーザ１３１がオンラインコンテンツ管理サービス１１０を介してストレージプレーン１４０に格納されたコンテンツアイテム１４１にアクセスする必要があるかもしれないということを理解することができる。
【００５９】
場合によっては、検索回答サマリに対応するコンテンツアイテム１４１は、ユーザコンピュータ１３０に格納された対応するコンテンツアイテムのバージョンに対する、新しいバージョンのコンテンツアイテムである。例えば、ストレージプレーン１４０に格納された新しいバージョンのコンテンツアイテムを生じさせる変更は、検索が実行された時点で、まだユーザコンピュータ１３０に同期されていない場合がある。本発明の幾つかの実施形態によれば、ユーザコンピュータ１３０のグラフィカルユーザインタフェースに提示される検索回答サマリは、検索回答サマリに対応するコンテンツアイテム１４１がユーザコンピュータ１３０に格納された対応するコンテンツアイテムのバージョンよりも新しい（より近時の）ものであるか否かを視覚的に示す。そのようなインジケーションを提供することにより、ユーザ１３１は、ユーザコンピュータ１３０に格納された対応するコンテンツアイテムのバージョンがストレージプレーン１４０に格納されたコンテンツアイテムのバージョンに関して旧版(out-of-date)であるかもしれないということを理解することができる。 
【００６０】
ユーザコンピュータ１３０は、ユーザコンピュータ１３０においてグラフィカルユーザインタフェースを介してユーザ１３１により提供された検索クエリを処理するための、ローカルクエリプロセッサを含んでもよい。ローカルクエリプロセッサは、検索クエリに関連するユーザ１３１のコンテンツアイテム１４１を識別して検索クエリに対する回答の中に含めるために、様々な異なる方法で検索クエリを処理することができる。３つの異なる可能なクエリ処理アプローチを以下で説明し、「ローカルアプローチ」、「リモートアプローチ」、及び「ハイブリッドローカル／リモートアプローチ」と名付ける。手近な特定の実装に対する要求に従って、以下で説明するもの以外のクエリ処理アプローチを使用してもよい。
【００６１】
検索クエリを処理するためのローカル、リモート、及びハイブリッドローカル／リモートのアプローチに関する以下の説明において、明確な例を提供する目的で、「ローカル」及び「リモート」という用語はユーザコンピュータ１３０に関して定義される。
【００６２】
検索クエリを処理するための「ローカルアプローチ」において、ローカルクエリプロセッサは、検索クエリに関連するユーザ１３１のコンテンツアイテム１４１を識別して検索クエリに対するローカル回答の中に含めるために、検索クエリによりローカルインデックスを調べる。検索クエリを処理するためのローカルアプローチは、検索クエリを受信したことに応じてユーザ１３１に回答を迅速に提供するために有用である。通信ネットワーク（例えば、１２０）を介して検索クエリを送信する必要なく、また、通信ネットワーク上で返される検索クエリに対する回答を待つ必要なく、ユーザコンピュータ１３０においてローカルに検索クエリを処理可能であるので、迅速に回答を提供可能である。ローカルアプローチはまた、ユーザコンピュータ１３０が現時点で通信ネットワーク１２０又はオンラインコンテンツ管理サービス１１０とのネットワーク接続性を持っていないオフラインネットワーク通信環境にユーザコンピュータ１３０がある場合にも、有用である。
【００６３】
検索クエリを処理するための「リモートアプローチ」において、ローカルクエリプロセッサは、検索クエリを、通信ネットワーク１２０を介してオンラインコンテンツ管理サービス１１０のフロントエンドクエリプロセッサコンピュータ１１６へと送信する。その後、検索クエリは、オンラインコンテンツ管理サービス１１０のリモートクエリプロセッサにより処理される。リモートクエリプロセッサは、フロントエンドクエリプロセッサコンピュータ１１６及び／又はバックエンドクエリプロセッサコンピュータ１１５により実装可能である。リモートクエリプロセッサは、検索クエリに関連するユーザ１３１のコンテンツアイテム１４１を識別して検索クエリに対するリモート回答（これはフロントエンドクエリプロセッサコンピュータ１１６により通信ネットワーク１２０を介してユーザコンピュータ１３０へ返される）の中に含めるために、リモートインデックスを調べることができる。検索クエリを処理するリモートアプローチは、検索クエリに対するより包括的な回答が望まれる場合に、有用である。リモートインデックスは、ストレージプレーン１４０に格納されたユーザ１３１のホストされたコンテンツアイテム１４１の現在の状態に関してより新版(up-to-date)でありうるため、検索クエリによりリモートインデックスを調べることによって取得されるリモート回答は、検索クエリによりローカルインデックスを調べることによって取得されるローカル回答よりも圧縮的でありうる。例えば、バックエンドクエリプロセッサコンピュータ１１５に対するストレージプレーン１４０のネットワーク近接性及び／又は可用性のために、ユーザ１３１のホストされたコンテンツアイテム１４１のうちの１つに対する変更は、その変更がユーザコンピュータ１３０においてローカルインデックスにインデックスされるよりもすぐに、リモートインデックスにインデックスされうる。幾つかの実施形態における、ユーザコンピュータ１３０から受信した検索クエリを処理するための、フロントエンドクエリプロセッサコンピュータ１１６及びバックエンドクエリプロセッサ１１５コンピュータにより採用可能な技術は、以下の関連出願において記述されるものであってもよい。２０１４年１１月２６日出願の米国特許出願No. 14/555,147「Multi-User Search System With Methodology For Personal Searching」、及び２０１４年１１月２６日出願の米国特許出願No. 14/555,171「Multi-User Search System With Methodology For Personalized Search Query Autocomplete」。これらの出願の各々の内容全体は、あらゆる目的のために、ここで参照により組み込まれる。
【００６４】
「ハイブリッドローカル／リモートアプローチ」において、ユーザコンピュータ１３０のローカルクエリプロセッサは、（１）検索クエリによりローカルインデックスを調べること、及び（２）通信ネットワーク１２０を介してフロントエンドクエリプロセッサコンピュータ１１６へ検索クエリを送信することの両方を行う。このアプローチは、ローカルアプローチのように検索クエリに対するローカル回答を迅速に取得し、また、リモートアプローチのようにより包括的な回答も取得するために、有用である。典型的なシナリオにおいて、ローカルクエリプロセッサは、ユーザコンピュータ１３０がフロントエンドクエリプロセッサコンピュータ１１６からリモート回答を受信する前に、ローカルインデックスからのローカル回答を取得することになる。ローカル回答が取得されるとすぐに、ローカル回答は、ユーザコンピュータ１３０のグラフィカルユーザインタフェースにおいてユーザ１３１に対して提示可能である。ユーザコンピュータ１３０においてリモート回答が受信されると、提示された回答は、リモート回答からの結果により更新可能である。
【００６５】
幾つかの実施形態において、ローカル回答中の検索結果のランキングスコア、及びリモート回答中の検索結果のランキングスコアが、同じランキングアルゴリズムに従って算出される。特に、ローカル回答中の検索結果のランキングスコアを算出するためにローカルクエリプロセッサにより使用されるローカルランキングアルゴリズムは、リモート回答中の検索結果のランキングスコアを算出するためにリモートクエリプロセッサにより使用されるリモートランキングアルゴリズムと同じであってもよい。そうすることにより、ローカル及びリモートの検索結果のランキングスコアが比較可能になり、ローカルクエリプロセッサは、受信したリモート回答中のリモート検索結果のランキングスコアに基づいて、いずれかのリモート検索結果がユーザコンピュータ１３０のグラフィカルユーザインタフェースに現在提示されている最悪（例えば、最低）ランクのローカル検索結果よりも良い（例えば、高い）ランキングスコアを持つか否かを判定することができる。そのようなより良いランクのリモート検索結果が存在する場合、より悪いランクのローカル検索結果に加えて又はその代わりに、より良いランクのリモート検索結果を表示するように、グラフィカルユーザインタフェースが更新されうる。
１．６  トークナイザ及びトークン格納部
【００６６】
トークナイザコンピュータ１１８は、ストレージプレーン１４０に格納されたコンテンツアイテム１４１をトークン化し、トークン化されたコンテンツアイテム１４０のためのトークンセットをトークン格納部１１７に格納する。トークナイザコンピュータ１１８は、様々な異なるタイミングで（周期的ベースで（例えば、１日１回、１週間に１回）、又は、コンテンツアイテム１４１が変更された後で、を含む）、ストレージプレーン１４０のコンテンツアイテム１４１をトークン化することができる。トークナイザコンピュータ１１８がストレージプレーン１４０のコンテンツアイテム１４１をトークン化する際に、トークナイザコンピュータ１１８は、トークンセットを生成し、トークンセットをトークン格納部１１７に格納する。所与のコンテンツアイテム１４１に関して、トークン格納部１１７は、１以上のトークンセットを格納することができ、そのうちの１つが、トークナイザコンピュータ１１８によりトークン化されたこの所与のコンテンツアイテム１４１の最も近時のバージョンに対応する。所与のコンテンツアイテム１４１のためのトークン格納部１１７中の他のトークンセットは、トークナイザコンピュータ１１８によりトークン化されたこの所与のコンテンツアイテム１４１の以前のバージョンに対応しうる。
【００６７】
単純な例として、テキスト「解決された２つの問題(solved two problems)」を含んだコンテンツアイテム１４１の第１のバージョンが、ストレージプレーン１４０に格納されうる。第１の時点で、トークナイザコンピュータ１１８は、コンテンツアイテム１４１の第１のバージョンをトークン化してトークンセット「solved」「two」「problems」を生成することができ、次いでトークナイザコンピュータ１１８はこのトークンセットをトークン格納部１１７に格納する。その後、第１の時点よりも後の第２の時点で、テキスト「解決された３つの問題(solved three problems)」を含んだコンテンツアイテム１４１の第２のバージョンがストレージプレーン１４０に格納されうる。するとトークナイザコンピュータ１１８は、コンテンツアイテム１４１を第２のバージョンをトークン化してトークンセット「solved」「three」「problems」を生成することができ、トークナイザコンピュータ１１８はこのトークンセットもトークン格納部１１７に格納する。コンテンツアイテム１４１の第１及び第２のバージョンを処理することの一部として、トークナイザコンピュータ１１８は、トークンセット「solved」「three」「problems」はコンテンツアイテム１４１の第２のバージョンのためのものであり、トークンセット「solved」「two」「problems」はコンテンツアイテム１４１の第１のバージョンのためのものであるということを示すメタデータ（例えば、バージョン情報）を、トークン格納部１１７に格納することができる。
【００６８】
発明の幾つかの実施形態では、トークン格納部１１７は、列指向の分散型データベースシステム（例えば、APACHE HBASEデータベースシステムなど）を含む。しかしながら、手近な特定の実装に対する要求に従って、他の実施形態において他のタイプのデータベースシステムが使用されてもよい。例えば、オープンソース、列指向、又は分散型のものの代わりに、プロプライエタリ、リレーショナル、又はスタンドアロンのデータベースシステムが使用されてもよい。
【００６９】
トークナイザコンピュータ１１８は、コンテンツアイテム１４１のテキストコンテンツをトークン化することにより、コンテンツアイテム１４１のためのトークンセットを生成することができる。コンテンツアイテム１４１のテキストコンテンツは、コンテンツアイテム１４１に関連付けられた何らかのテキストメタデータだけではなくコンテンツアイテム１４１自体の何らかのテキストコンテンツをも含みうるということを、思い出されたい。コンテンツアイテム１４１のテキストコンテンツをトークン化することは、テキストコンテンツの１以上のキャラクタシーケンスを取得することを含みうる。テキストコンテンツのフォーマットに応じて、テキストコンテンツのキャラクタシーケンスを取得するために、様々な技術がトークナイザにより使用されうる。例えば、使用される技術は、テキストコンテンツのキャラクタ符号化スキーム（例えば、ASCII、Unicode UTF-8、MICROSOFT WORD、ADOBE PDFなど）に応じてテキストコンテンツを復号すること、及び／又は、テキストコンテンツが（例えばＺＩＰ圧縮により）圧縮されているか否かに応じてテキストコンテンツを伸長することを含みうる。 
【００７０】
テキストコンテンツのキャラクタシーケンスが取得されると、トークナイザコンピュータ１１８は、キャラクタシーケンスをピース（トークンと呼ばれる）に分割することができ、恐らくは同時にトークンに対して言語的処理を実行する。言語的処理は、例えば、何らかのキャラクタ（例えば、句読点）を無視すること、一般的な単語（例えば、ストップワード）をドロップすること、及び／又は、ステミング(stemming)及びレンマ化(lemmatization)を行うことを含みうる。言語的処理はまた、トークンノーマライゼーション（発音区別符号(diacritics)及びアクセントを削除することを含む）、及び／又は、大文字化／大文字変換(capitalization/case-folding)、なども含みうる。
１．７  基本インデックス
【００７１】
基本インデックス生成コンピュータ１１１は、ユーザ１３１のホストされたコンテンツアイテム１４１の一部又は全部の「基本インデックス」を生成するように構成されうる。基本インデックス生成コンピュータ１１１は、様々な異なるタイミングで（限定される訳ではないが、周期的に（例えば、１日１回、１週間に１回）、及び／又は、検出されたイベントに応じて（例えば、基本インデックスを生成するコマンドを受信したことに応じて）、を含む）、基本インデックスを生成することができる。
【００７２】
一般的に、基本インデックスは、インデックストークンの辞書(dictionary)及び対応するポスティングを有する転置インデックスとして構造化されうる。より具体的には、基本インデックスは、キー−値ペアの集合（その中で、キーは辞書中のインデックストークンに対応し、値はポスティング中のポスティングリストに対応する）として（例えば、連想配列(associate array)として）構造化可能である。基本インデックスにインデックスされる所与のコンテンツアイテム１４１に関して、基本インデックス生成コンピュータ１１１は、トークン格納部１１７の中の、トークナイザコンピュータ１１８によりトークン化されたこの所与のコンテンツアイテム１４１の最も近時のバージョンに関するトークンセットを取得する。このトークンセットが取得されると、基本インデックス生成コンピュータ１１１は、このトークンセットに基づいて、基本インデックス中のキー−値ペアを追加又は修正することができる。特に、トークンセット中の所与のトークンに関して、基本インデックス中にこの所与のトークンに関するキー−値ペアが現在存在しない場合、基本インデックス生成コンピュータ１１１は、基本インデックス中に新しいキー−値ペア（この所与のトークンを含んだキー、及び、所与のコンテンツアイテム１４１を識別するポスティングリストを含んだ値を持つ）を生成することができる。或いは、基本インデックス中にこの所与のトークンに関するキー−値ペアが存在する場合、基本インデックス生成コンピュータ１１１は、所与のコンテンツアイテム１４１を識別するようにポスティングリスト値を修正することができる。 
【００７３】
基本インデックスサーバコンピュータ１１２は、基本インデックス生成コンピュータ１１１により生成された基本インデックスを、通信ネットワーク１２０を介してユーザコンピュータ１３０に提供するように構成されうる。基本インデックスサーバコンピュータ１１２は、様々な異なるタイミングで（限定される訳ではないが、ユーザコンピュータ１３０から受信したネットワーク要求に応じて、を含む）、生成された基本インデックスを通信ネットワーク１２０を介してユーザコンピュータ１３０に提供することができる。
【００７４】
幾つかの実施形態では、基本インデックスサーバコンピュータ１１２は、ストレージプレーン１４０の一部である。これらの実施形態において、基本インデックス生成コンピュータ１１１により生成された基本インデックスは、ユーザ１３１のホストされたコンテンツアイテム１４１の１つとして扱われ、コンテンツアイテム同期操作の一部として通信ネットワーク１２０を介してユーザコンピュータ１３０に提供される。これらの実施形態によれば、基本インデックス生成コンピュータ１１１は、ユーザ１３１のホストされたコンテンツアイテム１４１に基づいて基本インデックスを生成した後に、基本インデックスをストレージプレーン１４０に格納することができる。その後、基本インデックスは、ストレージプレーン１４０中の基本インデックスをユーザコンピュータ１３０の現在の基本インデックスと同期する目的で、ユーザ１３１のホストされたコンテンツアイテム１４１の１つとして扱われる。重要なこととして、ストレージプレーン１４０の基本インデックスは、ストレージプレーン１４０の基本インデックスがユーザコンピュータ１３０の現在の基本インデックスと異なる場合、又はユーザコンピュータ１３０に現在の基本インデックスが存在しない場合にのみ、コンテンツアイテム同期操作の一部としてユーザコンピュータ１３０に提供されうる。このようにして、ユーザコンピュータ１３０は、ユーザコンピュータ１３１の同期アプリケーションとオンラインコンテンツ管理サービス１１０との間の定期的な、周期的な、又は所定機会の(opportunistic)コンテンツアイテム同期操作の一部として、基本インデックス生成コンピュータ１１１により生成された、ユーザ１３１のホストされたコンテンツアイテム１４１の最新の基本インデックスを受信することができる。
１．８  インデックス変更情報
【００７５】
トークナイザコンピュータ１１８は、変更されたコンテンツアイテム１４１をトークン化して変更されたコンテンツアイテム１４１に関する生成されたトークンセットをトークン格納部１１７に格納した後に、インデックス変更情報生成コンピュータ１１３に通知することができる。例えば、インデックス変更情報生成コンピュータ１１３は、ユーザ１３１のホストされたコンテンツアイテム１４１の１つがストレージプレーン１４０において修正され、生成され、又は削除された後に、トークナイザコンピュータ１１８により通知されうる。 
【００７６】
トークナイザコンピュータ１１８から変更されたコンテンツアイテム１４１に関する通知を受信したことに応じて、インデックス変更情報生成コンピュータ１１３は、変更されたコンテンツアイテム１４１に対する変更を反映するインデックス変更情報(index mutation)を生成し、インデックス変更情報生成コンピュータ１１３のインデックス変更情報ジャーナルにインデックス変更情報を格納することができる。幾つかの実施形態では、インデックス変更情報ジャーナルは、分散型の追加限定のコミットログとして実装される。 
【００７７】
変更されたコンテンツアイテム１４１がストレージプレーン１４０において修正された場合、その変更に関して生成されるインデックス変更情報は、変更されたコンテンツアイテム１４１をインデックスするために使用する１以上のトークン、及び／又は、変更されたコンテンツアイテム１４１をインデックスするために使用しない１以上のトークンを含みうる。変更されたコンテンツアイテム１４１をインデックスするために使用する１以上のトークンは、変更後はコンテンツアイテム１４１に含まれるが変更前はコンテンツアイテム１４１に含まれていなかったトークンを含みうる。変更されたコンテンツアイテム１４１をインデックスするために使用しない１以上のトークンは、変更前はコンテンツアイテム１４１に含まれていたが変更後はコンテンツアイテム１４１に含まれないトークンを含みうる。
【００７８】
変更されたコンテンツアイテム１４１がストレージプレーン１４０において修正された場合、インデックス変更情報生成コンピュータ１１３は、トークン格納部１１７のコンテンツアイテム１４１の最も近時のバージョンに関するトークンセットをトークン格納部１１７のコンテンツアイテム１４１の以前のバージョンに関するトークンセットと比較することにより、修正されたコンテンツアイテム１４１をインデックスするために使用する何らかのトークン、及び修正されたコンテンツアイテム１４１をインデックスするために使用しない何らかのトークンを識別することができる。例えば、修正後のコンテンツアイテム１４１の最も近時のバージョンに関するトークン格納部１１７のトークンセットが「solved」「three」「problems」であり、修正前のコンテンツアイテム１４１の以前のバージョンに関するトークン格納部１１７のトークンセットが「solved」「two」「problems」である場合を考える。この場合、インデックス変更情報生成コンピュータ１１３は、修正されたコンテンツアイテム１４１をインデックスするために使用するトークンとしてトークン「three」を、そして修正されたコンテンツアイテム１４１をインデックスするために使用しないトークンとしてトークン「two」を、識別することができる。
【００７９】
変更されたコンテンツアイテム１４１がストレージプレーン１４０に追加された場合、インデックス変更情報は、新しいコンテンツアイテム１４１をインデックスするために使用する１以上のトークンを含みうる。例えば、追加後のコンテンツアイテム１４１の現在のバージョンに関するトークン格納部１１７中のトークンセットが「solved」「three」「problems」であるものとする。この場合、インデックス変更情報生成コンピュータ１１３は、新しいコンテンツアイテム１４１をインデックスするのに使用するトークンとして、トークン「solved」「three」「problems」を識別することができる。
【００８０】
変更されたコンテンツアイテム１４１がストレージプレーン１４０から削除された場合、インデックス変更情報は、削除されたコンテンツアイテム１４１をインデックスするために使用しない１以上のトークンを含みうる。例えば、削除前のコンテンツアイテム１４１の最も近時のバージョンに関するトークン格納部１１７中のトークンセットが「solved」「three」「problems」であるものとする。この場合、インデックス変更情報生成コンピュータ１１３は、削除されたコンテンツアイテム１４１をインデックスするのに使用しないトークンとして、トークン「solved」「three」「problems」を識別することができる。
【００８１】
上述のように、変更されたコンテンツアイテム１４１に関してインデックス変更情報生成コンピュータ１１３により生成されるインデックス変更情報は、インデックス変更情報生成コンピュータ１１３のインデックス変更情報ジャーナルに格納可能である。そうする際に、インデックス変更情報生成コンピュータ１１３は、コンテンツアイテム１４１が変更された時刻を反映した「ジャーナルタイムスタンプ」に関連付けて、インデックス変更情報をジャーナル内に格納することができる。それゆえ、コンテンツアイテム１４１に対する変更に関するインデックス変更情報は、コンテンツアイテム１４１に対する変更が発生した順序を反映した順序で、ジャーナル内に格納可能である。
【００８２】
インデックス変更情報サーバコンピュータ１１４は、インデックス変更情報ジャーナルから取得したインデックス変更情報を、通信ネットワーク１２０を介してユーザコンピュータ１３０に送信することができる。インデックス変更情報サーバコンピュータ１１４は、様々な異なるタイミングで（限定される訳ではないが、ユーザコンピュータ１３０からのネットワーク要求に応じて、インデックス変更情報サーバコンピュータ１１４がインデックス変更情報をインデックス変更情報ジャーナルに格納したことに応じて、及び／又は、周期的間隔（例えば、１分間隔）の発生時に、を含む）、通信ネットワーク１２０を介してユーザコンピュータ１３０にインデックス変更情報を送信することができる。
【００８３】
インデックス変更情報ジャーナル内のどのインデックス変更情報をユーザコンピュータ１３０に送信するかを判定するために、インデックス変更情報サーバコンピュータ１１４は、インデックス変更情報ジャーナル内のインデックス変更情報に関連付けられたジャーナルタイムスタンプを、ユーザコンピュータ１３０に関連付けられた「ローカルインデックスタイムスタンプ」と比較することができる。ローカルインデックスタイムスタンプは、ユーザ１３１のホストされたコンテンツアイテム１４１に対する変更に関してユーザコンピュータ１３０の「ローカルインデックス」が新版であるそこまでの時点を反映する。 
【００８４】
ユーザコンピュータ１３０のローカルインデックスタイムスタンプは、ユーザコンピュータ１３０に格納され、インデックス変更情報サーバコンピュータ１１４へ提供されうる。或いは、オンラインコンテンツ管理サービス１１０が、ユーザコンピュータ１３０のローカルインデックスタイムスタンプを保持してもよい。いずれの場合も、ユーザコンピュータ１３０のローカルインデックスタイムスタンプは、様々な異なるタイミングで（限定される訳ではないが、ユーザコンピュータ１３０が新しい基本インデックスを取得したときはいつでも、及び、ユーザコンピュータ１３０がインデックス変更情報を取得したときはいつでも、を含む）、更新されうる。前述の通り、インデックス変更情報サーバコンピュータ１１４は、インデックス変更情報ジャーナル内のインデックス変更情報に関連付けられたジャーナルタイムスタンプを、ユーザコンピュータ１３０のローカルインデックスタイムスタンプと比較して、ユーザコンピュータ１３０へ提供するインデックス変更情報ジャーナル内のユーザコンピュータ１３０のためのインデックス変更情報を判定する。  
【００８５】
インデックス変更情報ジャーナル内の所与のインデックス変更情報をユーザコンピュータ１３０に提供すべきか否かを判定するために、インデックス変更情報サーバコンピュータ１１４は、インデックス変更情報ジャーナル内の所与のインデックス変更情報に関連付けられたジャーナルタイムスタンプを、ユーザコンピュータ１３０の現在のローカルインデックスタイムスタンプと比較することができる。所与のインデックス変更情報に関するジャーナルタイムスタンプがユーザコンピュータ１３０のローカルインデックスタイムスタンプよりも近時のものである場合、インデックス変更情報サーバコンピュータ１１４は、インデックス変更情報をユーザコンピュータ１３０に提供すると判定することができる。一方、所与のインデックス変更情報に関するジャーナルタイムスタンプがローカルインデックスタイムスタンプほど近時のものではない場合、インデックス変更情報サーバコンピュータ１１４は、インデックス変更情報をユーザコンピュータ１３０に提供しないと判定することができる。このようにして、ユーザコンピュータ１３０には、ユーザコンピュータ１３０のローカルインデックスにまだインデックスされていないユーザ１３１のホストされたコンテンツアイテム１４１に対する変更に関するインデックス変更情報が提供されうる。
【００８６】
上述のバックグラウンドを念頭に置いて、ユーザコンピュータ１３０のローカルインデックス、インデックス変更情報生成コンピュータ１１３のインデックス変更情報ジャーナル、及びトークン格納部１１７の構造及び操作に関する例としての実施形態、続いて、ユーザコンピュータ１３０においてユーザ１３１のホストされたコンテンツアイテム１４１をインデックスする処理例、及びユーザコンピュータ１３０においてユーザ１３１のホストされたコンテンツアイテム１４１を検索する処理例について、以下で説明する。
２．０  ローカルインデックス
【００８７】
ここで図２に移ると、これは、本発明の幾つかの実施形態に従う、ユーザコンピュータ１３０に格納されうる、ユーザ１３１のホストされたコンテンツアイテム１４１のローカルインデックス２１０の概略図である。ローカルインデックス２１０は、辞書２１３及び対応するポスティング２１７を含んだ転置インデックスとして構造化されうる。
【００８８】
辞書２１３は、インデックストークン２１４を含むことができ、これによってユーザ１３１のホストされたコンテンツアイテム１４１はユーザコンピュータ１３０においてインデックスされる。辞書２１３はまた、各インデックストークン（例えば、２１４Ａ）のための、ポスティングリスト（例えば、２１８Ａ）に対するポインタも含む。各ポスティングリスト（例えば、２１８Ａ）は、ユーザ１３１のコンテンツアイテム１４１のうちのどれにおいて対応するインデックストークン（例えば、２１４Ａ）が発生しているかを識別する１以上のコンテンツアイテム識別子を含む。ローカルインデックス２１０のインデックストークン（例えば、２１８Ａ）は、ユーザ１３１のホストされたコンテンツアイテム１４１のうちの１以上のもののテキストコンテンツをトークン化する際にトークナイザコンピュータ１１８により生成されるトークンに対応しうる。 
【００８９】
辞書２１３はまた、インデックストークン２１４以外の情報（例えば、インデックストークン属性情報（例えば、インデックストークン頻度情報など）、又は、クエリ依存及び／又はクエリ非依存のやり方で検索クエリに対するコンテンツアイテム１４１の関連性をランク付けしたり或いは判定したりするためにランキングアルゴリズムにおいてローカルクエリプロセッサにより使用されうる他の情報、など）も含みうる。
【００９０】
ポスティング２１７のポスティングリスト（例えば、２１８Ａ）は、コンテンツアイテム識別子以外の情報（例えば、コンテンツアイテム−インデックストークン属性情報（例えば、特定のコンテンツアイテム１４１におけるインデックストークン（例えば、２１４Ａ）の頻度など）、特定のコンテンツアイテム１４１におけるインデックストークン（例えば、２１４Ａ）の位置又は複数の位置、又は、クエリ依存及び／又はクエリ非依存のやり方でクエリに対するコンテンツアイテム１４１の関連性をランク付けしたり或いは判定したりするためにランキングアルゴリズムにおいてローカルクエリプロセッサにより使用されうる他の情報、など）も含みうる。
【００９１】
幾つかの実施形態では、以下のコンテンツアイテム−インデックストークン属性の全て、又はそのサブセット若しくはスーパーセットが、ローカルインデックス２１０の対応するインデックストークン（例えば、２１４Ａ）に関するポスティングリスト（例えば、２１８Ａ）におけるコンテンツアイテム１４１のコンテンツアイテム識別子に関連付けられる。
●対応するインデックストークンがコンテンツアイテム１４１のファイル名の一部であるか否かを示す値、
●対応するインデックストークンがコンテンツアイテム１４１のファイル名拡張子の一部であるか否かを示す値、
●対応するインデックストークンがコンテンツアイテム１４１のファイルパスの一部であるか否かを示す値、
●対応するインデックストークンがコンテンツアイテム１４１のタイトルの一部であるか否かを示す値、及び／又は、
●対応するインデックストークンがコンテンツアイテム１４１のテキストコンテンツにおいて太字にされ或いはハイライトされているか否かを示す値。
【００９２】
クエリ依存及び／又はクエリ非依存のやり方でクエリに対するコンテンツアイテム１４１の関連性をランク付けしたり或いは判定したりするためにランキングアルゴリズムにおいて上記のコンテンツアイテム−インデックストークン属性のいずれかを使用することに加えて、ローカルクエリプロセッサは、クエリに合致するコンテンツアイテム１４１の検索回答サマリを生成する際に上記のコンテンツアイテム−インデックストークン属性のいずれかを使用してもよい。例えば、クエリのクエリトークンがコンテンツアイテム１４１のファイル名から生成されたインデックストークン（例えば、２１４Ａ）に合致する場合、生成される検索回答サマリは、検索回答サマリの中にコンテンツアイテム１４１のファイル名を表示してファイル名の中に現れるインデックストークンを視覚的にハイライトする（例えば、太字にする又は下線を引くことにより）ことのより、その事実を含んでもよい。
【００９３】
幾つかの実施形態では、以下のコンテンツアイテム属性の全て、又はそのサブセット若しくはスーパーセットが、ユーザコンピュータ１３０において、ローカルインデックス２１０の中にインデックスされたコンテンツアイテム１４１のコンテンツアイテム識別子に関連付けられる。
●コンテンツアイテム１４１のサイズ（例えば、バイトで）、
●コンテンツアイテム１４１が修正された日付／時刻、
●コンテンツアイテム１４１がストレージプレーン１４０から削除されたか否かを示す値、
●コンテンツアイテム１４１に対応するコンテンツアイテムがユーザコンピュータ１３０に格納されているか否かを示す値、
●コンテンツアイテム１４１に対応するコンテンツアイテムがユーザコンピュータ１３０に格納されている場合、ユーザコンピュータ１３０に格納されているコンテンツアイテム１４１に対応するコンテンツアイテムのバージョンが、ローカルインデックス２１０の中にインデックスされたコンテンツアイテム１４１のバージョンに関して旧版であるか否かを示す値、
●ローカルインデックス２１０の中にインデックスされたコンテンツアイテム１４１のバージョンを示す値、
●コンテンツアイテム１４１の全ての利用可能なテキストコンテンツがトークナイザ１１８によりトークン化されているか否かを示す値、
●コンテンツアイテム１４１がオンラインコンテンツ管理サービス１１０の２以上のユーザにより共有されているか否か（例えば、オンラインコンテンツ管理サービス１１０の２以上のユーザアカウントに関連付けられているか否か）を示す値、
●コンテンツアイテム１４１がオンラインコンテンツ管理サービス１１０の２以上のユーザにより共有されている場合、コンテンツアイテム１４１を共有している１以上のユーザのユーザ識別子（及び／又はユーザアカウント識別子）のリスト、   
●コンテンツアイテム１４１がストレージプレーン１４０に格納された日付／時刻を示すタイムスタンプ、
●トークナイザ１１８によりコンテンツアイテム１４１から抽出されたトークンの数、
●コンテンツアイテム１４１のテキストサマリ／ダイジェスト、及び／又は、
●コンテンツアイテム１４１からのテキスト引用(snippet)。
【００９４】
クエリ依存及び／又はクエリ非依存のやり方でクエリに対するコンテンツアイテム１４１の関連性をランク付けしたり或いは判定したりするためにランキングアルゴリズムにおいて上記のコンテンツアイテム属性のいずれかを使用することに加えて、ローカルクエリプロセッサは、クエリに合致するコンテンツアイテム１４１の検索回答サマリを生成する際に上記のコンテンツアイテム−インデックストークン属性のいずれかを使用してもよい。例えば、コンテンツアイテム１４１のテキストサマリ／ダイジェスト、及び／又は、コンテンツアイテム１４１からのテキスト引用が、コンテンツアイテム１４１の検索回答サマリに提示されてもよい。
【００９５】
発明の幾つかの実施形態では、スペースの効率性のため、及びポスティング２１７のコンピュータストレージサイズを削減するために、ポスティングリスト２１８の中のコンテンツアイテム識別子が、ユーザコンピュータ１３０にローカルでありグローバルコンテンツアイテム識別子（グローバルコンテンツアイテム識別子を表現するのに必要なバイト数に関してサイズがより大きい）を代替するローカル識別子を含む。ローカルコンテンツアイテム識別子は、ローカルコンテンツアイテム識別子が代替するグローバルコンテンツアイテム識別子よりも、ローカルコンテンツアイテム識別子を表現するのに必要なバイト数に関してサイズが小さくなりうる。本明細書において、そうでないと文脈で明確に明らかである場合を別として、コンテンツアイテム１４１の「コンテンツアイテム識別子」は、コンテンツアイテム１４１のローカルコンテンツアイテム識別子及びコンテンツアイテム１４１のグローバルコンテンツアイテム識別子を含んだ、コンテンツアイテム１４１を直接的に又は間接的に（例えば、マッピングを通じて）一意に識別する全ての可能な形態のコンテンツアイテム識別子を指す。 
【００９６】
本発明の幾つかの実施形態では、ローカルクエリプロセッサにおいて検索クエリが受信されると、ローカルクエリプロセッサは、クエリ中のクエリトークンを、ローカルインデックス２１０の辞書２１３へのキーとして使用して、対応するポスティングリスト２１８を識別する。クエリ中に複数のクエリトークンが存在する場合、クエリトークンがブーリアン式として相互にどのように関係しているかに応じて、対応するポスティングリスト２１８が適切に結合されうる。手近な特定の実装に対する要求に従って、この目的のために多数の異なる結合アルゴリズムが使用可能である。
【００９７】
ローカルインデックス２１０に対して検索クエリを処理する際に、ユーザコンピュータのローカルクエリプロセッサは、辞書２１３（又はその一部）を、より効率的なアクセスのために、ユーザコンピュータ１３０の不揮発性ストレージ（例えば、フラッシュメモリ、ハードディスク）からユーザコンピュータ１３０の揮発性メモリ（例えば、ＲＡＭ）へとロードすることができる。より効率的なアクセスのために、ポスティングリスト（例えば、２１８Ａ）も、ユーザコンピュータ１３０の揮発性メモリに格納キャッシュ可能である。キャッシュされたポスティングリスト２１８は、キャッシュ追放ポリシー（例えば、最も過去のアクセスのポリシー(least recently accessed policy)など）に従って、ユーザコンピュータ１３０の揮発性メモリから追放され(evicted)うる。ローカルクエリプロセッサはまた、ポスティング２１７から取得された複数のポスティングリスト２１８に対して実行された結合アルゴリズムの結果として生成されたポスティングリスト（例えば、２１８Ａ）を、ユーザコンピュータ１３０の揮発性メモリにキャッシュすることもできる。そうすることにより、ローカルクエリプロセッサは、後で（例えば、先に処理されたクエリと共通のクエリトークンを持つ検索クエリが処理される際に、など）複数のポスティングリスト２１８に対して結合アルゴリズムを実行しなければならないことを回避することができる。
３．０  基本クエリ処理
【００９８】
ここで図３に移ると、これは、本発明の幾つかの実施形態に従う、ローカルインデックス２１０に対して検索クエリを処理する際にユーザコンピュータ１３０のローカルクエリプロセッサにより実行される基本クエリ処理の概略図である。辞書２１３は、図３に示すもの以外のインデックストークンを含むことができ、ポスティング２１７は、図３に示すもの以外のポスティングリストを含むことができる。
【００９９】
複数のクエリトークンを持つ検索クエリがユーザ１３１から受信されてローカルクエリプロセッサに提供されると、関連するポスティングリストがまだ揮発性メモリにキャッシュ（格納）されていない場合、検索クエリ中のトークンは、ローカルインデックス２１０からのポスティング２１７における関連するポスティングリストをユーザコンピュータ１３０の揮発性メモリにキャッシュ（格納）するために使用される。その後、ローカルクエリプロセッサは、関連するポスティングリストに対して結合アルゴリズムを実行して、クエリを満足するコンテンツアイテム１４１を識別する。 
【０１００】
例として基本クエリ処理を説明するために、検索クエリ[two problems]（囲んでいる括弧[]は含まない）を考える。この例において、ローカルインデックス２１０は、ユーザ１３１のコンテンツアイテム１４１のうちの少なくとも２つをインデックスしている。明確な例を提供する目的で、２つのコンテンツアイテム１４１がそれぞれ識別子Ｄ２及びＤ３を持つものとする。更に、コンテンツアイテム１４１  Ｄ２がテキストコンテンツ「solved two problems」を含み、コンテンツアイテム１４１  Ｄ３がテキストコンテンツ「solved three problems」を含むものとする。従って、コンテンツアイテム１４１  Ｄ２は、ローカルインデックス２１０においてインデックストークン「solved」、「two」、及び「problems」によりインデックスされており、コンテンツアイテム１４１  Ｄ３は、ローカルインデックス２１０においてインデックストークン「solved」、「three」、及び「problems」によりインデックスされている。
【０１０１】
ポスティングリストがまだ揮発性メモリにキャッシュ（ロード）されていない場合、クエリ[two problems]をユーザ１３１から受信したことに応じて、ローカルクエリプロセッサは、クエリ中のクエリトークンに合致するインデックストークンに関連付けられた、ローカルインデックス２１０からのポスティングリストを、ユーザコンピュータ１３０の揮発性メモリにキャッシュ（格納）する。具体的には、インデックストークン３１４Ａ「problems」及びインデックストークン３１４Ｄ「two」にそれぞれ関連付けられたポスティングリスト３１８Ａ及び３１８Ｂが、揮発性メモリにキャッシュされる（まだそこにロードされていない場合には）。キャッシュされると、ローカルクエリプロセッサは、ロードされたポスティングリスト３１８Ａ及び３１８Ｄに対して結合アルゴリズムを実行することにより、クエリを満足するコンテンツアイテム１４１を識別する。この例では、結合アルゴリズムは、ポスティングリスト３１８Ａ及び３１８Ｄを交わらせて(intersect)、ユーザ１３１のクエリを満足するものとしてコンテンツアイテム１４１  Ｄ２を識別するがコンテンツアイテム１４１  Ｄ３を識別しないようにしてもよい。その後、コンテンツアイテム１４１  Ｄ２がクエリを満足するというインジケーションが、ユーザコンピュータ１３０のグラフィカルユーザインタフェースに提示される検索回答サマリにおいてユーザ１３１に提供されうる。
４．０  基本インデックス及びデルタインデックス
【０１０２】
ここで図４に移ると、これは、発明の幾つかの実施形態に従う、ユーザコンピュータ１３０におけるローカルインデックス２１０の様々な可能な状態に関する状態図である。増加的に更新可能なローカルインデックス２１０を促進するために、ローカルインデックス２１０は、基本インデックス４２０及びデルタインデックス４４０を含みうる。デルタインデックス３４０はユーザコンピュータ１３０において変化しうるのに対して基本インデックス４２０はユーザコンピュータ１３０において変化可能である必要がないという点で、基本インデックス４２０はデルタインデックス４４０と異なる。換言すると、基本インデックス４２０は、ユーザコンピュータ１３０において不変のものとして扱うことができ、基本インデックス４２０ではなくデルタインデックス４４０のみが、インデックス変更情報サーバコンピュータ１１４から受信されたインデックス変更情報によりユーザコンピュータ１３０において変更される。典型的には、デルタインデックス４４０は、基本インデックス４２０よりもバイトに関してずっとサイズが小さく（例えば、極めて小さいオーダー）、これによりユーザコンピュータ１３０の揮発性メモリにデルタインデックス４４０を全体として格納することが可能になり、これは基本インデックス４２０よりも効率的に変更可能であり、基本インデックスは、典型的にはユーザコンピュータ１３０の不揮発性メモリ（例えば、ディスク）に格納されるが、基本インデックス４２０の一部（例えば、基本インデックス４２０のポスティングリスト）は折に触れてユーザコンピュータ１３０の揮発性メモリにキャッシュされうる。
【０１０３】
動作時に、ユーザコンピュータ１３０は、最初はローカルインデックス２１０を持たない。ローカルインデックス２１０は、基本インデックス４２０がオンラインコンテンツ管理サービス１１０から受信された際に、ユーザコンピュータ１３０において生成されうる。その後、ストレージプレーン１４０においてユーザ１３１のホストされたコンテンツアイテム１４１に対する変更が行われると、ユーザコンピュータ１３０は、ユーザ１３１のホストされたコンテンツアイテム１４１に対する変更を反映するインデックス変更情報をオンラインコンテンツ管理サービス１１０から受信しうる。デルタインデックス４４０は、受信したインデックス変更情報に基づいて変更されうる。それゆえ、所与の時点において、ユーザコンピュータ１３０のローカルインデックス２１０は、基本インデックス４２０のみを含む場合もあれば、基本インデックス４２０及びデルタインデックス４４０の両方を含む場合もある。基本インデックス４２０及びデルタインデックス４４０は、同じように構造化されていてもよい。即ち、基本インデックス４２０及びデルタインデックス４２０の両方が、インデックストークンの辞書(dictionary)及び対応するポスティングを有する転置インデックスとして構造化されうる。クエリがユーザ１３１から受信されると、ユーザコンピュータ１３０のローカルクエリプロセッサは、基本インデックス４２０及びデルタインデックス４４０の両方を調べるが、デルタインデックス４４０中のインデックスエントリは基本インデックス４２０中の対応するエントリをオーバライドする（代替する）。  
【０１０４】
本発明の幾つかの実施形態に従う、ユーザコンピュータ１３０におけるローカルインデックス２１０の可能なライフサイクルを、図４に示す。最初は、状態４０２Ａにおいて、ユーザコンピュータ１３０はローカルインデックス２１０を持たない。
【０１０５】
オンラインコンテンツ管理サービス１１０から基本インデックス４２０の第１のバージョンを受信したことに応じて、ユーザコンピュータ１３０は、状態４０２Ａから状態４０２Ｂへと遷移４０４Ａ−Ｂしうる。基本インデックス４２０の第１のバージョンは、ある時点までのユーザ１３１のホストされたコンテンツアイテム１４１の状態を反映する。
【０１０６】
状態４０２Ｂで、基本インデックス４２０の第１のバージョンが、ユーザコンピュータ１３０においてローカルインデックス２１０の一部としてインストールされ、ユーザコンピュータ１３０のローカルクエリプロセッサは、基本インデックス４２０を使用してユーザ１３１から受信した検索クエリに回答する。
【０１０７】
変更されたコンテンツアイテム１４１に関するインデックス変更情報がインデックス変更情報サーバコンピュータ１１４から受信されると、ユーザコンピュータ４２０は、状態４０２Ｂから状態４０２Ｃへと遷移４０４Ｂ−Ｃしうる。状態４０２Ｃで、デルタインデックス４４０は、受信したインデックス変更情報を反映するように変更されうる。状態４０２Ｃで、ユーザコンピュータ１３０のローカルクエリプロセッサは、基本インデックス４２０及びデルタインデックス４４０の両方を使用して、ユーザ１３１からの検索クエリを処理する。この場合、デルタインデックス４４０中のインデックスエントリは、基本インデックス４２０中の対応するインデックスエントリをオーバーライド（代替）する。例えば、デルタインデックス４４０は、検索クエリトークンに対応するインデックストークン（例えば、２１４Ａ）に関連付けられたデルタインデックス４４０のポスティングリスト（例えば、２１８Ａ）において特定のコンテンツアイテム１４１が識別されたという理由により、特定のコンテンツアイテム１４１が検索クエリトークンに合致するということを示す場合がある。しかしながら、同時に、基本インデックス４２０は、この特定のコンテンツアイテム１４１が検索クエリトークンに合致しないということを示す場合がある。この場合、デルタインデックス４４０と基本インデックス４２０との間の不一致は、デルタインデックス４４０を優先して解決され、この特定のコンテンツアイテム１４１は、検索クエリトークンに合致するものと考えられる。不一致がデルタインデックス４４０を優先して解決されるのは、デルタインデックス４４０が、基本インデックス４２０と比較して、ユーザ１３１のホストされたコンテンツアイテム１４１に対する最も近時の変更を反映しているからである。 
【０１０８】
また、遷移４０４Ｃ−Ｃにより示すように、ユーザコンピュータ１３０のデルタインデックス４４０は、新たなインデックス変更情報がインデックス変更情報サーバコンピュータ１１４から受信されると、更に変更されうる。
【０１０９】
ユーザコンピュータ１３０は、ユーザコンピュータ１３０においてオンラインコンテンツ管理サービス１１０から新たな基本インデックス４２０が受信されると、状態４０２Ｂへ戻るように遷移４０４Ｃ−Ｂしうる。
【０１１０】
ユーザコンピュータ１３０は、様々異なるイベントの発生時に（限定される訳ではないが、ローカルインデックス２１０がユーザコンピュータ１３０から削除又は除去された場合を含む）、状態４０２Ｃから状態４０２Ａへ遷移４０４Ｃ−Ａしたり、状態４０２Ｂから状態４０２Ａへ遷移４０４Ｂ−Ａしたりする可能性がある。
【０１１１】
典型的な動作において、遷移４０４Ｂ−Ｃ及び遷移４０４Ｃ−Ｂにより形成されるサイクルは継続的に繰り返されうるものであり、ユーザコンピュータ１３０が状態４０２Ｂへ遷移する度に、オンラインコンテンツ管理サービス１１０から受信されたより新版の基本インデックス４２０がローカルインデックス２１０の一部としてインストールされる。受信された基本インデックス４２０は、ユーザコンピュータ１３０の現在の基本インデックス４２０がユーザ１３１のホストされたコンテンツアイテム１４１に対する変更をインデックスしている時点よりも後の（より近時の）時点までユーザ１３１のホストされたコンテンツアイテム１４１に対する変更をインデックスしているという意味で、より新版のものでありうる。オンラインコンテンツ管理サービス１１０から受信されたより新版の基本インデックス４２０によりユーザコンピュータ１３０の現在の基本インデックス４２０を周期的に置換することは、ユーザコンピュータ１３０の揮発性メモリにおけるデルタインデックス４４０のコンピュータストレージサイズが大きくなりすぎることを防ぐ効果も持っている。この効果が達成されるのは、より新版の基本インデックス４２０により現在の基本インデックス４２０が置換される度に、現在のデルタインデックス４４０のエントリを破棄することができるからである。その後、オンラインコンテンツ管理サービス１１０から新たなインデックス変更情報が受信されると、次のインデックス変更情報４２０が受信されるまで（その時、ユーザコンピュータは状態４０２へと戻るように遷移４０４Ｃ−Ｂする）、受信されたインデックス変更情報に基づいてエントリがデルタインデックス４４０に追加される。
【０１１２】
ユーザコンピュータ１３０のローカルインデックスタイムスタンプは、様々な異なるタイミングで（限定される訳ではないが、ユーザコンピュータ１３０が、状態４０２Ａから状態４０２Ｂへ遷移４０４Ａ−Ｂしたとき、状態４０２Ｂから状態４０２Ｃへ遷移４０４Ｂ−Ｃしたとき、状態４０２Ｃから状態４０２Ｂへ遷移４０４Ｃ−Ｂしたとき、及び状態４０２Ｃから状態４０２Ｃへ遷移４０４Ｃ−Ｃしたとき、を含む）、更新されうる。ローカルインデックスタイムスタンプが更新される度に、これは、ユーザ１３１のホストされたコンテンツアイテム１４１に対する変更に関してローカルインデックス２１０が新版である時点を反映するように、更新されうる。この時点は、様々な異なる方法で（限定される訳ではないが、オンラインコンテンツ管理サービス１１０から新たな基本インデックス又はインデックス変更情報が受信されたときにユーザコンピュータ１３０のシステムクロックから取得された現在の日付／時刻、オンラインコンテンツ管理サービス１１０から受信された新たな基本インデックス４２０に関連付けられたタイムスタンプ、又はオンラインコンテンツ管理サービス１１０から受信された新たなインデックス変更情報に関連付けられたタイムスタンプ、が含まれる）、判定されうる。
５．０  基本デルタインデックス変更情報操作
【０１１３】
ここで図５Ａ及び図５Ｂに移ると、これは、発明の幾つかの実施形態に従う、ユーザコンピュータ１３０においてローカルインデックス２１０に適用される基本インデックス変更情報操作の概略図である。図５Ａは、インデックス変更情報が適用される前のローカルインデックス２１０を表し、図５Ｂは、インデックス変更情報が適用された後のローカルインデックス２１０を表す。辞書２１３は、図５Ａ及び図５Ｂに示すもの以外のインデックストークンを含むことができ、ポスティング２１７は、図５Ａ及び図５Ｂに示すもの以外のポスティングリストを含むことができる。
【０１１４】
この例において、インデックス変更情報は、コンテンツアイテム１４１  Ｄ２のためのものであり、コンテンツアイテム１４１  Ｄ２をインデックスするためにトークン「three」を使用することを示し、かつ、コンテンツアイテム１４１  Ｄ２をインデックスするためにトークン「two」を使用しないことを示すものとする。 
【０１１５】
更に、インデックス変更情報がローカルインデックス２１０に適用される前に、コンテンツアイテム１４１  Ｄ２は、インデックストークン「solved」５１４Ｂ、「two」５１４Ｃ、及び「problems」５１４Ａによりローカルインデックスの基本インデックス４２０の中にインデックスされているものとする。 
【０１１６】
インデックス変更情報がローカルインデックス２１０に適用された後に、インデックストークン５１４Ｄ「three」及びコンテンツアイテム１４１  Ｄ２を示すポスティングリスト５１８Ａを持つインデックスエントリが、デルタインデックス４４０の中に存在する。加えて、インデックストークン５１３Ｃ「two」及びコンテンツアイテム１４１  Ｄ２がもはやインデックストークン５１３Ｃ「two」によってインデックスされないことを示すポスティングリスト５１８Ｂを持つインデックスエントリが、デルタインデックス４４０の中に存在する。重要なこととして、この例では、インデックス変更情報がローカルインデックス２１０に適用される際に、基本インデックス４２０は変更されない。代わりに、デルタインデックス４４０が、基本インデックス生成コンピュータ１１１により基本インデックス４２０が生成された以降のユーザ１３１のホストされたコンテンツアイテム１４１に対する変更を表すように変更される。
６．０  インデックス変更情報ジャーナル
【０１１７】
ここで図６に移ると、これは、本発明の幾つかの実施形態に従う、インデックス変更情報生成コンピュータ１１３により保持されうるインデックス変更情報ジャーナル６１０の概略図である。ユーザのホストされたコンテンツアイテム１４１が変更されると、インデックス変更情報生成コンピュータ１１３には、変更が通知されうる。これに応じて、インデックス変更情報生成コンピュータ１１３は、変更を反映したインデックス変更情報６２２を生成し、インデックス変更情報６２２を、インデックス変更情報ジャーナル６１０中のジャーナルエントリ６２０の一部として、ジャーナルタイムスタンプ６２１と共に格納する。
【０１１８】
幾つかの実施形態では、インデックス変更情報ジャーナル６１０は、コモディティのコンピューティングハードウェアに構築される追加限定の分散型のコミットログとして実装される。このようにして、インデックス変更情報生成コンピュータ１１３は、ストレージプレーン１４０におけるコンテンツアイテム１４１に対する高速な変更（例えば、毎秒数万の変更）を処理することができ、インデックス変更情報ジャーナル６１０は、それに関するインデックス変更情報６２２を格納することができる。コモディティのコンピューティングハードウェアを用いる追加限定の分散型のコミットログとしてジャーナル６１０を実装することにより、インデックス変更情報ジャーナル６１０は、ストレージプレーン１４０がますます多くのコンテンツアイテム１４１を格納した場合に、及び／又は、コンテンツアイテム１４１に対する変更の速度（レート）が増加した場合に、より効果的にスケーリングを行うことができる。加えて、以前のジャーナルエントリ６２０の場所に隣接するコンピュータストレージの場所に次のジャーナルエントリ６２０を格納する（追加する）ことにより、ストレージデバイス（例えば、ディスク）のスキャニングが削減される。
【０１１９】
示されるように、ジャーナルエントリ６２０は、ジャーナルタイムスタンプ６２１、及びインデックス変更情報生成コンピュータ１１３により生成される変更されたコンテンツアイテム１４１に関するインデックス変更情報６２２を含みうる。
【０１２０】
最初に、変更されたコンテンツアイテム１４１に関して生成されるインデックス変更情報６２２に移ると、インデックス変更情報６２２は、コンテンツアイテムネームスペース識別子６２３、コンテンツアイテム識別子６２４、変更されたコンテンツアイテム１４１をインデックスするのに使用する１以上のトークンのセット６２５、及び／又は、変更されたコンテンツアイテム１４１をインデックスするのに使用しない１以上のトークンのセット６２６を含みうる。コンテンツアイテムネームスペース識別子６２３は、変更されたコンテンツアイテム１４１が属するコンテンツアイテムネームスペースを識別する。
【０１２１】
ジャーナル６１０の中のエントリ６２０は、ユーザコンピュータのローカルインデックス２１０がインデックス変更情報６２２に関して新版であるか否かを判定するためにユーザコンピュータ（例えば、１３０）のローカルインデックスタイムスタンプと比較可能な、ジャーナルタイムスタンプ６２１を含みうる。
７．０  トークン格納部
【０１２２】
図７は、発明の幾つかの実施形態に従う、トークン格納部１１７の可能なスキーマ(schema)を示す。このスキーマによれば、トークン格納部１１７は、「文書」テーブル７１０及び「インデクサ−文書」テーブル７２０という２つのテーブルを含む。
【０１２３】
文書テーブル７１０は、トークナイザ１１８により処理されたホストされたコンテンツアイテム１４１のバージョンに関するトークン及びメタデータのセットを格納する。実際的な実施形態において、文書テーブル７１０は、所与の時点で、コンテンツアイテム１４１の最も近時のｒ個のバージョンに関する情報のみを格納しうる（ｒは、様々なファクター（例えば、文書テーブル７１０の望まれる最大サイズ、又は、手近な特定の実装に対する要求に従う他のファクターを含む）に基づいて選択可能である）。幾つかの実施形態によれば、基本インデックス生成コンピュータ１１１は、基本インデックス４２０を生成するために文書テーブル７１０の中の情報を使用する。
【０１２４】
インデクサ−文書テーブル７２０は、インデックス変更情報生成コンピュータ１１３により処理されたホストされたコンテンツアイテム１４１の現在のバージョンに関するトークン及びメタデータのセットを格納する。幾つかの実施形態では、コンテンツアイテム１４１の現在のバージョンは、インデックス変更情報生成コンピュータ１１３により処理されたコンテンツアイテム１４１の最新の（最も近時の）バージョンである。幾つかの実施形態によれば、インデックス変更情報生成コンピュータ１１３は、インデックス変更情報ジャーナル６１０に格納されるインデックス変更情報を生成するために、文書テーブル７１０及びインデクサ−文書テーブル７２０の中の情報を使用する。
【０１２５】
文書テーブル７１０は、複数の行を含む。  文書テーブル７１０中の行は、行キー（例えば、７１１）により指定され(keyed)うる。幾つかの実施形態では、行キー（例えば、７１１）は、コンテンツアイテムネームスペース識別子、コンテンツアイテム識別子、及びコンテンツアイテムバージョン識別子を含んだバイトアレイである。コンテンツアイテム識別子は、コンテンツアイテム１４１を識別する。コンテンツアイテムバージョン識別子は、コンテンツアイテム１４１の特定のバージョンを識別する。それゆえ、文書テーブル７１０中の行は、コンテンツアイテムバージョンに対応しうる。コンテンツアイテムネームスペース識別子は、コンテンツアイテム１４１が属するコンテンツアイテムネームスペースを識別する。コロンキャラクタ（「：」）又は他のキャラクタ若しくはキャラクタシーケンスが、コンテンツアイテムネームスペース識別子、コンテンツアイテム識別子、及びコンテンツアイテムバージョン識別子を相互に分離するためにバイトアレイにおいて使用されうる。
【０１２６】
文書テーブル７１０は、「トークン」コラムファミリーを含む。文書テーブル７１０中の各行について、トークンコラムファミリーは、トークナイザコンピュータ１１８により対応するコンテンツアイテムバージョンから生成されたトークンリスト（例えば、７１２）を格納する。図７には示されていないが、トークンコラムファミリーはまた、様々なトークンのコンテンツアイテムバージョン−トークン属性(content item version-token attributes of a token)も格納しうる。そのようなコンテンツアイテムバージョン−トークン属性は、例えば、対応するコンテンツアイテムバージョンにおける、トークンの頻度及び／又はトークンの位置を含みうる。
【０１２７】
本発明の幾つかの実施形態によれば、文書テーブル７１０に格納されうる、対応するコンテンツアイテム１４１バージョンのトークンに関する幾つかのコンテンツアイテムバージョン−トークン属性は、以下のもの、又はそのサブセット若しくはスーパーセットを含む。 
●対応するトークンがコンテンツアイテム１４１のバージョンのファイル名の一部であるか否かを示す値、
●対応するトークンがコンテンツアイテム１４１のバージョンのファイル名拡張子の一部であるか否かを示す値、
●対応するトークンがコンテンツアイテム１４１のバージョンのファイルパスの一部であるか否かを示す値、
●対応するトークンがコンテンツアイテム１４１のバージョンのタイトルの一部であるか否かを示す値、及び／又は、
●対応するトークンがコンテンツアイテム１４１のバージョンのテキストコンテンツにおいて太字にされ或いはハイライトされているか否かを示す値。 
【０１２８】
幾つかの実施形態では、文書テーブル７１０中の行について、トークンコラムファミリーは、トークンリスト（例えば、７１２）及びコンテンツアイテムバージョン−トークン属性のリストを格納する。トークンリストは、コンテンツアイテムバージョン−トークン属性のリストと同じ長さであってもよい。コンテンツアイテムバージョン−トークン属性のリストの中の位置ｉにおけるエレメントは、トークンリスト中の位置ｉにおけるトークンに関するコンテンツアイテムバージョン−トークン属性を含む。或いは、２つのリストの代わりに単一のリストが格納されてもよい。単一のリスト中の各エレメントは、トークン及びそのトークンに関するコンテンツアイテムバージョン−トークン属性を含んだタプル(tuple)である。
【０１２９】
文書テーブル７１０はまた、「メタデータ」コラムファミリーも含む。文書テーブル７１０中の各行について、メタデータコラムファミリーは、対応するコンテンツアイテムバージョンに関する名前の付けられたコンテンツアイテムバージョン属性のセット（例えば、７１３）を格納する。例えば、文書テーブル７１０において、「revision」と名付けられたコンテンツアイテムバージョン属性の１つは、対応する文書バージョンのコンテンツアイテムバージョン識別子である。他の文書バージョン属性も可能である。
【０１３０】
本発明の幾つかの実施形態によれば、文書テーブル６１０に格納されうる対応するコンテンツアイテムバージョンに関する幾つかのコンテンツアイテムバージョン属性は、コンテンツアイテムバージョンの「revision」に加えて、以下のコンテンツアイテム−バージョン属性、又はそのサブセット若しくはスーパーセットを含む。
●コンテンツアイテム１４１のバージョンのサイズ（例えば、バイトで）、
●コンテンツアイテム１４１のバージョンが修正された日付／時刻、
●コンテンツアイテム１４１がストレージプレーン１４０から削除されたか否かを示す値、
●コンテンツアイテム１４１に対応するコンテンツアイテムがユーザコンピュータ１３０に格納されているか否かを示す値、
●コンテンツアイテム１４１に対応するコンテンツアイテムがユーザコンピュータ１３０に格納されている場合、ユーザコンピュータ１３０に格納されているコンテンツアイテム１４１に対応するコンテンツアイテムのバージョンが、コンテンツアイテム１４１のバージョンに関して旧版であるか否かを示す値、
●コンテンツアイテム１４１のバージョンを示す値、
●コンテンツアイテム１４１のバージョンの全ての利用可能なテキストコンテンツがトークナイザ１１８によりトークン化されているか否かを示す値、
●コンテンツアイテム１４１がオンラインコンテンツ管理サービス１１０の２以上のユーザにより共有されているか否か（例えば、オンラインコンテンツ管理サービス１１０の２以上のユーザアカウントに関連付けられているか否か）を示す値、
●コンテンツアイテム１４１がオンラインコンテンツ管理サービス１１０の２以上のユーザにより共有されている場合、コンテンツアイテム１４１を共有している１以上のユーザのユーザ識別子（及び／又はユーザアカウント識別子）のリスト、   
●コンテンツアイテム１４１のバージョンがストレージプレーン１４０に格納された日付／時刻を示すタイムスタンプ、
●トークナイザ１１８によりコンテンツアイテム１４１のバージョンから抽出されたトークンの数、
●コンテンツアイテム１４１のバージョンのテキストサマリ／ダイジェスト、及び／又は、
●コンテンツアイテム１４１のバージョンからのテキスト引用(snippet)。
【０１３１】
インデクサ−文書テーブル７２０のスキーマは、文書テーブル７１０に類似しうる。しかしながら、幾つかの実施形態では、インデクサ−文書テーブル７２０の行の行キー（例えば、７２１）は、コンテンツアイテムネームスペース識別子及びコンテンツアイテム識別子を含むが、コンテンツアイテムバージョン識別子は含まない。これらの実施形態において、インデクサ−文書テーブル７２０の各行は、インデクサ３２３インデックス変更情報生成コンピュータ１１３により処理されたコンテンツアイテムの最新の（最も近時の）バージョンに対応しうる。
【０１３２】
図７の例では、例としての行キー７１１及び７２１が提供される。明確な例を提供する目的で、例としての行キー７１１及び７２１は、「ａｂｃｄ」というコンテンツアイテムネームスペース識別子、及び「ｄ２」というコンテンツアイテム識別子を含む。しかしながら、幾つかの実施形態では、コンテンツアイテムネームスペース識別子は、コンテンツアイテムネームスペースを一意に識別する６４ビットの固定長の値であり、コンテンツアイテム識別子は、ストレージプレーン１４０のコンテンツアイテム１４１を一意に識別する６４ビットの固定長の値である。 
【０１３３】
幾つかの実施形態では、コンテンツアイテムバージョン識別子は、コンテンツアイテム１４１のバージョンを一意に識別し、コンテンツアイテム１４１の他のバージョンに関してバージョンの順序付けを提供する。例えば、コンテンツアイテム１４１の３つのバージョンのコンテンツアイテムバージョン識別子は、それぞれ値「１」、「２」、及び「３」であってもよく、バージョン「３」がコンテンツアイテム１４１の最も近時のバージョンに対応し、バージョン「１」がコンテンツアイテム１４１のより前のバージョンに対応する。
８．０  ユーザコンピュータにおいてホストされたコンテンツアイテムをインデックスする処理
【０１３４】
ここで図８に移ると、これは、ユーザコンピュータ１３０において、オンラインコンテンツ管理サービス１１０によりホストされたユーザ１３１のコンテンツアイテム１４１をインデックスする処理８００のフローチャートである。処理８００は、１以上のコンピュータ（例えば、基本インデックス生成コンピュータ１１１、基本インデックスサーバコンピュータ１１２、インデックス変更情報生成コンピュータ１１３、インデックス変更情報サーバコンピュータ１１４、バックエンド検索クエリプロセッサコンピュータ１１５、フロントエンド検索クエリプロセッサコンピュータ１１６、トークナイザコンピュータ１１８、及び／又は、ユーザコンピュータ１３０のうちの１以上、など）により実行可能である。
【０１３５】
処理８００は、ステップ８０１において開始し、ここで、ユーザ１３１は、ストレージプレーン１４０に格納されユーザアカウント（ユーザ１３１がオンラインコンテンツ管理サービス１１０に持つもの）に関連付けられる複数のコンテンツアイテム１４１を持つものとする。
【０１３６】
ステップ８０３において、ユーザ１３１のホストされたコンテンツアイテム１４１の基本インデックス４２０が、オンラインコンテンツ管理サービス１１０により生成される。
【０１３７】
ステップ８０５において、生成された基本インデックス４２０は、オンラインコンテンツ管理サービス１１０によりユーザコンピュータ１３０に提供される。この時点で、ユーザコンピュータ１３０は、基本インデックス４２０を、ユーザコンピュータ１３０のローカルインデックス２１０の一部としてインストール可能であり、ローカルインデックス２１０は、ユーザ１３１の検索クエリを処理するためにユーザコンピュータ１３０のローカルクエリプロセッサにより使用されうる。
【０１３８】
ステップ８０７において、オンラインコンテンツ管理サービス１１０は、イベントの発生を待つ。発生しうる様々な可能なイベントの中で、特に関心のある２つの異なるタイプのイベントがある。 
【０１３９】
第１のタイプのイベントの発生は、ユーザ１３１のホストされたコンテンツアイテム１４１に関する新しい、より新版の基本インデックス４２０を生成する時がきたということを意味する。第１のタイプのイベントが発生すると、処理８００はステップ８０９からステップ８０３へ進む。 
【０１４０】
一方、第２のタイプのイベントの発生は、ユーザ１３１のホストされたコンテンツアイテム１４１のうちの１以上に対する変更が検出されたということを意味する。第２タイプのイベントが発生すると、処理８００はステップ８１１からステップ８１３へ進む。
【０１４１】
ユーザ１３１のホストされたコンテンツアイテム１４１に関する新しい、より新版の基本インデックス４２０を生成する時がきたということを示す第１のタイプのイベントは、ステップ８０７において、様々な異なる理由（限定される訳ではないが、以下の理由を含む）により発生しうる。
●基本インデックス再生成タイマーが切れたから、 
●ユーザ１３１のコンテンツアイテム１４１に関する最新の基本インデックス４２０が生成された以降に、ユーザ１３１のコンテンツアイテム１４１に対して閾値数の変更がなされたから、及び／又は、
●ユーザ１３１のコンテンツアイテム１４１に対する変更に関する閾値変更速度を超過したから。
【０１４２】
ステップ８１３において、ユーザ１３１のホストされたコンテンツアイテム１４１に対する１以上の変更が検出されたということを示す第２のタイプのイベントの発生の場合、オンラインコンテンツ管理サービス１１０は、各々の検出された変更に関するインデックス変更情報６２２を生成し、生成されたインデックス変更情報６２２を、対応するジャーナルタイムスタンプ６１０に関連付けてインデックス変更情報ジャーナル６１０に格納する。
【０１４３】
ステップ８１５で、オンラインコンテンツ管理サービス１１０は、生成されたインデックス変更情報６２２を、通信ネットワーク１２０を介してインデックス変更情報ジャーナル６１０からユーザコンピュータ１３０へ提供する。ユーザコンピュータ１３０に提供するジャーナル６１０中のインデックス変更情報６２２を識別するために、オンラインコンテンツ管理サービス１１０は、ユーザコンピュータ１３０のローカルインデックスタイムスタンプ、及びユーザコンピュータ１３０に関連付けられた１以上のコンテンツアイテムネームスペース識別子を使用することができる。ユーザコンピュータ１３０のローカルインデックスタイムスタンプ及び１以上のコンテンツアイテムネームスペース識別子に基づいて、オンラインコンテンツ管理システム１１０は、（１）ユーザコンピュータ１３０のローカルインデックスタイムスタンプよりも近時のジャーナルタイムスタンプ６１０を持ち、（２）ユーザコンピュータ１３０に関連付けられた１以上のコンテンツアイテムネームスペース識別子に合致するコンテンツアイテムネームスペース識別子６２３を持つ、ユーザコンピュータ１３０に提供するジャーナル６１０中のインデックス変更情報６２２を識別することができる。ユーザコンピュータ１３０に関連付けられたローカルインデックスタイムスタンプは、ストレージプレーン１４０の中のユーザ１３１のホストされたコンテンツアイテム１４１に対する変更に関してユーザコンピュータ１３０のローカルインデックス２１０が新版であるそこまでの時点を反映する。ユーザコンピュータ１３０に関連付けられた１以上のコンテンツアイテムネームスペース識別子の各々は、ユーザ１３１のホストされたコンテンツアイテム１４１が属するコンテンツアイテムネームスペースを識別する。
【０１４４】
処理８００は、ユーザ１３１が、ユーザコンピュータ１３０において、ユーザコンピュータ１３０が受信した基本インデックス４２０及びインデックス変更情報６２２に基づいて構築されたユーザコンピュータ１３０のローカルインデックス２１０を用いてユーザ１３１のホストされたコンテンツアイテム１４１及びそれに対する変更の検索を行うことにより、ユーザコンピュータ１３０を使用してユーザ１３１のホストされたコンテンツアイテム１４１を検索することを可能にする。処理８００により提供される利点は、検索時にユーザコンピュータ１３０がオンラインコンテンツ管理サービス１１０に接続していない場合でさえ、ユーザ１３１がユーザ１３１のホストされたコンテンツアイテム１４１及びそれに対する変更を検索することができるということである。処理８００の別の利点は、ローカルインデックス２１０は通信ネットワーク１２０を介して検索クエリを送信する必要なしに回答を識別してユーザ１３１に提供することを可能にするので、より迅速に、又はオフラインネットワーキング環境においても、ユーザ１３１の検索クエリに対する回答をユーザ１３１に提供可能であるということである。
８．０  ユーザコンピュータにおいてホストされたコンテンツアイテムを検索する処理
【０１４５】
ここで図９に移ると、これは、本発明の幾つかの実施形態に従う、ユーザコンピュータ１３０においてユーザ１３１のホストされたコンテンツアイテム１４１を検索する処理９００のフローチャートである。この例において、処理９００は、ユーザコンピュータ１３０により実行される。
【０１４６】
処理はステップ９０１において開始する。ステップ９０１において、ユーザコンピュータ１３０は、通信ネットワーク１２０に対して通信可能であってもよいし、そうでなくてもよい。換言すると、ユーザコンピュータ１３０は、オフライン（例えば、通信ネットワーク１２０に対して通信可能に結合していない）であってもよいし、オンライン（例えば、通信ネットワーク１２０に対して通信可能に結合している）であってもよい。
【０１４７】
ステップ９０３において、ユーザコンピュータ１３０は、ユーザ１３１から検索クエリを受信する。例えば、ユーザ１３１は、ユーザ入力メカニズム（例えば、物理キーボード又はタッチセンシティブ表面（例えば、タッチスクリーンディスプレイ）など）を使用して、ユーザコンピュータ１３０に提示されたグラフィカルユーザインタフェースに検索式を入力することができる。ユーザコンピュータ１３０は、ユーザ１３１がグラフィカルユーザインタフェースエレメント（例えば、「Submit」、「Send」、又は「Search」ボタンなど）をアクティベートしたことに応じて、ユーザ１３１から検索クエリを受信することができる。
【０１４８】
ステップ９０５において、ユーザコンピュータ１３０は、受信した検索クエリによりローカルインデックス２１０にアクセスする。オプションとして、ユーザコンピュータ１３０がオンラインの場合、ユーザコンピュータ１３０はステップ９０２において、通信ネットワーク１２０を介してオンラインコンテンツ管理サービス１１０に検索クエリを送信することもできる。例えば、ユーザコンピュータ１３０は、通信ネットワーク１２０を介してフロントエンドクエリプロセッサコンピュータ１１６に検索クエリを送信することができる。検索クエリは、ネットワーキングプロトコル（例えば、HyperText Transfer Protocol（ＨＴＴＰ）又はSecure HyperText Transfer Protocol（ＨＴＴＰＳ）など）に従って、検索要求の中で送信されうる。
【０１４９】
ステップ９０７において、ユーザコンピュータ１３０は、ローカルインデックス２１０の中で、検索クエリを満足する１以上のローカル結果を識別する。そのようなローカル結果の各々は、ユーザ１３１のホストされたコンテンツアイテム１４１のうちの１つ（これは、ユーザコンピュータ１３０に格納されていてもいなくてもよく、又は、ユーザコンピュータ１３０に格納されている場合、ストレージプレーン１４０に格納されているコンテンツアイテム１４１の最新のバージョンよりも古いコンテンツアイテム１４１のバージョンであってもよい）に対応する。そのようなローカル結果の各々は、クエリ依存又はクエリ非依存のランキング機能に従って、関連性についてスコア付けされてもよい。
【０１５０】
ステップ９０９において、ユーザコンピュータ１３０のローカルクエリプロセッサは、ローカルインデックス２１０において識別された１以上のローカル結果を、その関連性スコアに従ってランク付けする。
【０１５１】
ステップ９１１で、ユーザコンピュータ１３０は、ユーザコンピュータ１３１に提示されたグラフィカルユーザインタフェースに、１以上のランク付けされたローカル結果を表示する。表示されるローカル結果の各々は、検索回答サマリとして表示されうる。
【０１５２】
ステップ９０５において検索クエリがオンラインコンテンツ管理サービス１１０へ送信された場合、ステップ９１３において、ユーザコンピュータ１３０は、オンラインコンテンツ管理サービス１１０から、検索クエリに対する１以上のリモート結果を受信する。多くの場合、通信ネットワーク１２０上でのネットワーク待ち時間(latency)が原因で、ユーザコンピュータ１３０は、ステップ９１３においてリモート結果を受信する前又は受信している間に、ステップ９１１においてローカル結果を表示可能になるであろう。ステップ９１３において受信された各リモート結果は、ユーザ１３１のホストされたコンテンツアイテム１４１のうちの１つに対応する。そのようなリモート結果の各々は、クエリ依存又はクエリ非依存のランキング機能に従って、関連性についてスコア付けされてもよい。更に、リモート結果は、オンラインコンテンツ管理サービス１１０により算出された関連性スコアの順にランク付けされて、ステップ９１３において受信されてもよい。リモート結果をスコア付けするためにオンラインコンテンツ管理サービス１１０により使用されるランキング機能は、ローカル結果をスコア付けするためにユーザコンピュータ１３０により使用されるランキング機能と同じであってもよい。このようにして、リモート結果についてオンラインコンテンツ管理サービス１１０により算出される関連性スコアは、ローカル結果についてユーザコンピュータ１３０により算出される関連性スコアと比較可能である。
【０１５３】
ステップ９１５で、ユーザコンピュータ１３０は、グラフィカルユーザインタフェースを更新して、最悪の（例えば、最低の）スコアリングの現在表示されているローカル結果よりも良い（例えば、高い）関連性スコアを持つ、ステップ９１３において受信された１以上のリモート結果を表示する（現在表示されているローカル結果に対応しないコンテンツアイテム１４１に対応する何らかのそのようなリモート結果が存在するならば）。
【０１５４】
処理９００は、ユーザ１３１が、ユーザコンピュータ１３０において、ローカルインデックスを用いてユーザ１３１のホストされたコンテンツアイテム１４１及びそれに対する変更の検索を行うことにより、ユーザコンピュータ１３０を使用してユーザ１３１のホストされたコンテンツアイテム１４１を検索することを可能にする。処理９００により提供される利点は、ユーザコンピュータ１３０がオンラインでない場合でさえ、ユーザ１３１がユーザ１３１のホストされたコンテンツアイテム１４１及びそれに対する変更を検索することができるということである。処理９００の別の利点は、ユーザコンピュータ１３０がオンラインである場合に、ローカルインデックス２１０は通信ネットワーク１２０を介して検索クエリを送信する必要なしに予備的な回答を識別してユーザ１３１に提供することを可能にするので、ユーザ１３１の検索クエリに対する回答をユーザ１３１に迅速に提供可能であるということである。  そのすぐ後に、検索クエリに対するより包括的でより新版の回答を提供するために、予備的な回答の表示は、リモート結果がオンラインコンテンツ管理サービス１１０から受信されると、それらの表示により更新可能である。
１０．０  基本的なコンピュータハードウェア
【０１５５】
本発明は、１以上のコンピュータ（例えば、基本インデックス生成コンピュータ１１１、基本インデックスサーバコンピュータ１１２、インデックス変更情報生成コンピュータ１１３、インデックス変更情報サーバコンピュータ１１４、バックエンド検索クエリプロセッサコンピュータ１１５、フロントエンド検索クエリプロセッサコンピュータ１１６、トークナイザコンピュータ１１８、及び／又は、ユーザコンピュータ１３０のうちの１以上、など）に実装可能である。そのようなコンピュータは、様々な形態で（限定される訳ではないが、クライアントコンピュータ、サーバコンピュータ、ネットワークデバイス、移動デバイス、セル電話、スマートフォン、ラップトップコンピュータ、デスクトップコンピュータワークステーションコンピュータ、パーソナルデジタルアシスタント、ブレードサーバコンピュータ、メインフレームコンピュータ、及び他のタイプのコンピュータを含む）実装可能である。
【０１５６】
以下に説明するコンピュータコンポーネント（その接続、関係、及び機能を含む）は、例示的であることのみを意味しており、本発明の実装を限定することを意味してはいない。本発明を実装するのに適した他のコンピュータは、異なるコンポーネント（異なる接続、関係、及び機能を持つコンポーネントを含む）を有していてもよい。 
【０１５７】
ここで図１０に移ると、これは、発明の様々な実施形態を実装するのに適した基本コンピュータ１０００のブロック図である。コンピュータ１０００は、ハードウェアバス１００２、又は、メインメモリ１００６をアドレッシングしてコンピュータ１０００の様々なコンポーネントの間でかつその中でデータを転送するための他の通信メカニズムを含む。コンピュータ１０００はまた、バス１００２に結合された、情報を処理するためのハードウェアプロセッサ１００４も含む。ハードウェアプロセッサ１００４は、汎用マイクロプロセッサシステムオンチップ（ＳｏＣ）、又は説明される技術を実装するのに適した他のプロセッサである。
【０１５８】
メインメモリ１００６（ランダムアクセスメモリ（ＲＡＭ）、又は他の動的ストレージデバイスなど）は、情報及びプロセッサ１００４により実行される命令を格納するために、バス１００２に結合される。メインメモリ１００６はまた、プロセッサ１００４によって実行されるべき命令の実行中に一時変数又は他の中間情報を格納するためにも使用されうる。そのような命令は、プロセッサ１００４がアクセス可能な非一時的な記録媒体に格納される場合、コンピューティングデバイス１０００を、命令で特定される動作を実行するようにカスタマイズされた特定用途のコンピューティングデバイスへ変換する。
【０１５９】
コンピュータ１０００は更に、静的情報とプロセッサ１００４のための命令とを格納するために、バス１００２に結合されたリードオンリーメモリ（ＲＯＭ）１００８又は他の静的ストレージデバイスを含む。
【０１６０】
マスストレージデバイス１０１０は、固定の又は取り外し可能なメディア（磁気、光学、ソリッドステート、磁気光学、フラッシュメモリ、又は他の何らかの利用可能なマスストレージ技術など）に情報及び命令を持続的に格納するために、バス１００２に結合される。マスストレージはネットワーク上で共有されてもよいし、それは専用マスストレージであってもよい。典型的には、マスストレージデバイス１０１０（例えば、デバイスのためのメインハードディスク）は、コンピューティングデバイスの動作を指示するためのプログラム本体及びデータ（オペレーティングシステム、ユーザアプリケーションプログラム、ドライバ、及び他のサポートファイルに加えて、全ての種類の他のデータファイルを含む）を格納する。
【０１６１】
コンピュータ１０００は、バス１００２を介して、ディスプレイ１０１２（情報をコンピュータユーザに表示するための液晶ディスプレイ（ＬＣＤ）又は他の電子視覚ディスプレイ）へと結合されうる。ディスプレイ１０１２はまた、タッチジェスチャ（例えば、指又はスタイラス）入力をプロセッサ１００４に伝達するタッチセンシティブディスプレイであってもよい。
【０１６２】
入力デバイス１０１４（英数字キー及び他のキーを含む）は、情報やコマンドの選択をプロセッサ１００４へ通知するためにバス１００２に結合される。
【０１６３】
ユーザ入力デバイスの他のタイプは、カーソル制御部１０１６（プロセッサ１００４へ方向情報やコマンドの選択を伝達し、ディスプレイ１０１２上でのカーソルの移動を制御するための、マウス、トラックボール、又はカーソル方向キーなど）である。この入力デバイスは、典型的には、デバイスが平面上の位置を指定できるようにする第１軸（例えば、ｘ）と第２軸（例えば、ｙ）の、２軸の２つの自由度を有する。
【０１６４】
コンピュータ１０００は、カスタマイズされた配線論理、１以上の特定用途向け集積回路（ＡＳＩＣ）、１以上のフィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ファームウェア、又は、コンピューティングデバイスと組み合わさってコンピュータ１０００を特定用途向けの機械とさせる又はプログラムするプログラム論理を用いて、本明細書において記述される方法を実施することができる。
【０１６５】
本明細書において開示される方法はまた、メインメモリ１００６に含まれる１以上の命令の１以上のシーケンスをプロセッサ１００４が実行することに応じて、コンピュータ１０００によって実行されうる。そのような命令は、ストレージデバイス１０１０などの他の記録媒体からメインメモリ１００６へと読み込まれてもよい。メインメモリ１００６に含まれる命令シーケンスの実行は、プロセッサ１００４に、本明細書に記述される処理ステップを実行させる。代替的な実施形態において、配線回路が、ソフトウェア命令の代わりに、又は、これと組み合わせて使用されうる。
【０１６６】
本明細書で使用される用語「記録媒体」は、コンピューティングデバイスを特定の様式で動作させるデータ及び／又は命令を格納する、任意の非一時的な媒体を指す。そのような記録媒体は、不揮発性の媒体及び／又は揮発性の媒体を備えてもよい。不揮発性の媒体は、例えば、ストレージデバイス１０１０などの、光学ディスク、磁気ディスク、又はソリッドステートドライブを含む。揮発性の媒体は、メインメモリ１００６などの動的メモリを含む。記録媒体の一般的な形式は、例えば、フロッピーディスク、フレキシブルディスク、ハードディスク、ソリッドステートドライブ、磁気テープ、又は任意の他の磁気的データ記録媒体、ＣＤ−ＲＯＭ、任意の他の光学的データ記録媒体、穴のパターンを伴う物理的媒体、ＲＡＭ、ＰＲＯＭ、及びＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、ＮＶＲＡＭ、任意の他のメモリチップ又はカートリッジを含む。
【０１６７】
記録媒体は、伝送媒体とは区別されるものの、伝送媒体と共に使用されうる。伝送媒体は、記録媒体間で情報を転送することに関与してもよい。例えば、伝送媒体は、バス１００２を備えるワイヤを含む、同軸ケーブル、銅線、及び光ファイバーを含む。伝送媒体はまた、電波及び赤外線データ通信の間に生成されるもののような音波又は光波の形式をとることもできる。
【０１６８】
様々な形式の媒体が、実行のためにプロセッサ１００４へ１以上の命令の１以上のシーケンスを運ぶことに関与しうる。例えば、命令は、最初は、磁気ディスク又はリモートコンピュータのソリッドステートドライブ上で運ばれうる。リモートコンピュータは、その動的メモリに命令をロードすることができ、モデムを用いて電話回線を介して命令を送信することができる。コンピュータ１０００のローカルなモデムは、電話回線でデータを受信し、データを赤外線信号に変換するために赤外線送信機を用いることができる。赤外線検出器は、赤外線信号で運搬されたデータを受信することができ、適切な回路が、そのデータをバス１００２に乗せることができる。バス１００２は、プロセッサ１００４が命令を取得し実行する元となるメインメモリ１００６にデータを運搬する。メインメモリ１００６によって受信された命令は、オプションとして、プロセッサ１００４によって実行される前又は後のいずれかにストレージデバイス１０１０に格納されうる。
【０１６９】
コンピュータ１０００はまた、バス１００２に結合された通信インタフェース１０１８を含む。通信インタフェース１０１８は、ローカルネットワーク１０２２（例えば、イーサネットネットワーク、無線ローカルエリアネットワーク、セルラ電話ネットワーク、Ｂｌｕｅｔｏｏｔｈ無線ネットワーク、など）に接続された有線又は無線のネットワークリンク１０２０に結合する双方向データ通信を提供する。通信インタフェース１０１８は、様々なタイプの情報を表すデジタルデータストリームを運搬する電気的、電磁的又は光学的信号を送信及び受信する。例えば、通信インタフェース１０１８は、有線ネットワークインタフェースカード、一体型無線アンテナを備える無線ネットワークインタフェースカード、又はモデム（例えば、ＩＳＤＮ、ＤＳＬ、又はケーブルモデム）であってもよい。
【０１７０】
ネットワークリンク１０２０は、典型的には、１以上のネットワークを通じて他のデータデバイスへのデータ通信を提供する。例えば、ネットワークリンク１０２０は、ローカルネットワーク１０２２を通じて、ホストコンピュータ１０２４への又はインターネットサービスプロバイダ（ＩＳＰ）１０２６によって運用されるデータ装置への接続を提供しうる。ＩＳＰ１０２６は次に、「インターネット」１０２８として現在一般的に呼ばれる、ワールドワイドパケットデータ通信ネットワークを通じて、データ通信サービスを提供する。ローカルネットワーク１０２２とインターネット１０２８とは共に、デジタルデータストリームを運搬する電気的、電磁的、又は光学的な信号を用いる。コンピュータ１０００への又はそこからのデジタルデータを運搬する、様々なネットワークを通じた信号とネットワークリンク１０２０上のそして通信インタフェース１０１８を通じた信号とは、伝送媒体の例示的な形式である。
【０１７１】
コンピュータ１０００は、ローカルネットワーク１０２２、インターネット１０２８、ＩＳＰ１０２６、ネットワークリンク１０２０、及び通信インタフェース１０１８を介して、メッセージを送信してデータ（プログラムコードを含む）を受信することができる。インターネットの例では、サーバコンピュータ１０３０は、インターネット１０２８、ＩＳＰ１０２６、ローカルネットワーク１０２２、及び通信インタフェース１０１８を通じて、要求されたアプリケーションプログラムのコードを送信しうる。
【０１７２】
受信されたコードは、それが受信された際にプロセッサ１００４によって実行されてもよいし、及び／又は、後の実行のためにストレージデバイス１０１０又は他の不揮発性のストレージに格納されてもよい。
１１．０  基本ソフトウェアシステム
【０１７３】
ここで図１１に移ると、これは、発明の幾つかの実施形態に従う、コンピュータ１０００の動作を制御するための基本ソフトウェアシステム１１００のブロック図である。図示されるように、コンピュータソフトウェアシステム１１００は、コンピューティングデバイス１０００の動作を指示するために提供される。システムメモリ（ＲＡＭ）１００６及び固定ストレージ（例えば、ハードディスク）１０１０に格納されるソフトウェアシステム１１００は、カーネル又はオペレーティングシステム（ＯＳ）１１１０を含む。ＯＳ１１１０は、コンピュータ動作の低レベル面（プロセスの実行管理、メモリ割り当て、ファイル入出力（Ｉ／Ｏ）、及びデバイスＩ／Ｏを含む）を管理する。１以上のアプリケーションプログラム１１０２（例えば、１１０２Ａ、１１０２Ｂ、１１０２Ｃ．．．１１０２Ｎ）は、システム１１００による実行のために「ロード」され（例えば、固定ストレージ１０１０からメモリ１００６に転送され）うる。幾つかの例においては、デバイス１０００での使用が意図されたアプリケーションプログラム１１０２又は他のソフトウェアはまた、ダウンロード可能なコンピュータ実行可能命令のセット（例えば、インターネットロケーションから（例えば、ウェブサーバから）のダウンロード及びインストールのためのもの）として格納されうる。
【０１７４】
ソフトウェアシステム１１００は、ユーザコマンド及びデータをグラフィカルな（例えば、「ポイント−アンド−クリック」、又は「タッチジェスチャ」）態様で受信するための、グラフィカルユーザインタフェース（ＧＵＩ）１１１５を含みうる。これらの入力は次いで、オペレーティングシステム１１１０及び／又はアプリケーションプログラム１１０２からの命令に従って、システム１１００によりそれに基づく動作が行われる。ＧＵＩ１１１５はまた、ＯＳ１１１０及びアプリケーションプログラム１１０２からの動作の結果を表示する役割を果たし、それに基づき、ユーザは追加入力を供給する又はセッションを終了（例えば、ログオフ）することができる。
【０１７５】
ＯＳ１１１０は、コンピュータ１０００のハードウェア（例えば、プロセッサ１００４）上で直接実行可能である。或いは、ハイパーバイザ又は仮想マシンモニタ（ＶＭＭ）１１３０が、ハードウェアとＯＳ１１１０との間に挿入されてもよい。この構成では、ＶＭＭ１１３０は、ＯＳ１１１０とコンピュータ１０００のハードウェアとの間のソフトウェア「クッション」又は仮想化レイヤとして動作する。
【０１７６】
ＶＭＭ１１３０は、存在する場合、仮想マシンインスタンス（「ゲストマシン」）をインスタンス化して実行する。各ゲストマシンは、「ゲスト」オペレーティングシステム（ＯＳ１１１０など）、及びゲストオペレーティングシステム上で実行されるように設計された１以上のアプリケーションプログラム（アプリケーションプログラム１１０２など）を含む。ＶＭＭ１１３０は、仮想オペレーティングプラットフォームを備えるゲストオペレーティングシステムを提供し、ゲストオペレーティングシステムの実行を管理する。幾つかの例では、ＶＭＭ１１３０は、ゲストオペレーティングシステムが、あたかもコンピュータ１０００のハードウェア上で直接実行されているかのように実行されることを可能にする。これらの例では、ハードウェア上で直接実行されるように構成されたゲストオペレーティングシステムの同じバージョンが、修正や再構成なしに、ＶＭＭ１１３０においても実行可能である。換言すると、ＶＭＭ１１３０は、幾つかの例において、ゲストオペレーティングシステムに対して完全なハードウェア及びＣＰＵの仮想化を提供することができる。他の例では、ゲストオペレーティングシステムは、効率性のために、ＶＭＭ１１３０上で実行されるように特別に設計又は構成されうる。これらの例では、ゲストオペレーティングシステムは、自身が仮想マシンモニタ１１３０上で実行されていることを「認識」している。換言すると、ＶＭＭ１１３０は、幾つかの例において、ゲストオペレーティングシステムに対してパラ仮想化(para-virtualization)を提供することができる。
【０１７７】
上述したコンピュータハードウェア及びソフトウェアは、本発明の様々な実施形態を実装するために採用可能な、背後にある基本コンピュータコンポーネントを説明する目的で提示されている。しかしながら、本発明は、いかなる特定のコンピューティング環境又はコンピュータ構成にも限定されない。代わりに、本発明の実施形態は、本明細書に開示される実施形態をサポート可能な任意のタイプのシステムアーキテクチャ又はプロセッシング環境において実装可能である。
【０１７８】
上では例としての実施形態により発明を説明したが、これは発明を限定することを意図してはいない。実際、上記は、発明の精神及び範囲の中に入る全ての修正物及び代替物をカバーすることを意図している。
【図１】
0006522136.tif 000002
【図２】
0006522136.tif 000003
【図３】
0006522136.tif 000004
【図４】
0006522136.tif 000005
【図５Ａ】
0006522136.tif 000006
【図５Ｂ】
0006522136.tif 000007
【図６】
0006522136.tif 000008
【図７】
0006522136.tif 000009
【図８】
0006522136.tif 000010
【図９】
0006522136.tif 000011
【図１０】
0006522136.tif 000012
【図１１】
0006522136.tif 000013