以下の開示は一つの説明的な実施形態を説明する。他の実施形態は、他にとりうる方法、均等物、および変形例を含む。さらに、説明的な実施形態はいくつかの斬新な機能を含むことがあり、特定の機能は、ここに説明される装置、システム、および方法のいくつかの実施形態に本質的でないことがある。
図1はコンテキスト管理システムの実施形態の例を説明する。コンテキスト管理システムはコンテキスト管理クライアント(「CXMクライアント」)100、コンテキスト管理エンジン(「CXMエンジン」)110、テキストサービスエンジン120、検索エンジン130、1または複数のクローラー140、構成要素(エンティティ)抽出エンジン150、および1または複数のコンテンツリポジトリ160を含む。CXMクライアント100、CXMエンジン110、テキストサービスエンジン120、検索エンジン130、1または複数のクローラー140、構成要素抽出エンジン150、および1または複数のコンテンツリポジトリ160は、論理回路、コンピュータ可読データ、またはコンピュータ実行可能命令を含み、ソフトウェア(例えばアセンブリ、C、C++、C#、Java、BASIC、Perl、VisualBasic)、ハードウェア(例えばカスタマイズされた回路)、またはソフトウェアとハードウェアのコンビネーションで実装することができる。また、CXMクライアント100、CXMエンジン110、テキストサービスエンジン120、検索エンジン130、1または複数のクローラー140、構成要素抽出エンジン150、および1または複数のコンテンツリポジトリ160はそれぞれ、1つ以上のそれぞれのアプリケーションで、及びそれぞれのアプリケーションの1または複数のインスタンスで実装することができる。例えば、CXMクライアント100はコンテキスト管理クライアントアプリケーションの1つまたは2つのインスタンスによって実装することができる。また、例えばCXMクライアント100は2つのアプリケーションそれぞれの1つのインスタンスによって実装することができる。
さらに、CXMクライアント100、CXMエンジン110、テキストサービスエンジン120、検索エンジン130、1または複数のクローラー140、構成要素抽出エンジン150、および1または複数のコンテンツリポジトリ160のインスタンスの少なくともいくつかが、同じコンピューティング装置(例えばデスクトップ、ラップトップ、タブレットPC、スマートフォン、サーバ、携帯情報端末)または、コンピューティング装置の同じセット(例えばクラウドコンピュータ環境などの分散コンピューティング環境における)で動作してもよい。または、それらはすべて違う装置で動作してもよい。コンテンツリポジトリ160は以下の例えば1または複数を含むことができる:コンテンツ管理サービス(ローカルあるいはリモートいずれでも)、ネットワークドライブ、共有フォルダ、およびファイルサーバ。また、コンテンツリポジトリ160はCXMエンジン110と同じ企業ネットワークまたはローカルネットワークに置くことができ、あるいはコンテンツリポジトリ160はワールドワイドウェブに置くことができる。CXMクライアント100はCXMエンジン110とインタフェースしてユーザのためにコンテンツ推奨を生成する。動作中、CXMクライアント100はクエリをCXMエンジン110に送信し、そして、エンジンは推奨(リコメンデーション)を生成して返信する。推奨は、1または複数のコンテンツリポジトリ160で記憶されるデジタルコンテンツアイテム(文書、Eメール、写真、サウンドファイル、ビデオ)を特定することができ、1または複数のリポジトリ160で記憶位置(例えばフォルダ)を特定することができる。CXMクライアント100は、コンテンツアイテムを得るために、特定されたか、参照されたコンテンツアイテムを記憶するコンテンツリポジトリ160に問い合わせることができる。推奨は、以下のうちの1または複数に基づいて生成することができる:第1のアプリケーションにおけるユーザのアクティビティのコンテキスト、他のアプリケーションにおけるユーザのアクティビティのコンテキスト、ユーザのコンテキスト、第1のアプリケーションにおける1または複数のコンテンツアイテム、他のアプリケーションにおける1または複数のコンテンツアイテム、およびすべてのコンテンツアイテムのコンテキスト。
また、CXMエンジン110はアクセス許可に基づいて推奨にフィルタをかけることがある。例えば、CXMエンジン110は、クエリのアクセス許可とコンテンツアイテムそれぞれのアクセス許可とを判定することができ、CXMエンジン110は、クエリのアクセス許可の範囲内にないコンテンツアイテムについての推奨をフィルタリングで取り除くことができる。従って、CXMエンジン110は秘密のコンテンツアイテムを推奨から削除することがある。また、例えばクエリのアクセス許可の判定は以下のうちの1または複数に基づいてもよい:クエリに関連付けられたユーザのアクセス許可、許可基準のチェック、およびクエリと関連づけられたユーザアクティビティの許可レベル。
コンテキストは、ユーザのアクティビティのための環境を形成するか、コンテンツアイテムのための環境を形成する状況またはふるまいを含む。例えば、ユーザのアクティビティのためのコンテキスト情報は、ユーザの現在のまたは最新のアクティビティなどの短期コンテキスト情報(例えば検索、最新のミーティング、最近書き込まれた文書、最近アクセスされた文書、現在開いている文書、現在のミーティング、最新Eメール、最近の共同制作、動作中のアプリケーション、アクティビティの時間)を含むことができ、また、当該ユーザが作業した以前のプロジェクト、ユーザの技能、ユーザの興味、ユーザの過去のアクティビティ、ユーザのアクセス特権などの、長期のコンテキスト情報を含んでよい。また、例えばコンテンツアイテムのコンテキスト情報は例えば、著者、貢献者、検査者、コンテンツアイテムのタイプ、読者コメント、プロジェクト分類、記憶場所、バージョン履歴、変更履歴、閲覧統計、読者評価、およびコンテンツアイテムに関する他のメタデータを含んでよい。
さらに、このシステムは、コンテキスト導出を実行して、(例えばコンテンツアイテム、ユーザ、またはアクティビティのための)関連したコンテキスト情報に基づく追加のコンテキスト情報を生成することができる。例えばシステムは、コンテキスト導出を実行してユーザのために追加のコンテキスト情報を生成することができ、その追加のコンテキスト情報は、そのユーザと直接通信するか、共通の要素(例えばコンテンツアイテム)をそのユーザのコンテキストと共有する別のユーザのコンテキスト情報を含む。例えば、ユーザXはこのシステムまたは会社に入ったばかりであり、制限されたコンテキストプロファイルを持っているか、制限されたコンテンツがユーザXに関連付けられている。ユーザXがユーザYと通信(例えばEメールを送信または受信)したなら、ユーザYのコンテキストプロファイル、またはユーザYと関連しているコンテンツを用いて、ユーザXのためのコンテキストプロファイルを生成する。
この実施形態において、CXMエンジン110は、テキストサービスエンジン120、リバースプロキシ111、コンテキスト管理サービス112、および検索エンジン130を含む。CXMエンジン110は例えば、CXMクライアント100との通信のためにフロントエンドとして作動することによって、CXMクライアント100と検索エンジン130との間の通信を管理する。さらに、いくつかの実施形態において、CXMエンジン110は、文書リーダライブラリ124をウェブサービスとしてCXMクライアント100に公開するか、キーワードの集合体を保持している(それは1つ以上の検索可能な辞書122として記憶される)。いくつかの実施形態において、CXMエンジン110は、インターネット情報サービスで主催される(IISで主催される)ウェブサービスである。また、CXMエンジン110は、様々なサービスのためにセキュリティを提供すべくIIS URLリライトサービスやアプリケーションリクエスティングルーティング(APR)サービスなどのセキュリティサービスを使うことができ、そうするとCXMクライアント100とCXMエンジン110との間の通信は暗号化でき、証明できる。
リバースプロキシ111は、システム中で様々なエンドポイントへ通信をリダイレクトする(例えばIIS−URLリライトモジュールによる)。例えば、いくつかの実施形態において、CXMエンジン110からの外向きコネクション(システムの他の構成品によって生成されて、リバースプロキシ111を通して発送されるレスポンスを含む)は、HTMLとCSSファイルのために監視される。これらのファイルタイプの1つが検出されると、将来のコネクションがリバースプロキシ111を通してまた発送されるように、ファイルの中の関連URLは変更される(例えば規則のセットに従って)。
検索エンジン130はインデックス作成サービス131、データウェアハウス132、およびインデックス134を含む。検索エンジン130はクエリ(例えばCXMクライアント100からの)を受け付け、1または複数の推奨によって応答する。検索エンジン130は1または複数のコンテンツリポジトリ160の検索を開始する。コンテンツリポジトリ160は、CXMクライアント100が稼働するコンピューティング装置にローカルであってもよいし、リモートリポジトリであってもよい。検索エンジン130は、データウェアハウス132に記憶されたデータに基づいて推奨(例えばデジタルコンテンツアイテム、記憶場所)を検索し、ランクを付ける。複数のタイプのメタデータが使われているならば、検索エンジン130は、コンテンツアイテムを検索し、ランク付けする際に、各タイプのメタデータに重み付けしてもよい。例えば、図2は、検索エンジン130によって受信される入力Eメールの実施形態の例を説明する。Eメールが受信された後に、Eメールの中の構成要素が抽出され、それから検索フィールドにマッピングされる。ひとつの構成要素が複数の検索フィールドへとマッピングされることがある。例えば、構成要素「人」は以下の検索フィールドにマッピングされることができる:「URL」、「テキスト」、および「人」。また、検索フィールドにそれぞれの重みが付けられてもよい。例えば、Eメールと関連づけられる構成要素(例えばキーワード、人)の各々に重みを付けるSolrクエリを生成してもよい。また、検索エンジン130は他の技術を使うことができる。例えば、Eメールに添付書類があり、その添付書類に一致する関連文書をSolrでランク付けする必要がある場合、検索エンジン130はSolrのMoreLikeThisハンドラを使うことができる。いくつかの実施形態において、単語出現頻度−逆文書頻度(TF−IDF)尺度に基づくSolrのインタラシティングタームズコンポーネントは、入力された添付書類中の重要なキーワードを抽出するために使用され、その重要なキーワードはそれから、Solrにおいて返信文書のランク付けをするために使われる。また、添付書類は、Eメールに添付されているコンテンツアイテムであり、添付書類は、Eメールに添付することができるどのようなタイプのコンテンツであってもよい。
再び図1を参照すると、インデックス作成サービス131はまたインデックスデータを生成し、インデックス134中にインデックスデータを記憶する。例えば、インデックス作成サービス131は、データウェアハウス132及び1または複数のコンテンツリポジトリ160のコンテンツのためにインデックスデータを生成してもよく、生成されたインデックスデータは、検索を促進するために検索エンジン130によって使用することができる。インデックス作成サービス131は、継続的に、データウェアハウス132中のデータを検索し、インデックスを付ける1または複数のプロセスを行うことができる。
テキストサービスエンジン120は、テキスト検索プロバイダ123、文書リーダライブラリ124、文書処理サービス121、および辞書122を含む。テキスト検索プロバイダ123は文書リーダライブラリ124のためのラッパーであってもよく、コンテンツアイテム(文書、Eメール)中の一連のキーワードを検索するために高度にマルチスレッド化されたアプローチを採用してもよく、与えられたコンテンツアイテムの中で発見されるすべてのキーワードを返す。例えば、検索はファジー検索基準としきい値とに基づくことができる。テキストサービスエンジン120はテキスト検索プロバイダ123にウェブインタフェースを提供してもよい。
また、文書処理サービス121は複数の辞書122の作成と検索(例えばウェブインタフェースを通しての)をサポートし、文書処理サービス121は、テキストデータを、クローラー140によって見つけられたコンテンツアイテムから抽出し、そのテキストデータとすべての付随メタデータを辞書122またはデータウェアハウス132中に記憶する。その結果、文書処理サービス121は、コンテンツアイテムから抽出されるデータを正規化してもよく、データまたはメタデータをデータウェアハウス132に送信する前にメタデータを正規化してもよい。それに応じて、データウェアハウス132は、クローラー140によって見つけられたコンテンツアイテムから導出された正規形データとメタデータを記憶してもよく、その結果、データウェアハウス132は、データリポジトリ160に記憶されるコンテンツアイテムを複写あるいは近似的に複写することができる。さらに、辞書122は、キーワードをソートするか、優先度を付けられた順序でキーワードを記憶することができ、それにより最も一般的に使用されたキーワードをトップに保持する。例えば、文書処理サービス121が新しいキーワードを辞書122に追加するときに、最も一般的に使われるキーワード(例えば最新の流行についての説明)が辞書122の「トップ」上に保持されるように、文書処理サービス121は辞書122中の各キーワードを評価し直し、採点し直し、ソートし直すことができる。いくつかの実施形態において、辞書122中のトップのn個のキーワードだけが、検索動作中に利用され(例えば文書ライブラリAPIに入力され)、それにより、辞書122が非常に多くのエントリを記憶するときに性能が損なわれることを防止するのに役立ち得る。文書処理サービス121はまた、マルチスレッド化されたサービスに不可欠なすべての辞書122のすべての同期動作を実行することができる。
CXMエンジン110はまたコンテキスト管理サービス112を含む。いくつかの実施形態において、コンテキスト管理サービス112は2つの一般の機能を実行する:インデックス作成サービス(例えばインデックス作成サービス131)とクライアント(例えばCXMクライアント100)との間で仲介者として行動すること、また、いくつかの状況におけるクライアントとして行動すること、である。例えばいくつかの実施形態においては、CXMエンジン110がCXMクライアント100からクエリを受信すると、コンテキスト管理サービス112は、クエリに含まれた情報から、または蓄積されたコンテキスト(例えば、コンテキストプロファイル)から、またはそれら両方から変更されたクエリ(例えば、Solrクエリ)または拡張クエリを作成する。従って、この例において、コンテキスト管理サービス112は、蓄積されたコンテキスト(例えば適切なコンテキストプロファイルのすべて)と、クエリに含められている情報とに基づいた語を投入するか、或いは重み付けすることによって変更されたクエリを構成することができる。さらに、コンテキスト管理サービス112は、CXMクライアント100がクエリに適したコンテンツアイテムを得るために使うことができる単純なAPIを提供してよく、コンテキスト管理サービス112は、クエリに適したコンテキストの用語をクエリレスポンスに含めてもよい。コンテキスト管理サービス112はまた、返信されたコンテンツアイテム各々の妥当性の点数を提供することができる。
さらに、コンテキスト管理サービス112はユーザのためのまたは一定のアクティビティのためのコンテキストプロファイルを作成し、メンテナンスすることができる。例えば、CXMクライアント100は、ユーザ識別名(またはユーザアクティビティ識別子)と関連するコンテキスト情報とをコンテキスト管理サービス112に送信することができる。コンテキスト情報は例えば、CXMクライアント100が稼働するコンピューティング装置上で現在動作しているアプリケーションと、ユーザが最近アクセスしたコンテンツアイテムと、ユーザの職名、ユーザのワークグループ、およびユーザのアクセス特権を含むことができる。コンテキスト管理サービス112はそれから、ユーザのコンテキストプロファイルを生成するか、更新することができる。コンテキストプロファイルはデータウェアハウス132中に記憶されてもよい。CXMクライアント100は、所定周期(例えば毎分、10分毎、毎時)で、またはCXMクライアント100がユーザのコンテキスト情報の変化(例えば文書がオープンされたり、アプリケーションが閉じられる)を検出したときに、ユーザ識別名と関連するコンテキスト情報とを送信することができる。また、CXMクライアント100は、推奨使用情報(例えば、ユーザが与えられた推奨を選んだかどうかを示す情報)をコンテキスト管理サービス112に送信することができる。
1または複数のクローラー140は、1または複数のコンテンツリポジトリ160をクローリングし、コンテンツアイテムについてメタデータを収集し、メタデータとコンテンツアイテムとを文書処理サービス121に送信する(文書処理サービス121は後でコンテンツアイテムとメタデータとをデータウェアハウス132に送信する)。クローラー140は、それぞれ、コンテンツリポジトリ160の特定のタイプ(例えばコンテンツ管理サービス、共有フォルダ、ネットワークドライブ)と通信するように設計される複数のタイプのクローラーサービスを含んでもよい。クローラー140は各タイプのクローラーサービスの複数のインスタンスを持つこともでき、同時に複数のコンテンツリポジトリ160をクローリングするように構成されてもよい。
システムの全体の性能を改善するために、クローラー140は、それがクローリングしたコンテンツアイテムについて少しの情報をキャッシュすることができる。この情報は、広範囲に及ぶ処理(例えばメタデータ検索、データウェアハウスアップロード)が、変更されていないファイルのために実行されないように、続いて起こるクローリングで使用して、変更されたファイルまたは更新されたファイルを検出することができる。さらに、クローラー140はまた、削除されたコンテンツアイテムを検出し、インデックス作成サービス131または削除のデータウェアハウス132に検出を通知することができる。これにより、対応するエントリがデータウェアハウス132から削除されることを保証することができる。さらに、クローラー140は、ユーザによるクローラー140のサービスからのコンテンツリポジトリ160の追加または削除を可能にするために、ウェブベースの管理インタフェースをセルフホスティングすることができる。また、クローラー140はコンピューティング装置の上で最近アクセスされたコンテンツアイテムを検索することができる。例えば、いくつかのオペレーティングシステムは最近アクセスされたコンテンツアイテムへのリンクのリストを管理し、クローラー140は、新しいか或いは更新されたコンテンツアイテムを検索するためにリンクのリストを使うことができる。
図3はクローラー340の実施形態の例を説明する。クローラー340はクローラーサービスインタフェース341、クローラーサービス342、コンテンツ管理サービスクローラーサービス343、共有フォルダクローラーサービス344、およびウェブホスティングサービス345を含む。クローラーサービス342は、一定のタイプ(文書、イメージ、写真、ビデオ、オーディオレコーディング)のコンテンツをターゲットとするように設定することができる。クローラーサービス342は少なくとも2つの主要な動作モードを持つことができる。ひとつのモードは、コンテンツリポジトリ(例えば第1のコンテンツ管理サービス361A、第2のコンテンツ管理サービス361B)と通信するために、クライアントオブジェクトモデルを用いる。この動作モードにおいて実行される機能は、コンテンツアイテムのリスト、メタデータ、およびセキュリティ情報を得ることを含む。しかし、この動作モードはいくつかの性能欠点を持つことがある。クライアントオブジェクトモデルは、コンテンツアイテムのリストを取り出すために顕著な時間を必要とすることがあり、それにより、クローラー340が、頻繁にアップデートをデータウェアハウス332に送信することを妨げることがあり、またシステムの上の著しいネットワーク負荷を作成することがある。動作の第2のモードは、RESTインタフェースを使ってこの問題を解決することができる。RESTインタフェースを通してコンテンツアイテムのリスト、コンテンツアイテム、および基本のメタデータ(例えばLastModifiedDate)を得ることによって、クローラーサービス342は、クライアントオブジェクトモデルを用いる場合に必要とされている時間の一部分の中で、変更済コンテンツアイテムを特定することができる。いくつかの実施形態において、新しいコンテンツアイテムまたは変更済コンテンツアイテムだけが、クライアントオブジェクトモデルをさらに用いて処理される。さらに、いくつかの実施形態では、ウェブホスティングサービス345によって提供され、管理ウェブサイト310によってアクセスされるクローラーサービスのウェブインタフェースにより、クローラーサービス342の 「UseRESTServices」プロパティを変更できる。
コンテンツリポジトリ(例えば第1のコンテンツ管理サービス361A、コンテンツ管理サービス第2の361B、第1のファイルサーバ362A、および第2のファイルサーバ362B)がクローリングされた後に、クローラー340は、文書処理サービス321に対して、どのような付随メタデータまたはコンテンツアイテムとともにでも、見つかったどのような新しいコンテンツアイテムのリストでも送ることができる。
再び図1を参照して、構成要素抽出エンジン150は構成要素抽出を実行し、コンテンツアイテムを分析する。コンテンツアイテムは、構造化データ又は非構造化データを含むことがある。例えば、構成要素抽出エンジン150は自動的に分類用語、人、場所、およびキーワードを文書または別のコンテンツアイテムから抽出してよい。さらに、構成要素抽出エンジン150はコンテンツの集合体の要約を作成することができる。いくつかの実施形態において、構成要素抽出エンジン150は、コンテンツ(例えば、要求のなかで受信されるコンテンツアイテム)の集合体の中のすべてのコンテンツアイテムのための要約を作成し、コンテンツの集合体の中のメタデータをコンテンツアイテムから抽出する。
またCXMクライアント100は、ユーザが、クエリを送信でき、CXMエンジン110によって返信されるコンテンツアイテムのリストを見ることができ、結果のスコアの分析結果を見ることができ、コンテンツアイテムを見ることができるインタフェースを生成できる。図4Aと図4Bはコンテキスト管理ユーザインタフェースの実施形態の例を説明する。図4Aのユーザインタフェースは、Eメールから抽出されたキーワードを表示する。キーワードは、それらのそれぞれの重み及びそれらのそれぞれのソースとともに表示される。例えばキーワード「CZL」は、エンタープライズ辞書(辞書122の例である)によって提供され、1の重みを割り当てられた。また、例えばキーワード「sequence diagram」はテキスト分析サービス1によって提供され、0.68の重みを割り当てられた。図4Bのユーザインタフェースは、結果におけるキーワードのそれぞれの重要さを表示する。例えばキーワード「CZL−09」は検索結果の73.7%において発見された。
再び図1を参照すると、CXMクライアント100はまた、リスト化されたコンテンツアイテムを、コンテンツアイテムを記憶するそれぞれのコンテンツリポジトリ160から得ることができる。例えば、CXMクライアント100は、CXMエンジン110からのコンテンツアイテムのリストの受信に応じて、リスト化されたコンテンツアイテム(例えばトップのx個の結果)の全て、又はリスト化されたコンテンツアイテムの一部分の検索を自動的に開始することができる。また、CXMクライアント100は、受信したユーザコマンドに応じて、いくつかのまたはすべてのリスト化されたコンテンツアイテムを検索することができる。
図5はコンテキスト管理システムの実施形態の例を説明する。この実施形態はCXMクライアント500、CXMエンジン510、テキストサービスエンジン520、検索エンジン530、1または複数のクローラー540、構成要素抽出エンジン550、および1または複数のコンテンツリポジトリ560を含む。この実施形態において、CXMエンジン510はテキストサービスエンジン520と検索エンジン530を含まない。しかし、いくつかの実施形態においては、破線によって示されるように、CXMエンジン510はテキストサービスエンジン520、検索エンジン530、1または複数のクローラー540、および構成要素抽出エンジン550を含む。
図6はコンテキスト管理システムにおける動作フローの実施形態の例を説明する。この動作フローとここに説明された他の動作フローは一定の順序でそれぞれ示されるけれども、いくつかの実施形態は示された順序と異なる順序で動作の少なくともいくつかを実行してもよい。可能な異なる順序付けの例は、並列、オーバーラッピング、並べ替え、同時、漸進的、交互、の順序付けを含む。従って、これらの動作フローとここに説明される他の動作フローの他の実施形態は、ブロックを省略し、ブロックを追加し、ブロックの順序を変更し、ブロックを結合するか、ブロックをより多くのブロックに分けるものでもよい。
第1のフローはブロック600で起動し、そこでクローラーは起動される。第1のフローはそれからブロック602に移動し、そこでクローラーは、1または複数のコンテンツリポジトリから記憶されたコンテンツアイテムのそれぞれのリストを検索する。次にブロック604で、クローラーは、コンテンツアイテムの任意のリストが新しいコンテンツアイテムまたは変更済みアイテムを含むか判定する。そして、もしそうでなければ(ブロック604=NO)、第1のフローはブロック602に戻る。そうであれば(ブロック604=YES)、第1のフローは、ブロック606を続行し、そこでは新しいか又は変更されたコンテンツアイテムがそれぞれのコンテンツリポジトリから検索される。そして、ブロック608で、新しいか又は変更されたコンテンツアイテムのコンテンツが正規化される。例えば、クローラーは、新しいか又は変更されたコンテンツアイテムを文書処理サービスに送信することができ、文書処理サービスは、生のフォーマットされていないテキストをコンテンツアイテムから抽出し、それにより、生のフォーマットされていないテキストの形式に、コンテンツアイテムを正規化することができる。
続いて、ブロック610で、正規化したコンテンツアイテムはデータウェアハウスに(例えば文書処理サービスによって、クローラーによって)送信される。次に、ブロック612で、新しいか又は変更されたコンテンツアイテムの中のキーワード(または他の構成要素)が、例えば構成要素抽出エンジンによって決定される。そして、ブロック614で、新しいか又は変更されたコンテンツアイテムの中のキーワードはデータウェアハウスに送信され、第1のフローはそれからブロック602に戻る。
ブロック621で(例えばファンクションコール、タイマの満了、または割込みに応じて)第2のフローが開始され、そこでは、クエリはCXMクライアントから受信される。クエリはコンテンツアイテム全体(例えば文書、イメージ、ビデオ、Eメール、およびオーディオのファイル)、コンテンツアイテムの一部分、コンテンツアイテムについてのコンテキスト情報を含んでよい。ブロック621で、クエリと関連づけられるユーザのコンテキストが決定(例えば得られたユーザコンテキストプロファイル経由で)されてよく、クエリと関連づけられるユーザのアクティビティのコンテキストが決定(例えば得られたアクティビティコンテキストプロファイル経由で)されてよく、クエリの内容(例えばコンテンツアイテムの内容)が決定されてもよい。クエリの内容を決定することは、クエリを明確にすることを含んでよく、例えば、「ジャガー」が動物または自動車のどちらを指すのか判定すること、および、綴りが間違っているテキストを訂正することを含む。第2のフローはそれからブロック623に移動し、そこにおいて、クエリが拡張されるかどうか決定される。そして、もしそうでなければ(ブロック623=NO)、第2のフローはブロック629を続行する。そうであれば(ブロック623=YES)、第2のフローはブロック625に移動し、そこにおいて、キーワードがクエリに基づいて生成される(例えば構成要素抽出エンジンによって特定される)。そしてブロック627で、キーワードがクエリに追加されるか、さもなければクエリの中で示されて、第2のフローはそれからブロック629に移動する。
ブロック629中で、クエリと関連するコンテキストプロファイルが特定される。例えば、クエリはユーザ識別名を含んでよく、ユーザ識別名は、関連するユーザのコンテキストプロファイルを決定するために使用することができる。
ブロック631で、1または複数の推奨が、クエリ(拡張されるかもしれないしそうされないかもしれない)と、クエリと関連づけられるユーザのコンテキストプロファイルと、インデックスの中のデータと、データウェアハウスの中の他のデータとに基づいて生成される。最終的に、ブロック633で、推奨はCXMクライアントに送信される。
第3のフローはブロック640で起動し、そこにおいてインデックス作成サービスが起動される。次にブロック642で、インデックス作成サービスは、データウェアハウスによって記憶されるコンテンツアイテムを調査する。第3のフローはそれからブロック644に移動し、そこにおいて、インデックス作成サービスは、データウェアハウスが新しい又は変更されたコンテンツアイテムを含むか判定する。そして、もしそうでなければ(ブロック644=NO)、第3のフローはブロック642に戻る。そうであれば(ブロック644=YES)、第3のフローはブロック646を続行し、そこにおいて、インデックス作成サービスが、新しい又は変更されたコンテンツアイテムに基づいてインデックスを更新し、それから、第3のフローはブロック642に戻る。
図7はコンテキスト管理システムにおける動作フローの実施形態の例を説明する。段階1において、CXMクライアント700によって操作されるEメール/ウェブのクライアントは、クエリのHTTPポスト(例えばJSONフォーマットのテキスト)を、CXMエンジン710によって操作される検索コントローラに送信する。段階2において、検索コントローラはコンテキスト検索クライアントを起動し、それから、段階3において、検索コントローラはクエリをコンテキスト検索クライアントに送信する。段階4において、コンテキスト検索クライアントはクエリのHTTPポストを、検索エンジン730によって操作される検索ハンドラに送信する。段階5において、コンテキスト検索クライアントは、クエリと関連づけられるコンテキストプロファイル(例えば、クエリと関連づけられるユーザと関連付けられた、或いはクエリの中で特定されるコンテンツアイテムと関連づけられた、或いはクエリの中で示されるアクティビティと関連づけられた)を特定し、コンテキストプロファイルを検索エンジン730に送信する。検索エンジン730はそれから、クエリおよびコンテキストプロファイルに基づいて推奨(例えば類似文書または他のコンテンツアイテムのリスト)を生成し、段階6において、検索ハンドラは推奨をコンテキスト検索クライアントに返す。続いて、段階7において、コンテキスト検索クライアントは推奨を検索コントローラに送信する。そして段階8において、検索コントローラは、Eメール/ウェブのクライアントに、推奨と、いくつかの実施形態においては、推奨を生成するために使われたキーワード(例えばJSONオブジェクトの中の)を送信する。
図8はコンテキスト管理システムにおける動作フローの実施形態の例を説明する。段階1において、CXMクライアント800によって操作されるEメール/ウェブのクライアントはクエリのHTTPポスト(例えばJSONフォーマットの中のテキスト)を、CXMエンジン810によって操作される検索コントローラに送信する。段階2において、検索コントローラはコンテキスト検索クライアントを呼び出し、段階3において、検索コントローラはクエリをコンテキスト検索クライアントに送信する。
続いて段階4において、コンテキスト検索クライアントは、構成要素抽出エンジン850によって操作される抽出ハンドラにクエリを含むHTTPポストを送る。構成要素抽出エンジン850はキーワード(または他の構成要素)をクエリから抽出し、段階5において、抽出ハンドラは抽出されたキーワード(または他の構成要素)をコンテキスト検索クライアントに返信する。段階6において、コンテキスト検索クライアントは、抽出されたキーワード(または他の構成要素)の少なくともいくつかとクエリとを含む拡張クエリを生成する。そして、段階7において、コンテキスト検索クライアントは、検索エンジン830によって操作される検索ハンドラに、拡張クエリを含むポストを送信する。また、段階7において、コンテキスト検索クライアントは、クエリと関連づけられるコンテキストプロファイルを取得し、コンテキストプロファイルを検索ハンドラに送信してもよい。検索エンジン830は、拡張クエリに基づき、そして受信されたならコンテキストプロファイルに基づいて、推奨を生成する。検索ハンドラは推奨を段階8においてコンテキスト検索クライアントに返信する。コンテキスト検索クライアントは段階9において推奨を検索コントローラに送信し、最終的に、段階10において、検索コントローラは推奨と、いくつかの実施形態においてはキーワード(または他の構成要素)(例えばJSONオブジェクトの中の)とをEメール/ウェブのクライアントに送信する。
図9はコンテキスト管理システムにおける動作フローの実施形態の例を説明する。段階1において、CXMエンジン910によって操作される構成要素抽出クライアントは、コンテンツアイテムの要求を、データウェアハウス932によって操作されるデータサーバに送信する。データウェアハウス932は、データリポジトリで見つかるコンテンツアイテムのフォーマットされていないバージョン(例えば生の、フォーマットされていないテキスト)を記憶してもよい。段階2において、データサーバは要求されたコンテンツアイテムを構成要素抽出クライアントに送信する。次に段階3において、構成要素抽出クライアントは、コンテンツアイテムを、構成要素抽出エンジン950によって操作される構成要素抽出サービスに送信する。受信したコンテンツアイテムに基づいて、構成要素抽出エンジン950はキーワード(または他の構成要素)と、いくつかの実施形態においてはコンテンツアイテムの要約を生成する。そして、段階4において、構成要素抽出サービスは、キーワード(およびいくつかの実施形態では要約)を構成要素抽出クライアントに送信する。最後に段階5において、構成要素抽出クライアントは、キーワード(及びすべての要約)をデータサーバに送信する。データサーバは、キーワード(及びすべての要約)を生成するために使われたコンテンツアイテムと関連してキーワード(及びすべての要約)を記憶する。
図10はコンテキスト管理システムにおける動作フローの実施形態の例を説明する。段階1において、クローラー1040によって操作されるクローラーサービス1042は、コンテンツアイテムのリストであるコンテンツリストの取り出し要求と、コンテンツアイテムの変更日とをコンテンツ管理サービスクローラーサービス1043へ送信する。段階2において、コンテンツ管理サービスクローラーサービス1043は、コンテンツリストと変更日の要求をコンテンツリポジトリ1060(例えばコンテンツ管理サービス、共有フォルダ、企業ファイルサーバ、ネットワークドライブ)に送信する。そして段階3において、コンテンツリポジトリ1060は、コンテンツリストとコンテンツリストによって特定されるコンテンツアイテムの変更日とをコンテンツ管理サービスクローラーサービス1043に返信する。それからコンテンツ管理サービスクローラーサービス1043は、段階4において、コンテンツリストと変更日(例えば日、時間)とをクローラーサービス1042に送信する。クローラーサービス1042は、コンテンツリストと、変更日と、コンテンツリポジトリ1060の前回のクローリング日付とに基づいて、新しいコンテンツアイテム及び変更されたコンテンツアイテムのリストを生成する。そして、段階5において、クローラーサービス1042は、新しいコンテンツアイテム及び変更されたコンテンツアイテムのリストをオブジェクトモデルサービスに送信する。
段階6において、オブジェクトモデルサービスは、新しいコンテンツアイテム及び変更されたコンテンツアイテムの要求をコンテンツリポジトリ1060に送信する。次に段階7において、オブジェクトモデルサービスは新しいコンテンツアイテム及び変更されたコンテンツアイテムをコンテンツリポジトリ1060から得る。続いて、段階8においてオブジェクトモデルサービスは、新しいコンテンツアイテム及び変更されたコンテンツアイテムをクローラーサービス1042に送信する。段階9において、オブジェクトサービスモデルは、新しいコンテンツアイテム及び変更されたコンテンツアイテムのメタデータの要求をコンテンツリポジトリ1060に送信する。コンテンツリポジトリ1060は、段階10において、新しいコンテンツアイテム及び変更されたコンテンツアイテムのメタデータをオブジェクトモデルサービスに送信する。そして、段階11において、オブジェクトモデルサービスは、新しいコンテンツアイテム及び変更されたコンテンツアイテムのメタデータをクローラーサービス1042に送信する。
段階12において、クローラーサービス1042は、新しいコンテンツ及び削除されたコンテンツ情報を同期サービスに送信する。新しいコンテンツ及び削除されたコンテンツ情報は、新しいコンテンツアイテムを含むことがあり、新しいコンテンツアイテムのメタデータを含むことがあり、変更されたコンテンツアイテムを含むことがあり、変更されたコンテンツアイテムのメタデータを含むことがあり、削除されたコンテンツアイテムを特定することがある。最後に段階13において、同期サービスは、新しいコンテンツ及び削除されたコンテンツの情報を文書処理サービス1021に送信する。文書処理サービス1021は新しいコンテンツ及び削除されたコンテンツの情報に基づいてインデックスまたはデータウェアハウスを更新する。例えば、文書処理サービス1021は、削除されたコンテンツアイテムに対応するインデックス内の情報を削除することができ、新しいコンテンツアイテムまたは変更されたコンテンツアイテムに対応する情報をインデックスに追加することができる。
図11はコンテキスト管理システムにおける動作フローの実施形態の例を説明する。段階1において、クローラー1140によって操作されるクローラーサービス1142は、コンテンツリポジトリ1160に記憶されるコンテンツアイテムとそれらの記憶位置のすべてを特定するマスタリストの要求をオブジェクトモデルサービスに送信する。段階2において、オブジェクトモデルサービスは、マスタリストをコンテンツリポジトリ1160から得て、マスタリストをクローラーサービス1142に送信する。クローラーサービス1142は、マスタリストに基づいて、コンテンツリストと、コンテンツリスト内のコンテンツアイテムを記憶するそれぞれのコンテンツリポジトリ1160とを決定する。段階3において、クローラーサービス1142は、コンテンツリポジトリ(例えばコンテンツリポジトリ1160)のコンテンツリストとコンテンツリスト中のコンテンツアイテムの変更日との要求をRESTサービスへ送る。段階4において、RESTサービスは、コンテンツリストとコンテンツリスト中のコンテンツアイテムの変更日との要求を、それぞれのコンテンツリポジトリ1160へ送信し、段階5において、コンテンツリポジトリ1160は、コンテンツリストと変更日とをRESTサービスに送信する。次に段階6において、RESTサービスはコンテンツリストと変更日とをクローラーサービス1142に送信する。
クローラーサービス1142はそれから、コンテンツリスト中のどのコンテンツアイテムが新しいかまたは変更されているかを判定し、段階7において、新しいコンテンツアイテム及び変更されたコンテンツアイテムと、新しいコンテンツアイテム及び変更されたコンテンツアイテムのメタデータとの要求をオブジェクトモデルサービスに送信する。続いて、段階8においてオブジェクトモデルサービスは、新しいコンテンツアイテムと変更されたコンテンツアイテムの要求をコンテンツリポジトリ1160に送信する。コンテンツリポジトリ1160は、段落9において、新しいコンテンツアイテム及び変更されたコンテンツアイテムをオブジェクトモデルサービスに送信する。オブジェクトモデルサービスは、段階10において、新しいコンテンツアイテム及び変更されたコンテンツアイテムをクローラーサービス1142に送信する。
次に、段階11において、オブジェクトモデルサービスは新しいコンテンツアイテム及び変更されたコンテンツアイテムのメタデータの要求をコンテンツリポジトリ1160に送信する。段階12において、コンテンツリポジトリ1160は、新しいコンテンツアイテム及び変更されたコンテンツアイテムのメタデータをオブジェクトモデルサービスに送信し、段階13において、オブジェクトモデルサービスは、新しいコンテンツアイテム及び変更されたコンテンツアイテムのメタデータをクローラーサービス1142に送信する。段階14において、クローラーサービス1142は、新しいコンテンツ及び削除されたコンテンツの情報を同期サービスに送信する。最後に段階15において、同期サービスは、新しいコンテンツ及び削除されたコンテンツの情報を文書処理サービス1121に送信する。文書処理サービス1121は、新しいコンテンツ及び削除されたコンテンツの情報をキーにしたインデックスまたはデータウェアハウスを更新する。
図12はコンテキスト管理システムにおける動作フローの実施形態の例を説明する。段階1において、CXMクライアント1200によって操作されるインタフェースサービスは、Eメールクエリ(Eメールに基づくクエリ)をCXMクライアント1200のクエリサービスに送信する。インタフェースサービスは例えばウェブブラウザへの、またはEメールアプリケーションへのプラグインであればよい。クエリサービスは、クエリがEメールクエリであると判定し、Eメールクエリを段階2においてEメールファインダに送信する。次に段階3において、Eメールファインダは、Eメールクエリを、CXMエンジン1210によって操作される検索エンジン1230に送信する。この実施形態の例においては、検索エンジン1230が検索する推奨はディレクトリ(すなわちフォルダなどの他の記憶場所)であり、Eメールクエリと関連しているディレクトリを検索エンジン1230は検索する。そして段階4において、検索エンジン1230は推奨されたディレクトリ(及びいくつかの実施形態ではキーワード)をEメールファインダに送信する。Eメールファインダはそれから、推奨されたディレクトリを段階5においてクエリサービスに送信する。
また段階6において、インタフェースサービスは、添付書類クエリ(Eメールの添付書類に基づくクエリ)をクエリサービスに送信する。段階7において、クエリサービスは添付書類クエリを添付書類ファインダに送信し、そして、ファインダは添付書類クエリを段階8において検索エンジン1230に送信する。検索エンジン1230はそれから、添付書類クエリと関連しているディレクトリ(または他の記憶場所)を検索し、検索エンジン1230は推奨されたディレクトリを段階9において添付書類ファインダに送信する。段階10において、添付書類ファインダは推奨されたディレクトリをクエリサービスに送信する。
さらに、この実施形態は、文書リポジトリに追加された最新のコンテンツアイテムを捜す専用の最新アイテムファインダを含む。CXMエンジン1210は、データウェアハウスに追加されている最新のコンテンツアイテムについての情報を記憶する専用のメタデータキャッシュを含んでもよい。段階11において、クエリサービスは、Eメールクエリと添付書類クエリとの結合であるクエリを最新アイテムファインダへ送信する。最新アイテムファインダは結合されたクエリを、CXMエンジン1210によって操作される最新コンテンツサーチャに送信する。最新コンテンツサーチャは、結合クエリと関連しているディレクトリ推奨のため、メタデータキャッシュと、最近アクセスされたディレクトリと最近追加されたコンテンツアイテムの他の記録とを検索する。次に、段階13において、最新コンテンツサーチャは、推奨されたディレクトリを最新アイテムファインダに送信する。いくつかの実施形態においては、最新アイテムファインダはまた、最近アクセスされた文書、最近アクセスされたディレクトリ、または他のコンテンツアイテムのために、CXMクライアント1200を操作するコンピューティング装置の上のローカルファイルシステムを検索する。例えば、いくつかのオペレーティングシステムは、最近アクセスされた文書と最近アクセスされたディレクトリへのリンクのリストを管理し、最新アイテムファインダは、最近アクセスされた文書、ディレクトリ、および他のコンテンツアイテムを検索するためにリンクのリストを使うことができる。最新アイテムファインダは、推奨されたディレクトリを段階14においてクエリサービスに送信する。クエリサービスはそれから、それが段階5、10、および14において受信した推奨されたディレクトリを集め、段階15において、クエリサービスは集めた推奨をインタフェースサービスに送信する。集めた推奨は、キーワードに割り当てられた推奨されたディレクトリ、キーワード、重みなどを含むことがある。さらに、クエリサービスは、推奨されたディレクトリをインタフェースサービスに送信する前に、それが段階5、10、および14において受信した推奨されたディレクトリをソートし、フィルタリングしてもよい。
図13はコンテキスト管理システムにおける動作フローの実施形態の例を説明する。段階1において、CXMクライアント1300によって操作されるインタフェースサービスはEメールクエリをクエリサービスに送信し、段階2において、クエリサービスはEメールクエリをEメールファインダに送信する。次に、段階3において、EメールファインダはEメールクエリを、CXMエンジン1310によって操作される検索エンジン1330に送信する。この実施形態で、検索エンジン1330は、.txtファイル、.rtfファイル、.pdfファイル、.docファイル、.docxファイル、.xlsファイル、.xlsxファイル、.xpsファイル、.xmlファイル、.htmlファイル、.pptファイル、.pptxファイル、.odpファイル、および.odfファイルなどの推奨された文書を検索する。この実施形態は文書を用いるけれども、他の実施形態では他のタイプのコンテンツを用いてもよい。段階4において、検索エンジン1330は推奨された文書をEメールファインダに返す。続いて、段階5においてEメールファインダは、推奨された文書をクエリサービスに送信する。
また、この実施形態は、Eメールとそれらの添付書類の検索を開始する専用の添付書類ファインダを含む。いくつかの実施形態は、特定タイプのコンテンツ(例えば文書、イメージ、オーディオファイル、ビデオ)を検索するか、別の判定基準または他の標準を満たしているコンテンツアイテムを検索することができる他の専用のファインダを含んでもよい。段階6において、クエリサービスはEメールの要求を添付書類ファインダに送信し、段階7において、添付書類ファインダはEメールの要求を検索エンジン1330に送信する。次に、検索エンジン1330は、推奨されたEメールと添付書類を検索し、段階8において、検索エンジン1330は、推奨されたEメールと添付書類を添付書類ファインダに送信する。段階9において、添付書類ファインダは、推奨されたEメールと添付書類をクエリサービスに送信する。
さらに、この実施形態は、指定された時間(例えば1時間、1日、週)以内に作成されたか、アクセスされたか、変更されたコンテンツアイテムを検索する最新アイテムファインダを含む。段階10において、クエリサービスは、Eメールクエリを最新アイテムファインダに送信する。段階11において、最新アイテムファインダは、Eメールクエリを、推奨された文書をメタデータキャッシュで検索する最新コンテンツサーチャに送信する。段階12において、最新コンテンツサーチャは、推奨された文書を最新アイテムファインダに送信する。最新アイテムファインダは、推奨された文書を段階13においてクエリサービスに送信する。クエリサービスは、段階5において受信した推奨された文書と、段階9において受信した推奨されたEメール及び添付書類と、段階13において受信した推奨された文書の集約、フィルタリング、ソートの少なくともひとつを実行する。最後にクエリサービスは、推奨(例えば推奨された文書、キーワード)および、いくつかの実施形態では推奨についての他の情報(例えばキーワードの重み)をインタフェースサービスに送信する。
図14はコンテキスト管理システムの実施形態の例を説明する。システムはクライアント装置1470、コンテンツ記憶装置1475、およびコンテキスト管理装置1480を含む。これらの装置は1または複数のネットワーク1499経由で通信する(それは例えばLAN、MAN、IAN、WAN、およびインターネットを含んでよい)。クライアント装置1470は1または複数のプロセッサ(CPU)1471、1または複数の入出力インタフェース1472、およびストレージ/メモリ1473を含む。CPU1471は、マイクロプロセッサ(例えばシングルコアマイクロプロセッサ、マルチコアマイクロプロセッサ)または他の回路を含む1または複数の中央処理装置を含み、CPU1471は、ストレージまたはメモリ(例えば、ストレージまたはメモリに保存されるモジュールの中)に保存される命令などのコンピュータ実行可能命令を読み、実行するよう構成される。コンピュータ実行可能命令は、ここに説明された動作を実行するための命令を含むことができる。入出力インタフェース1472は、入出力デバイスに対する通信インタフェースを含み。入出力デバイスは、キーボード、ディスプレイ、マウス、印刷装置、タッチスクリーン、ライトペン、光記憶装置、スキャナ、マイクロホン、カメラ、ドライブ、およびネットワーク(有線および無線のどちらでも)を含む。
ストレージ/メモリ1473は1または複数のコンピュータ可読またはコンピュータ書き込み可能な媒体、例えばコンピュータ可読記憶媒体を含む。コンピュータ可読記憶媒体は、一時的で伝播する単なる信号と対比すると、有体物の製品、例えば磁気ディスク(例えばフロッピィディスク、ハードディスク)、光ディスク(例えばCD、DVD、ブルーレイ)、光磁気ディスク、磁気テープ、および半導体メモリ(例えば不揮発性メモリカード、フラッシュメモリ、半導体ドライブ、SRAM、DRAM、EPROM、EEPROM)を含む。ストレージ/メモリ1473は、コンピュータ可読データ、コンピュータ実行可能命令、またはその両方を記憶するよう構成される。クライアント装置1470の構成要素はバス経由で通信する。また、クライアント装置1470はCXMクライアント1400を含む。
コンテンツ記憶装置1475は、1または複数のCPU1476、1または複数の入出力インタフェース1477、およびストレージ/メモリ1478を含む。コンテンツ記憶装置1480はまたコンテンツリポジトリ1460を含む。さらに、コンテキスト管理装置1480は、1または複数のCPU1481、入出力インタフェース1482、およびストレージ/メモリ1483を含む。最後に、コンテンツ記憶装置1480はまた、CXMエンジン1410、構成要素抽出エンジン1450、およびクローラー1440を含む。
さらに、いくつかの実施形態では、クライアント装置1470はまたクローラー1440、コンテンツリポジトリ1460、およびCXMエンジン1410のうちの1または複数を操作する。これらの実施形態では、より迅速に、クライアント装置1470上で記憶されるコンテンツアイテムに基づく推奨を生成することができる。
図15はコンテキスト管理システムの実施形態の例を説明する。このシステムは、クライアント装置1570、コンテンツ記憶装置1575、コンテキスト管理装置1580、および構成要素抽出装置1585とクローラー装置1590を含む。これらの装置は1または複数のネットワーク1599経由で通信する。クライアント装置1570は1または複数のCPU1571、1または複数の入出力インタフェース1572、およびストレージ/メモリ1573を含み、クライアント装置1570はCXMクライアント1500を含む。コンテンツ記憶装置1575は1または複数のCPU1576、1または複数の入出力インタフェース1577、ストレージ/メモリ1578とコンテンツリポジトリ1560を含む。コンテキスト管理装置1580は、1または複数のCPU1581、1または複数の入出力インタフェース1582、およびストレージ/メモリ1583を含む。また、コンテキスト管理装置1580は、CXMエンジン1510、テキストサービスエンジン1520、および検索エンジン1530を含む。構成要素抽出装置1585は、1または複数のCPU1586、1または複数の入出力インタフェース1587、およびストレージ/メモリ1588を含み、構成要素抽出装置1585はさらに構成要素抽出エンジン1550を含む。最後に、クローラー装置1590は、1または複数のCPU1591、1または複数の入出力インタフェース1592、およびストレージ/メモリ1593を含み、クローラー装置1590はまたクローラー1540を含む。
図16はコンテキスト管理システムの実施形態の例を説明する。このシステムは、CXMエンジン1610と4つのCXMクライアント1600とを含む。CXMクライアント1600は一定のコンピュータ環境のためにそれぞれ専門的である。EメールCXMクライアント1600AはEメールアプリケーションのための推奨を生成する。デスクトップCXMクライアント1600Bは例えば、インタフェースを操作するコンピューティング装置のコンテンツアイテムを表示するユーザインタフェースを使う場合、デスクトップ環境下の推奨を生成する。文書処理CXMクライアント1600Cは、文書処理アプリケーションのための推奨を生成する。最後に、ブラウザCXMクライアント1600Dはウェブブラウザのための推奨を生成する。システムの他の実施形態は他の専門的なクライアントを含んでもよい。
図17はコンテキスト管理システムのためにユーザインタフェース1700の実施形態の例を説明する。ユーザインタフェース1700はEメールヘッダーエリア1705、添付書類エリア1706、およびメッセージエリア1707を含む。ユーザインタフェースはまた提案エリア1710を含む。提案エリア1710には、添付書類エリア1706にリストされる添付書類のための推奨された記憶場所についてのアイコン1715を表示する。クライアント装置がEメールメッセージをオープンし、ユーザインタフェース1700中でメッセージを表示する場合、EメールクライアントのためのプラグインであるかもしれないCXMクライアントは、クエリをCXMエンジンに送信する。クエリは添付書類の名前を含み、また送信者の名前、すべての受信者の名前、Eメールのタイトル、およびEメールの本文などの他の情報を含んでもよい。さらに、クエリはまた、現在オープンされている全ての他のファイルの名前、最近オープンされたファイルのリスト、最近アクセスされた記憶場所のリスト、およびクライアント装置の上で現在実行されている他のアプリケーションのリストなどの、クライアント装置上の他のサービスまたはアプリケーションからの情報を含んでもよい。また、クエリは記憶場所の要求を含んでもよい。
CXMエンジンはクエリを受信し、クエリに基づいた推奨を生成する。CXMエンジンはそれから、この例においては記憶場所である推奨をCXMクライアントに送信する。CXMクライアントはそれから推奨された記憶場所を提案エリア1710に追加する。ユーザインタフェース1700により、ユーザは、例えば、推奨された記憶場所のアイコン1715へ添付書類のアイコンを「ドラッグ」することで、あるいは、推奨された記憶場所のアイコン1715上でタップやクリックをすることで、推奨された記憶場所に、添付書類を記憶することができる。
さらに、ユーザインタフェース1700は、クライアント装置が記憶場所に添付書類を記憶する場合に、添付書類をEメールから削除して添付書類を記憶場所へのリンクと置換するようにユーザがクライアント装置に命じることができるコントロール1720を含む。例えば、コントロール1720が起動され、下書き文書のアイコン1715上へと添付書類Memo.txtのアイコンをユーザがドラッグすると、クライアント装置は下書き文書の中にMemo.txtを記憶し、Memo.txtをEメールから削除し、Memo.txtへのリンクをEメールに追加する。添付書類を添付書類へのリンクと置換することは、Eメールを記憶するために必要とされているスペースを減らすことに役立ち得る。
図18はコンテキスト管理システムのためにユーザインタフェース1800の実施形態の例を説明する。ユーザインタフェース1800はEメールヘッダーエリア1805、添付書類エリア1806、およびメッセージエリア1807を含む。ユーザインタフェースはまた提案エリア1810を含み、提案エリア1810には、Eメールメッセージ(コンテンツアイテムの例である)のコンテンツとコンテキストとに基づいて推奨されたコンテンツアイテムのためのアイコン1815を表示する。クライアント装置が新しいEメールメッセージをオープンし、ユーザが情報をEメールに追加し始めるとき、EメールクライアントのためのプラグインであるかもしれないCXMクライアントはクエリをCXMエンジンに送信する。クエリは、例えば送信者の名前、すべての受信者の名前、Eメールのタイトル、Eメールの本文、Eメールのすべての添付書類のリスト、および添付書類のコンテンツの少なくともいくつかになど、Eメールに付加されている少なくともいくつかの情報を含む。さらに、クエリはまた、現在オープンされている全ての他のファイルの名前、最近オープンされたファイルのリスト、最近アクセスされた記憶場所のリスト、およびクライアント装置の上で現在実行されている他のアプリケーションのリストなどの、クライアント装置上の他のサービスまたはアプリケーションからの情報を含んでよい。また、クエリは特定の文書の要求を含むことがある。
CXMエンジンはクエリを受信し、クエリに基づいた推奨を生成する。CXMエンジンはそれから、この例においては文書である推奨をCXMクライアントに送信する。CXMクライアントはそれから、推奨された記憶場所を提案エリアに追加する。ユーザインタフェース1800により、ユーザは、例えば、添付書類エリア1806へ推奨された文書のアイコン1815を「ドラッグ」することにより、あるいは推奨された文書のアイコン1815上でタップやクリックをおこなうことにより、Eメールに添付書類を追加することができる。
さらに、ユーザインタフェース1800は、文書そのものを添付する代わりにリンクを選択された文書に添付するようにユーザがクライアント装置に命じることができるコントロール1820を含む。例えば、コントロール1820が起動され、添付書類Marketing Guidelinesのアイコン1815をユーザが選択すると、クライアント装置はMarketing GuidelinesへのリンクをEメールに追加し、添付書類エリア1806で添付書類の通知を表示する。さらに、ユーザインタフェースは検索エリア1825を含む。検索エリアは、検索エリア1825中に入力される一定の基準(例えば文書名、ファイル形式、変更日、およびファイルサイズ)を満たしている文書で推奨された文書を検索するようユーザがクライアント装置に命じることを可能にする。
図19Aと図19Bはユーザのコンテキストプロファイルの実施形態の例を説明する。図19Aはユーザ(すなわちユーザABC)のコンテキストプロファイルを示す。コンテキストプロファイルは、ユーザの業務、ユーザのコンピューティング装置の上でオープンされたアプリケーション、およびユーザが最近アクセスしたファイルについての情報を含む。いくつかの実施形態はこれらの例において示されたコンテキスト情報に加えて、あるいは代えて、他のコンテキスト情報を含んでもよい。例えば、いくつかの実施形態は、最近アクセスされたディレクトリ、セキュリティ特権、最近閉じたアプリケーション、同僚名、検索、最近のミーティング、現在のミーティング、最近のEメール、最近の協力、日付と時刻、ユーザが作業した以前の計画、ユーザの技能、ユーザの興味、またはユーザの過去のアクティビティを含んでもよい。
図19Bは、ユーザのアクティビティに応じたコンテキストプロファイル情報の変化を説明する。ユーザが文書処理アプリケーションを閉じて、「AL−189フラックスコンデンサビデオ」と名付けられるビデオを見るためにビデオ再生アプリケーションをオープンすると、「アプリケーション」セクションは、文書処理アプリケーションを削除し、ビデオ再生アプリケーションを追加することで変更される。また、「最近アクセスしたファイル」セクションは、「AL−189フラックスコンデンサビデオ」を追加するように変更される。この結果、コンテキストプロファイルは規則的に更新でき、それにより少なくともコンテキストプロファイルの一部分に基づいて生成される推奨の妥当性を改善できる。いくつかの実施形態において、セクションの中の情報はランキングに従って編成される。例えば、「アプリケーション」セクションは、何回アプリケーションが使われるか、またはどのアプリケーションが現在使用されているかに基づいて昇順にソートできる。従って、いくつかの実施形態では、文書処理アプリケーションが閉じられ、ビデオ再生アプリケーションがオープンされると、その両方が「アプリケーション」セクションの中で示されるけれども、文書処理アプリケーションはリストの中でビデオ再生アプリケーションより低いところに移動される。
図20Aと図20Bはコンテンツアイテムのコンテキストプロファイルの実施形態の例を説明する。図20Aにおけるコンテンツアイテムはテキスト文書であり、コンテキストプロファイルはテキスト文書についてのコンテキスト情報のいくらかを含む。例えば、コンテキストプロファイルは、文書の著者、文書が最後に閲覧された日付、ファイルサイズ、および文書と関連するプロジェクトを示す。図20Bにおけるコンテンツアイテムは画像である。コンテキストプロファイルは、著者、画像が最後に閲覧された日付、およびタグなどの画像についてのコンテキスト情報を含む。
上記で説明された装置、システム、および方法は、コンピュータ実行可能命令を読み、実行するよう構成1または複数のコンピューティング装置に上記で説明された動作を実現するために、コンピュータ実行可能命令を含む1または複数のコンピュータ可読媒体を提供することによって実施することができる。従って、システムまたは装置はコンピュータ実行可能命令を実行する際に上記説明した実施形態の動作を実行する。また、1または複数のシステムまたは装置の上のオペレーティングシステムは上記で説明された実施形態の動作の少なくともいくつかを実施することがある。従って、コンピュータ実行可能命令または、コンピュータ実行可能命令を含んでいる1または複数のコンピュータ可読媒体は実施形態を構成している。
どのような適用可能なコンピュータ可読媒体(例えば磁気ディスク(フロッピィディスク、ハードディスクを含む)、光ディスク(CD、DVD、ブルーレイディスクを含む)、光磁気ディスク、磁気テープ、および半導体メモリ(フラッシュメモリ、DRAM、SRAM、半導体ドライブ、EPROM、EEPROMを含む))でもコンピュータ実行可能命令のためのコンピュータ可読媒体として利用できる。コンピュータ実行可能命令は、装置に挿入された機能拡張ボードまたは装置と接続された機能拡張ユニットで提供されるコンピュータ可読記憶媒体で記憶することができ、機能拡張ボードまたはユニットで提供されたCPUは上記で説明された実施形態の動作の少なくともいくつかを実施することができる。
特許請求の範囲は、上記で説明された実施形態に制限されることはなく、様々な変形と均等な構成とを含む。また、ここに使われるように、「または」は、それが排他的な「または」であることを明確に示されるか、或いは文脈から示されるならば「または」は排他的な「または」を指すが、結合「または」は一般的には包含的な「または」を指す。