JP5947988B1 - パーソナルコンテンツアイテムの検索システム及び方法 - Google Patents

パーソナルコンテンツアイテムの検索システム及び方法 Download PDF

Info

Publication number
JP5947988B1
JP5947988B1 JP2016012753A JP2016012753A JP5947988B1 JP 5947988 B1 JP5947988 B1 JP 5947988B1 JP 2016012753 A JP2016012753 A JP 2016012753A JP 2016012753 A JP2016012753 A JP 2016012753A JP 5947988 B1 JP5947988 B1 JP 5947988B1
Authority
JP
Japan
Prior art keywords
content item
index
tokens
user
change information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016012753A
Other languages
English (en)
Other versions
JP2016154006A (ja
Inventor
ゴエル サミール,
ゴエル サミール,
シャスタグノル フランク,
シャスタグノル フランク,
アグラワル アブヒシェク,
アグラワル アブヒシェク,
Original Assignee
ドロップボックス, インコーポレイテッド
ドロップボックス, インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ドロップボックス, インコーポレイテッド, ドロップボックス, インコーポレイテッド filed Critical ドロップボックス, インコーポレイテッド
Application granted granted Critical
Publication of JP5947988B1 publication Critical patent/JP5947988B1/ja
Publication of JP2016154006A publication Critical patent/JP2016154006A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9538Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/316Indexing structures
    • G06F16/319Inverted lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2315Optimistic concurrency control
    • G06F16/2329Optimistic concurrency control using versioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/248Presentation of query results
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本方法は、ユーザがオンラインコンテンツ管理サービスによって提供される、ユーザのパーソナルコンテンツアイテムを検索するためにユーザコンピュータを使用することを可能にするシステム及び方法に関し、オンラインコンテンツ管理サービスは、当該サービスによって提供されるユーザのコンテンツアイテムの基本インデックスを生成するように構成されるインデクサーコンピュータと、ユーザコンピュータへネットワークを介して、生成した基本インデックスを送信するように構成される基本インデックスサーバコンピュータと、ユーザがホストのコンテンツアイテムへの実質的な変更に対するインデックス変更情報を生成するように構成されるインデックス変更情報生成コンピュータと、ネットワークを介してユーザコンピュータへ生成したインデックス変更情報を送信するように構成されるインデックス変更情報サーバコンピュータとを備える。一態様において、ユーザがホストのコンテンツアイテムの検索と、ユーザコンピュータによって受信した基本インデックス及びインデックス変更情報に基づいて行われるユーザコンピュータへのインデックスローカルを用いて、ユーザコンピュータで行われるべきそれらへの変更を可能とする。

Description

本発明は、一般的にはパーソナルコンテンツアイテムの検索システムお及び方法に関する。より詳細には、本発明の実施形態は、ユーザのユーザコンピュータでオンラインコンテンツ管理サービスによって提供されるユーザのパーソナルコンテンツアイテムに局所的にインデックスを付すことによって、ユーザがホストのコンテンツアイテムを検索するためにユーザコンピュータを使用させることを許容するパーソナルコンテンツアイテムの検索システム及び方法に関する。
コンピュータは膨大な量の情報の中で関連情報を検索するための非常に強力なツールである。インデックスは、コンピュータを使用して、大規模なコーパスの情報の中で注目の情報を効率的に識別するための一般的な仕組みである。通常のインデックスは、当該キーワードが抽出される文書情報への、体系化したキーワードのマッピングである。一例として、世界の公開されたアクセス可能なウェブページのインデックスとしては、当該ウェブページの単語を、当該単語を含むウェブページのサブセットへマッピングしてもよい。
実際の物理的なインデックス自身(例えば、1以上のコンピュータに格納されるインデックスデータ)とシステムのユーザとの間で、検索システムが、ソフトウェアクッション又はレイヤとして通常提供される。本質的には、検索システムは、基本的なインデックスの詳細について既知の又は均等なケアリングからユーザを保護する。通常、インデックスの情報に対するユーザからの全ての要求(リクエスト)は検索システムによって処理される。基本的なインデックスの実装の知識を全てのユーザが有していなくても、例えば、情報に対するユーザの要求に関連する文書が検索システムによってインデックスを用いて識別されうる。この方法では、検索システムは、情報がどのようにインデックス化されたかという関心なしで関連情報への素早いアクセスをユーザへ提供する。世界の公開されているアクセス可能なウェブページの中から、関連情報を識別するための1つの良く知られた検索システムは、カリフォルニアのマウンテンデューにあるGoogle(登録商標) Incによって提供されるGOOGLE(登録商標)インターネット検索エンジンである。
検索システムの1つの機能は、検索クエリ(ここでは単に短縮して“クエリ(問い合わせ)”)に応答することである。クエリは、1以上の検索タームのセットを含む論理的な表現で定義されてもよく、インデックス化された文書のサブセットの識別子となる。例えば、インターネット検索エンジンからの情報に対する要求の扱いを考慮しなければならない。動作中に、本要求は、通常、サーバコンピュータ上でインデックスからの特定の検索結果を取り出すための1以上のハイパーテキストトランスファープロトコル(“HTTP”)要求としてクライアントシステムによって発行される。例えば、要求は、ワード“college”及び“basketball”を含むインターネットウェブページのリストに 対して行われてもよい。当該要求への応答において、検索システムは、通常、検索ターム“college”及び“basketball”に最も関連するものと考えられるそれらのインターネットウェブページへのハイパーリンクを含むウェブページを返す。
インターネット検索エンジンは、インターネット上で公的に利用可能な世界の全ての情報を検索するのに非常に適している。しかしながら、最近では、複数のユーザが、インターネット上で公的にアクセス可能でない、又は、インターネット検索エンジンによってインデックス化されていない、かなりの量の個人のデジタル情報を蓄積し始めている。そのような情報は、他の個人のデジタル情報及びプライベートなデジタル情報の中で、例えば、個人のデジタル写真や、学校及び仕事の文書を含むことができる。いくつかの例で、ユーザの個人的なデジタル情報は、特定のグループユーザの間で共有される。例えば、従業員は、仕事の文書を他の同僚と共有してもよいし、或いは、ユーザはデジタル写真を友達や家族と共有してもよい。
ユーザがそれらの全ての個人のデジタル情報を格納し管理し始めている1つの方法は、オンラインのコンテンツ管理サービスを用いることである。そのようなサービスは、ユーザに対して、ユーザコンピュータを使用して、インターネット又は他の通信ネットワークを通じて、当該サービスのサーバコンピュータ上にそれらの個人的なデジタル情報をアップロードして格納することを許容する。1つの良く知られたオンラインコンテンツ管理サービスは、サンフランシスコのカルフォルニアにあるDropbox社によって提供されるDROPBOXである。
オンラインコンテンツ管理サービスのユーザは、そのようなサービスによって提供されるそれらの個人的なデジタル情報の検索方法や配置方法の良さを認識するであろう。そのような個人的なデジタル情報は、通常、インターネット上で公的にアクセス可能ではない。本理由及び他の理由において、インターネット検索エンジンは、一般的には、それらのユーザの検索ニーズに合致するような適切なものではない。
本システム及び方法の種々の実施形態は、ユーザがオンラインコンテンツ管理サービスによって提供される、ユーザのパーソナルコンテンツアイテムを検索するためにユーザコンピュータを使用することを可能にし、オンラインコンテンツ管理サービスは、ユーザがホストのコンテンツアイテムの基本インデックスを生成するように構成されるインデクサーコンピュータと、ユーザコンピュータへ生成した基本インデックスを送信するように構成される基本インデックスサーバコンピュータと、ユーザがホストのコンテンツアイテムへの変更を反映するインデックス変更情報を生成するように構成されるインデックス変更情報生成コンピュータと、ユーザコンピュータへ生成したインデックス変更情報を送信するように構成されるインデックス変更情報サーバコンピュータとを備える。本発明の実施形態において、インデックス変更情報は、ホストのコンテンツアイテムにインデックスを付与するために使用する1以上のインデックストークン、及び、コストのコンテンツアイテムにインデックスを付与するために使用されない1以上のインデックストークンとの少なくとも1つを含む。
パーソナルコンテンツアイテムの検索システムのいくつかの実施形態の特徴は、ユーザがホストのコンテンツアイテムの検索と、それらへの変更がユーザコンピュータによって受信される基本インデックス及びインデックス変更情報に基づいて構成される、ユーザコンピュータでのローカルインデックスを用いてユーザコンピュータにおいて行われることである。当該特徴の利点は、ユーザコンピュータが検索のタイミングでオンラインコンテンツ管理サービスへ接続されていない場合であっても、ユーザがホストのコンテンツアイテムをユーザが検索し、それらへ変更できることである。当該特徴の他の利点は、ローカルインデックスが通信ネットワークを介して検索クエリを送信する必要なく識別されかつ提供されるべき応答を許容するため、ユーザの検索クエリがユーザへより素早く提供されることである。
パーソナルコンテンツアイテムの検索システムのいくつかの実施形態の他の特徴は、基本インデックスがオンラインコンテンツ管理サービスによって生成されるということである。当該特徴の利点は、ユーザコンピュータの処理サイクルが基本インデックスを生成するために消費されないことであり、これにより、他の、おそらくはより重要なアプリケーションを実行するためにユーザコンピュータの処理電力を節約することができる。ユーザコンピュータの代わりにオンラインコンテンツ管理サービスに基本インデックスを生成させることによってユーザコンピュータの処理電力を節約することはまた、ユーザコンピュータのバッテリ寿命を延ばすことにもなり、当該ユーザコンピュータがバッテリ動作の携帯型ユーザコンピュータであれば、バッテリチャージの期間を増加させることとなる。当該特徴の他の利点は、オンラインコンテンツ管理サービスのクラスタ型コンピュータ及び分散型コンピュータによって提供される比較的大きな処理パワーがより包括的な基本インデックスを生成するために使用されうることである。例えば、オンラインコンテンツ管理サービスは、デジタル画像を基本インデックスでインデックス化するテキストを生成する顔認識アルゴリズム及び光学文字認識アルゴリズムの少なくとも1つを適用することができ、これらは限定した処理能力のユーザコンピュータで行うのは実質的なものではない。例えば、顔認識又は光学文字認識アルゴリズムを実行するための必須の特別なソフトウェアは、例えばそのようなソフトウェアを購入するのに必要な高額なコストなどの様々な種々の理由でユーザコンピュータ上にはインストールされていないかもしれない。
本発明の実施形態における上述の利点及び他の利点は、添付の図面と結合して参照されることにより、以下のより詳細な説明から明らかになるであろう。上述の利点が本発明の種々の形態によって達成されることができ、本発明の追加の利点が、相乗効果が組み合わせの技術から得られるように上述の独立した利点の種々の組み合わせを取り込むであろう。
本発明の実施形態の詳細な説明が、添付の図面を参照しながらいかに記載され、同様の参照符号は図面を通じて対応する部分を示す。
図1は、本発明のいくつかの実施形態に係る、ユーザコンピュータとオンラインコンテンツ管理サービスとを含む通信ネットワーク環境を示す図である。 図2は、本発明のいくつかの実施形態に係る、オンラインコンテンツ管理サービスによって提供されるユーザのコンテンツアイテムの、ユーザコンピュータでのローカルインデックスを示す概略図である。 図3は、本発明のいくつかの実施形態に係る、ローカルインデックスに対する、基本的なクエリ処理操作を示す概略図である。 図4は、本発明のいくつかの実施形態に係る、ユーザコンピュータでローカルインデックスの種々の可能な状態を示す状態図である。 図5Aは、本発明のいくつかの実施形態に係る、インデックスの変形がローカルインデックスへ適用される前のユーザコンピュータでのユーザインデックスを示す概略図である。 図5Bは、本発明のいくつかの実施形態に係る、インデックスの変形がローカルインデックスへ適用された後のユーザコンピュータでのユーザインデックスを示す概略図である。 図6は、本発明のいくつかの実施形態に係る、オンラインコンテンツ管理サービスにおけるインデックス変更情報生成コンピュータでのインデックス変形ジャーナルを示す概略図である。 図6は、本発明のいくつかの実施形態に係る、オンラインコンテンツ管理サービスにおけるインデックス変更情報生成コンピュータでのインデックス変形ジャーナルを示す概略図である。 図8は、本発明のいくつかの実施形態に係る、ユーザコンピュータでのユーザがホストのコンテンツアイテムをインデックス化するための処理を示すフローチャートである。 図9は、本発明のいくつかの実施形態に係る、ユーザコンピュータでのユーザがホストのコンテンツアイテムを検索するための処理を示すフローチャートである。 図10は、本発明のいくつかの実施形態を実装するために使用されうる基本的なコンピュータコンポーネントを示す概略図である。 図11は、図10の基本的なコンピュータの動作を制御するために使用されうる基本的なソフトウェアシステムを示す概略図である。
本発明の種々の実施形態は、それらのパーソナルコンテンツアイテムを提供(ホスト)するユーザへ、ユーザコンピュータを用いて彼らがホストのコンテンツアイテムの発見、検索、閲覧及び配置をより容易にかつ効果的にするオンラインコンテンツ管理サービス(例えば、ファイル提供サービス、クラウドデータストレージプロバイダ)を提供するパーソナルコンテンツアイテムシステムと方法に関連する。例えば、パーソナルコンテンツアイテムシステムの種々の実施形態は、ユーザのコンピュータがオンライン接続されていない場合(例えば、通信ネットワークによってオンラインコンテンツ管理サービスへ接続されていない場合)の種々の状況、又は、ユーザコンピュータがオンライン接続されているもののクエリ(問い合わせ)に対する応答を提供するために通信ネットワークを介して検索クエリを送信する必要がない場合、即ち、クエリに対する応答をより素早くユーザへ提供することにより、携帯型ユーザコンピュータにおけるバッテリ電力を節約しバッテリ寿命を延ばす場合の種々の状況でのサービスで、ユーザがユーザコンピュータを用いてユーザのパーソナルコンテンツアイテムのフルテキスト検索を実行することを容易にする。
本発明のいくつかの実施形態によれば、フルテキスト検索は、ユーザコンピュータで局所的にユーザがホストのコンテンツアイテムのインデックスを保持することによって容易にされる。検索クエリに対する応答は、ユーザコンピュータがおオンラインか又はオフラインかに依存して、少なくとも2つの方法でユーザコンピュータにおいてユーザに提供されうる。1つ目は、ユーザコンピュータがオンライン又はオフラインである場合に、当該応答は、ユーザコンピュータにおいて、ローカルインデックスのみを調べることによって提供されうる方法である。2つ目は、ユーザコンピュータがオンラインである場合に、当該応答がユーザコンピュータにおいてローカルインデックスを調べ、通信ネットワークを介してオンラインコンテンツ管理サービスへ検索クエリを送信し、その後、コンテンツ管理サービスから返される結果とローカルインデックスの結果とを合成し、ユーザへ提供される応答にすることによって提供されうる方法である。
本発明の一実施形態によれば、ユーザへ提供される応答は、ユーザコンピュータがコンテンツ管理サービスからの結果が返されるのを待機している間は、まず、ローカルインデックスからの結果のみを含んでもよい。オンラインコンテンツ管理サービスからの結果がユーザコンピュータで受信されると、当該応答は、その後、コンテンツ管理サービスからの結果を含むようにアップデートされてもよい。この方法において、ユーザコンピュータがオンラインの場合、ユーザは、ローカルインデックスからの結果で検索クエリに対する仮の応答が素早く提供され、その後まもなく、オンラインコンテンツ管理サービスからの結果で検索クエリに対するより総合的な応答が提供される。
1.0 ネットワーク環境
本発明の種々の実施形態は、通信ネットワーク、例えばインターネット、モバイル電話ネットワーク、又は広域ネットワーク上などで互いに接続された1以上のコンピュータ、例えば、ユーザコンピュータ及び1以上のオンラインコンテンツ管理サービスコンピュータなどによって実行される際に、ここで説明される種々の機能を実行するように構成されるコンピュータで実行可能な命令の1以上の組合せに従って動作する。
図1は、本発明のいくつかの実施形態に従って動作するネットワークシステムを示す。図1を参照すると、オンラインコンテンツ管理サービス110は、インターネットなどの通信ネットワーク120上で動作する。オンラインコンテンツ管理サービス110は、基本インデックス生成コンピュータ111と、基本インデックスサーバコンピュータ112と、インデックス変更情報コンピュータ113と、インデックス変更情報サーバコンピュータ114と、バックエンド検索クエリプロセッサコンピュータ115と、フロントエンド検索クエリプロセッサコンピュータ116と、トークン格納部117と、トークナイザコンピュータ118とを含む。
本明細書及び添付の特許請求の範囲で使用される場合、”コンピュータ(computer)”の単数形は、別段の明確な示唆がない限り、複数形を含むことも意図している。例えば、本発明の一実施形態に係る機能、特徴、又はステップが単一のコンピュータによって実現されるようにここで説明した場合、別段の明確な示唆がない限り、当該機能、特徴、又はステップは、例えばコンピューティングクラスタ又は分散コンピューティング環境で構成される複数のコンピュータによって実現される他の実施形態であってもよい。さらに、異なるコンピュータによって実行されるようないくつかの実施形態においてここで説明される機能、特徴、又はステップは、同一のコンピュータ又は同一のコンピュータの組み合わせによって実行される他の実施形態と代わってもよい。
基本インデックスサーバコンピュータ112、フロントエンド検索クエリプロセッサコンピュータ116、及びインデックス変更情報サーバコンピュータ114は、通信ネットワーク120によって1以上のユーザコンピュータ130へ接続されてもよい。通信ネットワーク120は、インターネット、モバイル電話ネットワーク、又は、有線、無線若しくはそれらのハイブリッドで構成された任意の他の適切な通信ネットワークなどの公衆ネットワークを含んでもよい。
ユーザコンピュータ130は、人間のユーザ131によって使用されうる。ユーザコンピュータ130は、有線及び無線ネットワーク通信機能の少なくとも1つを有する、例えばデスクトップコンピュータ、ワークステーションコンピュータ、ラップトップコンピュータ、モバイル電話、セルラー電話、スマートフォン、セットトップデバイス、車載コンピュータ、携帯端末、又は、有線及び無線通信ネットワーク機能の少なくとも1つを有する他のパーソナルコンピュータなどの、従来からのパーソナルコンピュータであってもよい。
高信頼のネットワーク通信環境、例えば、ユーザコンピュータ130が有線のローカルエリアネットワークによって通信ネットワーク120に接続される場合において、ユーザコンピュータ130は、オンラインコンテンツ管理サービス110に継続して、又は、ほとんど継続して接続される。しかしながら、信頼の低いネットワーク通信環境において、ユーザコンピュータ130の構成及びユーザコンピュータ130が位置しているネットワーク環境の少なくとも1つに従って、当該ユーザコンピュータ130は、通信ネットワーク120によってオンラインコンテンツ管理サービス110へ、単に断続的に又は定期的に接続されてもよい。例えば、ユーザコンピュータ130は、種々の理由(例えば、コスト及びネットワーク性能の少なくとも1つ)により、ユーザコンピュータ130が所定のタイプのネットワーク、例えば、有線又は無線のローカルエリアネットワークによって通信ネットワーク120に接続される場合のみにおいて、通信ネットワーク120を介してオンラインコンテンツ管理サービス110へ接続するように構成されてもよい。反対に、ユーザコンピュータ130が他のタイプのネットワーク、例えばモバイル電話ネットワークなどによって通信ネットワーク120へ接続される場合には、ユーザコンピュータ130は、通信ネットワーク120を介してオンラインコンテンツ管理サービス110へ接続されないように構成されてもよい。いくつかの場合において、ユーザコンピュータ130は、オンラインコンテンツ管理サービス110へ通信ネットワーク120を介してユーザコンピュータ130が接続するための利用可能なネットワークがないような、物理的な環境、例えば飛行機に、又は遠隔の地理的領域に設置されうる。本発明の種々の実施形態では、ユーザコンピュータ130が通信ネットワーク120によってオンラインコンテンツ管理サービス110へ断続的に又は定期的に接続されるのみの半接続状態の環境において、ユーザコンピュータ130のユーザ131が、当該ユーザ131がホストのコンテンツアイテム141を検索することを可能にする。
例示の実施形態において、サンフランシスコ、カリフォルニアのDropbox社によって提供されるDROPBOXコンテンツ管理サービスであるオンラインコンテンツ管理サービス110は、ユーザのパーソナルコンテンツアイテム141を、そのサーバコンピュータ及びサービス110が管理するサーバコンピュータの少なくとも1つに格納(提供)してもよい。ユーザ131がホストのコンテンツアイテム141が格納されるサーバコンピュータは、例示の実施形態においてシアトル、ワシントンのAmazon.comによって提供されるオンラインファイル・ホスティング・ウェブサービスAMAZON S3であるストレージプレーン140の一部であってもよい。限定はしないが、ユーザ131がホストのコンテンツアイテム141によって消費されるストレージプレーン140の所定量の格納スペースまでが無料であるか、又は、期間中にユーザ131がホストのコンテンツアイテム141によって消費されうるストレージプレーン140の所定量の格納スペースに基づきユーザ131へ無課金の月ごと、年ごと若しくは他の期間ごとのサービス、を含む種々の異なる無料の構成に従って、オンラインコンテンツ管理サービス110の機能がユーザ131に提供されてもよい。
1.1 ホストのコンテンツアイテム
ユーザ131がホストのコンテンツアイテム141は、幅広い種々の異なるタイプのコンテンツアイテムを含んでもよい。”コンテンツアイテム”は、テキストコンテンツ及びテキストコンテンツに関連付けられるものの少なくとも1つを含む、デジタル情報の収集物として定義されてもよい。コンテンツアイテムのいくつかの非限定の例示は、限定しないものの、ワード処理文書と、スプレッドシート文書と、デジタル画像と、他のタイプのファイル、文書及びデジタルメディアとを含む。例えば、ワード処理文書は、頻繁に、文書の作成者による単語及び文章形式でのテキストコンテキストを含み、スプレッドシートの文書は、単語及び数字の形式でのテキストコンテキストを含んでもよく、デジタル画像(例えば、デジタル写真)そのヘッダ(例えば、交換可能な画像ファイル形式(Exif))にテキストコンテンツを含んでもよい。
コンテンツアイテムは、コンテンツアイテムのコンテンツが当該ファイルタイプに一致する標準化の又は従来のデータ形式を有するように、標準化の又は従来のファイルタイプに対応してもよい。コンテンツアイテムが対応するいくつかの標準化の及び従来のファイルタイプは、限定はしないが画像ファイルタイプ(例えば、.jpg、.tiff、.giff)、音楽ファイルタイプ(例えば、.mp3、.aiff、.m4a、.wav)、動画ファイルタイプ(例えば、.mov、.mp4、.m4v)、ワード処理ファイルタイプ(例えば、.doc、.docx、.pages)、プレゼンテーションファイルタイプ(例えば、.ppt、.pptx、.key)、スプレッドシートファイルタイプ(例えば、.xls、.xlsx、.numbers)、ウェブページファイルタイプ(例えば、.htm、.html)、テキストファイルタイプ(例えば、.txt)、及び、テキストコンテキスト及び当該テキストコンテキストに関連するものを含む他の標準化ファイル又は従来ファイルのタイプを含む。いくつかの例において、コンテンツアイテムが標準化の又は従来のファイルタイプに対応する一方で、他の例では、コンテンツアイテムは、私有の又は知られていないファイルタイプに対応する。それらの例においても、コンテンツアイテムは、まだテキストコンテンツ及び当該テキストコンテンツに関連するものを含むものであってもよい。
コンテンツアイテムは、コンテンツアイテムの内容を説明するテキストコンテンツ(コンテンツアイテムの”テキストメタデータ”とも称する)に関連してもよい。例えば、コンテンツアイテムの名称(例えば、ファイル名)は、コンテンツアイテムに対するテキストメタデータであってもよい。他の例として、デジタル画像のテキストメタデータは、画像のコンピュータ解析によって(例えば、光学文字認識(OCR)又は顔認識アルゴリズムによって)生成されてもよい。コンテンツアイテムに対するテキストメタデータの他の形式は、例えば、コンテンツアイテムを参照する(例えば、ハイパーリンクによって)、コンテンツアイテムについて言及する(例えば、ソーシャルネットワークポストにおいて)、又は、コンテンツアイテムを議論する(例えば、ブログポスト又はユーザコメントポストにおいて)、ウェブページからのコンテンツアイテムについてのテキストを含んでもよい。
説明のために、コンテンツアイテムに関連するテキストメタデータは、コンテンツアイテム自身のテキストコンテンツの一部であることが考慮されうる。従って、ここでコンテンツアイテム”に含まれる(contained in)”、コンテンツアイテム”に現れる(occurring in)”又はコンテンツアイテム”の(of)”についての参照は、コンテンツアイテム自身のテキストコンテンツと同様に、別段の明確な示唆がない限り、コンテンツアイテムに関連する任意のテキストメタデータも含むことを意味している。
上述は、ユーザ131がホストのコンテンツアイテム141の中からであってもよいコンテンツアイテムの可能なタイプのいくつかの例示を提供する。
1.2 コンテンツアイテムの同期
ユーザ131がホストのコンテンツアイテム141は、限定はしないがユーザコンピュータ130からコンテンツアイテム141を通信ネットワーク120を介してストレージプレーン140にアップロードすることによる方法、及び、ユーザコンピュータ130からコンテンツアイテム141を通信ネットワーク120を介して、ユーザコンピュータ130からパーソナルコンテンツアイテム141を受信するとストレージプレーン140に当該コンテンツアイテム141を格納するオンラインコンテンツ管理サービス110にアップロードすることによる方法、の少なくとも1つを含む種々の異なる方法でストレージプレーン140への格納用にオンラインコンテンツ管理サービス110へ提供されてもよい。オンラインコンテンツ管理サービス110及びストレージプレーン140はまた、例えば通信ネットワーク120などの通信ネットワークによって接続されてもよい。ストレージプレーン140は、当該ストレージプレーン140からコンテンツアイテムを読み込む(ダウンロードする)ため、及び、当該ストレージプレーン140へコンテンツアイテム141を書き込む(アップロードする)ために、ネットワーク通信プロトコル(例えば、HTTP又はHTTPS)に従って通信ネットワーク120を介してユーザコンピュータ130及びオンラインコンテンツ管理サービス110の少なくとも1つによってアクセス可能なネットワークインタフェースを提供してもよい。オンラインコンテンツ管理サービス110は前記ユーザコンピュータ130へ同様のネットワークインタフェースを提供してもよい。
ユーザ131がホストのコンテンツアイテム141は、ユーザコンピュータ130に格納されるコンテンツアイテムと同期化されてもよい。当該構成において、ユーザコンピュータ130でのコンテンツアイテムへの変更は、オンラインコンテンツ管理サービス110及びストレージプレーン140の少なくとも1つへ通信ネットワーク120を介して送信されてもよい。ユーザコンピュータ130からの変更を受信すると、当該変更は、ストレージプレーン140に格納されるユーザ131がホストのコンテンツアイテム141の対応するものに適用されてもよく、これにより、ユーザコンピュータ130で変更されたコンテンツアイテムをストレージプレーン140の対応するコンテンツアイテム141へ同期することができる。当該変更がストレージプレーン140の対応するコンテンツアイテムへ適用された後に、ユーザコンピュータ130のコンテンツアイテムは、ストレージプレーン140の対応するコンテンツアイテム141と一致することになる。
同期化は双方向に行われてもよい。例えば、ユーザ131は、1つのユーザコンピュータより多くのものにコンテンツアイテムを格納してもよい。例えば、ユーザ131は、ラップトップコンピュータ130にコンテンツアイテムを格納し、モバイル電話130にもコンテンツアイテムを格納してもよい。この場合、ユーザ131のラップトップコンピュータ130でのコンテンツアイテムへの変更は、上述したように、ストレージプレーン140の対応するコンテンツアイテム141への適用のため、オンラインコンテンツ管理サービス110及びストレージプレーン140の少なくとも1つへ送信されてもよい。さらに、変更はまたオンラインコンテンツ管理サービス110及びストレージプレーン140の少なくとも1つから、ユーザ131のモバイル電話130に格納される対応するコンテンツアイテムへの適用のため、ユーザ131のモバイル電話130へ送信されてもよい。この双方向の同期化動作後、ユーザのラップトップコンピュータ130のコンテンツアイテム、ストレージプレーン140の対応するコンテンツアイテム、及びユーザ131のモバイル電話130の対応するコンテンツアイテムが一致することになる。
ユーザコンピュータ130からオンラインコンテンツ管理サービス110及びストレージプレーン140の少なくとも1つへ送信されるコンテンツアイテムへの変更は、ユーザコンピュータ130で発生する種々の異なるイベントによって引き起こされてもよい。例えば、コンテンツアイテムは、ユーザコンピュータ130において、直近に、修正され、作成され又は削除されたものであってもよい。ユーザコンピュータ130は、例えばソフトウェアプログラム又はコンピュータで実行可能な命令のセットとして実行される同期化アプリケーションで構成されてもよい。
ユーザコンピュータ130の同期化アプリケーションは、限定はしないが、ユーザコンピュータ130でのコンテンツアイテムへの変更を検知する工程と、オンラインコンテンツ管理サービス110及びストレージプレーン140の少なくとも1つへ通信ネットワーク120を介して検知したコンテンツアイテムの変更を送信する工程と、オンラインコンテンツ管理サービス110及びストレージプレーン140の少なくとも1つから通信ネットワーク120を介してコンテンツアイテムの変更を受信する工程と、ユーザコンピュータ130のコンテンツアイテムへ受信したコンテンツアイテムの変更を適用する工程とを含む、コンテンツアイテムに対する種々の同期化動作を実行するように構成されてもよい。
いくつかの場合において、ユーザ131がホストのコンテンツアイテム141は、オンラインコンテンツ管理サービス110の1以上の他のユーザと共有されてもよい。例えば、ユーザ131は、オンラインコンテンツ管理サービス110を通じてコンテンツアイテムを協働で共有するユーザのチームに属するかもしれない。この場合、チームメンバのユーザコンピュータ130の1つでのコンテンツアイテムの変更は、ストレージプレーン140の対応するコンテンツアイテム141及び他のチームメンバのユーザコンピュータ130の対応するコンテンツアイテムと同期されうる。
このように、同期化又は他の要因のいずれかのため、ユーザ131がホストのコンテンツアイテム141は時々変更されうる。本発明の種々の実施形態は、ユーザ131がホストのコンテンツアイテム141への変更を、ユーザ131がユーザコンピュータ130で変更が行われてから間もなく検索することを許容する。
いくつかの場合、ユーザ131がホストのコンテンツアイテム141の1以上は、ユーザ131のユーザコンピュータ130の特定の1つと同期化(格納)されない。言い換えれば、ユーザ131がホストのコンテンツアイテム141は、特定のユーザコンピュータ130と選択的に同期化される。例えば、ユーザ131は、ユーザ131のモバイル電話130の同期化アプリケーションを、モバイル電話130でユーザ131がホストのデジタル写真141を同期化しないが、モバイル電話130でユーザ131がホストのコンテンツアイテム141の他の全てを同期化するように設定してもよい。ユーザ131は、本方法で同期化アプリケーションを、例えば、モバイル電話130でデータ格納スペースを節約するために、或いは、他の理由(例えば、モバイル電話130へデジタル写真をダウンロードしないことによってネットワークの帯域幅を節約するなど)のために設定してもよい。他の例として、モバイル電話130の同期化アプリケーションは、ユーザ131がホストのコンテンツアイテム141のいずれがモバイル電話130で同期化(に格納)するように自動的に決定されるように設定されてもよい。例えば、同期化アプリケーションは、直近にアクセスされた、及び、将来アクセスされそうなユーザ131がホストのコンテンツアイテム141の少なくとも1つがモバイル電話130で同期される(にキャッシュされる)、ユーザ131がホストのいくつかのコンテンツアイテム141のローカルキャッシュとしてモバイル電話130を扱うように設定されてもよい。このように、同期化を選択できるため、ユーザ131のユーザコンピュータ130は、ユーザ131がホストのコンテンツアイテム141のサブセットのみを所定の時間にオンラインコンテンツ管理サービス110で格納してもよい。本発明の種々の実施形態は、ユーザ131がホストのコンテンツアイテム141のいくつか又は全てが検索のタイミングでユーザコンピュータ130において同期化されない(に格納されない)場合であっても、ユーザ131がユーザコンピュータ130でユーザ131がホストのコンテンツアイテム141を検索することを許容する。
1.3 ユーザアカウント
ストレージプレーン140は、複数のユーザ(例えば、100万又はそれ以上)におけるコンテンツアイテム141を格納してもよい。特定のユーザ(例えば、131)に属する、ストレージプレーン140に格納される全てのコンテンツアイテム141の中で所定のコンテンツアイテム141のセットが、ユーザがオンラインコンテンツ管理サービス110で保持するユーザアカウントによって規定されてもよい。例えば、ユーザ131は、オンラインコンテンツ管理サービス110でユーザアカウントを保持し、ユーザ131がホストのコンテンツアイテム141がユーザアカウントに関連付けられてもよい。この方法で、オンラインコンテンツ管理サービス110は、ストレージプレーン140のコンテンツアイテム141のいずれがユーザ131のコンテンツアイテム141かを判定することができる。この判定の一部として、オンラインコンテンツ管理サービス110は、ユーザアカウントのデータベース(不図示)のユーザ131のユーザアカウントを識別するためにユーザコンピュータ130によって提供される有効な認証クレデンシャル(例えば、有効なユーザ名/パスワードのペア)でユーザ131を認証してもよい。識別すると、オンラインコンテンツ管理サービス110及びストレージプレーン140の少なくとも1つは、識別されたコンテンツアイテムがユーザ131のユーザアカウントに関連付けられるかどうかに基づき、リクエストで識別されるストレージプレーン140のコンテンツアイテム141へアクセスする(例えば、読み出す又は書込む)ための、ユーザコンピュータ130(例えば、ユーザコンピュータ130上の同期化アプリケーション)からのリクエストを認証する(許可又は却下する)。
ユーザ131のユーザアカウントと、ストレージプレーン140のユーザ131がホストのコンテンツアイテム141との関連は、コンテンツアイテム141の固有の識別子を用いて規定されてもよい。例えば、コンテンツアイテムの識別子は、コンテンツアイテム141を固有に識別する固有の64ビット値を含むものであってもよい。しかしながら、コンテンツアイテムの識別子は、それぞれの特定の実装の要件に従って、より少ないビット又はより多いビットで表されてもよい。
1.4 コンテンツアイテムの名前空間
ユーザ131がホストのコンテンツアイテム141は、1以上の”コンテンツアイテムの名前空間”へ体系化されてもよい。コンテンツアイテムの名前空間は、共有アクセス制御の下で、1以上のコンテンツアイテム141の収集物として定義されてもよい。共有アクセス制御は、ユーザ及びユーザグループの少なくとも1つのいずれがコンテンツアイテム141へのアクセスを有するかと、ユーザ及びユーザグループの少なくとも1つがコンテンツアイテムの名前空間に属するコンテンツアイテム141上にどんなアクセス(例えば、読み出しアクセス、書込みアクセス、共有アクセス、プレビューアクセス、ダウンロードアクセスなど)を有するかと、を特定する及び/又は示す、明示的な許可及び暗黙的な許可の少なくとも1つに基づくことができる。明示的な許可は、ユーザ及びユーザグループの少なくとも1つのいずれがコンテンツアイテム141へのアクセスを有するかと、ユーザ及びユーザグループの少なくとも1つがコンテンツアイテムの名前空間のコンテンツアイテム141上にどんなアクセスを有するかと、を特定する及び/又は示す、例えばコンテンツアイテムの名前空間(又は、それらの識別子)に関連付けられる1以上のアクセス制御リスト(ACL)及び他のデータの少なくとも1つの形式で行ってもよい。暗黙的な許可の一例は、ユーザ131がユーザ131のユーザアカウント(又は、それらの識別子)に関連付けられるコンテンツアイテムの名前空間の全てのコンテンツアイテム141へのアクセスを有するものである。
本発明の例示の実施形態において、”デフォルト”のコンテンツアイテムの名前空間は、例えば、前述したDROPBOXコンテンツ管理サービスなどのクラウドデータストレージサービスで保持されるユーザ131のユーザアカウントに関連付けられるコンテンツアイテム141を含む。ユーザアカウントに対する認証が成功すると(例えば、有効なユーザ名/パスワード)、ユーザ131は、ユーザ131のユーザアカウントと関連付けられるデフォルトのコンテンツアイテムの名前空間においてコンテンツアイテム141へのアクセスを暗黙的に有する。
本発明の例示の実施形態において、”共有”のコンテンツアイテムの名前空間は、例えば前述したDROPBOXコンテンツ管理サービスなどのオンラインデータストレージサービスで保持される複数のユーザアカウントの中で共有されるコンテンツアイテム141のコレクションへ属しているコンテンツアイテム141を含む。いくつかの例で、コンテンツアイテム141のコレクションは、”共有フォルダ”と称してもよい。コンテンツアイテム141のコレクションが共有されるためのユーザアカウントに対する認証が成功すると、ユーザ131は、共有のコンテンツアイテムの名前空間においてコンテンツアイテム141へのアクセスを有する。
ユーザ131のユーザアカウントとユーザ131がホストのコンテンツアイテム141の固有の識別子との間における直接的な関連の代わりに、ユーザ131のユーザアカウントとユーザ131がホストのコンテンツアイテム141の固有の識別子との間における間接的な関連は、コンテンツアイテム141が属するコンテンツアイテムの名前空間における固有の識別子を用いて規定されてもよい。例えば、コンテンツアイテムの名前空間の識別子は、コンテンツアイテムの名前空間を固有に識別する固有の64ビット値を含んでもよい。しかしながら、コンテンツアイテムの名前空間における識別子は、それぞれの特定の実装の要件に従って、より少ないビット又はより多いビットで表されてもよい。この場合、コンテンツアイテムの名前空間と、ユーザ131のコンテンツアイテム141をそれらが属するコンテンツアイテムの名前空間へマッピングするコンテンツアイテムの識別子との間で直接的な関連でそれらは区別されてもよい。一実施例において、ユーザ131のユーザアカウントは、固有の識別子、例えば、ABCDやDEFGで2つのコンテンツアイテムの名前空間に関連付けられてよい。さらに、例えばデフォルトのコンテンツアイテムの名前空間であってもよいコンテンツアイテムの名前空間ABCDは、デフォルトのコンテンツアイテムの名前空間ABCDに属する1以上のコンテンツアイテム141の固有の識別子に関連付けられ、例えば共有のコンテンツアイテムの名前空間であってもよいコンテンツアイテムの名前空間DEFGは、共有のコンテンツアイテムの名前空間DEFGに属する1以上のコンテンツアイテム141の固有の識別子に関連付けられてもよい。それらの関連から、ユーザ131が認証されユーザ131のユーザアカウントが識別されるとすぐに、ユーザ131のコンテンツアイテムの名前空間と、ユーザ131がホストのコンテンツアイテム141との固有の識別子は、オンラインコンテンツ管理サービス110によって識別されうる。
1.5 クエリの処理アプローチ
グラフィカルユーザインタフェースは、ユーザコンピュータ130によってユーザ131へ提示されてもよい。例えば、ユーザコンピュータ130は、例えばコンピュータ1000のディスプレイ1012などのビデオディスプレイデバイス上でグラフィカルユーザインタフェースを提示してもよい。グラフィカルユーザインタフェースを通じて、ユーザ131は、検索クエリを提供し、検索クエリへの応答を受信する。いくつかの実施形態において、グラフィカルユーザインタフェースは、ユーザ131から検索クエリを受信し、検索クエリへの応答をユーザ131へ提示するためにウェブページ又はウェブページのシリーズを含む。しかしながら、グラフィカルユーザインタフェースは、ウェブページに限定されず、グラフィカルユーザインタフェースは、ユーザ131から検索クエリを受信し、検索クエリの応答をユーザ131へ提示するための他のタイプのウィンドウ、アイコン、メニュー、及びグラフィックを含んでもよい。
ユーザコンピュータ130でグラフィカルユーザインタフェースを通じてユーザ131によって提供される検索クエリは、検索式を含んでもよい。検索式の構文は、1以上のブール演算子(例えば、AND、OR、NOTなど)によって共に関連付けが可能な、1以上の検索トークンのシーケンスを含んでもよい。トークンは、1以上の文字の文字列として定義されてもよい。トークンの文字は、従来の文字符号化手法(例えば、ASCII、UTF−8、及び同等のもの)に従って符号化されてもよい。
クエリのトークンは、検索クエリで現れるトークンとして定義されてもよい。例えば、単一の結合検索の問い合わが[baguette fromage](同封する括弧なしで)の場合を検討する。当該検索クエリを満足するホストのコンテンツアイテム141は、コトークン“baguette”と、トークン“fromage”との両方を含んでもよく、コンテンツアイテム141の中で互いが隣接する必要はなく、かつコンテンツアイテム141の中でトークン“fromage”の前にトークン“baguette”が現れる必要はない。しかしながら、トークン“baguette”と、トークン“fromage”とを互いに近くに含み、トークン“fromage”の前にトークン“baguette”を含むホストのコンテンツアイテム141は、検索クエリを満足するユーザ131がホストの他のコンテンツアイテム141よりも関連があるものとみなされてもよい。
ユーザコンピュータ130のグラフィカルユーザインタフェースで提示される検索クエリへの応答は、リストの検索結果の概要を含んでもよい。そのような概要のそれぞれは、検索クエリへの関連として、インデックスで識別されるコンテンツアイテム141に対応してもよい。検索クエリへの関連としてインデックスで識別され、検索クエリへの応答に含まれるコンテンツ141はまた、ここでは検索クエリの“検索結果”或いは単に“結果”と称する。検索の応答の概要は、例えば、識別されるコンテンツアイテム141の識別子(例えば、名称、タイトルなど)、識別されるコンテンツアイテム141の短い説明(例えば、概要、要約、引用、抜粋など)、ダウンロード、閲覧又はいくつかの他のユーザアクションを行うための識別されるコンテンツアイテム141へのインタラクティブなハイパーリンク(例えば、ユニフォーム・リソース・ロケータ(URL))、及び、識別されるコンテンツアイテム141について可能な他の有用な情報(例えば、関連するコンテンツアイテム141のサムネイル画像)を含んでもよい。
幾つかの場合において、検索クエリの概要に対応するコンテンツアイテム141は、ユーザコンピュータ130で格納される対応するコンテンツアイテムを有していなくてもよい。例えば、対応するコンテンツアイテムは、選択的な同期化のため、ユーザコンピュータ130に格納されなくてもよい。本発明のいくつかの実施形態によれば、ユーザコンピュータ130のグラフィカルユーザインタフェースで提示される検索応答の概要は、検索応答の概要に対応するコンテンツアイテム141がユーザコンピュータ130に格納される対応のコンテンツアイテムを有するかどうかを視覚的に示す。視覚的な指標は、ユーザコンピュータ130に格納される対応するコンテンツアイテムを有しないコンテンツアイテム141に対応する他の検索応答の概要で視覚的なグループ化、検索応答の概要と結合して若しくは近くに(隣接して)表示されるテキスト若しくはグラフイカルな指標、又は、対応するコンテンツアイテム141がユーザコンピュータ130に格納される対応するコンテンツアイテムを有しないことを示すいくつかの他の視覚的な指標であってもよい。そのような指標を提供することによって、ユーザ131は、コンテンツアイテムにアクセスする(例えば、閲覧する)ために、ユーザ131がオンラインコンテンツ管理サービス110を通じてストレージプレーン140に格納されるコンテンツアイテム141にアクセスする必要があるかを理解することができる。
幾つかの場合において、検索応答の概要に対応するコンテンツアイテム141は、ユーザコンピュータ130に格納される対応するコンテンツアイテムのバージョンよりも新しいバージョンのコンテンツアイテムである。例えば、ストレージプレーン140に格納されるより新しいバージョンのコンテンツアイテムに行われる変更は、検索が行われたタイミングでユーザコンピュータ130にまだ同期されていないかもしれない。本発明のいくつかの実施形態によれば、ユーザコンピュータ130でのグラフィカルユーザインタフェースで提示される検索応答の概要は、検索応答 お概要に対応するコンテンツアイテム141がユーザコンピュータ130に格納される対応するコンテンツアイテムのバージョンより新しい(より最近の)ものであるかどうかを視覚的に示す。そのような指標を提供することによって、ユーザ131は、ユーザコンピュータ130に格納される対応するコンテンツアイテムのバージョンがストレージプレーン140に格納されるコンテンツアイテムのバージョンに対して古いかもしれないことを理解することができる。
ユーザコンピュータ130は、ユーザコンピュータ130のグラフィカルユーザインタフェースを通じて、ユーザ131によって提供される検索クエリを処理するためのローカルクエリプロセッサを含んでもよい。ローカルクエリプロセッサは、検索クエリに関連し、検索クエリへの応答に含めるユーザ131のコンテンツアイテム141を識別するために、種々の異なる方法で検索クエリを処理することができる。3つの可能なクエリの処理アプローチを以下に説明するとともに、“ローカルアプローチ”、“リモートアプローチ”、及び“ハイブリッドローカル/リモートアプローチ”と称する。それらの以下で説明されるものとは異なるクエリ処理アプローチが、それぞれの特定の実装の要件に従って使用されてもよい。
検索クエリを処理するためのローカルアプローチ、リモートアプローチ、及びハイブリッドローカル/リモートアプローチの以下の説明では、より明確な例示を提供するために、用語“ローカル”及び“リモート”はユーザコンピュータ130に関連して定義される。
検索クエリを処理するための“ローカルアプローチ”において、ローカルクエリプロセッサは、検索クエリに関連するユーザ131のコンテンツアイテム141を識別し、検索クエリへのローカル応答に含めるために検索クエリでローカルインデックスを参考にする。検索クエリを処理するためのローカルアプローチは、検索クエリの受信に応じてユーザ131へ応答を素早く提供するのに有用である。検索クエリが通信ネットワーク(例えば、120)を介して検索クエリを送信する必要がなく、通信ネッワークで戻される検索クエリへの応答を待つ必要もなく、ユーザコンピュータ130で局所的に処理されうるため、当該応答は素早く提供されうる。ローカルアプローチはまた、ユーザコンピュータ130が現在通信ネットワーク120でネットワークに又はオンラインコンテンツ管理サービス110に接続していないようなユーザコンピュータ130がオフラインネットワーク通信環境にある場合も有用である。
検索クエリを処理するための“リモートアプローチ”において、ローカルクエリプロセッサは、通信ネットワーク120を介して検索クエリをオンラインコンテンツ管理サービス110のフロントエンドクエリ処理コンピュータ116へ送信する。検索クエリは、その後、オンラインコンテンツ管理サービス110のリモートクエリプロセッサによって処理される。リモートクエリプロセッサは、フロントエンドクエリプロセッサコンピュータ116及びバックエンドクエリプロセッサコンピュータ115の少なくとも1つによって実装される。リモートクエリプロセッサは、ユーザ131のコンテンツアイテム141を識別し、フロントエンドクエリプロセッサコンピュータ116によって通信ネットワーク120を介してユーザコンピュータ130に返される検索クエリへのリモート応答に含めるためにリモートインデックスを参考にしてもよい。検索クエリを処理するリモートアプローチは、検索クエリへのより大局的な応答が要望される場合に有用である。検索クエリでリモートインデックスを参考にすることによって取得されるリモート応答は、リモートインデックスがストレージプレーン140に格納されるユーザ131がホストのコンテンツアイテム141の現在の状態に対してより最新のものでありうるため、検索クエリでローカルインデックスを参考にすることによって取得されるローカル応答よりも圧縮されたものであってもよい。例えば、バックエンドクエリプロセッサコンピュータ115へのストレージプレーン140のネットワーク近接性及び利用可能性のため、ユーザ131がホストのコンテンツアイテム141の1つへの変更は、ユーザコンピュータ130でのローカルインデックスに付与される変更よりも早くリモートインデックスに付与されうるユーザコンピュータ130から受信した検索クエリを処理するためのフロントエンドクエリプロセッサコンピュータ116及びバックエンドクエリプロセッサコンピュータ115によって採用される幾つかの実施形態の技術は、以下の関連出願:米国出願第14/555,147号明細書、“パーソナル検索における方法を有するマルチユーザ検索システム”、2014年11月26日出願と、米国出願第14/551,171号明細書、“パーソナライズされた検索クエリのオートコンプリートにおける方法を有するマルチユーザ検索システム”、2014年11月26日出願とに説明される。それらのアプリケーションのそれぞれの全体の内容は、全ての目的において参照によりここに組み込まれるものとする。
”ハイブリッドローカル/リモートアプローチ”において、ユーザコンピュータ130のローカルクエリプロセッサは、(1)検索クエリを有するローカルインデックスを調べることと、(2)フロントエンドクエリプロセッサコンピュータ116へ通信ネットワーク120を介して検索クエリを送信することとの両方を行う。当該アプローチは、ローカルアプローチと同様に、検索クエリに対するローカル応答を素早く取得するのに有用であり、リモートアプローチと同様に、より大局的な応答を取得するのにも有用である。典型的なシナリオにおいてローカルクエリプロセッサは、ユーザコンピュータ130がフロントエンドクエリプロセッサコンピュータ116からのリモート応答を受信する前に、ローカルインデックスからローカル応答を取得するであろう。ローカル応答は、当該ローカル応答が取得されるとすぐに、ユーザコンピュータ130のグラフィックユーザインタフェースにおいてユーザ131に提示されうる。リモート応答がユーザコンピュータ130で受信されると、提示された応答がその後、リモート応答からの結果で更新されうる。
いくつかの実施形態において、ローカル応答の検索結果に対するランキングスコアと、リモート応答の検索結果に対するランキングスコアとは、同一のランキングアルゴリズムに従って計算される。特に、ローカル応答の検索結果に対するランキングスコアを計算するためにローカルクエリプロセッサによって使用されるローカルランキングアルゴリズムは、リモート応答の検索結果に対するランキングスコアを計算するためのリモートクエリプロセッサによって使用されるリモートランキングアルゴリズムと同様であってもよい。そのように行うことによって、ローカル及びリモート検索結果に対するランキングスコアは比較可能であり、ローカルクエリプロセッサは、受信したリモート応答のリモート検索結果に対するランキングスコアに基づき、任意のリモート検索結果がユーザコンピュータ130のグラフィックユーザインタフェースに現在提示されている最も悪く(最下位に)ランク付けしたローカル検索結果よりも良い(例えば、より高い)ランキングスコアを有するかどうかを決定することができる。そのようなより良くランク付けされた検索結果があれば、その後、グラフィックユーザインタフェースは、最も悪くランク付けされたローカル検索結果に追加して又はの代わりにより良くランク付けされた検索結果を表示するように構成されてもよい。
1.6 トークナイザ及びトークン格納部
トークナイザコンピュータ118は、ストレージプレーン140に格納されるコンテンツアイテム141をトークン化し、トークン格納部117にトークン化したコンテンツアイテム140におけるトークンのセットを格納する。トークナイザコンピュータ118は、定期的を基礎(例えば)、1日1回、1週間に1回)に、又は、コンテンツアイテム141が変更された後のタイミングを含む種々の異なるタイミングで、ストレージプレーン140コンテンツアイテム141をトークン化してもよい。トークナイザコンピュータ118は、ストレージプレーン140のコンテンツアイテム141をトークン化する場合、トークナイザコンピュータ118は、トークンのセットを生成し、トークン格納部117にトークンのセットを格納する。所定のコンテンツアイテム141に関し、トークン格納部117は、トークンの1以上のセットを格納してもよく、その1つは、トークナイザコンピュータ118によってトークン化された所定のコンテンツアイテム141のもっとも最近のバージョンに対応する。所定のコンテンツアイテム141に対するトークン格納部117のトークンの他のセットは、トークナイザコンピュータ118によってトークン化された所定のコンテンツアイテム141の以前のバージョンに対応してもよい。
一例として、テキスト”2つの問題を解決した”を含むコンテンツアイテム141の第1のバージョンは、ストレージプレーン140に格納されてもよい。1回目に、トークナイザコンピュータ118は、トークナイザコンピュータ118がトークン格納部117にその後格納するトークンのセット: ”解決した”、”2つ”、”問題”を生成するために、コンテンツアイテム141の第1のバージョンをトークン化してもよい。その後、上記1回目の後の2回目において、テキスト”3つの問題を解決した”を含むコンテンツアイテム141の第2のバージョンは、ストレージプレーン140に格納されてもよい。トークナイザコンピュータ118は、その後、トークナイザコンピュータ118がまたトークン格納部117に格納する”解決した”、”3つの”、”問題”のトークンのセットを生成するためにコンテンツアイテム141の第2のバージョンをトークン化してもよい。コンテンツアイテム141の第1及び第2のバージョンを処理する工程の一部として、トークナイザコンピュータ118は、”解決した”、”3つの”、”問題”のトークンのセットがコンテンツアイテム141の第2のバージョン対してのものであること、及び、”解決した”、”2つの”、”問題”のトークンのセットがコンテンツアイテム141の第1のバージョンに対するものであることを示すメタデータ(例えば、バージョン情報)をトークン格納部117に格納してもよい。
本発明のいくつかの実施形態において、トークン格納部117は、例えば、APACHE HBASEデータベースシステムなどのカラム指向型の分散データベースシステムを含む。しかしながら、データベースシステムの他のタイプが、それぞれにおける特定の実装の要件に従って、他の実施形態に使用されてもよい。例えば、独自の、関係型、又は、独立型のデータベースシステムが、オープンソース、カラム指向型又は分散型のものの代わりに使用されてもよい。
トークナイザコンピュータ118は、コンテンツアイテム141のテキストコンテンツをトークン化することによってコンテンツアイテム141に対するトークンのセットを生成してもよい。コンテンツアイテム141のテキストコンテンツ呼び戻すことは、コンテンツアイテム141自身の任意のテキストコンテンツと同様に、コンテンツアイテム141に関連付けられた任意のテキストのメタデータを含んでもよい。コンテンツアイテム141のテキストコンテンツのトークン化する工程は、テキストコンテンツの1以上の文字列を取得する工程を含んでもよい。種々の技術がテキストコンテンツの形式に従って、テキストコンテンツの文字列を取得するトークナイザによって使用されてもよい。例えば、使用される当該技術は、テキストコンテンツの文字符号化手法(例えば、ASCII、Unicode、UTF−8、マイクロソフトWORD、ADOBE、PDFなど)に従ってテキストコンテンツを復号する工程と、テキストコンテンツが圧縮されているかどうか(例えば、ZIP圧縮によって)に従ってテキストコンテンツを解凍する工程との少なくとも1つを含んでもよい。
テキストコンテンツの文字列が取得されるとすぐに、トークナイザコンピュータ118は、同時にトークン上で言語プロセスを実行することが可能なように、文字列を、トークンと称する複数の小片に分割してもよい。言語プロセスは、例えば、所定の文字列(例えば、句読点)を無視する工程、共通の単語(例えば、ストップワード)を除外する工程、並びに、語幹解釈及び見出語解釈の少なくとも1つを含んでもよい。言語プロセスはまた、付加記号、アクセント及び大文字化/大文字変換の少なくとも1つなどを取り除く工程を含むトークンの正規化を含んでもよい。
1.7 基本インデックス
基本インデックス生成コンピュータ111は、ユーザ131がホストのコンテンツアイテム141のいくつか又は全ての”基本インデックス”を生成するように構成されてもよい。基本インデックス生成コンピュータ111は、限定はしないが、定期的なタイミング(例えば、1日1回、1週間に1回)及び検出したイベントに応じた(例えば、基本インデックスを生成するためにコマンドを受信ことに応じて)タイミングの少なくとも1つのタイミングを含む、種々の異なるタイミングで基本インデックスを生成してもよい。
通常、基本インデックスは、インデックストークンの辞書や対応する登録を有する逆インデックスとして構成されうる。より詳細には、基本インデックスは、鍵が辞書のインデックストークンに対応し、かつ、その値が登録(ポスティング)の登録リスト(ポスティングリスト)に対応する鍵値の組の集合(例えば、関連配列)として構成されてもよい。基本インデックスにインデックス化されるべき所定のコンテンツアイテム141に関し、基本インデックス生成コンピュータ111は、トークナイザコンピュータ118によってトークン化される所定のコンテンツアイテム141の最新のバージョンに対してトークン格納部117のトークンのセットを取得する。当該トークンのセットが取得されるとすぐに、基本インデックス生成コンピュータ111は、トークンのセットに基づき、基本インデックスの鍵値の組を追加又は修正してもよい。特に、トークンのセットにおける所定のトークンに関し、基本インデックスの所定のトークンに対する鍵値の組が現在なければ、基本インデックス生成コンピュータ111は、所定のトークンを含む鍵と所定のコンテンツアイテム141を識別する登録リストを含む値とで、基本インデックスの新たな鍵値の組を作成してもよい。代替的に、基本インデックスの所定のトークンに対する鍵値の組があれば、基本インデックス生成コンピュータ111は、その後、所定のコンテンツアイテム141を識別するために、登録リストの値を修正してもよい。
基本インデックスサーバコンピュータ112は、基本インデックス生成コンピュータ111によって生成された基本インデックスを、通信ネットワーク120を介してユーザコンピュータ130に提供するように構成されてもよい。基本インデックスサーバコンピュータ112は、限定はしないが、ユーザコンピュータ130から受信したネットワークリクエストに応じる場合を含む種々の異なるタイミングで通信ネットワーク120を介してユーザコンピュータ130へ、生成した基本インデックスを提供してもよい。
いくつかの実施形態において、基本インデックスサーバコンピュータ112は、ストレージプレーン140の一部であってもよい。それらの実施形態において、基本インデックス生成コンピュータ111によって生成された基本インデックスは、ユーザ131がホストのコンテンツアイテム141の1つとして取り扱われ、コンテンツアイテムの同期化動作の一部として通信ネットワーク120を介してユーザコンピュータ130へ提供される。それらの実施形態によれば、基本インデックス生成コンピュータ111は、ユーザ131がホストのコンテンツアイテム141に基づいて基本インデックスを生成した後に、ストレージプレーン140に基本インデックスを格納してもよい。その後、基本インデックスは、ユーザコンピュータ130の現在の基本インデックスで、ストレージプレーン140の基本インデックスを同期化する目的で、ユーザ131がホストのコンテンツアイテム141の1つとして取り扱われる。有意に、ストレージプレーン140の基本インデックスは、ストレージプレーン140の基本インデックスがユーザコンピュータ130の現在の基本インデックスから異なる場合、或いは、ユーザコンピュータ130に現在の基本インデックスがない場合のみに、コンテンツアイテムの同期化動作の一部として、ユーザコンピュータ130へ提供されてもよい。本方法において、ユーザコンピュータ130は、ユーザコンピュータ131の同期化アプリケーションと、オンラインコンテンツ管理サービス110との間での、正規的な、定期的な、又は適時的なコンテンツアイテムの同期化動作の一部として、ユーザ131がホストのコンテンツアイテム141の基本インデックス生成コンピュータ111によって生成される最新の基本インデックスを受信してもよい。
1.8 インデックス変更情報
トークナイザコンピュータ118は、コンテンツアイテム141をトークン化し、トークン格納部117の変更したコンテンツアイテム141に対して生成したトークンのセットを格納した後に、インデックス変更情報生成コンピュータ113に通知してもよい。例えば、インデックス変更情報生成コンピュータ113は、ストレージプレーン140においてユーザ131がホストのコンテンツアイテム141の1つが修正された又は削除された後に、トークナイザコンピュータ118によって通知されてもよい。
トークナイザコンピュータ118からの変更されたコンテンツアイテム141の通知を受信することに応じて、インデックス変更情報生成コンピュータ113は、変更されたコンテンツアイテム141への変更を反映するインデックス変更情報を生成し、インデックス変更情報生成コンピュータ113のインデックス変更情報ジャーナルに上記インデックス変更情報を格納してもよい。いくつかの実施形態において、インデックス変更情報ジャーナルは、分散型の付加のみのコミット履歴(commit log)として実装されてもよい。
変更されたコンテンツアイテム141がストレージプレーン140において修正された場合、その後、当該変更について生成されたインデックス変更情報は、変更されたコンテンツアイテム141にインデックスを付与するために使用される1以上のトークンと、変更されたコンテンツアイテム141にインデックスを付与するために使用されない1以上のトークンとの少なくとも1つを含んでもよい。変更されたコンテンツアイテム141にインデックスを付与するために使用される1以上のトークンは、変更後にコンテンツアイテム141に含まれるが変更前にコンテンツアイテム141に含まれなかったトークンを含んでもよい。変更されたコンテンツアイテム141にインデックスを付与するために使用されない1以上のトークンは、変更前にコンテンツアイテム141に含まれていたが、変更後にコンテンツアイテム141に含まれないトークンを含んでもよい。
変更されたコンテンツアイテム141がストレージプレーン140において修正された場合、インデックス変更情報生成コンピュータ113は、修正したコンテンツアイテム141にインデックスを付与するために使用する任意のトークンと、修正したコンテンツアイテム141にインデックスを付与するために使用されない任意のトークンとを、トークン格納部117のコンテンツアイテム141の最新のバージョンに対するトークンのセットと、トークン格納部117のコンテンツアイテム141の以前のバージョンに対するトークンのセットとを比較することによって、識別する。例えば、修正後のコンテンツアイテム141の最新のバージョンに対するトークン格納部117のトークンのセットが”解決した”、”3つの”、”問題”であり、修正前のコンテンツアイテム141の以前のバージョンに対するトークン格納部117のトークンのセットが”解決した”、”2つの”、”問題”である場合を想定する。この場合、インデックス変更情報生成コンピュータ113は、修正したコンテンツアイテム141にインデックスを付与するために使用するトークンとしてトークン”3つ”を識別し、修正したコンテンツアイテム141にインデックスを付与するために使用されないトークンとしてトークン”2つ”を識別してもよい。
変更されたコンテンツアイテム141がストレージプレーン140へ追加される場合、その後、インデックス変更情報は、新たなコンテンツアイテム141へインデックスを付与するために使用される1以上のトークンを含んでもよい。例えば、追加後に、コンテンツアイテム141の現在のバージョンに対するトークン格納部117のトークンのセットが”解決した”、”3つの”、”問題”であると想定する。この場合、インデックス変更情報生成コンピュータ113は、新たなコンテンツアイテム141へインデックスを付与するために使用されるトークンとして、トークン”解決した”、”3つの”、及び”問題”を識別してもよい。
変更されたコンテンツアイテム141がストレージプレーン140から削除された場合、その後、インデックス変更情報は、削除したコンテンツアイテム141へインデックスを付与するために使用されない1以上のトークンを含んでもよい。例えば、削除前に、コンテンツアイテム141の最新のバージョンに対するトークン格納部117のトークンのセットが”解決した”、”3つの”、”問題”であると想定する。この場合、インデックス変更情報生成コンピュータ113は、削除したコンテンツアイテム141へインデックスを付与するために使用されないトークンとして、トークン”解決した”、”3つの”、及び”問題”を識別してもよい。
上述したように、インデックス変更情報生成コンピュータ113による変更されたコンテンツアイテム141に対して生成されるインデックス変更情報は、インデックス変更情報生成コンピュータ113のインデックス変更情報ジャーナルに格納されてもよい。そうすることで、インデックス変更情報生成コンピュータ113は、コンテンツアイテム141が変更された時間を反映する”ジャーナルタイムスタンプ”に関連付けてジャーナルにインデックス変更情報を格納してもよい。このように、コンテンツアイテム141への変更に対するインデックス変更情報は、コンテンツアイテム141への変更が発生した際のオーダーを反映するオーダーのジャーナルに格納されてもよい。
インデックス変更情報サーバコンピュータ114は、インデックス変更情報ジャーナルからインデックス変更情報を、通信ネットワーク120を介してユーザコンピュータ130へ送信してもよい。インデックス変更情報サーバコンピュータ114は、限定はしないが、ユーザコンピュータ130からのネットワークリクエストに応じて、インデックス変更情報サーバコンピュータ114がインデックス変更情報ジャーナルにインデックス変更情報を格納することに応じて、及び、周期間隔(例えば、1分間隔)の発生に応じての少なくとも1つのタイミングを含む種々の異なるタイミングで、インデックス変更情報を、通信ネットワーク120を介してユーザコンピュータ130へ送信してもよい。
インデックス変更情報ジャーナルの何れのインデックス変更情報をユーザコンピュータ130へ送信するかを決定するために、インデックス変更情報サーバコンピュータ114は、インデックス変更情報ジャーナルのインデックス変更情報と関連付けられたジャーナルタイムスタンプと、ユーザコンピュータ130に関連付けられた”ローカルインデックスのタイムスタンプ”とを比較してもよい。ローカルインデックスのタイムスタンプは、ユーザコンピュータ130の”ローカルインデックス”がユーザ131がホストのコンテンツアイテム141への変更に関して最新となる時点を反映する。
ユーザコンピュータ130におけるローカルインデックスのタイムスタンプは、ユーザコンピュータ130に格納され、インデックス変更情報サーバコンピュータ114へ提供されてもよい。代替的に、オンラインコンテンツ管理サービス110は、ユーザコンピュータ130におけるローカルインデックスのタイムスタンプを保持してもよい。何れかの場合、ユーザコンピュータ130におけるローカルインデックスのタイムスタンプは、限定はしないが、ユーザコンピュータ130が新たな基本インデックスを取得する度に、及び、ユーザコンピュータ130がインデック変更情報を取得する度に、というタイミングを含む種々の異なるタイミングで更新されてもよい。上述したように、インデックス変更情報サーバコンピュータ114は、ユーザコンピュータ130へ提供するインデックス変更情報ジャーナルのユーザコンピュータ130に対するインデックス変更情報を決定するために、インデックス変更情報ジャーナルのインデックス変更情報に関連付けられるジャーナルタイムスタンプをユーザコンピュータ130におけるローカルインデックスのタイムスタンプと比較してもよい。
インデックス変更情報ジャーナルの所定のインデックス変更情報がユーザコンピュータ130へ提供されるべきであるかどうかを決定するために、インデックス変更情報サーバコンピュータ114は、インデックス変更情報ジャーナルの所定のインデックス変更情報に関連付けられたジャーナルタイムスタンプと、ユーザコンピュータ130における現在のローカルインデックスのタイムスタンプとを比較してもよい。所定のインデックス変更情報に対するジャーナルタイムスタンプがユーザコンピュータ130のローカルインデックスのタイムスタンプよりも新しい場合、その後、インデックス変更情報サーバコンピュータ114は、ユーザコンピュータ130にインデックス変更情報を提供するように決定してもよい。一方で、所定のインデックス変更情報に対するジャーナルタイムスタンプがローカルインデックスのタイムスタンプよりも古い場合、その後、インデックス変更情報サーバコンピュータ114は、ユーザコンピュータ130にインデックス変更情報を提供しないように決定してもよい。この方法において、ユーザコンピュータ130は、ユーザコンピュータ130のローカルインデックスに既に付与されていないユーザ131がホストのコンテンツアイテム141への変更に対するインデックス変更情報が提供されてもよい。
上述した背景を考慮した、ユーザコンピュータ130のローカルインデックスの構造及び動作、インデックス変更情報生成コンピュータ113のインデックス変更情報ジャーナル、トークン格納部117の一実施形態に続けて、ユーザコンピュータ130でのユーザ131がホストのコンテンツアイテム141にインデックスを付与するための例示の処理、及びユーザコンピュータ130でのユーザ131がホストのコンテンツアイテム141を検索するための例示の処理を以下に説明する。
2.0 ローカルインデックス
図2を参照すると、本発明のいくつかの実施形態に係る、ユーザ131がホストのコンテンツアイテム141の、ユーザコンピュータ130に格納されうるローカルインデックス210の概略図が示されている。ローカルインデックス210は、辞書213と、対応する登録217を含む逆インデックスのように構築されてもよい。
辞書213は、ユーザ131がホストのコンテンツアイテム141にユーザコンピュータ130においてインデックスを付与するためのインデックストークン214を含んでもよい。辞書213はまた、登録リスト(例えば、218A)への各インデックストークン(例えば、214A)に対するポインタを含む。各登録リスト(例えば、218A)は、対応するインデックストークン(例えば、214A)が存在するどのユーザ131のコンテンツアイテム141を識別する1以上のコンテンツアイテムの識別子を含む。ローカルインデックス210のインデックストークン(例えば、218A)は、ユーザ131がホストのコンテンツアイテム141の1つ以上のテキストコンテンツをトークン化する際にトークナイザコンピュータ118によって生成されたトークンに対応してもよい。
辞書213はまた、例えばインデックストークン頻度情報、又は、クエリに依存した方法及び/又はクエリとは独立した方法で検索クエリへのコンテンツアイテム141の関連をランク付けする若しくは決定するランキングアルゴリズムでローカルクエリプロセッサによって使用されうる他の情報などの、例えばインデックストークン属性情報などのインデックストークン214以外の情報を含んでもよい。
登録217の登録リスト(例えば、218A)は、コンテンツアイテム識別子以外の情報、例えば、特定のコンテンツアイテム141の中でのインデックストークン(214A)の頻度、特定のコンテンツアイテム141の中でのインデックストークン(例えば、214A)の1つの位置又は複数の位置などの情報、又は、クエリに依存した方法及び/又はクエリとは独立した方法で検索クエリへのコンテンツアイテム141の関連をランク付けする若しくは決定するランキングアルゴリズムでローカルクエリプロセッサによって使用されうる他の情報を含んでもよい。
いくつかの実施形態によれば、以下のコンテンツアイテムのインデックストークン属性の全て又はそれらのサブセット若しくは上位セットが、ローカルインデックス210の対応するインデックストークン(例えば、214A)に対する登録リスト(例えば、218A)におけるコンテンツアイテム141のコンテンツアイテム識別子に関連付けられる:
・対応するインデックストークンがコンテンツアイテム141のファイル名の一部であるかどうかを示す値、
・対応するインデックストークンがコンテンツアイテム141のファイル名の拡張子の一部であるかどうかを示す値、
・対応するインデックストークンがコンテンツアイテム141のファイルパスの一部であるかどうかを示す値、
・対応するインデックストークンがコンテンツアイテム141のタイトルの一部であるかどうかを示す値、及び/又は、
・対応するインデックストークンがコンテンツアイテム141のテキストコンテンツの太字又は他の強調部であるかどうかを示す値。
クエリに依存した方法及び/又はクエリとは独立した方法でクエリへのコンテンツアイテム141の関連をランク付けする若しくは決定するランキングアルゴリズムにおいて、上記コンテンツアイテムのインデックストークン属性の何れかを使用することに加えて、ローカルクエリプロセッサは、クエリに一致するコンテンツアイテム141の検索応答の概要を生成する場合に、上記コンテンツアイテムのインデックストークン属性の何れかを使用してもよい。例えば、クエリのクエリトークンがコンテンツアイテム141のファイル名から生成されたインデックストークン(例えば、214A)と一致する場合、その後、生成した検索応答の概要は、例えば、検索応答の概要のコンテンツアイテム141のファイル名を表示し、ファイル名が現れるインデックストークンを視覚的に強調する(例えば、太字又は下線により)ことによって当該事実を示してもよい。
いくつかの実施形態によれば、以下のコンテンツアイテム属性の全て、又は、それらのサブセット若しくは上位セットは、ローカルインデックス210のインデックス化されたコンテンツアイテム141のコンテンツアイテム識別子とユーザコンピュータ130において関連付けられる:
・コンテンツアイテム141のサイズ(例えば、バイト)、
・コンテンツアイテム141の修正日時、
・コンテンツアイテム141がストレージプレーン140から削除されたかどうかを示す値、
・コンテンツアイテム141に対応するコンテンツアイテムがユーザコンピュータ130において格納されているかどうかを示す値、
・コンテンツアイテム141に対応するコンテンツアイテムがユーザコンピュータ130に格納されている場合に、ユーザコンピュータ130に格納されたコンテンツアイテム141に対応するコンテンツアイテムのバージョンがローカルインデックス210でインデックス化されたコンテンツアイテム141のバージョンに対して最新のものであるかどうかを示す値、
・ローカルインデックス210でインデックス化されたコンテンツアイテム141のバージョンを示す値、
・コンテンツアイテム141の全ての利用可能なテキストコンテンツがトークナイザコンピュータ118によってトークン化されているかどうかを示す値、
・コンテンツアイテム141がオンラインコンテンツ管理サービス110の1人のユーザよりも多くのユーザの間で共有されているかどうかを示す値(例えば、オンラインコンテンツ管理サービス110の1つのユーザアカウントよりも多くのアカウントと関連付けられているか)、
・コンテンツアイテム141がオンラインコンテンツ管理サービス110の1人のユーザよりも多くのユーザの間で共有されている場合、当該コンテンツアイテム141を共有する1以上のユーザのユーザ識別子(及び/又は、ユーザアカウント識別子)のリスト、
・コンテンツアイテム141がストレージプレーン140に格納された日時を示すタイムスタンプ、
・トークナイザコンピュータ118によってコンテンツアイテム141から抽出されたトークンの数、
・コンテンツアイテム141のテキスト概要/要約、及び/又は、
・コンテンツアイテム141からのテキスト片。
クエリ依存型及びクエリ独立型の方法でランク付けを行うために、さもなければ、クエリへのコンテンツアイテム141の関連を決定するためにランキングアルゴリズムの上記コンテンツアイテム属性のいずれかを使用することに加えて、ローカルクエリプロセッサは、クエリに一致するコンテンツアイテム141の検索応答概要を生成する際に上記コンテンツアイテムのインデックストークン属性のいずれかを使用してもよい。例えば、コンテンツアイテム141のテキスト概要/ダイジェスト及びコンテンツアイテム141からのテキストの断片の少なくとも一方は、コンテンツアイテム141の検索クエリの概要に提示されてもよい。
本発明のいくつかの実施形態において、空間の効率化に関し、かつ、登録217のコンピュータストレージサイズを低減するために、登録リスト218のコンテンツアイテム識別子は、ユーザコンピュータ130に対して局所的なローカル識別子を含み、グローバルコンテンツアイテム識別子を表すために必要とされるバイト数に関するサイズよりも大きいグローバルコンテンツアイテム識別子の代わりとなる。ローカルコンテンツアイテム識別子は、当該ローカルコンテンツアイテム識別子が代わりとなるグローバルコンテンツアイテム識別子よりもローカルコンテンツアイテム識別子を表すのに必要となるバイト数に関するサイズにおいて小さくともよい。本説明において、明示的に説明がない限り、コンテンツアイテム141の“コンテンツアイテム識別子”は、コンテンツアイテム141のローカルコンテンツアイテム識別子と、コンテンツアイテム141のグローバルコンテンツアイテム識別子とを含むコンテンツアイテム141を直接的に又は間接的に(例えば、マッピングを通じて)、固有に識別するコンテンツアイテム識別子の全ての可能な形式を参照する。
本発明のいくつかの実施形態によれば、検索クエリがローカルクエリプロセッサにおいて受信されると、ローカルクエリプロセッサは、対応する登録リスト218を識別するために、ローカルインデックス210の辞書213へ鍵としてクエリのクエリトークンを使用する。クエリに複数のクエリトークンがあれば、対応する登録リスト218は、複数のクエリのトークンが論理式として全体にどのように関連するのかに従って適切にマージされてもよい。多くの異なるマージアルゴリズムがそれぞれの特定の実装の要件に従ってこの目的で使用されてもよい。
ローカルインデックス210に対して検索クエリを処理する場合、ユーザコンピュータ130のローカルクエリプロセッサは、不揮発性のストレージ(例えば、フラッシュメモリ、ハードディスク)から、より効果的にアクセスするためにユーザコンピュータ130の揮発性メモリ(例えば、RAM)へ辞書213(若しくはその一部)をロードしてもよい。登録リスト(例えば、218A)はまた、より効果的にアクセスするために、ユーザコンピュータ130の揮発性メモリにキャッシュとして格納されてもよい。キャッシュされた登録リスト218は、例えば少なくとも最近アクセスされたポリシーなどのキャッシュ退避ポリシーに従ってユーザコンピュータ130の揮発性メモリから退避される。ローカルクエリプロセッサはまた、登録217から受信した複数の登録リスト218上で実行されるマージアルゴリズムの結果として、生成される登録リスト(例えば、218A)をユーザコンピュータ130の揮発性メモリにキャッシュしてもよい。そうすることによって、ローカルクエリプロセッサは、その後、例えば、前に処理したクエリと共通したクエリトークンを有するように検索クエリが処理された場合に、複数の登録リスト218上でマージアルゴリズムを実行する必要性を回避することができる。
3.0 基本クエリ処理
次に、図3を参照して、本発明のいくつかの実施形態に係る、ローカルインデックス210に対して検索クエリを処理する際に、ユーザコンピュータ130のローカルクエリプロセッサによって実行される基本クエリ処理の概要図について説明する。辞書213はインデックストークンを含んでもよく、登録217は図3に示される以外の登録リストを含んでもよい。
複数のクエリトークンを有する検索クエリがユーザ131から受信され、ローカルクエリプロセッサへ提供されると、検索クエリのトークンは、関連登録リストが揮発性メモリに既にキャッシュ(格納)されていなければ、ローカルインデックス210からの登録217の関連登録リストをキャッシュ(格納)するためにユーザコンピュータ130の揮発性メモリに使用される。その後、ローカルクエリプロセッサは、クエリを満足するコンテンツアイテム141を識別するために、関連登録リスト上でマージアルゴリズムを実行する。
例示により基本クエリ処理を説明するために、検索クエリ[2つの問題](括弧[]を含まない)を考慮する。本例において、ローカルインデックス210は、ユーザ131のコンテンツアイテム141の少なくとも2つを含む。明示の実施例を提供するために、2つのコンテンツアイテム141がそれぞれD2及びD3の識別子を有することを想定する。さらに、コンテンツアイテム141のD2がテキストコンテンツ”解決した2つの問題”を含み、コンテンツアイテム141のD3がテキストコンテンツ”解決した3つの問題”を含むことを想定する。したがって、コンテンツアイテム141のD2は、インデックストークン”解決した”、”2つの”、及び”問題”によってローカルインデックス210にインデックス化され、コンテンツアイテム141のD3は、インデックストークン”解決した”、”3つの”、及び”問題”によってローカルインデックス210にインデックス化される。
ユーザ131からクエリ[2つの問題]を受信することに応じて、ローカルクエリプロセッサは、登録リストが揮発性メモリに既にキャッシュ(ロード)されていなければ、クエリのクエリトークンが一致するインデックストークンと関連付けられるローカルインデックス210からの登録リストを、ユーザコンピュータ130の揮発性メモリにキャッシュ(格納)する。具体的には、それぞれがインデックストークン314A”問題”と、インデックストークン314D”2つの”に関連付けられる登録リスト318A及び318Bは、既にロードされていなければ、揮発性メモリにキャッシュされる。一度キャッシュされると、ローカルクエリプロセッサは、ロードした登録リスト318A及び318D上でマージアルゴリズムを実行することによってクエリを満足するコンテンツアイテム141を識別する。本例において、マージアルゴリズムは、ユーザ131のクエリを満足するように、コンテンツアイテム141のD3でなく、コンテンツアイテム141のD2を識別するために登録リスト318A及び318Dに渡って適用される。コンテンツアイテム141のD2がクエリを満足する指標がその後、ユーザコンピュータ130のグラフィカルユーザインタフェースに提示される検索クエリの概要でユーザ131へ提供されてもよい。
4.0 基本インデックス及び差分インデックス
次に、図4を参照して、本発明のいくつかの実施形態に係る、ユーザコンピュータ130でローカルインデックス210の種々の可能な状態を示す状態図について説明する。付加的に更新可能なローカルインデックス210を容易にするために、ローカルインデックス210は、基本インデックス420及び差分インデックス440を含んでもよい。差分インデックス440がユーザコンピュータ130で変更可能にされてもよい一方で、基本インデックス420がユーザコンピュータ130で変更可能にされる必要がないという点で、基本インデックス420は差分インデックス440とは異なる。言い換えれば、基本インデックス420は、ユーザコンピュータ130で不変のものとして取り扱われてもよく、インデックス変更情報サーバコンピュータ114から受信されるインデックス変更情報で、差分インデックス440のみがユーザコンピュータ130で変更可能にされ、基本インデックス420は変更可能にされない。典型的には、差分インデックス440は、基本インデックス420がユーザコンピュータ130の揮発性メモリに全体的に格納されることを許容するよりもバイト単位で非常に小さく(例えば、1桁小さい)、基本インデックス420を変更するよりもより効果的に変更されうるものであり、基本インデックス420の一部(例えば、基本インデックス420の登録リスト)が時にはユーザコンピュータ130の揮発性メモリにキャッシュされるものの、差分インデックス440は、通常、ユーザコンピュータ130の不揮発性メモリに(例えば、ディスクに)格納される。
動作において、ユーザコンピュータ130は、ローカルインデックス210を最初に有していなくてもよい。ローカルインデックス210は、オンラインコンテンツ管理サービス110から基本インデックス420が受信された際に、ユーザコンピュータ130で作成されてもよい。その後、ユーザ131がホストのコンテンツアイテム141への変更がストレージプレーン140に行われると、ユーザコンピュータ130は、ユーザ131がホストのコンテンツアイテム141への変更を反映するオンラインコンテンツ管理サービス110からインデックス変更情報を受信してもよい。差分インデックス440は、受信した変更情報に基づいて変更されてもよい。このように、所定の時間において、ユーザコンピュータ130のローカルインデックス210が単に基本インデックス420のみを含むか、或いは、基本インデックス420及び差分インデックス440の両方を含んでもよい。基本インデックス420及び差分インデックス440は同様の構造であってもよい。つまり、基本インデックス420及び差分インデックス420の両方は、インデックストークンの辞書や対応する登録を有する逆インデックスとして構成されうる。クエリがユーザ131から受信されると、ユーザコンピュータ130のローカルクエリプロセッサは、基本インデックス420の対応するエントリに優先して(の代わりに)、差分インデックス440のインデックスエントリで、基本インデックス420及び差分インデックス440の両方を調べてもよい。
本発明のいくつかの実施形態に係るユーザコンピュータ130でのローカルインデックス210の可能なライフサイクルを図4に示す。まず、状態402Aで、ユーザコンピュータ130はローカルインデックス210を有していなくてもよい。
ユーザコンピュータ130は、オンラインコンテンツ管理サービス110から基本インデックス420の第1のバージョンを受信することに応じて状態402Aから402Bへの遷移404A−Bを行ってもよい。基本インデックス420の第1のバージョンは、ある時点までユーザ131がホストのコンテンツアイテム141の状態を反映する。
状態402Bで、基本インデックス420の第1のバージョンがユーザコンピュータ130でローカルインデックス210の一部としてインストールされ、ユーザコンピュータ130のローカルクエリプロセッサは、ユーザ131から受信した検索クエリに応答するために基本インデックス420を使用する。
ユーザコンピュータ420は、変更したコンテンツアイテム141に対するインデックス変更情報がインデックス変更情報サーバコンピュータ114から受信されると、状態402Bから状態402Cへの遷移404B−Cを行ってもよい。状態402Cで、差分インデックス440は、受信したインデックス変更情報を反映するために変更されてもよい。状態402Cで、ユーザコンピュータ130のローカルクエリプロセッサは、ユーザ131からの検索クエリを処理するために基本インデックス420及び差分インデックス440の両方を使用する。この場合、差分インデックス440のインデックスエントリが基本インデックス420の対応するインデックスエントリに優先する(の代わりとなる)。例えば、特定のコンテンツアイテム141が検索クエリトークンに対応するインデックストークン(例えば、214A)と関連付けられる差分インデックス440の登録リスト(例えば、218A)に識別されるため、当該差分インデックス440は、特定のコンテンツアイテム141が検索クエリトークンと一致することを示してもよい。しかしながら、同時に、基本インデックス420は、特定のコンテンツアイテム141が検索クエリトークンに一致しないことを示してもよい。この場合、差分インデックス440及び基本インデックス420の間の競合が差分インデックス440に優先して解決され、特定のコンテンツアイテム141が検索クエリのトークンに一致するように考慮される。差分インデックス440が基本インデックス420に関連してユーザ131がホストのコンテンツアイテム141への最新の変更を反映するため、競合は、差分インデックス440を優先して解決される。
また、遷移404C−Cに示されるように、新たなインデックス変更情報がインデックス変更情報サーバコンピュータ114から受信されると、ユーザコンピュータ130の差分インデックス440がさらに変更されてもよい。
新たな基本インデックス420がオンラインコンテンツ管理サービス110からユーザコンピュータ130で受信されると、ユーザコンピュータ130は、状態402Bに戻る遷移404C−Bを行ってもよい。
限定はしないが、ローカルインデックス210がユーザコンピュータ130から削除又は取り除かれた場合を含む種々の異なるイベントの発生に従って、ユーザコンピュータ130は、状態402Cから状態402Aへの遷移404C−Aか、又は、状態402Bから状態402Aへの遷移404B−Aを行ってもよい。
通常の動作において、ユーザコンピュータ130が状態402Bへ遷移するたびにオンラインコンテンツ管理サービス110から受信した最新の基本インデックス420がローカルインデックス210の一部としてインストールされ、遷移404B−C及び404C−Bによって形成されるサイクルが継続して繰り返されてもよい。受信した基本インデックス420は、ユーザコンピュータ130で現在の基本インデックス420がユーザ131がホストのコンテンツアイテム141への変更をインデックス化した時点よりも後の(よりも最近の)時点でのユーザ131がホストのコンテンツアイテム141への変更をインデックス化するという意味でより最新のものでありうる。オンラインコンテンツ管理サービス110から受信したより最新の基本インデックス420でユーザコンピュータ130の現在の基本インデックス420を周期的に置き換えることはまた、ユーザコンピュータ130の揮発性メモリにおける差分インデックス440のコンピュータストレージサイズが非常に増大してしまうことを防ぐ効果を有する。現在の基本インデックス420がより最新の基本インデックス420で置き換えられる度に、現在の差分インデックス440のエントリが破棄されうるため、当該効果が達成される。その後、新たなインデックス変更情報がオンラインコンテンツ管理サービス110から受信されると、ユーザコンピュータが状態402Bへ戻る遷移404C−Bが行われる次の基本インデックス420が受信されるまで、受信したインデックス変更情報に基づいて差分インデックス440にエントリが追加される。
ユーザコンピュータ130のローカルインデックスのタイムスタンプは、種々の異なる時間、限定はしないが、ユーザコンピュータ130が状態402Aから状態402Bへの遷移404A−Bを行った場合、状態402Bから状態402Cへの遷移404B−Cを行った場合、状態402Cから状態402Bへの遷移404C−Bを行った場合、及び、状態402Cから状態402Cへの遷移404C−Cを行った場合に、更新されてもよい。ローカルインデックスのタイムスタンプが更新されるたびに、ユーザ131がホストのコンテンツアイテム141への変更に関してローカルインデックス210が最新のものとなる時点までを反映するように更新されてもよい。当該時点は、種々の異なる方法、限定はしないが、新たな基本インデックス又はインデックス変更情報がオンラインコンテンツ管理サービス110から受信された場合にユーザコンピュータ130のシステムクロックから取得される現在の日時、オンラインコンテンツ管理サービス110から受信される新たな基本インデックス420が関連付けられるタイムスタンプ、又は、オンラインコンテンツ管理サービス110から受信される新たなインデックス変更情報と関連付けられるタイムスタンプで決定されてもよい。
5.0 基本差分インデックス変更動作
次に、図5A及び図5Bを参照して、本発明のいくつかの実施形態に係るユーザコンピュータ130のローカルインデックス210に適用される基本インデックス変更動作の概略図について説明する。図5Aはインデックス変更情報が適用される前のローカルインデックス210を表し、図5Bはインデックス変更情報が適用された後のローカルインデックス210を表す。辞書213は、インデックストークンを含んでもよく、登録217は図5A及び図5Bに示されるもの以外の登録リストを含んでもよい。
本例において、インデックス変更情報がコンテンツアイテム141のD2に対してのものであり、トークン”3つの”をコンテンツアイテム141のD2にインデックスとして付与するために使用することを特定し、トークン”2つの”をコンテンツアイテム141のD2にインデックスとして付与するために使用しないことを特定することを想定する。
さらに、インデックス変更情報がローカルインデックス210へ提供される前に、インデックストークン”解決した”514B、”2つの”514C、及び”問題”514Aによってローカルインデックスの基本インデックス420でコンテンツアイテム141のD2へインデックスとして付与されてもよい。
インデックス変更情報がローカルインデックス210へ適用された後に、インデックストークン514D”3つの”及びコンテンツアイテム141のD2を特定する登録リスト518Aを有するインデックスエントリが差分インデックス440に存在する。さらに、インデックストークン513C”2つの”及びコンテンツアイテム141のD2がインデックストークン513C”2つの”によってもはやインデックス化されないことを特定する登録リスト518Bを有するインデックスエントリが差分インデックス440に存在する。重要なことは、本例では、インデックス変更情報がローカルインデックス210へ適用された場合には基本インデックス420が変更されないことである。代わりに、基本インデックス420が基本インデックス生成コンピュータ111によって生成されたため、差分インデックス440が、ユーザ131がホストのコンテンツアイテム141への変更を表すように変更される。
6.0 インデックス変更情報ジャーナル
次に、図6を参照して、本発明のいくつかの実施形態に係るインデックス変更情報生成コンピュータ113によってメンテナンスされうるインデックス変更情報ジャーナル610の概略図について説明する。ユーザがホストのコンテンツアイテム141が変更された場合、インデックス変更情報生成コンピュータ113には変更が通知されてもよい。それに応じて、インデックス変更情報生成コンピュータ113は、変更を反映するインデックス変更情報622を生成し、ジャーナルタイムスタンプ621とともにインデックス変更情報622を、ジャーナルエントリ620の一部として、インデックス変更情報ジャーナル610に格納する。
いくつかの実施形態において、インデックス変更情報ジャーナル610は、商品コンピューティングハードウェアで構築される追記専用の分散型コミットログ(commit log)として実装される。このように、インデックス変更情報生成コンピュータ113は処理することができ、インデックス変更情報ジャーナル610は変更情報622をストレージプレーン140のコンテンツアイテム141への変更を高速に(例えば、毎秒何万という変更を)格納することができる。ジャーナル610を商品コンピューティングハードウェアを用いて追記専用の分散型コミットログとして実装することによって、インデックス変更情報ジャーナル610は、ストレージプレーン140がより多くのコンテンツアイテム141を格納するように、及び/又は、コンテンツアイテム141への変更速度が増加するように、より効果的にスケーリングされうる。さらに、以前のジャーナルエントリ620の位置に隣接するコンピュータストレージの位置において、次のジャーナルエントリ620を格納する(追記する)ことによって、ストレージデバイス(例えば、ディスク)のスキャニングが低減される。
図示するように、ジャーナルエントリ620は、変更されたコンテンツアイテム141に対してインデックス変更情報生成コンピュータ113によって生成される、ジャーナルタイムスタンプ621及びインデックス変更情報622を含んでもよい。
まず変更されたコンテンツアイテム141に対して生成されるインデックス変更情報622について、インデックス変更情報622は、コンテンツアイテムの名前空間の識別子623と、コンテンツアイテムの識別子624と、変更したコンテンツアイテム141にインデックスを付与するために使用する1以上のトークンのセット625と、変更したコンテンツアイテム141にインデックスを付与するために使用されない1以上のトークンのセット626の少なくとも1つを含んでもよい。コンテンツアイテムの名前空間の識別子623は、変更したコンテンツアイテム141が属するコンテンツアイテムの名前空間を識別する。
ジャーナル610のエントリ620は、ユーザコンピュータのローカルインデックス210がインデックス変更情報622に関して最新のものであるかどうかを決定するために、ユーザコンピュータ(例えば、130)に対するローカルインデックスのタイムスタンプと比較しうるジャーナルタイムスタンプ621を含んでもよい。
7.0 トークン格納部
図7は、本発明のいくつかの実施形態に係る、トークン格納部117における可能なスキーマを示す。当該スキーマによれば、トークン格納部117は2つのテーブル:”文書”テーブル710と、”インデクサー文書”テーブル720を含む。
文書テーブル710は、トークナイザ118によって処理されるホストのコンテンツアイテム141のバージョンに対するトークンとメタデータのセットを格納する。特定の実施形態において、文書テーブル710は、所定の時点で、コンテンツアイテム141の最新バージョンの番号γへのみの情報を格納し、当該γは例えば文書テーブル710の所望の最大サイズ又はそれぞれの特定の実装の要件に従った他の要因を含む種々の要因に基づいて選択されてもよい。いくつかの実施形態によれば、基本インデックス生成コンピュータ111は、基本インデックス420を生成するために文書テーブル710の情報を使用する。
インデクサー文書テーブル720は、インデックス変更情報生成コンピュータ113によって処理されたホストのコンテンツアイテム141の現在のバージョンに対するトークン及びメタデータのセットを格納する。いくつかの実施形態において、コンテンツアイテム141の現在のバージョンは、インデックス変更情報生成コンピュータ113によって処理されたコンテンツアイテム141の最も後の(最新の)バージョンである。いくつかの実施形態によれば、インデックス変更情報生成コンピュータ113は、インデックス変更情報ジャーナル610に格納されるインデックス変更情報を生成するために、文書テーブル710とインデクサー文書テーブル720の情報を使用する。
文書テーブル710は、多くの列を含む。文書テーブル710の列は、列キー(例えば、711)によって鍵を掛けられてもよい。いくつかの実施形態において列キー(例えば、711)はコンテンツアイテムの名前空間の識別子、コンテンツアイテムの識別子、及びコンテンツアイテムのバージョン識別子を含むバイト配列である。コンテンツアイテムの識別子は、コンテンツアイテム141を識別する。コンテンツアイテムのバージョン識別子は、コンテンツアイテム141の特定のバージョンを識別する。このように、文書テーブル710の列は、コンテンツアイテムのバージョンに対応してもよい。コンテンツアイテムの名前空間の識別子は、コンテンツアイテム141が属するコンテンツアイテムの名前空間を識別する。コロン文字(’;’)若しくは他の文字又は文字列が、コンテンツアイテムの名前空間識別子、コンテンツアイテム識別子、及びコンテンツアイテムのバージョン識別子を互いに区別するように、バイト配列に使用されてもよい。
文書テーブル710は、”トークン”のカラムファミリーを含んでもよい。文書テーブル710の各列に関し、トークンのカラムファミリーは、対応するコンテンツアイテムのバージョンからトークナイザコンピュータ118によって作成されたトークンのリスト(例えば、712)を格納する。図7には示していないが、トークンのカラムファミリーはまた、トークンの種々のコンテンツアイテムのバージョンにおけるトークン属性を格納してもよい。そのようなコンテンツアイテムのバージョンにおけるトークン属性は、例えば、対応するコンテンツアイテムのバージョンのトークンの頻度及びトークンの位置の少なくとも一方を含んでもよい。
本発明のいくつかの実施形態によれば、文書テーブル710に格納されうる対応するコンテンツアイテム141のバージョンに対するトークンにおけるいくつかのコンテンツアイテムのバージョンにおけるトークン属性は、以下に記載するもののサブセット又は上位セットを含む:
・対応するトークンがコンテンツアイテム141のバージョンのファイル名の一部であるかどうかを示す値、
・対応するトークンがコンテンツアイテム141のバージョンにおけるファイル名の拡張子の一部であるかどうかを示す値、
・対応するトークンがコンテンツアイテム141のバージョンにおけるファイルパスの一部であるかどうかを示す値、
・対応するトークンがコンテンツアイテム141のバージョンにおけるタイトルの一部であるかどうかを示す値、及び/又は、
・対応するトークンがコンテンツアイテム141のバージョンにおけるテキストコンテンツの太字又は他の強調部であるかどうかを示す値。
いくつかの実施形態において、文書テーブル710の列に関し、トークンのカラムファミリーは、トークンのリスト(例えば、712)と、コンテンツアイテムのバージョンにおけるトークン属性のリストを格納する。トークンのリストは、コンテンツアイテムのバージョンにおけるトークン属性と同じ長さであってもよい。コンテンツアイテムのバージョンにおけるトークン属性のリストの位置iの要素は、トークンのリストの位置iのトークンに対するコンテンツアイテムのバージョンにおけるトークン属性を含む。或いは、2つのリストの代わりに単一のリストが格納されてもよい。単一のリストの各要素は、トークンと当該トークンのコンテンツアイテムのバージョンにおけるトークン属性とを含むタプルである。
文書テーブル710はまた、”メタデータ”のカラムファミリーを含む。文書テーブル710の各列において、メタデータのカラムファミリーは、対応するコンテンツアイテムのバージョンの名づけられたコンテンツアイテムのバージョンにおける属性(例えば、713)のセットを格納する。例えば、文書テーブル710において、コンテンツアイテムのバージョンにおける属性、名づけられた”リビジョン”は、対応する文書バージョンのコンテンツアイテムのバージョンにおける識別子である。他の文書バージョンにおける属性も可能である。
本発明のいくつかの実施形態によれば、コンテンツアイテムの“リビジョン”に加えて、文書テーブル610に格納されうる対応するコンテンツアイテムのバージョンに対するいくつかのコンテンツアイテムのバージョン属性は、以下のコンテンツアイテムのバージョン属性、又は、サブセット若しくは上位セットを含む:
・コンテンツアイテム141のバージョンのサイズ(例えば、バイト)、
・コンテンツアイテム141のバージョンの修正日時、
・コンテンツアイテム141がストレージプレーン140から削除されたかどうかを示す値、
・コンテンツアイテム141に対応するコンテンツアイテムがユーザコンピュータ130に格納されているかどうかを示す値、
・コンテンツアイテム141に対応するコンテンツアイテムがユーザコンピュータ130に格納されていれば、ユーザコンピュータ130に格納されているコンテンツアイテム141に対応するコンテンツアイテムのバージョンがコンテンツアイテム141のバージョンに対し古いものであるかどうかを示す値、
・コンテンツアイテム141のバージョンを示す値、
・コンテンツアイテム141のバージョン全ての利用可能なテキストコンテンツがトークナイザ118によってトークン化されているかどうかを示す値、
・コンテンツアイテム141がオンラインコンテンツ管理サービス110の1以上のユーザの中で共有されている(例えば、オンラインコンテンツ管理サービス110の1以上のユーザアカウントと関連付けられている)かどうかを示す値、
・コンテンツアイテム141がオンラインコンテンツ管理サービス110の1以上のユーザの中で共有されていれば、コンテンツアイテム141を共有する1以上のユーザのユーザ識別子(及び/又はユーザアカウント識別子)のリスト、
・コンテンツアイテム141がストレージプレーン140に格納された日時を示すタイムスタンプ、
・トークナイザ118によってコンテンツアイテム141のバージョンから抽出されたトークンの数、
・コンテンツアイテム141のバージョンのテキスト概要/ダイジェスト、及び/又は、
・コンテンツアイテム141のバージョンからのテキスト片。
インデクサー文書テーブル720のスキーマは文書テーブル710と同様であってもよい。いくつかの実施形態において、インデクサー文書テーブル720の列の列キー(例えば、721)は、コンテンツアイテムの名前空間識別子と、コンテンツアイテム識別子を含むが、コンテンツアイテムのバージョン識別子を含まない。それらの実施形態において、インデクサー文書テーブル720の各列は、インデックス変更情報生成コンピュータ113のインデクサー323によって処理されたコンテンツアイテム最後の(最新の)バージョンに対応してもよい。
図7の例において、例示の列キー711及び721が提供される。明示的な例を提供するために、例示の列キー711及び721は、“abcd”のコンテンツアイテムの名前空間識別子及び“d2”のコンテンツアイテム識別子を含む。しかしながら、いくつかの実施形態において、コンテンツアイテムの名前空間識別子は、コンテンツアイテムの名前空間を固有に識別する64ビットの固定長の値であり、コンテンツアイテムの識別子は、ストレージプレーン140のコンテンツアイテム141を固有に識別する64ビットの固定長の値である。
いくつかの実施形態において、コンテンツアイテムのバージョン識別子は、コンテンツアイテム141のバージョンを個別に識別し、コンテンツアイテム141の他のバージョンに関してバージョンの順序付けを提供する。例えば、コンテンツアイテム141の3つのバージョンに対するコンテンツアイテムのバージョン識別子は、それぞれ値“1”、“2”、“3”であってもよく、バージョン“3”がコンテンツアイテム141の最新のバージョンに対応し、バージョン“1”がコンテンツアイテム141のより早いバージョンに対応する。
8.0 ユーザコンピュータでホストのコンテンツアイテムをインデックス化するための処理
次に、図8を参照し、ユーザコンピュータ130において、オンラインコンテンツ管理サービス110でホストのユーザ131のコンテンツアイテム141をインデックス化するための処理800のフローチャートである。処理800は、例えば、1以上の基本インデックス生成コンピュータ111、基本インデックスサーバコンピュータ112、インデックス変更情報生成コンピュータ113、インデックス変更情報サーバコンピュータ114、バックエンド検索クエリプロセッサコンピュータ115、フロントエンド検索クエリプロセッサコンピュータ116、トークナイザコンピュータ118、及び、ユーザコンピュータ130の少なくとも1つなどの、1以上のコンピュータによって実行されてもよい。
処理800は、ステップ801で開始され、ユーザ131がストレージプレーン140に格納された多数のコンテンツアイテム141を有し、ユーザ131がオンラインコンテンツ管理サービス110で保持するユーザアカウントに関連付けられることを想定する。
ステップ803において、ユーザ131がホストのコンテンツアイテム141の基本インデックス420は、オンラインコンテンツ管理サービス110によって生成される。
ステップ805において、生成された基本インデックス420は、オンラインコンテンツ管理サービス110によってユーザコンピュータ130に提供される。この点において、ユーザコンピュータ130は、ユーザコンピュータ130のローカルインデックス210の一部として基本インデックス420をインストールしてもよく、ローカルインデック210は、ユーザ131の検索クエリを処理するためにユーザコンピュータ130においてローカルクエリプロセッサによって使用されてもよい。
ステップ807において、オンラインコンテンツ管理サービス110は、イベントの発生を待機する。発生しうる他の可能性のあるイベントの中で、特定の興味ある2つの異なるタイプのイベントがある。
第1のタイプのイベントの発生は、ユーザ131がホストのコンテンツアイテム141の新たな最新の基本インデックス420を生成する時間になることを意味する。第1のイベントの発生で、処理800は、ステップ809からステップ803へ進む。
一方で、第2のタイプのイベントの発生は、ユーザ131がホストのコンテンツアイテム141の1以上への変更が検出されたことを意味する。第2のタイプのイベントの発生で、処理800は、ステップ811からステップ813へ進む。
ユーザ131がホストのコンテンツアイテム141の新たな、最新の基本インデックス420を生成する時間を示す第1のタイプのイベントが、限定はしないが以下の種々の異なる理由に対してステップ807において発生する:
・基本インデックスの再生タイマが経過したため、
・ユーザ131のコンテンツアイテム141の最後の基本インデックス420が生成されてから、ユーザ131のコンテンツアイテム141への閾値数の変更行われたため、
・ユーザ131のコンテンツアイテム141への変更の閾値変更率を超えたため。
ステップ813において、ユーザ131がホストのコンテンツアイテム141への1以上の変更が検出されたことを示す第2タイプのイベントが発生すると、その後、オンラインコンテンツ管理サービス110は、それぞれ検出された変更に対するインデックス変更情報622を生成し、生成したインデックス変更情報622を、対応するジャーナルタイムスタンプ610に関連してインデックス変更情報ジャーナル610に格納する。
ステップ815において、オンラインコンテンツ管理サービス110は、通信ネットワーク120を介してインデックス変更情報ジャーナル610からユーザコンピュータ130へ生成したインデックス変更情報622を提供する。ユーザコンピュータ130へ提供すべくジャーナル610のインデックス変更情報622を識別するために、オンラインコンテンツ管理サービス110は、ユーザコンピュータ130におけるローカルインデックスタイムスタンプと、ユーザコンピュータ130に関連付けられた1以上のコンテンツアイテムの名前空間識別子とを使用してもよい。ユーザコンピュータ130におけるローカルインデックスタイムスタンプと、1以上のコンテンツアイテムの名前空間識別子に基づき、オンラインコンテンツ管理サービス110は、(1)ユーザコンピュータ130におけるローカルインデックスタイムスタンプより最近のジャーナルタイムスタンプ610を有し、(2)ユーザコンピュータ130に関連付けられた1以上のコンテンツアイテムの名前空間識別子と一致するコンテンツアイテムの名前空間識別子623を有する、ユーザコンピュータ130へ提供するためにジャーナル610のインデックス変更情報622を識別することができる。ユーザコンピュータ130に関連付けられたローカルインデックスのタイムスタンプは、ユーザコンピュータ130のローカルインデックス210がストレージプレーン140のユーザ131がホストのコンテンツアイテム141への変更に対する日付までの時点を反映する。ユーザコンピュータ130に関連付けられた1以上の名前空間識別子のそれぞれは、ユーザ131がホストのコンテンツアイテム141に属するコンテンツアイテムの名前空間を識別する。
処理800は、ユーザ131がホストのコンテンツアイテム141の検索と、ユーザコンピュータ130によって受信される基本インデックス420とインデックス変更情報622とに基づいて構成されるユーザコンピュータ130のローカルインデックス210を用いてユーザコンピュータ130でのそれらへの変更とを実行することによって、ユーザ131がホストのコンテンツアイテム141を検索するためにユーザコンピュータ130を使用することをユーザ131に対して可能にする。処理800によって提供される利点は、ユーザ131がホストのコンテンツアイテム141をユーザ131が検索し、ユーザコンピュータ130が検索のタイミングでオンラインコンテンツ管理サービス110へ接続されていない場合であっても、それらへ変更することができるということである。処理800の他の利点は、ローカルインデックス210が通信ネットワーク120を介して検索クエリを送信する必要がなく、当該応答が識別され、かつ、ユーザ131へ提供されることを許容するため、ユーザ131の検索クエリへの応答がより素早く、又は、オフラインのネットワーク環境でユーザ131へ提供されることである。
8.0 ユーザコンピュータにおいてホストのコンテンツアイテムを検索するための処理
次に、図9を参照して、本発明のいくつかの実施形態に係るユーザコンピュータ130でのユーザ131がホストのコンテンツアイテム141を検索するための処理900のフローチャートを説明する。本例において、処理900は、ユーザコンピュータ130によって実行される。
処理はステップ901から開始される。ステップ901において、ユーザコンピュータ130は、通信ネットワーク120へ通信可能に接続されてもよく、或いは、接続されなくともよい。言い換えれば、ユーザコンピュータ130は、オフラインであってもよく(例えば、通信ネットワーク120へ通信可能に接続されていなくてもよく)、又は、オンラインであってもよい(例えば、通信ネットワーク120へ通信可能に接続されてもよい)。
ステップ903において、ユーザコンピュータ130は、ユーザ131から検索クエリを受信してもよい。例えば、ユーザ131が、例えば物理的なキーボード又はタッチ感知式面(タッチスクリーンディスプレイ)などのユーザ入力機構を用いて、ユーザコンピュータ130で提示されるグラフィカルユーザインタフェースへ検索式を入力してもよい。ユーザコンピュータ130は、ユーザ131が例えば、“提示(submit)”、“送信”、又は“検索”ボタンなどのグラフィカルユーザインタフェースの要素を起動することに応じて、ユーザ131から検索クエリを受信してもよい。
ステップ905において、ユーザコンピュータ130油浸した検索クエリでローカルインデックス210へアクセスする。選択的に、ユーザコンピュータ130がオンラインの場合、その後ステップ902でユーザコンピュータ130はまた、通信ネットワーク120を介してオンラインコンテンツ管理サービス110へ検索クエリを送信する。例えば、ユーザコンピュータ130は、通信ネットワーク120を介してフロントエンドクエリプロセッサコンピュータ116へ検索クエリを送信する。検索クエリは、例えば、ハイパーテキストトランスファープロトコル(HTTP)又はセキュアハイパーテキストトランスファープロトコル(HTTPS)ネットワーキングプロトコルに従って検索リクエストで送信されてもよい。
ステップ907において、ユーザコンピュータ130は、ローカルインデックス210で、検索クエリを満足する1以上のローカル結果を識別する。そのようなローカル結果のそれぞれは、ユーザ131がホストのコンテンツアイテム141の1つに対応し、ユーザコンピュータ130に格納されてもよいし格納されなくてもよく、ユーザコンピュータ130に格納される場合は、ストレージプレーン140に格納されるコンテンツアイテム141の最近のバージョンよりも古いコンテンツアイテム141のバージョンであってもよい。それぞれのそのようなローカル結果は、クエリ独立型又はクエリ依存型のランキング関数に従って関連性について評価されてもよい。
ステップ909において、ユーザコンピュータ130のローカルクエリプロセッサは、それらの関連性のスコアに従ってローカルインデックス210で識別された1以上のローカル結果をランク付けする。
ステップ911において、ユーザコンピュータ130は、ユーザコンピュータ131において提示されるグラフィカルユーザインタフェースの1以上のランク付けされたローカル結果を表示する。各表示されたローカル結果は、検索クエリの概要として表示されうる。
ステップ905において検索クエリがオンラインコンテンツ管理サービス110へ送信された場合、その後ステップ913において、ユーザコンピュータ130は、オンラインコンテンツ管理サービス110から検索クエリへの1以上のリモートでの結果を受信する。多くの場合、通信ネットワーク120を介したネットワークの待ち時間のため、ユーザコンピュータ130は、ステップ913において2ン核の結果を受信する前に又は受信する間、ステップ911においてローカル結果を表示することができる。ステップ913において受信した各リモート結果は、ユーザ131がホストのコンテンツアイテム141の1つに対応する。それぞれのそのようなリモート結果は、クエリ独立型又はクエリ依存型のランキング関数に従って関連性について評価されてもよい。さらに、リモート結果は、オンラインコンテンツ管理サービス110によって計算されるように、それらの関連性の順にランク付けされたステップ913で受信されてもよい。リモート結果を評価するためにオンラインコンテンツ管理サービス110によって使用されるランキング関数は、ローカル結果を評価するためにユーザコンピュータ130によって使用されるランキング関数と同じであってもよい。この方法において、リモート結果についてのオンラインコンテンツ管理サービス110によって計算された関連性のスコアは、ローカル結果についてのユーザコンピュータ130によって計算された関連性のスコアと比較可能である。
ステップ915において、ユーザコンピュータ130は、現在表示しているローカル結果に対応しないコンテンツアイテム141に対応する任意のそのようなリモート結果があれば、現在表示されているローカル結果の最も悪い(例えば、最低の)スコアより良い(例えば、より高い)関連性のスコアを有する、ステップ913において受信した1以上のリモート結果を表示するようにグラフィカルユーザインタフェースを更新する。
処理900は、ユーザ131がホストのコンテンツアイテム141の検索及びローカルインデックスを用いてユーザコンピュータ130でのそれらへの変更を実行することによって、ユーザ131がホストのコンテンツアイテム141を検索するためにユーザ131がユーザコンピュータ130を使用することを可能にする処理900によって提供される利点は、ユーザコンピュータ130がオンラインでない場合であっても、ユーザ131がユーザ131がホストのコンテンツアイテム141を検索し、それらへ変更を行うことができるということである。処理900の他の利点は、ユーザコンピュータ130がオンラインであれば、ローカルインデックス210が識別されるべき、かつ、ユーザ131へ提供される一次的な応答を通信ネットワーク120を介して検索クエリを送信する必要がないため、ユーザ131の検索クエリに対する応答がユーザ131に対して素早く提供されうることである。その後まもなく、一次的な応答の表示は、検索クエリに対してより大局的でとり最新の応答を提供するためにオンラインコンテンツ管理サービス110から受信されるリモート結果の表示で更新されうる。
10.0 基本コンピュータハードウェア
本発明は、例えば、1以上の基本インデックス生成コンピュータ111、基本インデックスサーバコンピュータ112、インデックス変更情報生成コンピュータ113、インデックス変更情報サーバコンピュータ114、バックエンド検索クエリプロセッサコンピュータ115、フロントエンド検索クエリプロセッサコンピュータ116、トークナイザコンピュータ118、及び、ユーザコンピュータ130の少なくとも1つなどの、1以上のコンピュータ上で実施されてもよい。そのようなコンピュータは、限定はしないが、クライアントコンピュータ、サーバコンピュータ、ネットワークデバイス、モバイルデバイス、セルラー電話、スマートフォン、ラップトップコンピュータ、デスクトップコンピュータ、ワークステーションコンピュータ、携帯情報端末、ブレードサーバコンピュータ、メインフレームコンピュータ、及び他のタイプのコンピュータを含む種々の形式で実装されてもよい。
以下で説明する、それらの接続、関係、及び機能を含むコンピュータコンポーネントは、本発明の実施形態の一例を意味し、当該実施形態を限定する意図はない。本発明を実施するのに適切な他のコンピュータは、異なる接続関係及び機能を有するコンポーネントを含む異なるコンポーネントを含んでもよい。
次に、図10を参照し、本発明の種々の実施形態を実施するのに適した基本コンピュータ1000の基本ブロック図について説明する。コンピュータ1000は、ハードウェアバス1002又はメインメモリ1006をアドレス解決し、かつ、種々のコンピュータ1000のコンポーネント間及びコンポーネントの中でデータを転送するための他の通信機構を含む。コンピュータ1000はまた、情報を処理するためのバス1002と結合したハードウェアプロセッサ1004を含む。ハードウェアプロセッサ1004は、一般用途マイクロプロセッサ、システム・オン・チップ(SoC)、又は説明した技術を実施するのに適した他のプロセッサであってもよい。
ランダムアクセスメモリ(RAM)又は他の動的ストレージデバイスなどのメインメモリ1006は、情報やプロセッサ1004によって実行される指示を格納するためにバス1002に結合される。メインメモリ1006はまた、プロセッサ1004によって実行されるべき指示の実行中に一時変数又は他の中間情報を格納するために使用されてもよい。プロセッサ1004へアクセス可能な一時的でない記憶媒体に格納される場合、そのような指示は、コンピュータデバイス1000を指示に特定される動作を実行するようにカスタマイズされた特定用途のコンピューティングデバイスへ変換する。
コンピュータ1000はさらに、静的情報及びプロセッサ1004への指示を格納するためにバス1002に結合された読み取り専用メモリ(ROM)1008又は他の静的ストレージデバイスを含む。
大容量ストレージデバイス1010は、磁性式メモリ、光学式メモリ、半導体メモリ、光磁気メモリ、フラッシュメモリ、又は大容量ストレージ技術を利用可能な他のものなどの固定媒体若しくは取り外し可能な媒体に、情報及び命令を永続的に格納するためのバス1002に結合される。大容量ストレージデバイスは、ネットワーク上で共有され、或いは、専用の大容量ストレージであってもよい。通常、大容量ストレージデバイス1010(例えば、デバイスに対するメインハードディスク)は、オペレーティングシステム、ユーザアプリケーションプログラム、ドライバ、他のサポートファイル、及び全ての種類の他のデータファイルを含む、コンピュータデバイスの動作を方向付けるためのプログラム本体とデータを格納する。
コンピュータ1000は、バス1002を介して、情報をコンピュータユーザに表示するための液晶ディスプレイ(LCD)又は他の電子的な視覚ディスプレイなどのディスプレイ1012へ結合されうる。ディスプレイ1012はまた、タッチジェスチャ(例えば、指又はスタイラス)入力をプロセッサ1004へ通知するためのタッチ感知式のディスプレイであってもよい。
アルファベットキー及び他のキーを含む入力デバイス1014は、情報及びコマンドの選択をプロセッサ1004へ通知するためのバス1002へ結合される。
ユーザ入力デバイスの他のタイプは、プロセッサ1004へ方向情報やコマンドの選択を通知し、ディスプレイ1012上でのカーソルの移動を制御するためのマウス、トラックボール、又はカーソル方向キーなどのカーソル制御部1016である。当該入力デバイスは、通常、デバイスが平面上の位置を特定することを許容する第1軸(例えば、x)と第2軸(例えば、y)の二軸の2つの自由度を有する。
コンピュータ1000は、カスタマイズされた配線論理、1以上の特定用途向け集積回路(ASIC)若しくは1以上のフィールドプログラマブルアレイ(FPGA)、ファームウェア、又は、コンピューティングデバイスと協働してコンピュータ1000を特定用途向けの機械とさせる若しくはプログラムするプログラム論理を用いて、ここで説明される方法を実行することができる。
ここで説明する方法は、メインメモリ1006に含まれる1以上の指示の1以上のシーケンスを実行するプロセッサ1004に応じて、コンピュータ1000によって実行されてもよい。そのような指示は、ストレージデバイス1010などの他のストレージ媒体からメインメモリ1006へと読み込まれてもよい。メインメモリ1006に含まれる指示のシーケンスの実行は、プロセッサ1004にここで説明する処理ステップを実行させる。代替の実施形態において、配線回路は、ソフトウェア命令の代わりに、又は、連結して使用されてもよい。
ここで使用される用語“記憶媒体”は、コンピューティングデバイスを特定の様式で動作させるデータ及び命令の少なくとも1つを格納する非一時的な媒体として参照される。そのような記憶媒体は、不揮発性の媒体及び揮発性の媒体の少なくとも1つを備えてもよい。不揮発性媒体は、ストレージデバイス1010などの、例えば、光学ディスク、磁性ディスク、又は半導体ドライバを含む。揮発性媒体はメインメモリ1006などの動的メモリを含む。記憶媒体の共通の形式は、例えば、フロッピーディスク、フレキシブル・ディスク、ハードディスク、半導体ドライバ、磁性テープ若しくは任意の他の磁性データ記憶媒体、CD−ROM、任意の他の光学データ記憶媒体、ホールのパターン(空孔)を複数有する任意の物理的な媒体、RAM、PROM及びEPROM、フラッシュEPROM、NVRAM、任意の他のメモリチップ、又はカートリッジを含む。
記憶媒体は、送信媒体とは区別されるものの、当該送信媒体と連結して使用されてもよい。送信媒体は、記憶媒体間で情報を転送することに使用されてもよい。例えば、送信媒体は、バス1002を備える有線を含む同軸ケーブル、銅線、及び光ファイバーを含む。送信媒体はまた、電波及び赤外データ通信中に生成されるものなどの、音波又は光波の形式をとることもできる。
媒体の種々の形態は、実行するプロセッサ1004への1以上の命令の1以上のシーケンスを実行することに用いられてもよい。例えば、命令は、リモートコンピュータの磁性ディスク又は半導体ドライバ上でまず実行されうる。リモートコンピュータは、その動的メモリへ命令をロードし、モデムを用いて電話線を介して命令を送信することができる。コンピュータ1000固有のモデムが電話線でデータを受信し、当該データを赤外信号へ変換するために赤外送信機を使用することができる。赤外検出器は、赤外信号で実行されるデータを受信することができ、適切な回路はバス1002上にデータを設置することができる。バス1002は、プロセッサ1004が命令を取り出して実行するためのデータをメインメモリ1006へ伝達する。メインメモリ1006によって受信される本命令は、プロセッサ1004によって実行される前又は実行された後の何れかにストレージデバイス1010に選択的に格納されうる。
コンピュータ1000はまた、バス1002へ結合される通信インタフェース1018を含み。通信インタフェース1018は、ローカルネットワーク1022(例えば、イーサネットネットワーク、無線ローカルエリアネットワーク、セルラー電話ネットワーク、Bluetooth無線ネットワーク、又は同様のもの)へ接続された、有線又は無線のネットワークリンク1020へ結合する2つの方法のデータ通信を提供する。通信インタフェース1018は、種々のタイプの情報を表すデジタルデータストリームを伝達する電気信号、電磁信号、又は光信号を送受信する。例えば、通信インタフェース1018は、有線のネットワークインタフェースカード、一体化された無線アンテナを有する無線ネットワークインタフェースカード、又はモデム(例えば、ISDN、DSL、又はケーブルモデム)であってもよい。
ネットワークリンク1020は、通常、1以上のネットワークを通じて、他のデータデバイスへのデータ通信を提供する。例えば、ネットワークリンク1020は、ホストコンピュータ1024への、又は、インターネットサービスプロバイダ(ISP)1026によって操作されるデータ機器へのローカルネットワーク1022を通じた接続を提供してもよい。ISP1026は順に、”Internet”1028として通常参照されるワールド・ワイド・パケットデータ通信ネットワークを通じてデータ通信サービスを提供する。ローカルネットワーク1022及びInternet1028は、デジタルデータストリームを伝達する電気信号、磁性信号、又は光信号を使用する。コンピュータ1000への及びコンピュータ1000からのデジタルデータを伝達する、種々のネットワークを通じた信号、及び、ネットワークリンク1020上の、及び通信インタフェース1018を通じた信号は、送信媒体の例示の形式である。
コンピュータ1000は、ローカルネットワーク1022、インターネット1028、ISP1026、ネットワークリンク1020、及びネットワークインタフェース1018を通じて、プログラムコードを含む、メッセージを送信し、データを受信することができる。インターネットの一例において、サーバコンピュータ1030は、インターネット1028、ISP1026、ローカルエリアネットワーク1022、及び通信インタフェース1018を通じて、アプリケーションプログラムに対して要求されるコードを送信するかもしれない。
受信コードは、受信した際にプロセッサ1004によって実行されてもよく、及び、後の実行のためにストレージデバイス1010又は他の不揮発性のストレージに格納されてもよく、或いは、そのいずれもが行われてもよい。
11.0 基本ソフトウェアシステム
次に、図11を参照して、本発明のいくつかの実施形態に従って、コンピュータ1000の動作を制御するための基本ソフトウェアシステム1100のブロック図について説明する。図示するように、コンピュータソフトウェアシステム1100は、コンピューティングデバイス1000の動作を方向付けるために提供される。システムメモリ(RAM)1006及び固定ストレージ(例えば、ハードディスク)1010に格納されるソフトウェアシステム1100はカーネル又はオペレーティングシステム(OS)1110を含む。OS1110は、プロセス、メモリ配置、ファイル入力及び出力(I/O)、及びデバイスI/Oの実行を管理することを含む、コンピュータ動作のローレベルの態様を管理する。1以上のアプリケーションプログラム1102(例えば、1102A、1102B、1102C・・・1102N)は、システム1100による実行のために”ロードされ”うる(例えば、固定ストレージ1010からメモリ1006へ転送される)。いくつかの例において、アプリケーションプログラム1102又はデバイス1000上での使用を意図した他のソフトウェアはまた、ダウンロード可能で、コンピュータで実行可能な命令のセットとして、例えば、インターネット上の記憶場所から(例えば、ウェブサーバから)ダウンロード及びインストールするために格納されうる。
ソフトウェアシステム1100は、グラフィカルな(例えば、”ポイント・アンド・クリック”又は”タッチジェスチャ”)形式で、ユーザコマンド及びデータを受信するためのグラフィカルユーザインタフェース(GUI)1115を含んでもよい。これらの入力は順に、オペレーティングシステム1110及びアプリケーションプログラム1102の少なくとも1つからの命令に従ってシステム1100によって作動される。GUI1115はまた、ユーザが追加の入力を供給したり、又は、セッションを終了させたりする(例えば、ログオフする)とすぐに、OS1110及びアプリケーションプログラム1102からの動作結果を表示するように務める。
OS1110は、コンピュータ1000のハードウェア(例えば、プロセッサ1004)上で直接的に実行することができる。代替的に、ハイパーバイザ又は仮想マシンモニタ(VMM)1130は、ハードウェア及びOS1110の間に割り込んで設けられてもよい。この構成において、VMM1130はコンピュータ1000のOS1110及びハードウェアの間のソフトウェア”クッション”又は仮想レイヤとして作動する。
VMM1130が存在すれば、仮想マシンインスタンス(例えばゲストマシン)を作成して実行する。各ゲストマシンは、OS1110などの”ゲスト”オペレーティングシステムと、ゲストオペレーティングシステム上で実行するように設計された、アプリケーションプログラム1102などの1以上のアプリケーションプログラムを含む。VMM1130は、仮想オペレーティングプラットフォームを有するゲストオペレーティングシステムを提示し、ゲストオペレーティングシステムの実行を管理する。いくつかの例において、VMM1130は、コンピュータ1000のハードウェア上直接実行されているかのように、ゲストオペレーティングシステムを実行することを許容する。これらの例において、ハードウェア上で直接的に実行するように構成されたゲストオペレーティングシステムの同一のバージョンはまた、修正又は再構成なしにVMM1130上で実行されうる。言い換えれば、VMM1130は、いくつかの例において、ゲストオペレーティングシステムへ完全なハードウェアと、CPU仮想化を提供してもよい。他の例において、ゲストオペレーティングシステムは、効率的にVMM1130上で実行されるように特別に設計されるか、又は、構成されてもよい。それらの例において、ゲストオペレーティングシステムは、仮想マシンモニタ1130上で実行する”気付かれるもの”であってもよい。言い換えれば、VMM1130は、いくつかの例において、ゲストオペレーティングシステムへ準仮想化を提供することができる。
上述のコンピュータハードウェア及びソフトウェアは、本発明の種々の実施形態を実施するために採用されうる基本的な下層のコンピュータコンポーネントを示す目的で提示される。しかしながら、本発明は、任意の特定のコンピューティング環境又はコンピュータ構成に限定されない。代わりに、本発明の実施形態は、システムアーキテクチャ、又は、ここで説明したような実施形態をサポートすることが可能な処理環境の任意のタイプで実装されてもよい。
本発明について例示の実施形態とともに前述したが、これは本発明を限定することを意図したものではない。実際には、前述は、本発明の精神及び範囲の中で説明していない全ての変形及び代替の構成をカバーするように意図される。

Claims (18)

  1. 1以上のハードウェアプロセッサを備えるパーソナルコンテンツアイテムの検索システムであって、
    前記1以上のプロセッサが、
    オンラインコンテンツ管理サービスによって提供されるコンテンツアイテムであって、該サービスに保持される複数のユーザアカウントのうちの特定のユーザアカウントに関連付けられる前記コンテンツアイテムの基本インデックスを生成し、
    前記特定のユーザアカウントに関連付けられるユーザコンピュータへネットワークを介して前記生成した基本インデックスを送信し、
    前記コンテンツアイテムの少なくとも1つへの変更であって、前記少なくとも1つのコンテンツアイテムの新たなバージョンとなる前記変更を検知し、
    前記少なくとも1つのコンテンツアイテムが属する特定のコンテンツアイテムの名前空間であって、前記オンラインコンテンツ管理サービスによって提供されるコンテンツアイテムを含む複数のコンテンツアイテムの名前空間の1つであり、前記特定のユーザアカウントに関連付けられた前記特定のコンテンツアイテムの名前空間の識別子を判定し、
    前記少なくとも1つのコンテンツアイテムへの前記変更を反映するインデックス変更情報であって、前記少なくとも1つのコンテンツアイテムにインデックスを付与するために使用する1以上のトークンと、前記少なくとも1つのコンテンツアイテムへインデックスを付与するために使用されない1以上のトークンとの少なくとも1つを含み、かつ、前記特定のコンテンツアイテムの名前空間の前記識別子を含む前記インデックス変更情報を生成し、
    インデックス変更情報のジャーナルに前記インデックス変更情報を格納し、
    前記インデックス変更情報の前記特定のコンテンツアイテムの名前空間の前記識別子の少なくとも一部に基づいて、前記ユーザコンピュータに対してのものであるとして、前記インデックス変更情報のジャーナルの前記インデックス変更情報を識別し、
    前記ネットワークを介して、前記生成したインデックス変更情報の前記少なくとも1つのコンテンツアイテムにインデックスを付与するために使用される1以上のトークン及び前記少なくとも1つのコンテンツアイテムにインデックスを付与するために使用されない1以上のトークンの少なくとも1つを前記ユーザコンピュータへ送信するように構成されることを特徴とする検索システム。
  2. 前記1以上のハードウェアプロセッサは、さらに、
    前記ユーザコンピュータに関連付けられるローカルインデックスのタイムスタンプと、前記生成したインデックス変更情報と関連付けられるタイムスタンプとを比較し、
    前記生成したインデックス変更情報に関連付けられる前記タイムスタンプが前記ユーザコンピュータに関連付けられる前記ローカルインデックスのタイムスタンプより新しい場合に、前記ネットワークを介して、前記生成したインデックス変更情報の前記少なくとも1つのコンテンツアイテムにインデックスを付与するために使用される1以上のトークン及び前記少なくとも1つのコンテンツアイテムにインデックスを付与するために使用されない1以上のトークンの少なくとも1つを前記ユーザコンピュータへ送信するように構成されることを特徴とする請求項1に記載の検索システム。
  3. 前記1以上のハードウェアプロセッサは、さらに、
    前記インデックス変更情報に対するタイムスタンプを生成し、
    ディスク上のジャーナルへ、前記タイムスタンプ及び前記インデックス変更情報を含むエントリを付与するように構成されることを特徴とする請求項1に記載の検索システム。
  4. 前記少なくとも1つのコンテンツアイテムへの前記変更は、前記少なくとも1つのコンテンツアイテムの前記新たなバージョンを生成する、前記少なくとも1つのコンテンツアイテムの第1バージョンへの修正を含み、
    前記1以上のハードウェアプロセッサは、さらに、
    1以上のトークンの第1セットを生成するために、前記少なくとも1つのコンテンツアイテムの前記第1バージョンをトークン化し、
    1以上のトークンの第2セットを生成するために、前記少なくとも1つのコンテンツアイテムの前記新たなバージョンをトークン化し、
    1以上のトークンの第3セットとして、前記第2セットのトークンの中で前記第1セットのトークンにはない1以上のトークンを識別するように構成され、
    前記生成したインデックス変更情報は、前記ユーザコンピュータで前記少なくとも1つのコンテンツアイテムにインデックスを付与するために使用される前記1以上のトークンとして、前記第3セットのトークンを含むことを特徴とする請求項1に記載の検索システム。
  5. 前記少なくとも1つのコンテンツアイテムへの前記変更は、前記少なくとも1つのコンテンツアイテムの前記新たなバージョンを生成する、前記少なくとも1つのコンテンツアイテムの第1バージョンへの修正を含み、
    前記1以上のハードウェアプロセッサは、さらに、
    1以上のトークンの第1セットを生成するために、前記少なくとも1つのコンテンツアイテムの前記第1バージョンをトークン化し、
    1以上のトークンの第2セットを生成するために、前記少なくとも1つのコンテンツアイテムの前記新たなバージョンをトークン化し、
    1以上のトークンの第3セットとして、前記第1セットのトークンの中で前記第2セットのトークンにはない1以上のトークンを識別するように構成され、
    前記生成したインデックス変更情報は、前記ユーザコンピュータで前記少なくとも1つのコンテンツアイテムにインデックスを付与するために使用されない前記1以上のトークンとして、前記第3セットのトークンを含むことを特徴とする請求項1に記載の検索システム。
  6. 前記基本インデックスは第1の基本インデックスであり、
    前記1以上のハードウェアプロセッサは、さらに、
    前記少なくとも1つのコンテンツアイテムへの前記変更後に、前記ユーザアカウントに関連付けられる前記コンテンツアイテムの第2の基本インデックスを生成するように構成され、
    前記第2の基本インデックスは、前記少なくとも1つのコンテンツアイテムへの少なくとも前記変更を反映し、
    前記ネットワークを介して前記ユーザコンピュータへ前記生成した第2の基本インデックスを送信するように構成されることを特徴とする請求項1に記載の検索システム。
  7. 1以上のハードウェアプロセッサによって実行されるコンピュータで実行可能な方法であって、
    前記方法は、
    前記1以上のハードウェアプロセッサの少なくとも1つによって、オンラインコンテンツ管理サービスによって提供されるコンテンツアイテムであって、該サービスに保持される複数のユーザアカウントのうちの特定のユーザアカウントに関連付けられる前記コンテンツアイテムの基本インデックスを生成する工程と、
    前記1以上のハードウェアプロセッサの少なくとも1つによって、前記特定のユーザアカウントに関連付けられるユーザコンピュータへネットワークを介して前記生成した基本インデックスを送信する工程と、
    前記1以上のハードウェアプロセッサの少なくとも1つによって、前記コンテンツアイテムの少なくとも1つへの変更であって、前記少なくとも1つのコンテンツアイテムの新たなバージョンとなる前記変更を検知する工程と、
    前記少なくとも1つのコンテンツアイテムが属する特定のコンテンツアイテムの名前空間であって、前記オンラインコンテンツ管理サービスによって提供されるコンテンツアイテムを含む複数のコンテンツアイテムの名前空間の1つであり、前記特定のユーザアカウントに関連付けられた前記特定のコンテンツアイテムの名前空間の識別子を判定する工程と、
    前記1以上のハードウェアプロセッサの少なくとも1つによって、前記少なくとも1つのコンテンツアイテムへの前記変更を反映するインデックス変更情報であって、前記少なくとも1つのコンテンツアイテムにインデックスを付与するために使用する1以上のトークンと、前記少なくとも1つのコンテンツアイテムへインデックスを付与するために使用されない1以上のトークンとの少なくとも1つを含み、かつ、前記特定のコンテンツアイテムの名前空間の前記識別子を含む前記インデックス変更情報を生成する工程と、
    インデックス変更情報のジャーナルに前記インデックス変更情報を格納する工程と、
    前記インデックス変更情報の前記特定のコンテンツアイテムの名前空間の前記識別子の少なくとも一部に基づいて、前記ユーザコンピュータに対してのものであるとして、前記インデックス変更情報のジャーナルの前記インデックス変更情報を識別する工程と、
    前記1以上のハードウェアプロセッサの少なくとも1つによって、前記ネットワークを介して、前記生成したインデックス変更情報の前記少なくとも1つのコンテンツアイテムにインデックスを付与するために使用される1以上のトークン及び前記少なくとも1つのコンテンツアイテムにインデックスを付与するために使用されない1以上のトークンの少なくとも1つを前記ユーザコンピュータへ送信する工程と
    を含むことを特徴とする方法。
  8. 前記1以上のハードウェアプロセッサの少なくとも1つによって、前記ユーザコンピュータに関連付けられるローカルインデックスのタイムスタンプと、前記生成したインデックス変更情報と関連付けられるタイムスタンプとを比較する工程と、
    前記1以上のハードウェアプロセッサの少なくとも1つによって、前記生成したインデックス変更情報に関連付けられる前記タイムスタンプが前記ユーザコンピュータに関連付けられる前記ローカルインデックスのタイムスタンプより新しい場合に、前記ネットワークを介して、前記生成したインデックス変更情報の前記少なくとも1つのコンテンツアイテムにインデックスを付与するために使用される1以上のトークン及び前記少なくとも1つのコンテンツアイテムにインデックスを付与するために使用されない1以上のトークンの少なくとも1つを前記ユーザコンピュータへ送信する工程と
    をさらに含むことを特徴とする請求項に記載の方法。
  9. 前記1以上のハードウェアプロセッサの少なくとも1つによって、前記インデックス変更情報におけるタイムスタンプを生成する工程と、
    前記1以上のハードウェアプロセッサの少なくとも1つによって、ディスク上のジャーナルへ、前記タイムスタンプ及び前記インデックス変更情報を含むエントリを付与する工程と
    をさらに含むことを特徴とする請求項に記載の方法。
  10. 前記少なくとも1つのコンテンツアイテムへの前記変更は、前記少なくとも1つのコンテンツアイテムの前記新たなバージョンを生成する、前記少なくとも1つのコンテンツアイテムの第1バージョンへの修正を含み、
    前記方法は、さらに、
    前記1以上のハードウェアプロセッサの少なくとも1つによって、1以上のトークンの第1セットを生成するために、前記少なくとも1つのコンテンツアイテムの前記第1バージョンをトークン化する工程と、
    前記1以上のハードウェアプロセッサの少なくとも1つによって、1以上のトークンの第2セットを生成するために、前記少なくとも1つのコンテンツアイテムの前記新たなバージョンをトークン化する工程と、
    前記1以上のハードウェアプロセッサの少なくとも1つによって、1以上のトークンの第3セットとして、前記第2セットのトークンの中で前記第1セットのトークンにはない1以上のトークンを識別する工程とを含み、
    前記生成したインデックス変更情報は、前記ユーザコンピュータで前記少なくとも1つのコンテンツアイテムにインデックスを付与するために使用される前記1以上のトークンとして、前記第3セットのトークンを含むことを特徴とする請求項に記載の方法。
  11. 前記少なくとも1つのコンテンツアイテムへの前記変更は、前記少なくとも1つのコンテンツアイテムの前記新たなバージョンを生成する、前記少なくとも1つのコンテンツアイテムの第1バージョンへの修正を含み、
    前記方法は、さらに、
    前記1以上のハードウェアプロセッサの少なくとも1つによって、1以上のトークンの第1セットを生成するために、前記少なくとも1つのコンテンツアイテムの前記第1バージョンをトークン化する工程と、
    前記1以上のハードウェアプロセッサの少なくとも1つによって、1以上のトークンの第2セットを生成するために、前記少なくとも1つのコンテンツアイテムの前記新たなバージョンをトークン化する工程と、
    前記1以上のハードウェアプロセッサの少なくとも1つによって、1以上のトークンの第3セットとして、前記第1セットのトークンの中で前記第2セットのトークンにはない1以上のトークンを識別する工程とを含み、
    前記生成したインデックス変更情報は、前記ユーザコンピュータで前記少なくとも1つのコンテンツアイテムにインデックスを付与するために使用されない前記1以上のトークンとして、前記第3セットのトークンを含むことを特徴とする請求項に記載の方法。
  12. 前記基本インデックスは第1の基本インデックスであり、
    前記方法は、さらに、
    前記1以上のハードウェアプロセッサの少なくとも1つによって、前記少なくとも1つのコンテンツアイテムへの前記変更後に、前記ユーザアカウントに関連付けられる前記コンテンツアイテムの第2の基本インデックスを生成する工程と、
    前記第2の基本インデックスは、前記少なくとも1つのコンテンツアイテムへの少なくとも前記変更を反映し、
    前記1以上のハードウェアプロセッサの少なくとも1つによって、前記ユーザコンピュータへ前記ネットワークを介して前記生成した第2の基本インデックスを送信する工程と
    をさらに含むことを特徴とする請求項に記載の方法。
  13. 1以上のプロセッサによって実行されると方法を実行する1以上のコンピュータプログラムであって、前記方法は、
    少なくとも1つの前記プロセッサによって、オンラインコンテンツ管理サービスによって提供されるコンテンツアイテムであって、該サービスに保持される複数のユーザアカウントのうちの特定のユーザアカウントに関連付けられる前記コンテンツアイテムの基本インデックスを生成する工程と、
    前記プロセッサの少なくとも1つによって、前記特定のユーザアカウントに関連付けられるユーザコンピュータへネットワークを介して前記生成した基本インデックスを送信する工程と、
    前記プロセッサの少なくとも1つによって、前記コンテンツアイテムの少なくとも1つへの変更であって、前記少なくとも1つのコンテンツアイテムの新たなバージョンとなる前記変更を検知する工程と、
    前記少なくとも1つのコンテンツアイテムが属する特定のコンテンツアイテムの名前空間であって、前記オンラインコンテンツ管理サービスによって提供されるコンテンツアイテムを含む複数のコンテンツアイテムの名前空間の1つであり、前記特定のユーザアカウントに関連付けられた前記特定のコンテンツアイテムの名前空間の識別子を判定する工程と、
    前記プロセッサの少なくとも1つによって、前記少なくとも1つのコンテンツアイテムへの前記変更を反映するインデックス変更情報であって、前記少なくとも1つのコンテンツアイテムにインデックスを付与するために使用する1以上のトークンと、前記少なくとも1つのコンテンツアイテムへインデックスを付与するために使用されない1以上のトークンとの少なくとも1つを含み、かつ、前記特定のコンテンツアイテムの名前空間の前記識別子を含む前記インデックス変更情報を生成する工程と、
    インデックス変更情報のジャーナルに前記インデックス変更情報を格納する工程と、
    前記インデックス変更情報の前記特定のコンテンツアイテムの名前空間の前記識別子の少なくとも一部に基づいて、前記ユーザコンピュータに対してのものであるとして、前記インデックス変更情報のジャーナルの前記インデックス変更情報を識別する工程と、
    前記プロセッサの少なくとも1つによって、前記ネットワークを介して、前記生成したインデックス変更情報の前記少なくとも1つのコンテンツアイテムにインデックスを付与するために使用される1以上のトークン及び前記少なくとも1つのコンテンツアイテムにインデックスを付与するために使用されない1以上のトークンの少なくとも1つを前記ユーザコンピュータへ送信する工程と
    を含むことを特徴とする1以上のコンピュータプログラム
  14. 前記方法は、さらに、
    前記プロセッサの少なくとも1つによって、前記ユーザコンピュータに関連付けられるローカルインデックスのタイムスタンプと、前記生成したインデックス変更情報と関連付けられるタイムスタンプとを比較する工程と、
    前記プロセッサの少なくとも1つによって、前記生成したインデックス変更情報に関連付けられる前記タイムスタンプが前記ユーザコンピュータに関連付けられる前記ローカルインデックスのタイムスタンプより新しい場合に、前記ネットワークを介して、前記生成したインデックス変更情報の前記少なくとも1つのコンテンツアイテムにインデックスを付与するために使用される1以上のトークン及び前記少なくとも1つのコンテンツアイテムにインデックスを付与するために使用されない1以上のトークンの少なくとも1つを前記ユーザコンピュータへ送信する工程と
    をさらに含むことを特徴とする請求項13に記載の1以上のコンピュータプログラム
  15. 前記方法は、さらに、
    前記プロセッサの少なくとも1つによって、前記インデックス変更情報におけるタイムスタンプを生成する工程と、
    前記プロセッサの少なくとも1つによって、ディスク上のジャーナルへ、前記タイムスタンプ及び前記インデックス変更情報を含むエントリを付与する工程と
    をさらに含むことを特徴とする請求項13に記載の1以上のコンピュータプログラム
  16. 前記少なくとも1つのコンテンツアイテムへの前記変更は、前記少なくとも1つのコンテンツアイテムの前記新たなバージョンを生成する、前記少なくとも1つのコンテンツアイテムの第1バージョンへの修正を含み、
    前記方法は、さらに、
    前記プロセッサの少なくとも1つによって、1以上のトークンの第1セットを生成するために、前記少なくとも1つのコンテンツアイテムの前記第1バージョンをトークン化する工程と、
    前記プロセッサの少なくとも1つによって、1以上のトークンの第2セットを生成するために、前記少なくとも1つのコンテンツアイテムの前記新たなバージョンをトークン化する工程と、
    前記プロセッサの少なくとも1つによって、1以上のトークンの第3セットとして、前記第2セットのトークンの中で前記第1セットのトークンにはない1以上のトークンを識別する工程とを含み、
    前記生成したインデックス変更情報は、前記ユーザコンピュータで前記少なくとも1つのコンテンツアイテムにインデックスを付与するために使用される前記1以上のトークンとして、前記第3セットのトークンを含むことを特徴とする請求項13に記載の1以上のコンピュータプログラム
  17. 前記少なくとも1つのコンテンツアイテムへの前記変更は、前記少なくとも1つのコンテンツアイテムの前記新たなバージョンを生成する、前記少なくとも1つのコンテンツアイテムの第1バージョンへの修正を含み、
    前記方法は、さらに、
    前記プロセッサの少なくとも1つによって、1以上のトークンの第1セットを生成するために、前記少なくとも1つのコンテンツアイテムの前記第1バージョンをトークン化する工程と、
    前記プロセッサの少なくとも1つによって、1以上のトークンの第2セットを生成するために、前記少なくとも1つのコンテンツアイテムの前記新たなバージョンをトークン化する工程と、
    前記プロセッサの少なくとも1つによって、1以上のトークンの第3セットとして、前記第1セットのトークンの中で前記第2セットのトークンにはない1以上のトークンを識別する工程とを含み、
    前記生成したインデックス変更情報は、前記ユーザコンピュータで前記少なくとも1つのコンテンツアイテムにインデックスを付与するために使用されない前記1以上のトークンとして、前記第3セットのトークンを含むことを特徴とする請求項13に記載の1以上のコンピュータプログラム
  18. 前記基本インデックスは第1の基本インデックスであり、
    前記方法は、さらに、
    前記プロセッサの少なくとも1つによって、前記少なくとも1つのコンテンツアイテムへの前記変更後に、前記ユーザアカウントに関連付けられる前記コンテンツアイテムの第2の基本インデックスを生成する工程と、
    前記第2の基本インデックスは、前記少なくとも1つのコンテンツアイテムへの少なくとも前記変更を反映し、
    前記プロセッサの少なくとも1つによって、前記ユーザコンピュータへ前記ネットワークを介して前記生成した第2の基本インデックスを送信する工程と
    をさらに含むことを特徴とする請求項13に記載の1以上のコンピュータプログラム
JP2016012753A 2015-01-30 2016-01-26 パーソナルコンテンツアイテムの検索システム及び方法 Active JP5947988B1 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/609,930 US9183303B1 (en) 2015-01-30 2015-01-30 Personal content item searching system and method
US14/609,930 2015-01-30

Publications (2)

Publication Number Publication Date
JP5947988B1 true JP5947988B1 (ja) 2016-07-06
JP2016154006A JP2016154006A (ja) 2016-08-25

Family

ID=54363490

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016012753A Active JP5947988B1 (ja) 2015-01-30 2016-01-26 パーソナルコンテンツアイテムの検索システム及び方法

Country Status (4)

Country Link
US (3) US9183303B1 (ja)
EP (1) EP3051441B1 (ja)
JP (1) JP5947988B1 (ja)
AU (1) AU2016200553B1 (ja)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021144656A1 (en) 2020-01-15 2021-07-22 Monday.Com Digital processing systems and methods for graphical dynamic table gauges in collaborative work systems
WO2021161104A1 (en) 2020-02-12 2021-08-19 Monday.Com Enhanced display features in collaborative network systems, methods, and devices
WO2021220058A1 (en) 2020-05-01 2021-11-04 Monday.com Ltd. Digital processing systems and methods for enhanced collaborative workflow and networking systems, methods, and devices
US20160019210A1 (en) * 2014-07-21 2016-01-21 Dropbox, Inc. Sharing unmanaged content using a content management system
US9792315B2 (en) 2014-08-21 2017-10-17 Dropbox, Inc. Multi-user search system with methodology for bypassing instant indexing
US9384226B1 (en) 2015-01-30 2016-07-05 Dropbox, Inc. Personal content item searching system and method
US9183303B1 (en) 2015-01-30 2015-11-10 Dropbox, Inc. Personal content item searching system and method
US9922201B2 (en) 2015-04-01 2018-03-20 Dropbox, Inc. Nested namespaces for selective content sharing
US9852147B2 (en) 2015-04-01 2017-12-26 Dropbox, Inc. Selective synchronization and distributed content item block caching for multi-premises hosting of digital content items
US10963430B2 (en) 2015-04-01 2021-03-30 Dropbox, Inc. Shared workspaces with selective content item synchronization
US10509768B2 (en) * 2015-06-30 2019-12-17 Siemens Aktiengesellschaft Method and system for secure data storage and retrieval from cloud based service environment
US20170091311A1 (en) * 2015-09-30 2017-03-30 International Business Machines Corporation Generation and use of delta index
US10691718B2 (en) 2015-10-29 2020-06-23 Dropbox, Inc. Synchronization protocol for multi-premises hosting of digital content items
US9479567B1 (en) 2015-10-29 2016-10-25 Dropbox, Inc. Synchronization protocol for multi-premises hosting of digital content items
US9537952B1 (en) 2016-01-29 2017-01-03 Dropbox, Inc. Apparent cloud access for hosted content items
US10394916B2 (en) * 2016-09-13 2019-08-27 Microsoft Technology Licensing, Llc Personalized search environment
US10498741B2 (en) 2016-09-19 2019-12-03 Box, Inc. Sharing dynamically changing units of cloud-based content
US10805238B1 (en) 2016-09-23 2020-10-13 Amazon Technologies, Inc. Management of alternative resources
US10423459B1 (en) 2016-09-23 2019-09-24 Amazon Technologies, Inc. Resource manager
US10346366B1 (en) 2016-09-23 2019-07-09 Amazon Technologies, Inc. Management of a data processing pipeline
US10666569B1 (en) * 2016-09-23 2020-05-26 Amazon Technologies, Inc. Journal service with named clients
JP6844414B2 (ja) * 2017-05-23 2021-03-17 富士通株式会社 分散データ管理プログラム、分散データ管理方法及び分散データ管理装置
US11017037B2 (en) * 2017-07-03 2021-05-25 Google Llc Obtaining responsive information from multiple corpora
CN111133762B (zh) * 2017-09-29 2021-08-10 本田技研工业株式会社 信息提供系统、信息提供方法以及信息提供系统用管理装置
US10866963B2 (en) 2017-12-28 2020-12-15 Dropbox, Inc. File system authentication
US10956593B2 (en) 2018-02-15 2021-03-23 International Business Machines Corporation Sharing of data among containers running on virtualized operating systems
US11698890B2 (en) 2018-07-04 2023-07-11 Monday.com Ltd. System and method for generating a column-oriented data structure repository for columns of single data types
US11436359B2 (en) * 2018-07-04 2022-09-06 Monday.com Ltd. System and method for managing permissions of users for a single data type column-oriented data structure
US11308084B2 (en) * 2019-03-13 2022-04-19 International Business Machines Corporation Optimized search service
CA3138432A1 (en) * 2019-04-29 2020-11-05 Johan Billgren Media content provision in a computer network
US20210149553A1 (en) 2019-11-18 2021-05-20 Monday.Com Digital processing systems and methods for real-time resource and capacity allocation in collaborative work systems
US11290531B2 (en) 2019-12-04 2022-03-29 Dropbox, Inc. Immediate cloud content item creation from local file system interface
US20240184989A1 (en) 2020-05-01 2024-06-06 Monday.com Ltd. Digital processing systems and methods for virtualfile-based electronic white board in collaborative work systems systems
US11595379B2 (en) * 2020-07-01 2023-02-28 Vmware, Inc. Mechanism of common authentication for both supervisor and guest clusters
US11586832B2 (en) 2020-10-09 2023-02-21 Protegrity Corporation Parallel unicode tokenization in a distributed network environment
US11687216B2 (en) 2021-01-14 2023-06-27 Monday.com Ltd. Digital processing systems and methods for dynamically updating documents with data from linked files in collaborative work systems
US11947672B2 (en) * 2021-03-02 2024-04-02 Nxp B.V. Voltage glitch detection circuit
US20240054102A1 (en) * 2022-08-12 2024-02-15 Google Llc Scalable and Cost-Efficient Information Retrieval Architecture for Massive Datasets
US20240193143A1 (en) * 2022-12-08 2024-06-13 Vmware, Inc. Optimized searching based on self-balanced index storing at searchers in a distributed environment
US11741071B1 (en) 2022-12-28 2023-08-29 Monday.com Ltd. Digital processing systems and methods for navigating and viewing displayed content
US11886683B1 (en) 2022-12-30 2024-01-30 Monday.com Ltd Digital processing systems and methods for presenting board graphics
US11893381B1 (en) 2023-02-21 2024-02-06 Monday.com Ltd Digital processing systems and methods for reducing file bundle sizes

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007122371A (ja) * 2005-10-27 2007-05-17 Sony Corp サーバ装置、データ処理方法、プログラムおよび通信方法
US8126895B2 (en) * 2004-10-07 2012-02-28 Computer Associates Think, Inc. Method, apparatus, and computer program product for indexing, synchronizing and searching digital data
US20140156669A1 (en) * 2012-12-04 2014-06-05 Linkedln Corporation Apparatus and method for indexing electronic content
WO2014133495A1 (en) * 2013-02-27 2014-09-04 Hitachi Data Systems Corporation Content class for object storage indexing system

Family Cites Families (120)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07334406A (ja) 1994-06-13 1995-12-22 Hitachi Ltd マルチメディアデータベースシステム
US6151643A (en) 1996-06-07 2000-11-21 Networks Associates, Inc. Automatic updating of diverse software products on multiple client computer systems by downloading scanning application to client computer and generating software list on client computer
US6067541A (en) 1997-09-17 2000-05-23 Microsoft Corporation Monitoring document changes in a file system of documents with the document change information stored in a persistent log
US6389412B1 (en) 1998-12-31 2002-05-14 Intel Corporation Method and system for constructing integrated metadata
US6510439B1 (en) 1999-08-06 2003-01-21 Lucent Technologies Inc. Method and system for consistent update and retrieval of document in a WWW server
US6751603B1 (en) 2000-05-16 2004-06-15 Sun Microsystems, Inc. Autocomplete method and apparatus for data file selection
JP2002149970A (ja) 2000-11-14 2002-05-24 Csk Corp 信用調査システム、信用調査情報処理装置、クライアントシステム、信用調査方法、および、記録媒体
US20020078134A1 (en) 2000-12-18 2002-06-20 Stone Alan E. Push-based web site content indexing
US7068309B2 (en) 2001-10-09 2006-06-27 Microsoft Corp. Image exchange with image annotation
JP2003162449A (ja) 2001-11-27 2003-06-06 Mitsubishi Electric Corp アクセス統合管理システム、アクセス統合管理装置及び方法並びにプログラム
JP4186456B2 (ja) 2001-11-28 2008-11-26 沖電気工業株式会社 分散ファイル共有システムおよびその制御方法
US7260570B2 (en) 2002-02-01 2007-08-21 International Business Machines Corporation Retrieving matching documents by queries in any national language
BR0308409A (pt) 2002-03-14 2005-02-09 Contentguard Holdings Inc Método e aparelho para o processamento de uso de expressões de direitos de uso
JP2003337819A (ja) 2002-05-21 2003-11-28 Nec Corp 文書全文検索システム,文書全文検索方法および文書全文検索プログラム
EP2562663A3 (en) 2002-06-13 2016-05-11 MarkLogic Corporation. Parent-child query indexing for XML databases
JP2004164555A (ja) 2002-09-17 2004-06-10 Fuji Xerox Co Ltd 検索装置および方法ならびにそのインデクス構築装置および方法
CA2421825C (en) * 2002-09-20 2012-07-10 Mks Inc. Version control system for software development
US8204992B2 (en) 2002-09-26 2012-06-19 Oracle America, Inc. Presence detection using distributed indexes in peer-to-peer networks
US7657597B2 (en) 2002-09-26 2010-02-02 Sun Microsystems, Inc. Instant messaging using distributed indexes
US7398200B2 (en) 2002-10-16 2008-07-08 Adobe Systems Incorporated Token stream differencing with moved-block detection
US6976038B2 (en) 2002-10-17 2005-12-13 International Business Machines Corporation Method and apparatus for real time creation and modification of a change log for multi-server synchronization
KR20040039691A (ko) 2002-11-04 2004-05-12 엘지전자 주식회사 정보 검색 시스템의 인덱싱 방법
US8005919B2 (en) 2002-11-18 2011-08-23 Aol Inc. Host-based intelligent results related to a character stream
US7299404B2 (en) 2003-05-06 2007-11-20 International Business Machines Corporation Dynamic maintenance of web indices using landmarks
US20040230893A1 (en) 2003-05-16 2004-11-18 Dethe Elza Method and system for enabling collaborative authoring of hierarchical documents with node privileges
US7779345B2 (en) 2003-07-30 2010-08-17 Aol Inc. Reverse mapping method and apparatus for form filling
US20050055364A1 (en) 2003-08-01 2005-03-10 Ophir Frieder Hardware assisted pruned inverted index component
US7194487B1 (en) 2003-10-16 2007-03-20 Veritas Operating Corporation System and method for recording the order of a change caused by restoring a primary volume during ongoing replication of the primary volume
US7437353B2 (en) 2003-12-31 2008-10-14 Google Inc. Systems and methods for unification of search results
US7424467B2 (en) 2004-01-26 2008-09-09 International Business Machines Corporation Architecture for an indexer with fixed width sort and variable width sort
US7392261B2 (en) 2004-05-20 2008-06-24 International Business Machines Corporation Method, system, and program for maintaining a namespace of filesets accessible to clients over a network
US8949395B2 (en) 2004-06-01 2015-02-03 Inmage Systems, Inc. Systems and methods of event driven recovery management
US7493303B2 (en) 2004-08-04 2009-02-17 International Business Machines Corporation Method for remotely searching a local user index
US8504565B2 (en) 2004-09-09 2013-08-06 William M. Pitts Full text search capabilities integrated into distributed file systems— incrementally indexing files
US7606793B2 (en) 2004-09-27 2009-10-20 Microsoft Corporation System and method for scoping searches using index keys
US8510657B2 (en) 2004-09-30 2013-08-13 Microsoft Corporation Editing the text of an arbitrary graphic via a hierarchical list
US20110029504A1 (en) 2004-12-03 2011-02-03 King Martin T Searching and accessing documents on private networks for use with captures from rendered documents
JP2006185368A (ja) 2004-12-28 2006-07-13 Matsushita Electric Ind Co Ltd 文書データベース更新処理装置、文書データベース検索装置、文書データベース索引作成方法及び文書データベース検索方法
KR100672277B1 (ko) 2005-05-09 2007-01-24 엔에이치엔(주) 개인화 검색 방법 및 검색 서버
US7512620B2 (en) 2005-08-19 2009-03-31 Google Inc. Data structure for incremental search
US7779347B2 (en) 2005-09-02 2010-08-17 Fourteen40, Inc. Systems and methods for collaboratively annotating electronic documents
US20070067726A1 (en) 2005-09-16 2007-03-22 Microsoft Corporation Content sharing user interface for mobile devices
KR101153534B1 (ko) 2005-11-15 2012-06-11 엔에이치엔(주) 웹 데이터 및 로컬 데이터에 대한 데이터 자동 태깅 방법및 데이터 자동 태깅 시스템
US7716180B2 (en) 2005-12-29 2010-05-11 Amazon Technologies, Inc. Distributed storage system with web services client interface
US7634517B1 (en) 2006-02-10 2009-12-15 Google Inc. System and method for dynamically updating a document repository without interrupting concurrent querying
US8707451B2 (en) * 2006-03-01 2014-04-22 Oracle International Corporation Search hit URL modification for secure application integration
US7725431B2 (en) 2006-06-30 2010-05-25 Nokia Corporation Method and apparatus for the synchronization and storage of metadata
US20080250021A1 (en) 2006-09-08 2008-10-09 Donald Robert Martin Boys Method for Searching Private Data Via a Public Data Search Interface
US9141627B2 (en) 2006-09-26 2015-09-22 Sony Corporation Providing a user access to data files distributed in a plurality of different types of user devices
US7840537B2 (en) 2006-12-22 2010-11-23 Commvault Systems, Inc. System and method for storing redundant information
US20080243788A1 (en) 2007-03-29 2008-10-02 Reztlaff James R Search of Multiple Content Sources on a User Device
US7716224B2 (en) 2007-03-29 2010-05-11 Amazon Technologies, Inc. Search and indexing on a user device
US7693813B1 (en) 2007-03-30 2010-04-06 Google Inc. Index server architecture using tiered and sharded phrase posting lists
US7702614B1 (en) 2007-03-30 2010-04-20 Google Inc. Index updating using segment swapping
US20080271156A1 (en) * 2007-04-30 2008-10-30 Lipinski Gregory J Methods and systems for searching protected digital content and non-protected digital content
US7921309B1 (en) 2007-05-21 2011-04-05 Amazon Technologies Systems and methods for determining and managing the power remaining in a handheld electronic device
KR100912870B1 (ko) * 2007-06-12 2009-08-19 삼성전자주식회사 컨텐츠 및 메타데이터의 무결성 보장 시스템 및 방법
US8887297B2 (en) 2007-07-13 2014-11-11 Microsoft Corporation Creating and validating cryptographically secured documents
US8046367B2 (en) 2007-08-20 2011-10-25 Microsoft Corporation Targeted distribution of search index fragments over a wireless communication network
US20090063448A1 (en) 2007-08-29 2009-03-05 Microsoft Corporation Aggregated Search Results for Local and Remote Services
US20090083268A1 (en) 2007-09-25 2009-03-26 International Business Machines Corporation Managing variants of artifacts in a software process
JP4661851B2 (ja) 2007-09-28 2011-03-30 富士ゼロックス株式会社 文書管理システム、文書利用制御装置、文書保管装置及びプログラム
US7961878B2 (en) 2007-10-15 2011-06-14 Adobe Systems Incorporated Imparting cryptographic information in network communications
NO327653B1 (no) 2007-12-20 2009-09-07 Fast Search & Transfer As Fremgangsmate for dynamisk oppdatering av en indeks og en sokemotor som implementerer samme
US20090228528A1 (en) 2008-03-06 2009-09-10 International Business Machines Corporation Supporting sub-document updates and queries in an inverted index
US8533238B2 (en) 2008-04-30 2013-09-10 Microsoft Corporation Sharing information about a document across a private computer network
US20090276401A1 (en) 2008-05-02 2009-11-05 Motorola, Inc. Method and apparatus for managing associative personal information on a mobile communication device
US8340131B2 (en) 2008-05-05 2012-12-25 Sentilla Corporation, Inc. Efficient broadcast of data in a communication network
US8620923B1 (en) 2008-05-30 2013-12-31 Adobe Systems Incorporated System and method for storing meta-data indexes within a computer storage system
US20140032703A1 (en) 2008-05-30 2014-01-30 Matthew A. Wormley System and method for an expandable computer storage system
US8315953B1 (en) 2008-12-18 2012-11-20 Andrew S Hansen Activity-based place-of-interest database
AU2010253843B2 (en) 2009-05-27 2015-12-03 Google Inc. Computer application data in search results
US8407241B2 (en) 2009-06-12 2013-03-26 Microsoft Corporation Content mesh searching
US20110078243A1 (en) 2009-09-30 2011-03-31 Boopsie, Inc. Leveraging Collaborative Cloud Services to Build and Share Apps
US8756215B2 (en) 2009-12-02 2014-06-17 International Business Machines Corporation Indexing documents
US8893120B2 (en) 2010-01-29 2014-11-18 Howard Pinsky Controlled use medical applicaton
US8244701B2 (en) 2010-02-12 2012-08-14 Microsoft Corporation Using behavior data to quickly improve search ranking
US8244700B2 (en) 2010-02-12 2012-08-14 Microsoft Corporation Rapid update of index metadata
US20110225627A1 (en) 2010-03-11 2011-09-15 Ricoh Company, Ltd. Access Limited Search Results
US8825602B1 (en) 2010-03-15 2014-09-02 Symantec Corporation Systems and methods for providing data protection in object-based storage environments
US8909669B2 (en) 2010-03-30 2014-12-09 Private Access, Inc. System and method for locating and retrieving private information on a network
US8805833B2 (en) 2010-11-24 2014-08-12 Microsoft Corp. Enhancing personal data search with information from social networks
US8983902B2 (en) 2010-12-10 2015-03-17 Sap Se Transparent caching of configuration data
US9047363B2 (en) 2010-12-14 2015-06-02 Oracle International Corporation Text indexing for updateable tokenized text
US8620894B2 (en) 2010-12-21 2013-12-31 Microsoft Corporation Searching files
US8527497B2 (en) 2010-12-30 2013-09-03 Facebook, Inc. Composite term index for graph data
JP5420085B2 (ja) 2011-01-13 2014-02-19 三菱電機株式会社 データ処理装置及びデータ保管装置
US9043358B2 (en) 2011-03-09 2015-05-26 Microsoft Technology Licensing, Llc Enterprise search over private and public data
US9152736B2 (en) 2011-03-11 2015-10-06 Google Inc. Efficient indexing and searching of access control listed documents
EP2718832A4 (en) 2011-06-08 2015-03-18 Sgrouples Inc GROUP AUTHORIZATION METHOD AND SOFTWARE
US9152697B2 (en) 2011-07-13 2015-10-06 International Business Machines Corporation Real-time search of vertically partitioned, inverted indexes
KR20130023567A (ko) 2011-08-29 2013-03-08 삼성전자주식회사 파일 복사 수행 방법 및 장치
US9251505B2 (en) 2011-09-28 2016-02-02 International Business Machines Corporation Network contact management
US8996456B2 (en) 2011-11-14 2015-03-31 Google Inc. Data processing service
US8560496B2 (en) * 2011-11-29 2013-10-15 Microsoft Corporation Database query across processes with change notification
US10257109B2 (en) 2012-01-18 2019-04-09 International Business Machines Corporation Cloud-based content management system
KR20130086005A (ko) 2012-01-20 2013-07-30 삼성전자주식회사 다수의 장치들에서 데이터 검색 방법 및 장치
WO2013147785A1 (en) 2012-03-29 2013-10-03 Hitachi Data Systems Corporation Highly available search index with storage node addition and removal
US8868677B2 (en) 2012-04-16 2014-10-21 HGST Netherlands B.V. Automated data migration across a plurality of devices
US9294550B2 (en) 2012-06-11 2016-03-22 Zerodesktop, Inc. Efficient data transfer for cloud storage by centralized management of access tokens
WO2014010082A1 (ja) 2012-07-13 2014-01-16 株式会社日立ソリューションズ 検索装置、検索装置の制御方法及び記録媒体
US9607001B2 (en) 2012-07-13 2017-03-28 Facebook, Inc. Automated failover of a metadata node in a distributed file system
US20140047349A1 (en) 2012-08-09 2014-02-13 Pro Softnet Corporation Application Neutral Visual Sharing
US9384736B2 (en) 2012-08-21 2016-07-05 Nuance Communications, Inc. Method to provide incremental UI response based on multiple asynchronous evidence about user input
US9245003B2 (en) 2012-09-28 2016-01-26 Emc Corporation Method and system for memory efficient, update optimized, transactional full-text index view maintenance
WO2014074924A2 (en) 2012-11-08 2014-05-15 Ingersoll-Rand Company System, apparatus, and methods for server and computer interaction via web cookies
US9613165B2 (en) 2012-11-13 2017-04-04 Oracle International Corporation Autocomplete searching with security filtering and ranking
US9069857B2 (en) 2012-11-28 2015-06-30 Microsoft Technology Licensing, Llc Per-document index for semantic searching
US10346560B2 (en) 2013-02-14 2019-07-09 Plangrid, Inc. Electronic blueprint system and method
US10341275B2 (en) 2013-04-03 2019-07-02 Dropbox, Inc. Shared content item commenting
US20140379661A1 (en) 2013-06-20 2014-12-25 Cloudfinder Sweden AB Multi source unified search
US20150026153A1 (en) 2013-07-17 2015-01-22 Thoughtspot, Inc. Search engine for information retrieval system
US20150112996A1 (en) 2013-10-23 2015-04-23 Microsoft Corporation Pervasive search architecture
US9542391B1 (en) 2013-11-11 2017-01-10 Amazon Technologies, Inc. Processing service requests for non-transactional databases
US20150193399A1 (en) 2014-01-09 2015-07-09 Nokia Corporation Method and apparatus for determining partial updates for a document object model
US10749989B2 (en) 2014-04-01 2020-08-18 Microsoft Technology Licensing Llc Hybrid client/server architecture for parallel processing
US9792315B2 (en) 2014-08-21 2017-10-17 Dropbox, Inc. Multi-user search system with methodology for bypassing instant indexing
US9183303B1 (en) 2015-01-30 2015-11-10 Dropbox, Inc. Personal content item searching system and method
US9384226B1 (en) 2015-01-30 2016-07-05 Dropbox, Inc. Personal content item searching system and method
US10324614B2 (en) 2015-10-12 2019-06-18 Dropbox, Inc. Sharing a file with a single contact

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8126895B2 (en) * 2004-10-07 2012-02-28 Computer Associates Think, Inc. Method, apparatus, and computer program product for indexing, synchronizing and searching digital data
JP2007122371A (ja) * 2005-10-27 2007-05-17 Sony Corp サーバ装置、データ処理方法、プログラムおよび通信方法
US20140156669A1 (en) * 2012-12-04 2014-06-05 Linkedln Corporation Apparatus and method for indexing electronic content
WO2014133495A1 (en) * 2013-02-27 2014-09-04 Hitachi Data Systems Corporation Content class for object storage indexing system

Also Published As

Publication number Publication date
US20160224677A1 (en) 2016-08-04
EP3051441B1 (en) 2018-12-12
US9959357B2 (en) 2018-05-01
EP3051441A1 (en) 2016-08-03
AU2016200553B1 (en) 2016-06-30
US10977324B2 (en) 2021-04-13
JP2016154006A (ja) 2016-08-25
US9183303B1 (en) 2015-11-10
US20180181670A1 (en) 2018-06-28

Similar Documents

Publication Publication Date Title
JP5947988B1 (ja) パーソナルコンテンツアイテムの検索システム及び方法
US11120089B2 (en) Personal content item searching system and method
US10579609B2 (en) Multi-user search system with methodology for bypassing instant indexing

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160330

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160330

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20160331

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20160511

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160523

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160603

R150 Certificate of patent or registration of utility model

Ref document number: 5947988

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250