(57)【特許請求の範囲】
【請求項１】
複数のアプリケーションが使用するデータのインデックスを作成する方法であって、少なくとも部分的に、少なくとも１つのプロセッサを含む計算装置により実行され、
複数のアプリケーションのうちの第１のアプリケーションでデータオブジェクトを受信すること、
前記データオブジェクトをトークン化して、前記データオブジェクトからトークンを抽出すること、
前記データオブジェクトから抽出されたトークンのインデックスを作成することであって、前記インデックスは、前記複数のアプリケーションのそれぞれにより利用されるようにフォーマットされること、および
前記複数のアプリケーションがアクセス可能なデータベースに前記インデックスを記憶すること
を含み、
前記複数のアプリケーションは２つ以上のアプリケーションタイプを含む、方法。
【請求項２】
前記データオブジェクトは、少なくとも１つのプログラムタイプによりアクセスされるように構成されたプログラム固有データオブジェクトを含み、
前記プログラム固有データオブジェクトを共通形式データオブジェクトに変換することをさらに含む、請求項１に記載の方法。
【請求項３】
前記共通形式データオブジェクトは、
マークアップ言語、および
平文
のうちの少なくとも一方を含む、請求項２に記載の方法。
【請求項４】
前記共通形式データオブジェクトを前記データベースに記憶すること、
前記複数のアプリケーションのうちの第２のアプリケーションから、前記共通形式データオブジェクトに対する要求を受信すること、および
前記共通形式データオブジェクトを前記第２のアプリケーションに送信すること
をさらに含む、請求項２に記載の方法。
【請求項５】
前記プログラム固有データオブジェクトに関連するメタデータ、および
前記プログラム固有データオブジェクトに関連する隠しファイル
のうちの少なくとも一方を生成することをさらに含む、請求項２に記載の方法。
【請求項６】
前記プログラム固有データオブジェクトのデータ分類を実行すること、および
前記データ分類結果を、
前記共通形式データオブジェクト、および
前記インデックス
のうちの少なくとも一方に関連付けること
をさらに含む、請求項２に記載の方法。
【請求項７】
前記第１のアプリケーションは、
前記プログラム固有データオブジェクトを共通形式データオブジェクトに変換すること、
前記共通形式データオブジェクトをトークン化すること、
前記インデックスを作成すること、
前記プログラム固有データオブジェクトの前記データ分類を実行すること、および
言語検出を前記共通形式データオブジェクトに対して実行すること
のうちの少なくとも１つを実行する、請求項６に記載の方法。
【請求項８】
前記第１のアプリケーションは、第３のアプリケーションに、
前記プログラム固有データオブジェクトを共通形式データオブジェクトに変換すること、
前記共通形式データオブジェクトをトークン化すること、
前記インデックスを作成すること、
前記プログラム固有データオブジェクトの前記データ分類を実行すること、および
言語検出を前記共通形式データオブジェクトに対して実行すること
のうちの１つを実行するように命令する、請求項６に記載の方法。
【請求項９】
前記データオブジェクトに対する言語検出、
前記データオブジェクトに対するパターン検出、および
前記データオブジェクトに対するエンティティ抽出
のうちの少なくとも１つを実行することをさらに含む、請求項１に記載の方法。
【請求項１０】
前記複数のアプリケーションのうちの第２のアプリケーションから、前記インデックスに対する要求を受信すること、および
前記第２のアプリケーションによる前記インデックスへのアクセスを許可すること
をさらに含む、請求項１に記載の方法。
【請求項１１】
前記複数のアプリケーションタイプは、
検索エンジン、
アーカイブアプリケーション、
データ損失回避アプリケーション、
スパムフィルタリングアプリケーション、
ウィルス対策アプリケーション、
バックアップアプリケーション、
コンテンツ管理アプリケーション、
法遵守アプリケーション、および
電子情報開示アプリケーション
のうちの２つ以上を含む、請求項１に記載の方法。
【請求項１２】
複数のアプリケーションが使用するデータのインデックスを作成する方法であって、少なくとも部分的に、少なくとも１つのプロセッサを含む計算装置により実行され、
複数のアプリケーションのうちの第１のアプリケーションでデータオブジェクトを受信すること、
前記データオブジェクトをトークン化して、前記データオブジェクトからトークンを抽出すること、
前記データオブジェクトから抽出されたトークンのオブジェクトインデックスを作成することであって、前記オブジェクトインデックスは、前記複数のアプリケーションのそれぞれにより利用されるようにフォーマットされること、および
複数のデータオブジェクトに関連するインデックス情報を含むマスタインデックスに前記オブジェクトインデックスを記憶することであって、前記マスタインデックスは、２つ以上のアプリケーションタイプを含む前記複数のアプリケーションによりアクセス可能であること
を含む、方法。
【請求項１３】
前記マスタインデックスは、前記複数のアプリケーションのうちの１つまたは複数から受信する複数のオブジェクトインデックスを含む、請求項１２に記載の方法。
【請求項１４】
複数のアプリケーションが使用するデータのインデックスを作成するシステムであって、
複数のアプリケーションのうちの第１のアプリケーションでデータオブジェクトを受信するようにプログラムされた通信モジュールと、
前記データオブジェクトをトークン化して、前記データオブジェクトからトークンを抽出するようにプログラムされたトークン化モジュールと、
前記データオブジェクトから抽出されたトークンのインデックスを作成するようにプログラムされたインデックス作成モジュールであって、前記インデックスは、前記複数のアプリケーションのそれぞれにより利用されるようにフォーマットされる、インデックス作成モジュールと、
前記インデックスを記憶するデータベースであって、２つ以上のアプリケーションタイプを含む前記複数のアプリケーションによりアクセス可能である、データベースと
を備える、システム。
【請求項１５】
前記データオブジェクトは、少なくとも１つのプログラムタイプによりアクセスされるように構成されたプログラム固有データオブジェクトを含み、前記システムは、
前記プログラム固有データオブジェクトを共通形式データオブジェクトに変換するようにプログラムされた変換モジュールと、
言語検出を前記共通形式データオブジェクトに対して実行するようにプログラムされた言語検出モジュールと、
前記プログラム固有データオブジェクトのデータ分類を実行するようにプログラムされた分類モジュールと、
データアクセスを許可されたアプリケーションに制限するようにプログラムされたセキュリティモジュールと
をさらに備える、請求項１４に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
システム上のコンピュータファイルからデータを収集しインデックスを作成するいくつかのソフトウェアアプリケーションがある。例えば、検索エンジンは、多くの場合、複数のファイルからのデータのインデックスを作成し、インデックス作成されたデータを利用して、ファイル内の特定のファイルコンテンツを高速検索する。データ損失回避、スパムフィルタリング、コンテンツ管理、アーカイブ、およびバックアップの目的で使用される様々なアプリケーションは、システム上のファイルのインデックスも生成し利用し得る。多くの場合、ファイルインデックスを使用する各アプリケーションは、他のプログラムとは別個にファイルインデックスを生成しなければならない。したがって、システム上のいくつかの異なるアプリケーションのそれぞれが、同じプログラムファイルのインデックスを作成し得る。
【発明の概要】
【発明が解決しようとする課題】
【０００２】
ファイルインデックスは、検索等のプロセスを効率的に行えるようにし得るが、ファイルインデックスの作成には、多くの場合、大量の処理リソースが使用される。多くのファイルは、インデックスを作成するために直接、構文解析することができない。むしろ、ファイルをまず、ＨＴＭＬまたは平文等の共通形式に変換しなければならない。したがって、様々なインデックス作成プログラムを実行するシステムは、様々なシステムファイルを異なるアプリケーションで複数回、インデックス作成する時間およびリソースを無駄にし得る。インデックス作成プロセスは、システム帯域幅および入／出力性能にも大きな負担をかけ得る。したがって、本開示は、システム上の複数のアプリケーションにより実行されるインデックス作成機能を統合するシステムおよび方法に対する必要性を特定し、その必要性に対処する。
【課題を解決するための手段】
【０００３】
さらに詳細に後述するように、本開示は一般に、複数のアプリケーションが使用するデータのインデックスを作成するシステムおよび方法に関する。特定の実施形態によれば、複数のアプリケーションが使用するデータのインデックスを作成するコンピュータにより実施される方法は、複数のアプリケーションのうちの第１のアプリケーションでデータオブジェクトを受信すること、データオブジェクトをトークン化して、データオブジェクトからトークンを抽出すること、データオブジェクトから抽出されたトークンのインデックスを作成すること（インデックスは、複数のアプリケーションのそれぞれにより利用されるようにフォーマットされる）、および複数のアプリケーションがアクセス可能なデータベースにインデックスを記憶することを含み得る。複数のアプリケーションは、２つ以上のアプリケーションタイプを含み得る。共通形式データオブジェクトは、マークアップ言語（例えば、ＨＴＭＬもしくはＸＭＬ）および／または平文のうちの少なくとも１つを含み得る。
【０００４】
いくつかの実施形態において、データオブジェクトは、少なくとも１つのプログラムタイプによりアクセスされるように構成されたプログラム固有データを含み得、本方法は、プログラム固有データオブジェクトを共通形式データオブジェクトに変換することをさらに含み得る。本方法は、複数のアプリケーションのうちの第２のアプリケーションから、インデックス要求を受信すること、および第２のアプリケーションによるデータベースへのアクセスを許可することも含み得る。
【０００５】
本方法は、プログラム固有データオブジェクトに関連するメタデータおよび／またはプログラム固有データオブジェクトに関連する隠しファイルのうちの少なくとも１つを生成することをさらに含み得る。本方法は、プログラム固有データオブジェクトのデータ分類を実行すること、ならびにデータ分類結果を共通形式データオブジェクトおよび／またはインデックスのうちの少なくとも一方に関連付けることも含み得る。少なくとも１つの例では、データ分類結果を共通形式データオブジェクトに関連付けることは、データ分類結果を参照するデータタグを作成することを含み得る。いくつかの例では、データ分類を実行することは、インデックスメタデータ、インデックスコンテンツ、抽出されたパターン、および／または抽出されたエンティティのうちの少なくとも１つに基づいて、プログラム固有データオブジェクト内のデータを分類することを含み得る。
【０００６】
いくつかの実施形態によれば、本方法は、プログラム固有データオブジェクトのデータ分類に基づいて少なくとも１つのポリシーを実行することをさらに含み得る。少なくとも１つのポリシーは、スパムポリシー、ウィルス対策ポリシー、データ損失回避ポリシー、知的財産漏出回避ポリシー、アーカイブポリシー、バックアップポリシー、コンテンツ管理ポリシー、法遵守ポリシー、および／または電子情報開示ポリシーのうちの少なくとも１つを含み得る。いくつかの例では、複数のアプリケーションタイプは、検索エンジン、アーカイブアプリケーション、データ損失回避アプリケーション、スパムフィルタリングアプリケーション、ウィルス対策アプリケーション、バックアップアプリケーション、コンテンツ管理アプリケーション、法遵守アプリケーション、および／または電子情報開示アプリケーションのうちの２つ以上を含み得る。
【０００７】
様々な実施形態によれば、第１のアプリケーションは、プログラム固有データオブジェクトを共通形式データオブジェクトに変換すること、共通形式データオブジェクトをトークン化すること、インデックスを作成すること、プログラム固有データオブジェクトのデータ分類を実行すること、および／または共通形式データオブジェクトに対して言語検出を実行することのうちの少なくとも１つを実行し得る。いくつかの例では、第１のアプリケーションは、プログラム固有データオブジェクトを共通形式データオブジェクトに変換すること、共通形式データオブジェクトをトークン化すること、インデックスを作成すること、プログラム固有データオブジェクトのデータ分類を実行すること、および／または共通形式データオブジェクトに対して言語検出を実行することのうちの少なくとも１つを実行するように第３のアプリケーションに命令し得る。
【０００８】
様々な例では、本方法は、データオブジェクトの言語検出、データオブジェクトのパターン検出、および／またはデータオブジェクトのエンティティ抽出のうちの少なくとも１つを実行することを含み得る。本方法は、複数のアプリケーションのうちの第２のアプリケーションから、インデックス要求を受信すること、および第２のアプリケーションによるインデックスへのアクセスを許可することをさらに含み得る。
【０００９】
少なくとも１つの実施形態では、複数のアプリケーションが使用するデータのインデックスを作成するコンピュータにより実施される方法は、複数のアプリケーションのうちの第１のアプリケーションでデータオブジェクトを受信すること、共通形式データオブジェクトをトークン化して、データオブジェクトからトークンを抽出すること、データオブジェクトから抽出されたトークンのオブジェクトインデックスを作成すること（オブジェクトインデックスは複数のアプリケーションのそれぞれが利用するためにフォーマットされる）、および複数のデータオブジェクトに関連するインデックス作成情報を含むマスタインデックスにオブジェクトインデックスを組み込むこと（マスタインデックスは複数のアプリケーションによりアクセス可能である）を含み得る。複数のアプリケーションは、２つ以上のアプリケーションタイプを含み得る。少なくとも１つの例では、マスタインデックスは、複数のアプリケーションのうちの２つ以上から受信した複数のオブジェクトインデックスを含み得る。
【００１０】
いくつかの実施形態では、複数のアプリケーションが使用するデータのインデックスを作成するシステムは、複数のアプリケーションのうちの第１のアプリケーションでデータオブジェクトを受信するようにプログラムされた通信モジュールを含み得る。このシステムは、共通形式データオブジェクトをトークン化して、データオブジェクトからトークンを抽出するようにプログラムされたトークン化モジュールおよびデータオブジェクトから抽出されたトークンのインデックスを作成するようにプログラムされたインデックス作成モジュールも含み得る。本システムは、インデックスを記憶するデータベースをさらに含み得、このデータベースは複数のアプリケーションによりアクセス可能である。
【００１１】
いくつかの例では、本システムは、プログラム固有データオブジェクトを共通形式データオブジェクトに変換するようにプログラムされた変換モジュール、共通形式データオブジェクトに対して言語検出を実行するようにプログラムされた言語検出モジュール、プログラム固有データオブジェクトのデータ分類を実行するようにプログラムされた分類モジュール、およびデータアクセスを許可されたアプリケーションに制限するようにプログラムされたセキュリティモジュールも含み得る。
【００１２】
添付図面にいくつかの例示的な実施形態を示し、添付図面は本明細書の一部である。以下の説明と併せて、これら図面は本開示の様々な原理を実証し説明する。
【図面の簡単な説明】
【００１３】
【図１】複数のアプリケーションが使用するデータのインデックスを作成する例示的なシステムのブロック図である。
【図２】複数のアプリケーションが使用するデータのインデックスを作成する別の例示的なシステムのブロック図である。
【図３】複数のアプリケーションが使用するデータのインデックスを作成する別の例示的なシステムのブロック図である。
【図４】複数のアプリケーションが使用するデータのインデックスを作成する別の例示的なシステムのブロック図である。
【図５】複数のアプリケーションが使用するデータのインデックスを作成する例示的な方法の流れ図である。
【図６】複数のアプリケーションが使用するデータのインデックスを作成する別の例示的な方法の流れ図である。
【図７】本明細書において説明し、かつ／または示される実施形態のうちの１つまたは複数を実施可能な例示的な計算システムのブロック図である。
【図８】本明細書において説明され、かつ／または示される実施形態のうちの１つまたは複数を実施可能な例示的な計算ネットワークのブロック図である。
【発明を実施するための形態】
【００１４】
図面全体を通して、同一の参照文字および説明は、同様であるが必ずしも同一である必要はない要素を示す。本明細書において説明される例示的な実施形態には様々な変更および代替の形態が可能であるが、特定の実施形態が例として図面に示されており、それら特定の実施形態について本明細書において詳細に説明する。しかし、本明細書において説明される例示的な実施形態は、開示される特定の形態への限定を意図しない。むしろ、本開示は、添付の特許請求の範囲内に入るすべての変更、均等物、および代替を包含する。
【００１５】
さらに詳細に後述するように、本開示は一般に、複数のアプリケーションが使用するデータのインデックスを作成する様々な方法およびシステムに関する。本開示の実施形態は、システム内の複数のアプリケーションのうちの第１のアプリケーションが、データオブジェクト（例えば、ＰＤＦファイル、ＤＯＣファイル、ＸＬＳファイル、ＰＰＴファイル、またはＭＳＧファイル）のインデックスを作成できるようにし得る。データオブジェクトのインデックスは、システム内の複数のアプリケーションのそれぞれがアクセス可能であり、システム内の複数のアプリケーションのそれぞれが利用可能なデータベースに記憶し得る。したがって、複数のアプリケーションのそれぞれがデータオブジェクトのインデックスを別個に生成する必要があることに代えて、本明細書において開示される方法およびシステムは、データオブジェクトに遭遇した第１のアプリケーションが、複数のアプリケーションのそれぞれがアクセス可能なインデックスを生成できるようにし得る。
【００１６】
例えば、第１のアプリケーションは、プログラム固有データオブジェクトを受信し、プログラム固有データオブジェクトを共通形式データオブジェクト（例えば、ＨＴＭＬ、ＸＭＬ、または平文ドキュメント）に変換し得る。次に、第１のアプリケーションは、共通形式データオブジェクトをトークン化し、共通形式データオブジェクトから抽出されたトークンのインデックスを作成し得る（例えば、ワード、フィールド、および／またはメタデータタグ）。インデックスは、複数のアプリケーション（例えば、検索エンジン、データ損失回避アプリケーション、スパムフィルタリングアプリケーション、ウィルス対策アプリケーション、コンテンツ管理アプリケーション、アーカイブアプリケーション、および／またはバックアップアプリケーション）のそれぞれが使用するようにフォーマットし得る。次に、インデックスを、複数の異なるアプリケーションがアクセス可能なデータベースに記憶し得る。
【００１７】
以下に、図１〜図４を参照して、複数のアプリケーションが使用するデータのインデックスを作成する例示的なシステムの詳細な説明を提供する。対応するコンピュータにより実施される方法の詳細な説明も、図５および図６に関連して提供される。さらに、本明細書において説明される実施形態のうちの１つまたは複数を実施可能な例示的な計算システムおよびネットワークアーキテクチャの詳細な説明も図７および図８のそれぞれに関連して提供する。
【００１８】
図１は、複数のアプリケーションが使用するデータのインデックスを作成する例示的なシステム１００のブロック図である。例示的なシステム１００は、１つまたは複数のタスクを実行する１つまたは複数のモジュール１１０を含み得る。図１に示すように、モジュール１１０は、通信モジュール１１２、セキュリティモジュール１１３、変換モジュール１１４、言語検出モジュール１１５、トークン化モジュール１１６、インデックス作成モジュール１１７、分類モジュール１１８、およびデータ共有モジュール１１９を含み得る。
【００１９】
通信モジュール１１２は、少なくとも１つのプログラムタイプによりアクセスされるように構成されたプログラム固有データオブジェクト等のデータオブジェクトを受信するようにプログラムし得る。セキュリティモジュール１１３は、セキュリティポリシーに基づいて、インデックスおよび分類データ等のデータに対する要求をフィルタリングして、関連するデータおよびメタデータのみが許可されたアプリケーションおよびユーザに転送されることを保証するようにプログラムし得る。変換モジュール１１４は、データオブジェクトを共通形式データオブジェクトに変換するようにプログラムし得る。言語検出モジュール１１５は、データオブジェクトに言語検出を実行するようにプログラムし得る。トークン化モジュール１１６は、言語検出後に、データオブジェクトからトークンを抽出することにより、データオブジェクトをトークン化するようにプログラムし得る。インデックス作成モジュール１１７は、データオブジェクトから抽出されたトークンのインデックスを作成するようにプログラムし得る。分類モジュール１１８は、データオブジェクトのデータ分類を実行するようにプログラムし得る。データ共有モジュール１１９は、複数のアプリケーションとインデックスを共有するようにプログラムし得る。図１のモジュール１１０のうちの１つまたは複数は、別個の要素として示されるが、単一のモジュールまたはアプリケーションの部分を表してもよい。
【００２０】
特定の実施形態では、図１のモジュール１１０のうちの１つまたは複数は、計算装置により実行された場合、計算装置に１つまたは複数のタスクを実行させ得る１つまたは複数のソフトウェアアプリケーションまたはプログラム（例えば、検索ソフトウェア、データ損失回避ソフトウェア、スパムフィルタリングソフトウェア、コンテンツ管理ソフトウェア、アーカイブソフトウェア、および／またはバックアップソフトウェア）を表し得る。例えば、さらに詳細に後述するように、モジュール１１０のうちの１つまたは複数は、図２に示されるアプリケーション（すなわち、第１のアプリケーション２１２、第２のアプリケーション２２２、および／またはデータベースサブシステム２３０）、図３に示されるアプリケーションおよび装置（すなわち、第１のアプリケーション３１２、第２のアプリケーション３２２、第３のアプリケーション３３２、および／またはデータベースサブシステム３４０）、図４に示されるアプリケーションおよび装置（すなわち、第１のアプリケーション４１２、第２のアプリケーション４２２、および／または企業アプリケーション４３２）、図７の計算システム７１０、ならびに／あるいは図８の例示的なネットワークアーキテクチャ８００の部分等の１つまたは複数の計算アプリケーションおよび／または装置で実行されるように構成された記憶されたソフトウェアモジュールを表し得る。図１のモジュール１１０のうちの１つまたは複数は、１つまたは複数のタスクを実行するように構成された１つまたは複数の専用コンピュータのすべてまたは部分も表し得る。
【００２１】
図１に示すように、例示的なシステム１００は１つまたは複数のデータベース１２０も含み得る。データベース１２０は、単一のデータベースもしくは計算装置の部分または複数のデータベースもしくは計算装置を表し得る。示されるように、データベース１２０は、データオブジェクトのインデックスを記憶するインデックスデータベース１２２を含み得る。データベース１２０は、共通形式データオブジェクト等のデータオブジェクトを記憶するデータオブジェクトデータベース１２４およびデータオブジェクトに関連する分類データを記憶する分類データベース１２６も記憶し得る。いくつかの実施形態では、データベースのうちの１つまたは複数はインデックス自体であってもよい。
【００２２】
図１のデータベース１２０は、１つまたは複数の計算装置の部分を表し得る。例えば、データベース１２０は、図２のデータベースサブシステム２３０の部分、図３のデータベースサブシステム３４０の部分、図４の企業データベース４３４の部分、図７の計算システム７１０の部分、および／または図８の例示的なネットワークアーキテクチャ８００の部分を表し得る。あるいは、図１のデータベース１２０は、図２のデータベースサブシステム２３０、図３のデータベースサブシステム３４０、図４の企業データベース４３４、図７の計算システム７１０、および／または図８の例示的なネットワークアーキテクチャ８００の部分等の、計算装置がアクセス可能な物理的に別個の１つまたは複数の装置を表し得る。
【００２３】
少なくとも１つの実施形態では、システム１００のすべてまたは部分は、物理的に単一の計算装置で実行されるように構成し得る。例えば、システム１００のすべてまたは部分は、単一の計算装置で実行されるように構成された複数の異なるアプリケーションを含み得る。さらなる実施形態では、システム１００は、複数のネットワーク化された計算装置等の複数の計算装置で実行されるように構成し得る。
【００２４】
いくつかの実施形態では、例示的なシステム１００のすべてまたは部分は、図２に示すネットワークベースのシステム２００の部分を表し得る。図２は、複数のアプリケーションが使用するデータのインデックスを作成する例示的なシステム２００のブロック図である。この図に示すように、例示的なシステム２００は、第２の計算サブシステム２２０と通信する第１の計算サブシステム２１０と、ネットワーク２４０を介して接続されたデータベースサブシステム２３０とを含み得る。いくつかの実施形態では、例示的なシステム２００のすべてまたは部分は、クラウド計算環境の部分を表し得る。クラウド計算環境は、インターネットを介して様々なサービスおよびアプリケーションを提供し得る。
【００２５】
第１の計算サブシステム２１０および第２の計算サブシステム２２０は、１つまたは複数の計算装置に配置し得る。例えば、第１の計算サブシステム２１０および第２の計算サブシステム２２０は、単一の計算装置に配置し得る。さらなる例では、第１の計算サブシステム２１０は第１の計算装置に配置し、第２の計算サブシステム２２０は、第１の計算装置とは別個の第２の計算装置に配置し得る。第１の通信サブシステム２１０および／または第２の通信サブシステム２２０を含む計算装置は一般に、例えば、ラップトップ、デスクトップ、サーバ、埋め込みシステム、これらのうちの１つもしくは複数の組み合わせ、図７の例示的な計算システム、または任意の他の適した計算装置等のコンピュータ実行可能命令を読み取り可能な任意の種類または形態の計算装置を表す。
【００２６】
様々な実施形態によれば、データベースサブシステム２３０は、データ記憶サービスおよび／またはデータ共有サービスを提供可能な任意の種類または形態の計算装置を表し得る。データベースサブシステム２３０の例としては、様々な種類の計算装置（例えば、第１の計算サブシステム２１０および第２の計算サブシステム２２０に関して列挙されたもの）、特定のソフトウェアアプリケーションを実行するように構成されたアプリケーションサーバ、ならびに／あるいは様々なデータベースサービスを提供するように構成されたデータベースサーバが挙げられるが、これらに限定さない。いくつかの例では、データベースサブシステム２３０は、第１の計算サブシステム２１０および／または第２の計算サブシステム２２０とは別個の計算装置に配置し得る。さらなる例では、データベースサブシステム２３０は、第１の計算サブシステム２１０および／または第２の計算サブシステム２２０と同じ計算装置に配置し得る。
【００２７】
ネットワーク２４０は一般に、通信またはデータ転送に役立つことが可能な任意の媒体またはアーキテクチャを表す。ネットワーク２４０の例としては、イントラネット、広域ネットワーク（「ＷＡＮ」）、ローカルエリアネットワーク（「ＬＡＮ」）、パーソナルエリアネットワーク（「ＰＡＮ」）、インターネット、電力線通信（「ＰＬＣ」）、セルラネットワーク（例えば、ＧＳＭネットワーク）、図８の例示的なネットワークアーキテクチャ８００の少なくとも部分、またはこれらと同様のものが挙げられるが、これらに限定されない。ネットワーク２４０は、無線接続および／または有線接続を使用する通信またはデータ転送に役立ち得る。一実施形態では、ネットワーク２４０は、第１の計算サブシステム２１０、第２の計算サブシステム２２０、および／またはデータベースサブシステム２３０の間の通信に役立ち得る。
【００２８】
図２に示すように、第１の計算サブシステム２１０は第１のアプリケーション２１２を含み、第２の計算サブシステム２２０は第２のアプリケーション２２２を含み得る。第１のアプリケーション２１２および第２のアプリケーション２２２は一般に、様々なコンピュータ実行可能命令を実行可能な任意の種類のソフトウェアアプリケーションを表す。第１のアプリケーション２１２および第２のアプリケーション２２２の例としては、検索エンジン、アーカイブアプリケーション、バックアップアプリケーション、データ損失回避アプリケーション、スパムフィルタリングアプリケーション、ウィルス対策アプリケーション、法遵守アプリケーション、電子情報開示アプリケーション、コンテンツ管理アプリケーション、および／またはインデックス作成機能を実行可能なアプリケーション等の任意の他の適したアプリケーションが挙げられるが、これらに限定されない。
【００２９】
少なくとも１つの実施形態によれば、第１のアプリケーション２１２は、通信モジュール１１２（ａ）、セキュリティモジュール１１３（ａ）、変換モジュール１１４、トークン化モジュール１１６、インデックス作成モジュール１１７、および分類モジュール１１８（ａ）を含み得る。通信モジュール１１２（ａ）は、第１の計算サブシステム２１０および／またはネットワーク２４０に接続されたアプリケーション等の１つまたは複数のアプリケーションにデータを送信し、かつ／または１つまたは複数のアプリケーションからデータを受信し得る。いくつかの例では、通信モジュール１１２（ａ）は、プログラム固有のデータファイルおよび／またはドキュメント（例えば、ＤＯＣファイル、ＰＤＦファイル、ＸＬＳファイル、ＰＰＴファイル、および／またはＭＳＧファイル）等の様々なデータオブジェクトを送信し、かつ／または受信し得る。通信モジュール１１２（ａ）が送信し、かつ／または受信し得るデータオブジェクトの例としては、文書処理ファイル、ポータブルドキュメントファイル、スプレッドシートファイル、インスタントメッセージファイル、テキストメッセージファイル、マルチメディアプレゼンテーションファイル、電子メールファイル、テキストファイル、ハイパーテキストファイル、および／または任意の他の適したファイルタイプが挙げられるが、これらに限定されない。
【００３０】
通信モジュール１１２（ａ）は、例えば、文書処理プログラム、ポータブルドキュメント閲覧および／または編集プログラム、スプレッドシートプログラム、インスタントメッセージプログラム、テキストメッセージプログラム、マルチメディアプレゼンテーションプログラム、電子メールプログラム、ならびに／あるいは任意の他の適したソフトウェアプログラムタイプ等の少なくとも１つのプログラムタイプがアクセス可能なように構成されたプログラム固有データオブジェクトを受信するようにプログラムし得る。少なくとも１つの実施形態によれば、第１のアプリケーション２１２は、システム２００内の第２のアプリケーション２２２等の他のアプリケーションよりも先に、プログラム固有データオブジェクトを受信し得る。
【００３１】
いくつかの例では、第１のアプリケーション２１２は、プログラム固有データオブジェクトが、システム２００内の第２のアプリケーション２２２等の別のアプリケーションにより以前に受信され、インデックス作成され、かつ／または記憶されたか否かを判断し得る。例えば、第１のアプリケーション２１２は、プログラム固有データオブジェクトに関連する、インデックス付きデータ等のデータを要求する要求をデータベースサブシステム２３０のデータ共有モジュール１１９に送信し得る。第１のアプリケーション２１２は、プログラム固有データオブジェクトに関連する要求されたデータが、データベースサブシステム２３０またはシステム２００の他のロケーションに記憶されていないことを示す応答をデータベースサブシステム２３０から受信する場合、プログラム固有データオブジェクトのインデックスを作成することに進み得る。第１のアプリケーション２１２は、名称、ロケーション、サイズ、作成日、最後に更新された日付け、および／またはオブジェクトの指紋等のオブジェクトに関連するメタデータを使用して、以前に見たことがあるオブジェクトであるか否かを判断し得る。指紋は、ＭＤ５もしくはＳＨＡ−１等のハッシュもしくはチェックサム、または任意の他の適したハッシュアルゴリズムからなり得る。
【００３２】
変換モジュール１１４は、プログラム固有データオブジェクトを共通形式データオブジェクトに変換し得る。例えば、変換モジュール１１４は、ＤＯＣファイル、ＰＤＦファイル、ＸＬＰファイル、ＰＰＴファイル、および／またはＭＳＧファイル等のプログラム固有データオブジェクトをＨＴＭＬ、ＸＭＬ、および／またはテキストファイル等の共通形式データオブジェクトに変換し得る。言語検出モジュール１１５は、言語検出を共通形式データオブジェクトに対して実行し得る。次に、トークン化モジュール１１６は、共通形式データオブジェクトをトークン化し得る。トークン化は、共通形式データオブジェクト内のワードおよび／または他の有意単位（例えば、タグ、漢字、および／またはサブワード）等のトークンの識別および抽出を含み得る。いくつかの例では、共通形式データオブジェクトのトークン化は、共通形式データオブジェクト内で識別された様々なワードのステミングも含み得る。いくつかの例では、言語検出および／またはトークン化は、プログラム固有データオブジェクトに対して実行し得る。
【００３３】
インデックス作成モジュール１１７は続けて、トークン化モジュール１１６により抽出されたトークン等の、共通形式データオブジェクトおよび／またはプログラム固有データオブジェクトから抽出されたトークンのインデックスを作成し得る。インデックス作成モジュール１１７により作成されたインデックスは、複数の異なるアプリケーションタイプがそのインデックスを利用できるようにフォーマットし得る。例えば、インデックスは、検索エンジン、アーカイブアプリケーション、データ損失回避アプリケーション、スパムフィルタリングアプリケーション、ウィルス対策アプリケーション、コンテンツ管理アプリケーション、法遵守アプリケーション、電子情報開示アプリケーション、および／またはシステム２００に記憶されたデータオブジェクトのインデックスを利用するように構成された任意の他の適したアプリケーションタイプのうちの１つまたは複数により利用されるようにフォーマットし得る。様々な実施形態によれば、分類モジュール１１８（ａ）は、プログラム固有データオブジェクトのデータ分類を実行し得る。分類データは、１つまたは複数のアプリケーションにより、データオブジェクトを容易に識別し、かつ／または分類するために使用され得る。少なくとも１つの実施形態によれば、インデックス作成前に、データオブジェクトの何等かの分類を実行し得る。例えば、データオブジェクトのインデックス作成前に、分類およびパターン検出に利用される正規表現（例えば、ＲＥＧＥＸ）を実行し得る。さらなる例では、パターン検出およびエンティティ抽出は、インデックス作成前にデータに対して実行してもよい。
【００３４】
様々な実施形態によれば、第２のアプリケーション２２２は、通信モジュール１１２（ｂ）、セキュリティモジュール１１３（ｂ）、および分類モジュール１１８（ｂ）を含み得る。通信モジュール１１２（ｂ）は、第２の計算サブシステム２２０および／またはネットワーク２４０に接続されたアプリケーション等の１つまたは複数のアプリケーションにデータを送信し、かつ／または１つまたは複数のアプリケーションからデータを受信し得る。分類モジュール１１８（ｂ）は、通信モジュール１１２（ｂ）により受信されたデータのデータ分類を実行し得る。少なくとも１つの例によれば、第２のアプリケーション２２２は、第１のアプリケーション２１２を参照して上述したものと同様の変換モジュール、言語検出モジュール、トークン化モジュール、およびインデックス作成モジュールも含み得る。いくつかの例では、第２のアプリケーション２２２は、第１のアプリケーション２１２よりも先にプログラム固有データオブジェクトを受信し得る。そのような例では、第２のアプリケーション２２２は、プログラム固有データオブジェクトを共通形式データオブジェクトに変換し、言語検出を共通形式データオブジェクトに実行し、共通形式データオブジェクトをトークン化し、かつ／または共通形式データオブジェクトのインデックスを作成し得る。
【００３５】
データベースサブシステム２３０は、インデックスデータベース１２２、データオブジェクトデータベース１２４、分類データベース１２６、および／またはデータ共有モジュール１１９を含み得る。インデックスデータベース１２２は、例えば、インデックス作成モジュール１１７により作成されたデータオブジェクトのインデックス等の１つまたは複数のデータ要素インデックスを記憶し得る。少なくとも１つの実施形態によれば、インデックスデータベース１２２は、２つ以上のデータオブジェクトインデックスをまとめたものを含むマスタインデックスを含み得る。
【００３６】
データオブジェクトデータベース１２４は、プログラム固有データオブジェクトおよび／または共通形式データオブジェクトを記憶し得る。分類データベース１２６は、１つまたは複数のデータオブジェクトに関連する分類情報を記憶し得る。いくつかの実施形態では、インデックスデータベース１２２、データオブジェクトデータベース１２４、および／または分類データベース１２６を単一のインデックスに含め得る。データ共有モジュール１１９は、インデックス情報、分類情報、および／またはデータオブジェクトを、例えば、第１のアプリケーション２１２および／または第２のアプリケーション２２２等のネットワーク２４０に接続された１つまたは複数のアプリケーションと共有し得る。少なくとも１つの例によれば、データベースサブシステム２３０に記憶されるデータは、１つまたは複数のデータオブジェクトに関連し得る。
【００３７】
上述したように、図１の例示的なシステム１００は、様々な方法で構成し得る。例えば、例示的なシステム１００のすべてまたは部分は、図３に示す例示的なネットワークに基づくシステム３００の部分を表し得る。図３は、複数のアプリケーションが使用するデータのインデックスを作成する例示的なネットワークに基づくシステム３００のブロック図である。この図に示されるように、例示的なシステム３００は、ネットワーク３５０を介して接続された第１の計算サブシステム３１０、第２の計算サブシステム３２０、およびデータベースサブシステム３４０を含み得る。ネットワーク３５０の例には、様々な種類のネットワーク（図２のネットワーク２４０に関して列挙されたもの等）が含まれるが、これらに限定されない。第１の計算サブシステム３１０、第２の計算サブシステム３２０、およびデータベースサブシステム３４０は、１つまたは複数の計算装置に配置し得る。例えば、第１の計算サブシステム３１０、第２の計算サブシステム３２０、および／またはデータベースサブシステム３４０は、単一の計算装置に配置してもよく、または２つ以上の別個の計算装置に配置してもよい。
【００３８】
様々な実施形態によれば、第１の計算サブシステム３１０は、通信モジュール１１２（ａ）と、セキュリティモジュール１１３（ａ）と、分類モジュール１１８（ａ）とを含む第１のアプリケーション３１２を含み、第２の計算サブシステム３２０は、通信モジュール１１２（ｂ）と、セキュリティモジュール１１３（ｂ）と、分類モジュール１１８（ｂ）とを含む第２のアプリケーション３２２を含み得る。いくつかの例では、２つ以上のアプリケーションおよび／またはデータベース（例えば、デスクトップ検索アプリケーション、アーカイブアプリケーション、バックアップアプリケーション、および／またはデータ損失回避アプリケーション）を、パーソナルデスクトップコンピュータ等の単一の計算装置に配置し得る。例えば、図３に示すように、第２の計算サブシステム３２０は、第３のアプリケーション３３２も含み得る。様々な実施形態によれば、第３のアプリケーション３３２は、通信モジュール１１２（ｃ）、セキュリティモジュール１１３（ｂ）、変換モジュール１１４、言語検出モジュール１１５、トークン化モジュール１１６、インデックス作成モジュール１１７、および分類モジュール１１８（ｃ）を含み得る。データベースサブシステム３４０は、インデックスデータベース１２２、データオブジェクトデータベース１２４、分類データベース１２６、およびデータ共有モジュール１１９を含み得る。第１の計算サブシステム３１０、第２の計算サブシステム３２０、およびデータベースサブシステム３４０の例には、様々な種類の計算装置（図２の第１の計算サブシステム２１０、第２の計算サブシステム２２０、およびデータベースサブシステム２３０に関して列挙したもの等）が挙げられるが、これらに限定されない。
【００３９】
少なくとも１つの実施形態によれば、第１のアプリケーション３１２は、第２のアプリケーション３２２または第３のアプリケーション３３２等のシステム３００内の他のアプリケーションよりも先にプログラム固有データオブジェクトを受信し得る。例えば、第１のアプリケーション３１２の通信モジュール１１２（ａ）は、プログラム固有データオブジェクトを受信し得る。プログラム固有データオブジェクトを受信した後、第１のアプリケーション３１２は、プログラム固有データオブジェクトを共通形式データオブジェクトに変換し、データオブジェクトの言語検出を実行し、データオブジェクトをトークン化し、データオブジェクトのインデックスを作成し、かつ／またはデータオブジェクトを分類するように、別のアプリケーションに命令し得る。例えば、第１のアプリケーション３１２は、プログラム固有データオブジェクトを共通形式データオブジェクトに変換し、データオブジェクトに言語検出を実行し、データオブジェクトをトークン化し、データオブジェクトから抽出されたデータのインデックスを作成し、次に、オブジェクト内のデータに基づいて様々な分類をデータオブジェクトに割り当てるように、第３のアプリケーション３３２に命令し得る。
【００４０】
第３のアプリケーション３３２により生成されるインデックス付きデータは、データベースサブシステム３４０に記憶し得る。共通形式データオブジェクト、分類データ、および／または第３のアプリケーション３３２により生成される任意の他のデータも、データベースサブシステム３４０に記憶し得る。データベースサブシステム３４０は、第３のアプリケーション３３２により生成されたデータオブジェクトのインデックス等のインデックスに対する要求を第２のアプリケーション３２２（またはシステム３００内の１つもしくは複数の他のアプリケーション）から受信し得る。いくつかの実施形態では、データベースサブシステム３４０は、例えば、分類データおよび／またはプログラム固有データオブジェクトの共通形式データオブジェクト表現を含むインデックスおよび／またはデータオブジェクトに関連する他のデータに対する要求も第２のアプリケーション３２２から受信し得る。少なくとも１つの例では、データベースサブシステム３４０のデータ共有モジュール１１９は、セキュリティモジュール１１３（ｄ）により決定されるセキュリティポリシーに従って、要求されたデータへの第２のアプリケーション３２２によるアクセスを許可し得る。いくつかの実施形態では、データ共有モジュール１１９は、セキュリティモジュール１１３（ｄ）により決定されるセキュリティポリシーに従って、要求されたデータを第２のアプリケーション３２２および／またはシステム３００内の他のアプリケーションに送信し得る。
【００４１】
様々な実施形態によれば、例示的なシステム１００のすべてまたは部分は、図４に示される例示的なネットワークに基づくシステム４００の部分を表し得る。図４は、複数のアプリケーションが使用するデータのインデックスを作成する例示的なネットワークに基づくシステム４００のブロック図である。この図に示されるように、例示的なシステム４００は、ネットワーク４４０を介して接続された第１の計算サブシステム４１０、第２の計算サブシステム４２０、および企業サブシステム４３０を含み得る。ネットワーク４４０の例には、様々な種類のネットワーク（図２のネットワーク２４０に関して列挙したもの等）が含まれるが、これらに限定されない。
【００４２】
第１の計算サブシステム４１０、第２の計算サブシステム４２０、および企業サブシステム４３０は、１つまたは複数の計算装置に配置し得る。例えば、第１の計算サブシステム４１０、第２の計算サブシステム４２０、および／または企業サブシステム４３０は、単一の計算装置に配置してもよく、または２つ以上の別個の計算装置に配置してもよい。第１の計算サブシステム４１０、第２の計算サブシステム４２０、および企業サブシステム４３０の例には、様々な種類の計算装置（図２の第１の計算サブシステム２１０、第２の計算サブシステム２２０、およびデータベースサブシステム２３０に関して列挙したもの等）が含まれるが、これらに限定されない。
【００４３】
様々な実施形態によれば、第１の計算サブシステム４１０は、通信モジュール１１２（ａ）と、セキュリティモジュール１１３（ａ）と、分類モジュール１１８（ａ）とを含む第１のアプリケーション４１２を含み、第２の計算サブシステム４２０は、通信モジュール１１２（ｂ）と、セキュリティモジュール１１３（ｂ）と、分類モジュール１１８（ｂ）とを含む第２のアプリケーション４２２を含み得る。企業サブシステム４３０は、通信モジュール１１２（ｃ）と、セキュリティモジュール１１３（ｃ）と、変換モジュール１１４と、言語検出モジュール１１５と、トークン化モジュール１１６と、インデックス作成モジュール１１７と、分類モジュール１１８（ｃ）とを含む企業アプリケーション４３２を含み得る。様々な実施形態によれば、企業サブシステム４３０は、インデックスデータベース１２２と、データオブジェクトデータベース１２４と、分類データベース１２６と、データ共有モジュール１１９とを含む企業データベース４３４も含み得る。
【００４４】
企業サブシステム４３０は、例示的なシステム４００内の第１の計算サブシステム４１０および第２の計算サブシステム４２０等の計算装置および／またはサブシステムにサービスを提供するようにプログラムされた計算サブシステムを含み得る。企業サブシステム４３０により提供されるサービスの例としては、データ検索および／または記憶サービスが挙げられるが、これらに限定されない。様々な実施形態によれば、企業サブシステム４３０により提供される異なるサービスは、複数の異なるソフトウェアアプリケーションタイプにより提供し得る。いくつかの例によれば、第１の計算サブシステム４１０および／または第２の計算サブシステム４２０も、様々なバックアップ動作、アーカイブ動作、セキュリティ動作、および／またはコンテンツ管理動作（例えば、アンチウィルス保護サービス、スパムフィルタリングサービス、およびデータ損失回避保護サービス）を実行し得る。第１の計算サブシステム４１０および／または第２の計算サブシステム４２０は、バックアップ動作、アーカイブ動作、セキュリティ動作、および／またはコンテンツ管理動作を実行するために、インデックスおよび分類データ等の、企業サブシステム４３０により得られるデータを利用し得る。
【００４５】
少なくとも１つの実施形態では、企業サブシステム４３０は、検索サービスおよび／または記憶サービス等のサービスをシステム４００内の計算装置および／またはサブシステムに提供するようにプログラムされた企業アプリケーション４３２（例えば、企業検索機器、埋め込み検索エンジン、またはホストされる検索エンジン）を含み得る。例えば、企業アプリケーション４３２は、第１の計算サブシステム４１０および／または第２の計算サブシステム４２０上の１つまたは複数のデータオブジェクトの要素を検索するようにプログラムし得る。データオブジェクトの検索を容易にするために、変換モジュール１１４は、データオブジェクトを共通形式データオブジェクトに変換し、言語検出モジュール１１５は言語検出をデータオブジェクトに対して実行し、トークン化モジュール１１６はデータオブジェクトをトークン化し、インデックス作成モジュール１１７は１つまたは複数のデータオブジェクトのインデックスを作成し得る。企業アプリケーション４３２は、１つまたは複数のデータオブジェクトの検索要求を受信した場合、要求されるデータオブジェクトのインデックスを検索し得る。
【００４６】
少なくとも１つの実施形態によれば、第１のアプリケーション４１２は、システム４００内の第２のアプリケーション４２２等の他のアプリケーションよりも先にプログラム固有データオブジェクトを受信し得る。例えば、第１のアプリケーション４１２の通信モジュール１１２（ａ）は、プログラム固有データオブジェクトを受信し得る。プログラム固有データオブジェクトを受信した後、第１のアプリケーション４１２は、プログラム固有データオブジェクトを共通形式データオブジェクトに変換し、データオブジェクトをトークン化し、かつ／またはデータオブジェクトのインデックスを作成するように、企業アプリケーション４３２に命令し得る。例えば、第１のアプリケーション４１２は、プログラム固有データオブジェクトを共通形式データオブジェクトに変換し、言語検出をデータオブジェクトに対して実行し、データオブジェクトをトークン化し、共通形式データオブジェクトから抽出されたトークンのインデックスを作成するように、企業アプリケーション４３２に命令し得る。
【００４７】
いくつかの例では、第１のアプリケーション４１２は、プログラム固有データオブジェクトを共通形式データオブジェクトに変換し、言語検出をデータオブジェクトに対して実行し、データオブジェクトをトークン化し、かつ／またはデータオブジェクトのインデックスを作成し得る。第１のアプリケーション４１２により作成されたデータオブジェクトのインデックスならびに／あるいは共通形式データオブジェクトおよび／または任意の関連する分類データ等のプログラム固有データオブジェクトに関連する任意の他の適したデータは、第１のアプリケーション４１２から企業アプリケーション４３２に転送し得る。
【００４８】
いくつかの実施形態では、第１のアプリケーション４１２は、プログラム固有データオブジェクトが、第２のアプリケーション４２２等の１つまたは複数の他のアプリケーションによりシステム４００内で以前に受信、変換、インデックス作成、かつ／または他の様式で記憶されたか否かを判断し得る。例えば、第１のアプリケーション４１２は、プログラム固有データオブジェクトに関連するインデックス付きデータ等のデータを要求する要求を企業アプリケーション４３２のデータ共有モジュール１１９に送信し得る。第１のアプリケーション４１２が、プログラム固有データオブジェクトに関連する要求されたデータが企業データベース４３４またはシステム４００内の他のロケーションに記憶されていないことを示す応答を企業アプリケーション４３２から受信した場合、第１のアプリケーション４１２は、プログラム固有データオブジェクトのインデックス作成に進んでもよく、かつ／またはプログラム固有データオブジェクトのインデックスを作成するように、企業アプリケーション４３２に命令してもよい。
【００４９】
図５は、複数のアプリケーションが使用するデータのインデックスを作成するコンピュータにより実施される例示的な方法５００の流れ図である。図５に示されるステップは、任意の適したコンピュータ実行可能コードおよび／または計算システムにより実行し得る。いくつかの実施形態では、図５に示されるステップは、さらに詳細に後述するように、図１のシステム１００の構成要素のうちの１つもしくは複数、図２のシステム２００のサブシステムのうちの１つもしくは複数、図３のシステム３００のサブシステムのうちの１つもしくは複数、および／または図４のシステム４００のサブシステムのうちの１つもしくは複数により実行し得る。
【００５０】
図５のステップ５１０において、システムは、複数のアプリケーションのうちの第１のアプリケーションでデータオブジェクトを受信し得る。少なくとも１つの例では、データオブジェクトは、少なくとも１つのプログラムタイプによりアクセスされるように構成されたプログラム固有データオブジェクトを含み得る。例えば、通信モジュール１１２は、文書処理ファイル等のプログラム固有データオブジェクトを受信し得る。通信モジュール１１２は、様々なコンテキストでデータオブジェクトを受信し得る。例えば、通信モジュール１１２は、インデックス作成プロセス中にプログラム固有データオブジェクトを識別し、そのプログラム固有データオブジェクトのインデックスが別のアプリケーションによりまだ作成されていないと判断することにより、データオブジェクトを受信し得る。いくつかの実施形態では、通信モジュール１１２は、バックアップアプリケーションおよび／またはデスクトップ検索アプリケーション等のインデックス作成を実行するアプリケーションと共に含められるプラグイン（または他のコード）を含み得る。
【００５１】
複数のアプリケーションは、２つ以上のアプリケーションタイプを含み得る。例えば、図２の第１のアプリケーション２１２および第２のアプリケーション２２２のそれぞれが異なるアプリケーションタイプを含み得る。説明のために、第１のアプリケーション２１２は、システム２００内でインデックス付きデータオブジェクトのデータ検索を行うようにプログラムされたアプリケーションを含み得る。他方、第２のアプリケーション２２２は、システム２００内でデータオブジェクトのバックアップファイルを作成するように構成し得る。第２のアプリケーション２２２は、バックアップのため、およびバックアップされたデータを後に検索するために、データオブジェクトに関連するインデックスデータを使用し得る。第１のアプリケーション２１２および第２のアプリケーション２２２は両方とも、システムのインデックスデータベース１２２等のデータベースに記憶されたインデックスを利用し得る。
【００５２】
いくつかの実施形態では、データオブジェクトはプログラム固有データオブジェクトであり、システムは、プログラム固有データオブジェクトを共通形式データオブジェクトに変換し得る。例えば、変換モジュール１１４は、文書処理ファイルを、２つ以上のアプリケーションタイプが容易に読み取り、かつ／または他の様式で利用可能なファイル形式に変換し得る。共通形式データオブジェクトとしては、例えば、マークアップ言語（例えば、ＨＴＭＬまたはＸＭＬ）および／または平文言語が挙げられる。
【００５３】
少なくとも１つの実施形態では、第１のアプリケーション（例えば、第１のアプリケーション２１２）は、プログラム固有データオブジェクトを共通形式データオブジェクトに変換し得る。さらなる例では、第１のアプリケーションは、プログラム固有データオブジェクトを共通形式データオブジェクトに変換するように、別のアプリケーションに命令し得る。例えば、図３の第１のアプリケーション３１２は、プログラム固有データオブジェクトを共通形式データオブジェクトに変換するように、第３のアプリケーション３３２に命令し得る。少なくとも１つの例では、図４の第１のアプリケーション４１２は、プログラム固有データオブジェクトを共通形式データオブジェクトに変換するように、企業アプリケーション４３２に命令し得る。次に、システムは、言語検出をデータオブジェクトに対して実行し得る。例えば、言語検出モジュール１１５は、データオブジェクトのトークン化およびインデックス作成前に、言語検出を共通形式データオブジェクトに対して実行し得る。図５のステップの以下の考察では、語句「データオブジェクト」は、共通形式データオブジェクトにまだ変換されていないデータオブジェクトまたは共通形式データオブジェクトに変換されたデータオブジェクトを指し得る。
【００５４】
図５のステップ５２０において、システムは、データオブジェクトをトークン化して、データオブジェクトからトークンを抽出する。例えば、トークン化モジュール１１６は、共通形式データオブジェクト内のワードを識別することにより、共通形式データオブジェクトをトークン化し得る。いくつかの実施形態では、タグおよび／またはサブワード等の他の有意単位が、データオブジェクトのトークン化中に識別され得る。様々な実施形態によれば、第１のアプリケーションがデータオブジェクトをトークン化してもよく、データオブジェクトをトークン化するように、別のアプリケーション（例えば、第３のアプリケーション３３２および／または企業アプリケーション４３２）に命令してもよい。
【００５５】
図５のステップ５３０において、システムは、データオブジェクトから抽出されたトークンのインデックスを作成し得、これがデータオブジェクトのインデックスである。インデックスは、複数のアプリケーションのそれぞれに利用されるようにフォーマットし得る。例えば、インデックス作成モジュール１１７は、データオブジェクト内のトークン化されたワードおよび／または他の有意単位等の、データオブジェクトから抽出されたトークンのインデックスを作成し得る。第１のアプリケーションがインデックスを作成してもよく、かつ／またはデータオブジェクトからのトークンのインデックスを作成するように、別のアプリケーション（例えば、第３のアプリケーション３２２および／または企業アプリケーション４３２）に命令してもよい。
【００５６】
図５のステップ５４０において、システムは、複数のアプリケーションがアクセス可能なデータベースにインデックスを記憶し得る。例えば、インデックスは、企業データベース４３４に配置されたデータベース等の、セキュリティモジュール１１３（ｃ）により確立され実施されるセキュリティポリシーに従って第１のアプリケーション４１２および第２のアプリケーション４２２がアクセス可能なネットワークに基づくデータベースおよび／または企業に基づくデータベースに記憶し得る。特定の実施形態によれば、インデックスは、圧縮形式でデータベースに保存し得る。圧縮形式のインデックスは、データベースに使用される記憶領域を低減し、かつ／またはネットワークを介するインデックスの転送に使用される帯域幅を低減し得る。
【００５７】
少なくとも１つの実施形態によれば、方法５００は、システム内の別のアプリケーションからインデックス要求を受信することをさらに含み得る。例えば、システム２００内の第２のアプリケーション２２２は、データベースサブシステム２３０からインデックスを要求し得る。いくつかの例では、本方法は、第２のアプリケーションによるインデックスデータベース１２２に記憶されたインデックスへのアクセスを許可することをさらに含み得る。例えば、セキュリティモジュール１１３（ｃ）により確立され実施されるセキュリティポリシーに従って、第２のアプリケーション２２２によるインデックス自体の検索または企業アプリケーション４３２を利用してのインデックスの検索を許可し得る。
【００５８】
様々な実施形態によれば、方法５００は、データオブジェクトをデータベースに記憶することも含み得る。例えば、プログラム固有データオブジェクトの共通形式データオブジェクト表現をデータオブジェクトデータベース１２４に記憶し得る。いくつかの例では、プログラム固有データオブジェクトをデータオブジェクトデータベース１２４に記憶してもよい。プログラム固有データオブジェクトに、データベース内で、共通形式データオブジェクトおよび／またはデータオブジェクトのインデックスを関連付け得る。特定の例では、共通形式データオブジェクトを圧縮形式でデータベースに記憶し得る。
【００５９】
少なくとも１つの実施形態では、システムは、プログラム固有データオブジェクトに関連するメタデータおよび／またはプログラム固有データオブジェクトに関連する隠しファイルのうちの少なくとも一方も生成し得る。メタデータおよび／または隠しファイルは、プログラム固有データオブジェクトと共に別のアプリケーションに転送し得る。いくつかの例では、プログラム固有データオブジェクトが削除または他の様式でシステムから除去された場合、そのプログラム固有データオブジェクトに関連するメタデータおよび／または隠しファイルも、システムから削除し得る。
【００６０】
例えば、ＷＩＮＤＯＷＳ  ＮＴＦＳファイルシステムに記憶された文書処理ドキュメントの場合、共通形式データオブジェクトを、その文書処理ドキュメント自体を記憶するものと同じファイルの代替のデータストリームに記憶し得る。インデックスは、この同じファイルのさらに別のストリームに記憶し得る。文書処理ドキュメントに関連するデータ分類情報をさらに別のデータストリームに記憶してもよく、または共通形式ストリームまたはインデックスストリーム内に含めてもよい。複数のアプリケーションのそれぞれは、ドキュメントに別個のデータ分類を提供し得、各アプリケーションは、その分類を別個のストリームに記憶してもよく、またはその他のストリームのうちの１つにグループ化してもよい。例えば、データ損失回避アプリケーションは、ドキュメントがクレジットカード番号および／または社会保障番号を含む分類を提供し得る。いくつかの例では、ウィルス対策アプリーションは、マクロウィルスを含むものとしてドキュメントを分類し得る。さらなる例では、アーカイブアプリケーションは、７年間保持する必要があるものとしてドキュメントを分類し得る。これら代替のストリームのすべては、セキュリティモジュール１１３（ｃ）等のセキュリティモジュールにより確立されるセキュリティポリシーに基づいて、エンドユーザから隠し得るが、それらにアクセスしたい場合がある第１のアプリケーション２１２または２２２等の他のアプリケーションに提供し得る。
【００６１】
ユーザがドキュメントを削除した場合、代替のストリームを自動的に削除し得る。ユーザがドキュメントを同じボリューム上の別のロケーションに移動した場合、代替のストリームをドキュメントと共に移動し得る。ユーザがドキュメントをコピーした場合、コピー動作の実行に使用される方法に応じて、ストリームもコピーし得る。例えば、ＭＩＣＲＯＳＯＦＴ  ＷＯＲＤドキュメント（または他のＭＩＣＲＯＳＯＦＴ  ＯＦＦＩＣＥドキュメントが変更された場合、ＷＯＲＤはドキュメントの新しいバージョンを異なるファイルに書き込み、古いバージョンを削除し、次に、新しいバージョンの名称を正確な名称に変更し得る。これは、新しいバージョンに当てはまらないであろうメタデータ等のドキュメントの古いバージョンに関連付けられたすべてのメタデータを自動的に削除し得る。その場所で変更されたファイルの場合、代替のストリームはもはやファイルに適用し得ない。タイムスタンプ、指紋、または他のメタデータを使用して、代替のストリームが古くなったときを判断し得る。
【００６２】
少なくとも１つの実施形態では、方法５００は、共通形式データオブジェクトに対する要求を受信することも含み得る。例えば、第２のアプリケーション２２２は、データベースサブシステム２３０から共通形式データオブジェクトを要求し、データ共有モジュール１１９は、セキュリティモジュール１１３（ｃ）により確立され実施されるセキュリティポリシーに従って、共通形式データオブジェクトを第２のアプリケーション２２２に送信し得る。さらに、データ共有モジュール１１９は、共通形式データオブジェクトおよび／またはプログラム固有データオブジェクトに関連する任意の他の要求されたデータも送信し得る。
【００６３】
いくつかの実施形態によれば、方法５００は、プログラム固有データオブジェクトのデータ分類を実行すること、およびデータ分類結果を共通形式データオブジェクト、プログラム固有データオブジェクト、および／またはインデックスのうちの少なくとも１つに関連付けることをさらに含み得る。例えば、分類モジュール１１８は、データオブジェクトの要素を識別し、データオブジェクトおよび／またはデータオブジェクトの識別された要素を分類し得る。少なくとも１つの例では、データ分類結果を共通形式データオブジェクトに関連付けることは、データ分類結果を参照するデータタグを追加することを含み得る。
【００６４】
さらなる例では、方法５００は、データ分類結果に基づいて少なくとも１つのポリシーを実行することを含み得る。少なくとも１つのポリシーの例としては、スパムポリシー、ウィルス対策ポリシー、データ損失回避ポリシー、知的財産漏出回避ポリシー、アーカイブポリシー、バックアップポリシー、コンテンツ管理ポリシー（分類ポリシーおよび／またはフィルタリングポリシー）、電子情報開示ポリシー、ならびに／あるいは法遵守ポリシーが挙げられるが、これらに限定されない。分類結果により、プログラム固有データオブジェクトに適用される１つまたは複数のポリシーが決まり得る。説明のために、分類結果により、プログラム固有データオブジェクトがスパム電子メールを含むことが示される場合、スパムポリシーを実行して、プログラム固有データオブジェクトを検疫し得る。
【００６５】
図６は、複数のアプリケーションが使用するデータのインデックスを作成するコンピュータにより実施される例示的な方法６００の流れ図である。図６に示されるステップは、任意の適したコンピュータ実行可能コードおよび／または計算システムにより実行し得る。いくつかの実施形態では、図６に示されるステップは、さらに詳細に後述するように、図１の構成要素のうちの１つもしくは複数、図２のシステム２００のサブシステムのうちの１つもしくは複数、図３のシステム３００のサブシステムのうちの１つもしくは複数、および／または図４のシステム４００のサブシステムのうちの１つもしくは複数により実行し得る。
【００６６】
図６のステップ６１０において、システムは、複数のアプリケーションのうちの第１のアプリケーションでデータオブジェクトを受信し得る。例えば、データオブジェクトは、少なくとも１つのアプリケーションタイプによりアクセスされるように構成されたプログラム固有データオブジェクトを含み得る。いくつかの実施形態では、システムは、プログラム固有データオブジェクトを共通形式データオブジェクトに変換し、言語検出をデータオブジェクトに対して実行し得る。図６のステップ６２０において、システムは、データオブジェクトをトークン化し得る。図６のステップ６３０において、システムは、データオブジェクトから抽出されたトークンのオブジェクトインデックスを作成し得る。オブジェクトインデックスは、複数のアプリケーションのそれぞれにより利用されるようにフォーマットし得る。図６のステップ６１０、６２０、および６３０は、図５のステップ５１０、５２０、および５３０と同様である。したがって、ステップ５１０〜５３０の上記考察がステップ６１０〜６３０にも当てはまり得る。
【００６７】
図６のステップ６４０において、システムは、複数のデータオブジェクトに関連するインデックス情報を含むマスタインデックスにオブジェクトインデックスを記憶し得る。例えば、マスタインデックスは、複数のプログラム固有データオブジェクトから変換された複数の共通形式データオブジェクトのオブジェクトインデックスを含み得る。いくつかの例では、マスタインデックスは、複数のアプリケーションから受信されたインデックスを含み得る。マスタインデックスは、ネットワークに基づくデータベースおよび／または企業アプリケーション４３２に配置されたデータベース等の企業に基づくデータベースに記憶されたインデックスを含み得る。いくつかの実施形態では、マスタインデックスは、システム２００内の第１の計算サブシステム２１０上のデータベース等の、プログラム固有データオブジェクトが記憶されたロケーションの隠しエリアに記憶し得る。個々のオブジェクトインデックスは、プログラム固有データオブジェクトが記憶されたロケーションに独立したインデックスとして記憶してもよい。
【００６８】
様々な実施形態によれば、マスタインデックスには、システム内の複数のアプリケーションがアクセス可能であり得る。少なくとも１つの例では、複数のアプリケーションは２つ以上のアプリケーションタイプを含み得る。説明のために、第１のアプリケーション２１２等のシステム内のアプリケーションのうちの少なくとも１つは、データ損失回避アプリケーションを含み、第２のアプリケーション２２２等のシステム内のアプリケーションのうちの別のものは、アーカイブアプリケーションを含み得る。様々な実施形態では、マスタインデックスは、複数のアプリケーションのうちの２つ以上から受信した複数のオブジェクトインデックスを含み得る。
【００６９】
上述したように、複数のアプリケーションが使用するデータのインデックスを作成する手段を提供することにより、本明細書において説明されるシステムおよび方法は、複数のアプリケーションのうちの第１のアプリーションが、複数のアプリケーションのそれぞれが利用可能なデータオブジェクトのインデックスを作成できるようにし、それにより、複数のアプリケーションのそれぞれがデータオブジェクトのインデックスを別個に作成する必要性をなくし得る。
【００７０】
例えば、第１のアプリケーション４１２は、まだインデックスが作成されていないＭＩＣＲＯＳＯＦＴ  ＷＯＲＤドキュメントに遭遇し得る。第１のアプリケーション４１２は、例えば、企業検索アプリケーションおよび／またはエンジンであり得る企業サブシステム４３０上の企業アプリケーション４３２にＷＯＲＤドキュメントの処理を通知し得る。次に、企業アプリケーション４３２は、ドキュメントの共通形式バージョンを作成し、言語検出をドキュメントの共通形式バージョンに対して実行し、ドキュメントの共通形式バージョンをトークン化し、次に、その結果のインデックスを作成し、ドキュメントの共通形式バージョンを記憶し、インデックスを企業データベース４３４に記憶し得る。次に、第１のアプリケーション４１２は、ドキュメントの共通形式バージョンまたはインデックスを使用して、タスクを実行し得る。次に、第２のアプリケーション４２２は、同じＭＩＣＲＯＳＯＦＴ  ＷＯＲＤドキュメントに遭遇し、すでにインデックスが作成されていると判断し、企業データベース４３４に記憶されているインデックスを使用して、ドキュメントのデータ分類を実行し得る。次に、第２のアプリケーション４２２は、データ分類結果を企業データベース４３４に記憶し得、それにより、分類を利用可能であり得る任意の他のアプリケーションがその分類を利用することができる。
【００７１】
図７は、本明細書において説明され、かつ／または示される実施形態のうちの１つまたは複数を実施可能な例示的な計算システム７１０のブロック図である。計算システム７１０は一般に、コンピュータ可読命令を実行可能な任意のシングルプロセッサまたはマルチプロセッサの計算装置または計算システムを広く表す。計算システム７１０の例としては、ワークステーション、ラップトップ、クライアント側端末、分散計算システム、ハンドヘルド装置、または他の任意の計算システムもしくは装置が挙げられるが、これらに限定されない。その最も基本的な構成では、計算システム７１０は、少なくとも１つのプロセッサ７１４およびシステムメモリ７１６を含み得る。
【００７２】
プロセッサ７１４は一般に、データを処理可能であるか、または命令を解釈し実行することが可能な任意の種類または形態の処理ユニットを表す。特定の実施形態では、プロセッサ７１４は、ソフトウェアアプリケーションまたはモジュールから命令を受信し得る。これら命令は、本明細書において説明され、かつ／または示される例示的な実施形態のうちの１つまたは複数の機能をプロセッサ７１４に実行させる。例えば、プロセッサ７１４は、単独で、または他の要素と組み合わせて、本明細書において説明した受信するステップ、変換するステップ、トークン化するステップ、作成するステップ、記憶するステップ、送信するステップ、実行するステップ、生成するステップ、実行するステップ、関連付けるステップ、および／またはインデックスを作成するステップのうちの１つまたは複数を実行し得、かつ／またはそれ（ら）を実行する手段であり得る。プロセッサ７１４は、本明細書において説明され、かつ／または示される任意の他のステップ、方法、またはプロセスも実行し得、かつ／またはそれ（ら）を実行する手段でもあり得る。
【００７３】
システムメモリ７１６は一般に、データおよび／または他のコンピュータ可読命令を記憶可能な任意の種類または形態の揮発性または不揮発性の記憶装置または記憶媒体を表す。システムメモリ７１６の例としては、ランダムアクセスメモリ（「ＲＡＭ」）、読み取り専用メモリ（「ＲＯＭ」）、フラッシュメモリ、または他の任意の適したメモリ装置が挙げられるが、これらに限定されない。必要なわけではないが、特定の実施形態では、計算システム７１０は、揮発性メモリユニット（例えば、システムメモリ７１６等）および不揮発性記憶装置（例えば、詳細に後述するような一次記憶装置７３２等）の両方を含み得る。一例では、図１のモジュール１１０のうちの１つまたは複数は、システムメモリ７１６にロードし得る。
【００７４】
特定の実施形態では、例示的な計算システム７１０は、プロセッサ７１４およびシステムメモリ７１６に加えて、１つまたは複数の構成要素または要素も含み得る。例えば、図７に示すように、計算システム７１０は、メモリコントローラ７１８、入出力（「Ｉ／Ｏ」）コントローラ７２０、および通信インタフェース７２２を含み得、これらのそれぞれは通信基盤７１２を介して相互接続し得る。通信基盤７１２は一般に、計算装置の１つまたは複数の構成要素間の通信に役立つことが可能な任意の種類または形態の基盤を表す。通信基盤７１２の例としては、通信バス（ＩＳＡ、ＰＣＩ、ＰＣＩｅ、または同様のバス等）およびネットワークが挙げられるが、これらに限定されない。
【００７５】
メモリコントローラ７１８は一般に、メモリまたはデータを処理可能であるか、または計算システム７１０の１つまたは複数の構成要素間の通信に役立つことが可能な任意の種類または形態の装置を表す。例えば、特定の実施形態では、メモリコントローラ７１８は、通信基盤７１２を介するプロセッサ７１４、システムメモリ７１６、およびＩ／Ｏコントローラ７２０間の通信を制御し得る。特定の実施形態では、メモリコントローラ７１８は、単独で、または他の要素と組み合わせて、受信、変換、トークン化、作成、記憶、送信、実行、関連付け、および／またはインデックス作成等の本明細書において説明され、かつ／または示されるステップまたは特徴のうちの１つまたは複数を実行し得、かつ／またはそれ（ら）を実行する手段であり得る。
【００７６】
Ｉ／Ｏコントローラ７２０は一般に、計算装置の入力機能および出力機能を調整可能であり、かつ／または制御可能な任意の種類または形態のモジュールを表す。例えば、特定の実施形態では、Ｉ／Ｏコントローラ７２０は、プロセッサ７１４、システムメモリ７１６、通信インタフェース７２２、ディスプレイアダプタ７２６、入力インタフェース７３０、およびストレージインタフェース７３４等の計算システム７１０の１つまたは複数の要素間のデータ転送を制御し得、またはそれに役立ち得る。Ｉ／Ｏコントローラ７２０は、例えば、単独で、または他の要素と組み合わせて、本明細書において説明した受信するステップ、変換するステップ、トークン化するステップ、作成するステップ、記憶するステップ、送信するステップ、実行するステップ、生成するステップ、実行するステップ、関連付けるステップ、および／またはインデックスを作成するステップのうちの１つまたは複数を実行するために、またはそれ（ら）を実行する手段として、使用され得る。Ｉ／Ｏコントローラ７２０は、本開示において記載される他のステップおよび特徴を実行するためにも、またはそれ（ら）を実行する手段としても使用され得る。
【００７７】
通信インタフェース７２２は、例示的な計算システム７１０と１つまたは複数の追加の装置との間の通信に役立つことが可能な任意の種類または形態の通信装置またはアダプタを広く表す。例えば、特定の実施形態では、通信インタフェース７２２は、計算システム７１０と追加の計算システムを含む私設または公衆ネットワークとの間の通信に役立ち得る。通信インタフェース７２２の例としては、有線ネットワークインタフェース（ネットワークインタフェースカード等）、無線ネットワークインタフェース（無線ネットワークインタフェースカード等）、モデム、および他の任意の適したインタフェースが挙げられるが、これらに限定されない。少なくとも１つの実施形態では、通信インタフェース７２２は、インターネット等のネットワークへの直接リンクを介して遠隔サーバへの直接接続を提供し得る。通信インタフェース７２２は、例えば、ローカルエリアネットワーク（イーサネットネットワーク等）、パーソナルエリアネットワーク、電話回線網、ケーブル網、セルラ電話接続、衛星データ接続、または任意の他の適した接続を通して、そのような接続を間接的に提供してもよい。
【００７８】
特定の実施形態では、通信インタフェース７２２は、外部バスまたは通信チャネルを介しての計算システム７１０と１つまたは複数の追加のネットワークまたは記憶装置との間の通信に役立つように構成されたホストアダプタも表し得る。ホストアダプタの例としては、ＳＣＳＩホストアダプタ、ＵＳＢホストアダプタ、ＩＥＥＥ７９４ホストアダプタ、ＳＡＴＡアダプタ、およびｅＳＡＴＡホストアダプタ、ＡＴＡおよびＰＡＴＡホストアダプタ、ファイバチャネルインタフェースアダプタ、イーサネットアダプタ、またはこれらと同様のものが挙げられるが、これらに限定されない。通信インタフェース７２２は、計算システム７１０が分散計算または遠隔計算を行えるようにもし得る。例えば、通信インタフェース７２２は、遠隔装置から命令を受信し、または実行のための命令を遠隔装置に送信し得る。特定の実施形態では、通信インタフェース７２２は、単独で、または他の要素と組み合わせて、本明細書において開示される受信するステップ、変換するステップ、トークン化するステップ、作成するステップ、記憶するステップ、送信するステップ、実行するステップ、生成するステップ、実行するステップ、関連付けるステップ、および／またはインデックスを作成するステップのうちの１つまたは複数を実行し得、かつ／またはそれ（ら）を実行する手段であり得る。通信インタフェース７２２は、本開示に記載する他のステップおよび特徴を実行するため、かつ／または実行する手段としても使用し得る。
【００７９】
図７に示すように、計算システム７１０は、ディスプレイアダプタ７２６を介して通信基盤７１２に結合された少なくとも１つの表示装置７２４も含み得る。表示装置７２４は一般に、ディスプレイアダプタ７２６により転送される情報を視覚的に表示可能な任意の種類または形態の装置を表す。同様に、ディスプレイアダプタ７２６は一般に、通信基盤７１２から（または当分野において既知のように、フレームバッファから）表示装置７２４に表示するためのグラフィックス、テキスト、および他のデータに転送する任意の種類または形態の装置を表す。
【００８０】
図７に示すように、例示的な計算システム７１０は、入力インタフェース７３０を介して通信基盤７１２に結合された少なくとも１つの入力装置７２８も含み得る。入力装置７２８は一般に、コンピュータまたは人間により生成された入力を例示的な計算システム７１０に提供可能な任意の種類または形態の入力装置を表す。入力装置７２８の例としては、キーボード、ポインティングデバイス、音声認識装置、または他の任意の適した入力装置が挙げられるが、これらに限定されない。少なくとも１つの実施形態では、入力装置７２８は、単独で、または他の要素と組み合わせて、本明細書において開示される受信するステップ、変換するステップ、トークン化するステップ、作成するステップ、記憶するステップ、送信するステップ、実行するステップ、生成するステップ、実行するステップ、関連付けるステップ、および／またはインデックスを作成するステップのうちの１つまたは複数を実行し得、かつ／またはそれ（ら）を実行する手段であり得る。入力装置７２８は、本開示に記載される他のステップおよび特徴を実行するためにも、かつ／またはそれ（ら）を実行する手段としても使用され得る。
【００８１】
図７に示すように、例示的な計算システム７１０は、ストレージインタフェース７３４を介して通信基盤７１２に結合された一次記憶装置７３２およびバックアップ記憶装置７３３も含み得る。記憶装置７３２および７３３は一般に、データおよび／またはコンピュータ可読命令を記憶可能な任意の種類または形態の記憶装置または記憶媒体を表す。例えば、記憶装置７３２および７３３は、磁気ディスクドライブ（例えば、いわゆるハードドライブ）、フロッピーディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュドライブ、またはこれらと同様のものであり得る。ストレージインタフェース７３４は一般に、記憶装置７３２および７３３と計算システム７１０の他の構成要素との間でデータを転送する任意の種類または形態のインタフェースまたは装置を表す。一例では、図１からのデータベース１２０を一次記憶装置７３２に記憶し得る。
【００８２】
特定の実施形態では、記憶装置７３２および７３３は、コンピュータソフトウェア、データ、または他のコンピュータ可読情報を記憶するように構成されたリムーバブル記憶ユニットに対して書き込みおよび／または読み取りを行うように構成され得る。適したリムーバブル記憶ユニットの例としては、フロッピーディスク、磁気テープ、光ディスク、フラッシュメモリ装置、またはこれらと同様のものが挙げられるが、これらに限定されない。記憶装置７３２および７３３は、コンピュータソフトウェア、データ、または他のコンピュータ可読命令を計算システム７１０にロードできるようにする他の同様の構造または装置も備え得る。例えば、記憶装置７３２および７３３は、ソフトウェア、データ、または他のコンピュータ可読情報を読み書きするように構成され得る。記憶装置７３２および７３３は、計算システム７１０の部分であってもよく、または他のインタフェースシステムを通してアクセスされる別個の装置であってもよい。
【００８３】
特定の実施形態では、記憶装置７３２および７３３は、例えば、単独で、または他の要素と組み合わせて、本明細書において開示される受信するステップ、変換するステップ、トークン化するステップ、作成するステップ、記憶するステップ、送信するステップ、実行するステップ、生成するステップ、実行するステップ、関連付けるステップ、および／またはインデックスを作成するステップのうちの１つまたは複数を実行するために、かつ／またはそれ（ら）を実行する手段として、使用され得る。記憶装置７３２および７３３は、本開示に記載される他のステップおよび特徴を実行するためにも、かつ／またはそれ（ら）を実行する手段としても使用され得る。
【００８４】
多くの他の装置またはサブシステムを計算システム７１０に接続し得る。逆に、本明細書において説明され、かつ／または示される実施形態を実施するために、図７に示す構成要素および装置のすべてが存在する必要があるわけではない。上で参照される装置およびサブシステムは、図７に示す方法と異なる方法で相互接続してもよい。計算システム７１０は、任意の数のソフトウェア構成、ファームウェア構成、および／またはハードウェア構成を利用してもよい。例えば、本明細書において開示する例示的な実施形態のうちの１つまたは複数は、コンピュータプログラム（コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、またはコンピュータ制御論理とも呼ばれる）としてコンピュータ可読媒体に符号化し得る。語句「コンピュータ可読媒体」は一般に、コンピュータ可読命令を記憶または搬送することが可能な任意の形態または装置、キャリア、または媒体を指す。コンピュータ可読媒体の例としては、搬送波等の伝送型媒体ならびに磁気記憶媒体（例えば、ハードディスクドライブおよびフロッピーディスク）、光学記憶媒体（例えば、ＣＤ−ＲＯＭまたはＤＶＤ−ＲＯＭ）、電子記憶媒体（例えば、固体状態ドライブおよびフラッシュメディア）、および他の分散システム等の物理的媒体が挙げられるが、これらに限定されない。
【００８５】
コンピュータプログラムを含むコンピュータ可読媒体を計算システム７１０にロードし得る。次に、コンピュータ可読媒体に記憶されているコンピュータプログラムのすべてまたは部分をシステムメモリ７１６ならびに／あるいは記憶装置７３２および７３３の様々な部分に記憶し得る。プロセッサ７１４により実行されると、計算システム７１０にロードされたコンピュータプログラムは、プロセッサ７１４に、本明細書において説明され、かつ／または示される例示的な実施形態のうちの１つまたは複数の機能を実行させ得、かつ／または実行する手段であり得る。追加または代替として、本明細書において説明され、かつ／または示される例示的な実施形態のうちの１つまたは複数をファームウェアおよび／またはハードウェアで実施してもよい。例えば、計算システム７１０は、本明細書において開示する例示的な実施形態のうちの１つまたは複数を実施するように構成された特定用途向け集積回路（「ＡＳＩＣ」）として構成し得る。
【００８６】
図８は、クライアントシステム８１０、８２０、および８３０ならびにサーバ８４０および８４５をネットワーク８５０に結合し得る例示的なネットワークアーキテクチャ８００のブロック図である。クライアントシステム８１０、８２０、および８３０は一般に、図７の例示的な計算システム７１０等の任意の種類または形態の計算装置または計算システムを表す。一例では、クライアントシステム８１０、８２０、および／または８３０ならびに／あるいはサーバ８４０および／または８４５は、図１のシステム１００のすべてまたは部分を含み得る。
【００８７】
同様に、サーバ８４０および８４５は一般に、様々なデータベースサービスを提供し、かつ／または特定のソフトウェアアプリケーションを実行するように構成された、アプリケーションサーバまたはデータベースサーバ等の計算装置または計算システムを表す。ネットワーク８５０は一般に、例えば、イントラネット、広域ネットワーク（「ＷＡＮ」）、ローカルエリアネットワーク（「ＬＡＮ」）、パーソナルエリアネットワーク（「ＰＡＮ」）、またはインターネットを含む任意の通信ネットワークまたはコンピュータネットワークを表す。
【００８８】
図８に示すように、１つまたは複数の記憶装置８６０（１）〜（Ｎ）はサーバ８４０に直接接続し得る。同様に、１つまたは複数の記憶装置８７０（１）〜（Ｎ）もサーバ８４５に直接接続し得る。記憶装置８６０（１）〜（Ｎ）および記憶装置８７０（１）〜（Ｎ）は一般に、データおよび／または他のコンピュータ可読命令を記憶可能な任意の種類または形態の記憶装置または記憶媒体を表す。特定の実施形態では、記憶装置８６０（１）〜（Ｎ）および記憶装置８７０（１）〜（Ｎ）は、ＮＦＳ、ＳＭＢ、またはＣＩＦＳ等の様々なプロトコルを使用してサーバ８４０および８４５と通信するように構成されたネットワーク接続記憶（「ＮＡＳ」）装置を表し得る。
【００８９】
サーバ８４０および８４５は、ストレージエリアネットワーク（「ＳＡＮ」）ファブリック８８０にも接続し得る。ＳＡＮファブリック８８０は一般に、複数の記憶装置間での通信に役立つことが可能な任意の種類または形態のコンピュータネットワークまたはアーキテクチャを表す。ＳＡＮファブリック８８０は、サーバ８４０および８４５、複数の記憶装置８９０（１）〜（Ｎ）、ならびに／あるいはインテリジェントストレージアレイ８９５間の通信に役立ち得る。ＳＡＮファブリック８８０は、装置８９０（１）〜（Ｎ）および／またはアレイ８９５が、クライアントシステム８１０、８２０、および８３０にローカルに接続された装置として見えるように、ネットワーク８５０ならびにサーバ８４０および８４５を介して、クライアントシステム８１０、８２０、および８３０と記憶装置８９０（１）〜（Ｎ）および／またはインテリジェントストレージアレイ８９５との間の通信にも役立ち得る。記憶装置８６０（１）〜（Ｎ）および記憶装置８７０（１）〜（Ｎ）と同様に、記憶装置８９０（１）〜（Ｎ）およびインテリジェントストレージアレイ８９５は一般に、データおよび／または他のコンピュータ可読命令を記憶可能な任意の種類または形態の記憶装置または記憶媒体を表す。
【００９０】
特定の実施形態では、図７の例示的な計算システム７１０を参照して、図７の通信インタフェース７２２等の通信インタフェースを使用して、各クライアントシステム８１０、８２０、および８３０とネットワーク８５０との間に接続性を提供し得る。クライアントシステム８１０、８２０、および８３０は、例えば、ウェブブラウザまたは他のクライアントソフトウェアを使用してサーバ８４０または８４５上の情報にアクセス可能であり得る。そのようなソフトウェアは、クライアントシステム８１０、８２０、および８３０が、サーバ８４０、サーバ８４５、記憶装置８６０（１）〜（Ｎ）、記憶装置８７０（１）〜（Ｎ）、記憶装置８９０（１）〜（Ｎ）、またはインテリジェントストレージアレイ８９５によりホストされるデータにアクセスできるようにし得る。図８は、データの交換にネットワーク（インターネット等）の使用を示すが、本明細書において説明され、かつ／または示される実施形態は、インターネットまたはいかなる特定のネットワークに基づく環境にも限定されない。
【００９１】
少なくとも１つの実施形態では、本明細書において開示される例示的な実施形態のうちの１つまたは複数のすべてまたは部分は、コンピュータプログラムとして符号化し、サーバ８４０、サーバ８４５、記憶装置８６０（１）〜（Ｎ）、記憶装置８７０（１）〜（Ｎ）、記憶装置８９０（１）〜（Ｎ）、インテリジェントストレージアレイ８９５、またはこれらの任意の組み合わせにロードされて実行され得る。本明細書において開示される例示的な実施形態のうちの１つまたは複数のすべてまたは部分は、サーバ８４０に記憶され、サーバ８４５により実行され、ネットワーク８５０を介してクライアントシステム８１０、８２０、および８３０に分散するコンピュータプログラムとして符号化してもよい。したがって、ネットワークアーキテクチャ８００は、単独で、または他の要素と組み合わせて、本明細書において開示される受信するステップ、変換するステップ、トークン化するステップ、作成するステップ、記憶するステップ、送信するステップ、実行するステップ、生成するステップ、実行するステップ、関連付けるステップ、分類するステップ、および／またはインデックスを作成するステップのうちの１つまたは複数を実行し得、かつ／またはそれ（ら）を実行する手段であり得る。ネットワークアーキテクチャ８００は、本開示において記載される他のステップおよび特徴を実行するためにも、かつ／またはそれ（ら）を実行する手段としても使用され得る。
【００９２】
上記開示に、特定のブロック図、フローチャート、および例を使用して様々な実施形態を説明したが、本明細書において説明され、かつ／または図示される各ブロック図の構成要素、フローチャートのステップ、動作、および／または構成要素は、独立して、かつ／または集合的に、広範囲のハードウェア構成、ソフトウェア構成、またはファームウェア構成（またはこれらの任意の組み合わせ）を使用して実施し得る。さらに、他の構成要素内に含まれる構成要素のいかなる開示も、同じ機能を達成するために、他の多くの構造を実施可能なため、例示的な性質のものであるとみなされるべきである。
【００９３】
本明細書において説明され、かつ／または図示されるプロセスパラメータおよびステップシーケンスは、単なる例として与えられ、必要に応じて変更が可能である。例えば、本明細書において図示され、かつ／または説明されるステップは、特定の順序で図示または説明され得るが、これらのステップは、必ずしも図示または説明された順序で実行される必要はない。本明細書において説明され、かつ／または図示される例示的な様々な方法は、本明細書において説明されるか、もしくは図示されるステップのうちの１つもしくは複数を省いてもよく、または開示されるステップに加えて他のステップを含んでもよい。
【００９４】
様々な実施形態を完全に機能する計算システムの文脈の中で本明細書において説明し、かつ／または図示したが、配布を実際に実行するために使用されるコンピュータ可読媒体の特定の種類に関係なく、これら例示的な実施形態のうちの１つまたは複数を様々な形態のプログラム製品として配布してもよい。本明細書に開示される実施形態は、特定のタスクを実行するソフトウェアモジュールを使用して実施してもよい。これらソフトウェアモジュールは、コンピュータ可読記憶媒体または計算システムに記憶可能なスクリプト、バッチ、または他の実行可能ファイルを含み得る。いくつかの実施形態では、これらソフトウェアモジュールは、本明細書において開示された例示的な実施形態のうちの１つまたは複数を実行するように、計算システムを構成し得る。
【００９５】
本明細書において説明したソフトウェアモジュールのうちの１つまたは複数は、データ、物理的な装置、および／または物理的な装置の表現を一形態から別の形態に変換し得る。例えば、本明細書において説明されるモジュールのうちの１つまたは複数は、インデックス付きデータをデータ記憶装置に記憶することにより、データ記憶装置の状態を変換し得る。
【００９６】
上記説明は、当業者が、本明細書において開示した例示的な実施形態の様々な態様を最良に利用できるようにするために提供された。この例示的な説明は、網羅的であることを意図しない。すなわち、開示されるいかなる厳密な形態にも限定されないことを意図する。多くの変更および変形が、本開示の主旨および範囲から逸脱せずに可能である。本明細書において開示する実施形態は、すべての点で限定ではなく例示として考えられるべきである。本開示の範囲を決定する際には、添付の特許請求の範囲およびその均等物を参照されたい。
【００９７】
別段に記される場合を除き、本明細書および特許請求の範囲において使用される場合、用語「ａ」または「ａｎ」は、「少なくとも１つの」を意味するものと解釈されるべきである。さらに、使いやすさのために、単語「含む」および「有する」は、本明細書および特許請求の範囲において使用される場合、単語「備える」と同義であり、同じ意味を有する。
【符号の説明】
【００９８】
１００、２００、３００、４００、  システム
１１０  モジュール
１１２、１１２（ａ）、１１２（ｂ）、１１２（ｃ）  通信モジュール
１１３、１１３（ａ）、１１３（ｂ）、１１３（ｃ）、１１３（ｄ）  セキュリティモジュール
１１４  変換モジュール
１１５  言語検出モジュール
１１６  トークン化モジュール
１１７  インデックス作成モジュール
１１８、１１８（ａ）、１１８（ｂ）、１１８（ｃ）  分類モジュール
１１９  データ共有モジュール
１２０  データベース
１２２  インデックスデータベース
１２４  データオブジェクトデータベース
１２６  分類データベース
２１０、３１０、４１０  第１の計算サブシステム
２１２、３１２、４１２  第１のアプリケーション
２２０、３２０、４２０  第２の計算サブシステム
２２２、３２２、４２２  第２のアプリケーション
２３０、３４０  データベースサブシステム
２４０、３５０、４４０、８５０  ネットワーク
３３２  第３のアプリケーション
４３０  企業サブシステム
４３２  企業アプリケーション
４３４  企業データベース
５００、６００  方法
７１０  計算システム
７１２  通信基盤
７１４  プロセッサ
７１６  システムメモリ
７１８  メモリコントローラ
７２０  Ｉ／Ｏコントローラ
７２２  通信インタフェース
７２４  表示装置
７２６  ディスプレイアダプタ
７２８  入力装置
７３０  入力インタフェース
７３２  一次記憶装置
７３３  バックアップ記憶装置
７３４  ストレージインタフェース
８００  ネットワークアーキテクチャ
８１０〜８３０  クライアントシステム
８４０、８４５  サーバ
８６０（１）〜（Ｎ）、８７０（１）〜（Ｎ）、８９０（１）〜（Ｎ）  記憶装置
８８０  ＳＡＮファブリック
８９５  インテリジェントストレージアレイ
【図１】
0005586425.tif 000002
【図２】
0005586425.tif 000003
【図３】
0005586425.tif 000004
【図４】
0005586425.tif 000005
【図５】
0005586425.tif 000006
【図６】
0005586425.tif 000007
【図７】
0005586425.tif 000008
【図８】
0005586425.tif 000009