(57)【要約】      （修正有）【課題】従来の索引付け技法は、比較的小規模なデータセットでさえも効果的に索引付けするのに何日もかかることがある。データの大部分を効率よく管理し、探索するための有効な手段を提供する。【解決手段】データのメタデータの生成をハードウェアアクセラレートする技法を開示する。このデータは、構造化データおよび／または非構造化データを含んでもよい。このメタデータから、ロバストで、高性能なデータ探索および解析を可能にする豊富な索引を生成することができる。データがコプロセッサに流され、索引用のメタデータがバス帯域幅速度で生成され、それによって索引付け待ち時間の劇的な改善がもたらされる。このような待ち時間の改善により、（すべてではないにせよ）はるかに大量の企業体データを効率よく、効果的に索引付けすることができる。【選択図】図２ａ
2014041615.tif 000002
【特許請求の範囲】
【請求項１】
コプロセッサにデータを流すステップと、
コプロセッサを使って流れるデータのメタデータを生成するステップと、
生成されたメタデータに基づき流れるデータの索引を生成するステップと
を含む、索引付けの方法。
【請求項２】
コプロセッサが再構成可能論理回路を備える、請求項１に記載の方法。
【請求項３】
再構成可能論理回路に、メタデータを生成するステップを実行するように構成されたファームウェアが展開されている、請求項２に記載の方法。
【請求項４】
ファームウェアがさらに索引を生成するステップを実行するように構成されている、請求項３に記載の方法。
【請求項５】
索引を生成するステップが、生成されたメタデータに基づき複数の索引を生成するステップを含む、請求項４に記載の方法。
【請求項６】
メタデータを生成するステップが、流れるデータに対して、複数の辞書内の複数の単語をキーとする完全マッチング操作を実行するステップを含み、それぞれの辞書が生成された索引のうちの異なる１つに対応している、請求項５に記載の方法。
【請求項７】
メタデータを生成するステップが、流れるデータに対して、複数の事前定義されたパターンをキーとする正規表現パターンマッチング操作を実行するステップをさらに含み、複数の生成された索引が複数の辞書に対応し、別の複数の生成された索引が複数の事前定義されたパターンに対応するように、それぞれの事前定義されたパターンが生成された索引のうちの異なる１つに対応している、請求項６に記載の方法。
【請求項８】
メタデータを生成するステップが、流れるデータに対して、複数の辞書内の複数の単語をキーとする近似マッチング操作を実行するステップを含み、それぞれの辞書が生成された索引のうちの異なる１つに対応している、請求項５に記載の方法。
【請求項９】
メタデータを生成するステップが、流れるデータに対して、複数の事前定義されたパターンをキーとする正規表現パターンマッチング操作を実行するステップをさらに含み、複数の生成された索引が複数の辞書に対応し、別の複数の生成された索引が複数の事前定義されたパターンに対応するように、それぞれの事前定義されたパターンが生成された索引のうちの異なる１つに対応している、請求項８に記載の方法。
【請求項１０】
メタデータを生成するステップが、流れるデータに対して、複数の事前定義されたパターンをキーとする正規表現パターンマッチング操作を実行することをさらに含み、それぞれの事前定義されたパターンが生成された索引のうちの異なる１つに対応している、請求項５に記載の方法。
【請求項１１】
メタデータを生成するステップが、流れるデータに対して分類操作を実行するステップを含む、請求項５に記載の方法。
【請求項１２】
メタデータを生成するステップが、流れるデータに対してヒストグラム生成操作を実行するステップを含む、請求項５に記載の方法。
【請求項１３】
生成されたヒストグラムに基づき流れるデータに対してクラスタ化操作を実行するステップをさらに含む、請求項１２に記載の方法。
【請求項１４】
ファームウェアを使って流れるデータに対して特徴ベクトル抽出を実行するステップをさらに含む、請求項５に記載の方法。
【請求項１５】
特徴ベクトル抽出操作が、流れるデータに対して単語解析操作を実行するステップを含む、請求項１４に記載の方法。
【請求項１６】
特徴ベクトル抽出操作が、解析された流れるデータに対してストップリストフィルタ操作を実行するステップをさらに含む、請求項１５に記載の方法。
【請求項１７】
特徴ベクトル抽出操作が、解析され、フィルタリングされた流れるデータに対して語幹抽出操作を実行するステップをさらに含む、請求項１６に記載の方法。
【請求項１８】
流れるデータが非構造化データである、請求項５に記載の方法。
【請求項１９】
非構造化データが複数のドキュメントを含む、請求項１８に記載の方法。
【請求項２０】
生成された索引を、関係データベースによって格納されている複数の作動用索引とマージするステップをさらに含む、請求項５に記載の方法。
【請求項２１】
データを受け取るステップと、
受け取ったデータを、システムの主プロセッサ以外の処理装置に流すステップと、
処理装置を使い流れるデータに対してメタデータ生成操作を実行して、流れるデータのメタデータを生成するステップと
を含むデータのメタデータを生成する方法。
【請求項２２】
処理装置がコプロセッサを備える、請求項２１に記載の方法。
【請求項２３】
コプロセッサが再構成可能論理回路を備える、請求項２２に記載の方法。
【請求項２４】
再構成可能論理回路に、メタデータ生成操作を実行するように構成されたファームウェアが展開されている、請求項２３に記載の方法。
【請求項２５】
メタデータ生成操作を実行するステップが、生成されたメタデータに基づき流れるデータの索引を生成するステップを含む、請求項２２に記載の方法。
【請求項２６】
索引を生成するステップが、生成されたメタデータに基づき流れるデータの複数の索引を同時に生成するステップを含む、請求項２５に記載の方法。
【請求項２７】
データストリームが複数のデータ単語を含み、メタデータ生成操作を実行するステップが、
流れるデータ単語と辞書内の複数の単語との間で完全マッチ操作を実行するステップと、
流れる単語と辞書内の単語の間に完全マッチが見つかったことに応答して、その辞書単語に対応する生成された索引内のエントリを、その辞書単語の完全マッチである流れるデータ内のデータ単語を指し示すポインタで更新するステップと
を含む、請求項２５に記載の方法。
【請求項２８】
メタデータ生成操作を実行するステップが、生成されたメタデータに基づき流れるデータの複数の索引を同時に生成するステップを含み、完全マッチ操作を実行するステップが、流れるデータ単語と、複数の辞書内の複数の単語との間で完全マッチ操作を実行するステップを含み、それぞれの辞書が生成された索引のうちの異なる１つに対応している、請求項２７に記載の方法。
【請求項２９】
索引を生成するステップが、どの辞書内のどの単語の完全マッチでもない流れるデータ内の単語の総索引を生成するステップをさらに含む、請求項２８に記載の方法。
【請求項３０】
辞書のうちの少なくとも１つがまる１冊分の英語辞書である、請求項２８に記載の方法。
【請求項３１】
辞書のうちの少なくとも１つがまる１冊分の外国語辞書である、請求項２８に記載の方法。
【請求項３２】
辞書のうちの少なくとも１つが技術辞書である、請求項２８に記載の方法。
【請求項３３】
辞書のうちの少なくとも１つが医学辞書である、請求項２８に記載の方法。
【請求項３４】
辞書が、事前定義された単語のリストを含む、請求項２７に記載の方法。
【請求項３５】
辞書の内容を変更するステップをさらに含む、請求項３４に記載の方法。
【請求項３６】
データストリームが複数のデータ単語を含み、メタデータ生成操作を実行するステップが、
流れるデータ単語と辞書内の複数の単語との間で近似マッチ操作を実行するステップと、
流れる単語と辞書内の単語の間に完全マッチが見つかったことに応答して、その辞書単語に対応する生成された索引内のエントリを、その辞書単語の近似マッチである流れるデータ内のデータ単語を指し示すデータ単語で更新するステップと
を含む、請求項２５に記載の方法。
【請求項３７】
メタデータ生成操作を実行するステップが、生成されたメタデータに基づき流れるデータの複数の索引を同時に生成するステップを含み、近似マッチ操作を実行するステップが、流れるデータ単語と、複数の辞書内の複数の単語との間で近似マッチ操作を実行するステップを含み、それぞれの辞書が生成された索引のうちの異なる１つに対応している、請求項３６に記載の方法。
【請求項３８】
索引を生成するステップが、どの辞書内のどの単語の近似マッチでもない流れるデータ内の単語の総索引を生成するステップをさらに含む、請求項３７に記載の方法。
【請求項３９】
辞書のうちの少なくとも１つがまる１冊分の英語辞書である、請求項３７に記載の方法。
【請求項４０】
辞書のうちの少なくとも１つがまる１冊分の外国語辞書である、請求項３７に記載の方法。
【請求項４１】
辞書のうちの少なくとも１つが技術辞書である、請求項３７に記載の方法。
【請求項４２】
辞書のうちの少なくとも１つが医学辞書である、請求項３７に記載の方法。
【請求項４３】
辞書が事前定義された単語のリストを含む、請求項３６に記載の方法。
【請求項４４】
辞書の内容を変更するステップをさらに含む、請求項４３に記載の方法。
【請求項４５】
データストリームが複数のデータ単語を含み、メタデータ生成操作を実行するステップが、
流れるデータ単語と、複数の事前定義されたパターンとの間で正規表現パターンマッチング操作を実行するステップと、
生成されたメタデータに基づき流れるデータの複数の索引を同時に生成するステップとを含み、それぞれの事前定義されたパターンが生成された索引のうちの異なる１つに対応しており、さらに、
流れる単語と事前定義されたパターンの間にパターンマッチが見つかったことに応答して、その事前定義されたパターンに対応する生成された索引内のエントリを、その事前定義されたパターンのパターンマッチである流れるデータ内のデータを指し示すポインタで更新するステップ
を含む、請求項２５に記載の方法。
【請求項４６】
索引を生成するステップが、どの事前定義されたパターンのパターンマッチでもない流れるデータ内のデータの総索引を生成するステップをさらに含む、請求項４５に記載の方法。
【請求項４７】
事前定義されたパターンのうちの少なくとも１つがクレジットカード番号である、請求項４５に記載の方法。
【請求項４８】
事前定義されたパターンのうちの少なくとも１つが社会保障番号である、請求項４５に記載の方法。
【請求項４９】
事前定義されたパターンのうちの少なくとも１つが電子メールアドレスである、請求項４５に記載の方法。
【請求項５０】
事前定義されたパターンのうちの少なくとも１つが電話番号である、請求項４５に記載の方法。
【請求項５１】
事前定義されたパターンのうちの少なくとも１つがインターネットユニフォームリソースロケータ（ＵＲＬ）である、請求項４５に記載の方法。
【請求項５２】
事前定義されたパターンのうちの少なくとも１つを変更するステップをさらに含む、請求項４５に記載の方法。
【請求項５３】
メタデータ生成操作を実行するステップが、流れるデータに対して分類操作を実行するステップを含む、請求項２２に記載の方法。
【請求項５４】
分類操作を実行するステップが、流れるデータの各部分が複数の事前定義されたクラスのうちのいずれかに属するかどうか判定するステップを含む、請求項５３に記載の方法。
【請求項５５】
分類操作に基づき流れるデータの複数のデータクラス索引を生成するステップをさらに含む、請求項５４に記載の方法。
【請求項５６】
事前定義されたクラスのうちの少なくとも１つが法律分類である、請求項５４に記載の方法。
【請求項５７】
事前定義されたクラスのうちの少なくとも１つが医学分類である、請求項５４に記載の方法。
【請求項５８】
事前定義されたクラスのうちの少なくとも１つがニュース分類である、請求項５４に記載の方法。
【請求項５９】
事前定義されたクラスのうちの少なくとも１つがスポーツ分類である、請求項５４に記載の方法。
【請求項６０】
事前定義されたクラスのうちの少なくとも１つが、データストリームの部分が事前定義されたパターンを含むかどうかに関する分類である、請求項５４に記載の方法。
【請求項６１】
事前定義されたパターンがクレジットカード番号のパターンである、請求項５４に記載の方法。
【請求項６２】
メタデータ生成操作を実行するステップが、流れるデータのヒストグラムを生成するステップを含む、請求項２２に記載の方法。
【請求項６３】
生成されたヒストグラムに基づき流れるデータ内のデータのクラスタ化操作を実行するステップをさらに含む、請求項６２に記載の方法。
【請求項６４】
クラスタ化操作に基づき流れるデータ内のデータの索引を生成するステップをさらに含む、請求項６３に記載の方法。
【請求項６５】
生成された索引を、関係データベースによって維持されている既存の作動用索引とマージするステップ
をさらに含む、請求項２５に記載の方法。
【請求項６６】
流れるデータが非構造化データである、請求項２５に記載の方法。
【請求項６７】
非構造化データが複数のドキュメントを含む、請求項６６に記載の方法。
【請求項６８】
流れるデータが構造化データである、請求項２５に記載の方法。
【請求項６９】
コプロセッサで流れるデータを前処理して流れるデータの複数の特徴ベクトルを生成するステップと、索引を生成するときに生成された特徴ベクトルを使用するステップとをさらに含む、請求項２５に記載の方法。
【請求項７０】
データのメタデータを生成するシステムであって、
主プロセッサと、
主プロセッサ以外の処理装置と
を備え、
主プロセッサがデータストリームを処理装置に向けるように構成されており、
処理装置が、データストリームを受け取り、データストリームにメタデータ生成操作を実行してデータストリームのメタデータを生成するように構成されているシステム。
【請求項７１】
処理装置がコプロセッサを備える、請求項７０に記載のシステム。
【請求項７２】
コプロセッサが再構成可能論理回路を備える、請求項７１に記載のシステム。
【請求項７３】
再構成可能論理回路に、メタデータ生成操作を実行するように構成されたファームウェアが展開されている、請求項７２に記載のシステム。
【請求項７４】
コプロセッサがさらに、生成されたメタデータに基づきデータストリームの索引を生成するように構成されている、請求項７１に記載のシステム。
【請求項７５】
コプロセッサがさらに、生成されたメタデータに基づきデータストリームの複数の索引を同時に生成するように構成されている、請求項７４に記載のシステム。
【請求項７６】
データストリームが複数のデータ単語を含み、コプロセッサが、辞書がロードされた完全マッチングモジュールで構成されており、完全マッチングモジュールが、データストリーム内の単語と辞書内の複数の単語との間に存在する任意の完全マッチを検出するように構成されており、コプロセッサがさらに、データストリーム内の単語と辞書内の単語との間で完全マッチを検出したことに応答して、その辞書単語に対応する生成された索引内のエントリを、その辞書単語の完全マッチであるデータストリーム内のデータ単語を指し示すポインタで更新するように構成されている、請求項７４に記載のシステム。
【請求項７７】
コプロセッサがさらに、生成されたメタデータに基づきデータストリームの複数の索引を同時に生成するように構成されており、完全マッチングモジュールがさらに、データストリームの単語と、複数の辞書内の複数の単語との間に存在する任意の完全マッチを検出するように構成されており、それぞれの辞書が生成された索引のうちの異なる１つに対応している、請求項７６に記載のシステム。
【請求項７８】
コプロセッサがさらに、どの辞書内のどの単語の完全マッチでもないデータストリーム内の単語の総索引を生成するように構成されている、請求項７７に記載のシステム。
【請求項７９】
データストリームが複数のデータ単語を含み、コプロセッサが、辞書がロードされた近似マッチングモジュールで構成されており、近似マッチングモジュールが、データストリーム内の単語と辞書内の複数の単語との間に存在する任意の近似マッチを検出するように構成されており、コプロセッサがさらに、データストリーム内の単語と辞書内の単語との間で近似マッチを検出したことに応答して、その辞書単語に対応する生成された索引内のエントリを、その辞書単語の近似マッチであるデータストリーム内のデータ単語を指し示すポインタで更新するように構成されている、請求項７４に記載のシステム。
【請求項８０】
コプロセッサがさらに、生成されたメタデータに基づきデータストリームの複数の索引を同時に生成するように構成されており、近似マッチングモジュールがさらに、データストリームの単語と、複数の辞書内の複数の単語との間に存在する任意の近似マッチを検出するように構成されており、それぞれの辞書が生成された索引のうちの異なる１つに対応している、請求項７９に記載のシステム。
【請求項８１】
コプロセッサがさらに、どの辞書内のどの単語の近似マッチでもないデータストリーム内の単語の総索引を生成するように構成されている、請求項８０に記載のシステム。
【請求項８２】
データストリームが複数のデータ単語を含み、コプロセッサがさらに、生成されたメタデータに基づきデータストリームの複数の索引を同時に生成するように構成されており、コプロセッサが、複数の事前定義されたパターンがロードされた正規表現パターンマッチングモジュールで構成されており、正規表現パターンマッチングモジュールが、データストリーム内の単語と事前定義されたパターンとの間に存在する任意のパターンマッチを検出するように構成されており、コプロセッサがさらに、データストリーム内のデータと事前定義されたパターンとの間のパターンマッチを検出したことに応答して、その事前定義されたパターンに対応する生成された索引内のエントリを、その事前定義されたパターンのパターンマッチであるデータストリーム内のデータを指し示すポインタで更新するように構成されている、請求項７４に記載のシステム。
【請求項８３】
コプロセッサがさらに、どの事前定義されたパターンのパターンマッチでもないデータストリーム内のデータの総索引を生成するように構成されている、請求項８２に記載のシステム。
【請求項８４】
コプロセッサがさらに、生成されたメタデータに基づきデータストリームに対して分類操作を実行するように構成されている、請求項７１に記載のシステム。
【請求項８５】
コプロセッサがさらに、データストリームの各部分が複数の事前定義されたクラスのうちのいずれかに属するかどうか判定するように構成されている、請求項８４に記載のシステム。
【請求項８６】
コプロセッサがさらに、分類操作に基づきデータストリームの複数のデータクラス索引を生成するように構成されている、請求項８５に記載のシステム。
【請求項８７】
コプロセッサがさらに、データストリームのヒストグラムを生成するように構成されている、請求項７１に記載のシステム。
【請求項８８】
プロセッサがさらに、生成されたヒストグラムに基づきデータストリーム内のデータのクラスタ化操作を実行するように構成されている、請求項８７に記載のシステム。
【請求項８９】
プロセッサがさらに、生成された索引を、関係データベースによって維持されている既存の作動用索引とマージするように構成されている、請求項７４に記載のシステム。
【請求項９０】
複数のウェブページに索引付けする方法であって、
コプロセッサに複数のウェブページのデータを流すステップと、
コプロセッサを使って流れるデータのメタデータを生成するステップと、
生成されたメタデータに基づきウェブページの索引を生成するステップと
を含む、方法。
【請求項９１】
コプロセッサが再構成可能論理回路を備える、請求項９０に記載の方法。
【請求項９２】
再構成可能論理回路に、メタデータを生成するステップを実行するように構成されたファームウェアが展開されている、請求項９１に記載の方法。
【請求項９３】
ファームウェアがさらに、索引を生成するステップを実行するように構成されている、請求項９２に記載の方法。
【請求項９４】
索引を生成するステップが、生成されたメタデータに基づき複数の索引を生成するステップを含む、請求項９３に記載の方法。
【請求項９５】
メタデータを生成するステップが、流れるデータに対して、複数の辞書内の複数の単語をキーとする完全マッチング操作を実行するステップを含み、それぞれの辞書が生成された索引のうちの異なる１つに対応している、請求項９４に記載の方法。
【請求項９６】
メタデータを生成するステップが、流れるデータに対して、複数の事前定義されたパターンをキーとする正規表現パターンマッチング操作を実行するステップをさらに含み、複数の生成された索引が複数の辞書に対応し、別の複数の生成された索引が複数の事前定義されたパターンに対応するように、それぞれの事前定義されたパターンが生成された索引のうちの異なる１つに対応している、請求項９５に記載の方法。
【請求項９７】
メタデータを生成するステップが、流れるデータに対して、複数の辞書内の複数の単語をキーとする近似マッチング操作を実行するステップを含み、それぞれの辞書が生成された索引のうちの異なる１つに対応している、請求項９４に記載の方法。
【請求項９８】
メタデータを生成するステップが、流れるデータに対して、複数の事前定義されたパターンをキーとする正規表現パターンマッチング操作を実行するステップをさらに含み、複数の生成された索引が複数の辞書に対応し、別の複数の生成された索引が複数の事前定義されたパターンに対応するように、それぞれの事前定義されたパターンが生成された索引のうちの異なる１つに対応している、請求項９７に記載の方法。
【請求項９９】
メタデータを生成するステップが、流れるデータに対して、複数の事前定義されたパターンをキーとする正規表現パターンマッチング操作を実行するステップをさらに含み、それぞれの事前定義されたパターンが生成された索引のうちの異なる１つに対応している、請求項９４に記載の方法。
【請求項１００】
メタデータを生成するステップが、流れるデータに対して分類操作を実行するステップを含む、請求項９４に記載の方法。
【請求項１０１】
メタデータを生成するステップが、流れるデータに対してヒストグラム生成操作を実行するステップを含む、請求項９４に記載の方法。
【請求項１０２】
生成されたヒストグラムに基づき流れるデータに対してクラスタ化操作を実行するステップをさらに含む、請求項１０１に記載の方法。
【請求項１０３】
ファームウェアを使って流れるデータに対して特徴ベクトル抽出を実行するステップをさらに含む、請求項９４に記載の方法。
【請求項１０４】
特徴ベクトル抽出操作が、流れるデータに対して単語解析操作を実行するステップを含む、請求項１０３に記載の方法。
【請求項１０５】
特徴ベクトル抽出操作が、解析された流れるデータに対してストップリストフィルタ操作を実行するステップをさらに含む、請求項１０４に記載の方法。
【請求項１０６】
特徴ベクトル抽出操作が、解析され、フィルタリングされた流れるデータに対して語幹抽出操作を実行するステップをさらに含む、請求項１０５に記載の方法。
【請求項１０７】
生成された索引を、関係データベースによって格納されている複数の作動用索引とマージするステップをさらに含む、請求項９４に記載の方法。
【請求項１０８】
メタデータでビットストリームを豊富化する方法であって、
データオブジェクトに対応するビットストリームを受け取るステップと、
コプロセッサを使ってビットストリームのメタデータを生成するステップと、
コプロセッサを使い生成されたメタデータに基づいてビットストリームを変更するステップと
を含む、方法。
【請求項１０９】
コプロセッサを使い生成されたメタデータに基づいてデータオブジェクトを分類するステップ
をさらに含み、
変更するステップが、コプロセッサを使った分類するステップに基づいてビットストリームを変更するステップを含む、請求項１０８に記載の方法。
【請求項１１０】
分類するステップが、データオブジェクトに分類を割り当てるステップを含み、変更するステップが、データオブジェクトに割り当てられた分類を示す少なくとも１ビットをビットストリームに加えるステップを含む、請求項１０９に記載の方法。
【請求項１１１】
コプロセッサが再構成可能論理回路を備える、請求項１１０に記載の方法。
【請求項１１２】
メタデータを生成するステップが、ビットストリームに対して、複数の辞書内の複数の単語をキーとする完全マッチング操作を実行するステップを含む、請求項１１１に記載の方法。
【請求項１１３】
メタデータを生成するステップが、ビットストリームに対して、複数の事前定義されたパターンをキーとする正規表現パターンマッチング操作を実行するステップを含む、請求項１１１に記載の方法。
【請求項１１４】
メタデータを生成するステップが、ビットストリームに対して、複数の辞書内の複数の単語をキーとする近似マッチング操作を実行するステップを含む、請求項１１１に記載の方法。
【請求項１１５】
主プロセッサとコプロセッサとを備えるシステム内で、非構造化データのメタデータ索引を構築する方法であって、
コプロセッサに非構造化データを流すステップと、
コプロセッサを使い流れる非構造化データに対してメタデータ生成操作を実行して非構造化データに関するメタデータを生成するステップと
を含む、方法。
【請求項１１６】
非構造化データがコプロセッサを流れた後で非構造化データを非構造化データのデータストアに格納するステップと、
生成されたメタデータを構造化データのデータベースに格納するステップと
をさらに含む、請求項１１５に記載の方法。
【請求項１１７】
コプロセッサが再構成可能論理回路を備える、請求項１１６に記載の方法。
【請求項１１８】
再構成可能論理回路に、メタデータ生成操作を実行するように構成されたファームウェアが展開されている、請求項１１７に記載の方法。
【請求項１１９】
メタデータが、非構造化データが非構造化データのデータストア内のどこに格納されているかの識別を含む、請求項１１８に記載の方法。
【請求項１２０】
メタデータを格納するステップが、メタデータをＲＤＢＭＳに格納するステップを含む、請求項１１９に記載の方法。
【請求項１２１】
流すステップが、
ファームウェアに企業体のすべての非構造化データを流してその非構造化データに関するメタデータを生成するステップ
を含む、請求項１１９に記載の方法。
【請求項１２２】
非構造化データのメタデータ索引を構築するシステムであって、
主プロセッサと、
非構造化データストリームを受け取り、非構造化データストリームに対してメタデータ生成操作を実行して非構造化データに関するメタデータを生成するように構成されたコプロセッサと
を備える、システム。
【請求項１２３】
コプロセッサが再構成可能論理回路を備える、請求項１２２に記載のシステム。
【請求項１２４】
再構成可能論理回路に、メタデータ生成操作を実行するように構成されたファームウェアが展開されている、請求項１２３に記載のシステム。
【請求項１２５】
非構造化データのメタデータ索引を構築する方法であって、
流される非構造化データに対してメタデータ生成操作を実行して非構造化データに関するメタデータを生成するように構成されている、再構成可能論理回路に展開されたファームウェアに非構造化データを流すステップと、
非構造化データを非構造化データのデータストアに格納するステップと、
非構造化データに関するメタデータを構造化データのデータベースに格納するステップと
を含む、方法。
【請求項１２６】
データストリームにハードウェア速度で索引付けするように構成されたファームウェアパイプラインを備える、データストリームを受け取るように構成された再構成可能論理回路
を備える、索引付け装置。
【請求項１２７】
ファームウェアパイプラインがデータストリームを操作する完全マッチングモジュールを備え、完全マッチングモジュールが複数の辞書をキーとして複数の索引の索引付け情報を生成する、請求項１２６に記載の装置。
【請求項１２８】
ファームウェアパイプラインがデータストリームを操作する近似マッチングモジュールを備え、近似マッチングモジュールが複数の辞書をキーとして複数の索引の索引付け情報を生成する、請求項１２６に記載の装置。
【請求項１２９】
ファームウェアパイプラインがデータストリームを操作する正規表現パターンマッチングモジュールを備え、正規表現パターンモジュールが複数の事前定義されたパターンをキーとして複数の索引の索引付け情報を生成する、請求項１２６に記載の装置。
【請求項１３０】
ファームウェアパイプラインがデータストリームを操作するマッチングモジュールをさらに備え、マッチングモジュールが複数の辞書をキーとして別の複数の索引の索引付け情報を生成する、請求項１２９に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照および優先権主張）
本出願は、参照によりその開示全体が本明細書に組み込まれる、２００６年１１月１３日に出願された、米国仮特許出願第６０／８６５６２９号の優先権を主張するものである。
【０００２】
本出願は、参照によりその開示全体が本明細書に組み込まれる、「Ｍｅｔｈｏｄ  ａｎｄ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｉｎｔｅｇｒａｔｉｏｎ，Ｐｒｏｃｅｓｓｉｎｇ  ａｎｄ  Ｓｅａｒｃｈｉｎｇ  ｏｆ  Ｓｔｒｕｃｔｕｒｅｄ  ａｎｄ  Ｕｎｓｔｒｕｃｔｕｒｅｄ  Ｄａｔａ  Ｕｓｉｎｇ  Ｃｏｐｒｏｃｅｓｓｏｒｓ」という名称の、本出願と同日に出願された、米国特許出願第１１／９３８，７０９号に関連するものである。
【０００３】
本発明は、一般に、メタデータ生成およびデータ索引付けの分野を対象とし、詳細には、高速データストリームの索引付けを対象とする。
【背景技術】
【０００４】
（用語）
以下の各項に、本明細書で使用する様々な用語のいくつかの定義を示す。また以下の項には、これらの用語に関連する背景情報も示す。
【０００５】
ＧＰＰ：本明細書で使用する場合、「汎用プロセッサ」（またはＧＰＰ）という用語は、固定された形態を有し、その機能が可変であり、この可変機能が、命令を取り出し、その命令を実行することによって定義されるハードウェア装置（例えば、ＩｎｔｅｌのＸｅｏｎプロセッサやＡＭＤのＯｐｔｅｒｏｎプロセッサなど）をいい、従来の中央処理装置（ＣＰＵ）がその一般的な例である。
【０００６】
再構成可能論理：本明細書で使用する場合、「再構成可能論理」という用語は、その形態および機能を、製造後に現場で大幅に変更（すなわち再構成）することのできる任意の論理技術をいう。これはＧＰＰと対比されるものであり、ＧＰＰの機能は製造後に変化し得るが、その形態は製造時に固定されている。
【０００７】
ソフトウェア：本明細書で使用する場合、「ソフトウェア」という用語は、ＧＰＰまたは他の処理装置上で展開されるデータ処理機能をいい、ソフトウェアは、ソフトウェアがロードされる装置の形態を変更し、または定義するのに使用することはできない。
【０００８】
ファームウェア：本明細書で使用する場合、「ファームウェア」という用語は、再構成可能論理または他の処理装置上で展開されるデータ処理機能をいい、ファームウェアは、ファームウェアがロードされる装置の形態を変更し、または定義するのに使用され得る。
【０００９】
コプロセッサ：本明細書で使用する場合、「コプロセッサ」という用語は、主プロセッサを有する計算処理システムにおいて、他の構成要素と連携して動作するように設計された計算エンジンをいう（マルチコアプロセッサアーキテクチャの場合のように、主プロセッサ自体が複数のプロセッサを備えてもよい）。典型的には、コプロセッサは、特定のタスク集合を実行するように最適化され、システム性能を最適化するために（典型的にはＧＰＰである）主プロセッサのタスクを軽減するのに使用される。コプロセッサによって実行されるタスクの範囲は、コプロセッサのアーキテクチャに応じて、固定とすることも、可変とすることもできる。固定式コプロセッサアーキテクチャの例には、広範囲のタスクを実行するグラフィックスプロセッサユニットや、比較的狭い範囲のタスク集合を実行する浮動小数点数値コプロセッサが含まれる。再構成可能コプロセッサアーキテクチャの例には、幅広い種類の固定型の、またはプログラム可能な計算エンジンを実施するように再構成され得る、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）などの再構成可能論理回路が含まれる。コプロセッサの機能は、ソフトウェアおよび／またはファームウェアによって定義されてもよい。
【００１０】
ハードウェアアクセラレーション：本明細書で使用する場合、「ハードウェアアクセラレーション」という用語は、主プロセッサから１つまたは複数の処理タスクを軽減して主プロセッサに関連したこれらのタスクの処理待ち時間を低減するために、コプロセッサ上に実施されたソフトウェアおよび／またはファームウェアを使用することをいう。
【００１１】
企業体：本明細書で使用する場合、「企業体」という用語は、その進行中の業務の一部として（「企業体データ」と呼ばれる）データを格納し、かつ／または処理する任意の事業組織または行政主体をいう。
【００１２】
データベース：本明細書で使用する場合、「データベース」という用語は、問い合わせ処理を迅速化するための索引付け機能を有する永続的データストアをいう。様々なデータベース管理システム（ＤＢＭＳ）実装形態が、関係型（ＲＤＢＭＳ）、オブジェクト指向型（ＯＯＤＢＭＳ）、階層型などとして類別され得る。しかし、今日業界において優勢なアーキテクチャは関係型の、行／列からなる、構造化照会言語（ＳＱＬ）対応データベースである。ＡＮＳＩ標準のＳＱＬデータベースエンジンは、普通は効率的な方法で、問い合わせに応答して構造化データを検索することのできる、成熟したソフトウェアアーキテクチャである。
【００１３】
構造化データ：本明細書で使用する場合、「構造化データ」という用語は、関係データベースに合わせて正規化され、永続化されているデータをいう。正規化とは、データを表の行／列形式にし、重複データを別々の表に抽出するデータ設計プロセスである。関係列内の構造化データには、Ｂツリー索引を用いて索引付けして、これらの列内のデータへのアクセスを大幅に迅速化することができる。ＳＱＬでは、構造化列にはサイズ限界がある。これらの列には、一貫性のあるデータ品質を保証するための制約条件および参照整合性が適用され得る。一般的な構造化ＳＱＬデータ型の例は、ＩＮＴ（ｅｇｅｒ）、ＮＵＭＢＥＲ、ＣＨＡＲ（ａｃｔｅｒ）、ＶＡＲＣＨＡＲ、ＤＡＴＥ、ＴＩＭＥＳＴＡＭＰなどである。
【００１４】
非構造化データ：本明細書で使用する場合、「非構造化データ」という用語は、前記の構造化データの定義の範囲に入らないデータをいう。したがって、非構造化データという用語は、自由な形のテキストまたは埋込み値が含まれているファイル、ドキュメントまたはオブジェクトを含む。このデータは、データを生成したアプリケーションによって使用された、しばしばバイナリ形式のデータを含む、完全なバイト集合を含む。非構造化データの例には、ワードプロセッシングドキュメント（Ｍｉｃｒｏｓｏｆｔ  Ｗｏｒｄの固有の形式のドキュメントなど）、Ａｄｏｂｅ  Ａｃｒｏｂａｔドキュメント、電子メール、画像ファイル、映像ファイル、オーディオファイル、およびファイルを作成したソフトウェアアプリケーションに関連する固有の形式の他のファイルなどが含まれる。ＳＱＬでは、非構造化列は、無制限ではないにせよ、非常に大きいサイズを有する。非構造化ＳＱＬデータ型の一般的な例は、ＢＬＯＢ、ＴＥＸＴ、ＸＭＬ、ＲＡＷ、ＩＭＡＧＥなどである。また、非構造化オブジェクトは、データベースの外部に、例えばオペレーティングシステムファイルなどに格納されてもよい。データベースエンジン内からこれらの外部オブジェクトへのアクセスには、データベース表のメタデータ内の格納場所へのリンクを使用する。
【００１５】
本明細書で使用する際に、ＸＭＬという用語を通常は「構造化」として類別しない理由には以下のものがある：
・ＸＭＬは、大きな値、またはサイズが無制限の値を持ち得る。
・ＸＭＬは、しばしば、強制されたデータ型を持たないことがある。
・ＸＭＬは柔軟なスキーマを有する。
・要素および属性のＸＭＬ値は、しばしば、従来の「構造化」データベース列ほど厳格に適合されず、不要なものが完全に除去されていないことがある。
【００１６】
柔軟なスキーマを有する「半構造化」データの概念が、特にＸＭＬについては台頭しつつあるが、本発明では、関係データベースに合わせて正規化され、永続化されていないあらゆるものは、非構造化データとみなす。したがって、ＸＭＬデータ型のものである列は、この「非構造化データ」の定義に該当することになる。
【００１７】
メタデータ：本明細書で使用する場合、データオブジェクトおよびドキュメントの文脈における「メタデータ」という用語は、データオブジェクトまたはドキュメントを記述し、または特徴付けるデータをいう。オブジェクトおよびドキュメントのメタデータの例には、それだけに限らないが、ファイル型、バイトサイズ、作成日、最終変更日、著者、表題、ドキュメント／オブジェクトのデータソースに関する情報（任意選択で、ドキュメントを作成するのに使用されたプログラムの名称およびバージョン番号を含む）、データが他のデータとマッチするかどうかに関する情報、主題対象、分類情報（ドキュメント／オブジェクトの概念に関する情報、ドキュメント／データオブジェクト内に含まれる人名／地名／企業名、語数カウントなど）、ドキュメント／オブジェクト内のデータに関連する位置情報、ドキュメント／オブジェクトに関する他の内容から派生する情報が含まれる。
【００１８】
バス：本明細書で使用する場合、「バス」という用語は、装置および場所がそのアドレスによりアクセスされる任意の物理的相互接続を含む論理バスをいう。本発明の実施に際して使用され得るバスの例には、それだけに限らないが、ＰＣＩバスファミリ（ＰＣＩ−ＸやＰＣＩ−Ｅｘｐｒｅｓｓなど）およびＨｙｐｅｒＴｒａｎｓｐｏｒｔバスが含まれる。
【００１９】
パイプライン化：本明細書で使用する場合、「パイプライン」、「パイプライン化シーケンス」、または「連鎖」という用語は、あるアプリケーションモジュールの出力が、シーケンス内の次のアプリケーションモジュールの入力に接続されているアプリケーションモジュールの配列をいう。このパイプライン化配列は、各アプリケーションモジュールが、所与のクロックサイクルの間に受け取る任意のデータを独立に操作し、次いで、別のクロックサイクルの間にその出力をシーケンス内の次の下流側アプリケーションモジュールに渡すことを可能にする。
【００２０】
全文検索：本明細書で使用する場合、「全文検索」という用語は、ドキュメントまたはオブジェクトの全体を通してスキャンし、あらゆる単語またはバイトを考慮することをいう。この処理は、近似、柔軟なスキーマでのタグ付けに基づくトークン化、ワイルドカード処理、または複雑なマッチングを可能にし得る。
【００２１】
テキスト解析およびテキストマイニング：本明細書で使用する場合、「テキスト解析」および「テキストマイニング」という用語は、意味論のような複雑な言語概念を使ってドキュメントオブジェクトを操作するアルゴリズムをいう。テキスト解析／テキストマイニング処理の例には、名前付きエンティティ認識、内容抽出、ドキュメント分類、ドキュメント要約、自然言語処理、統計パターン学習、および関連性ランク付けが含まれる。
【００２２】
企業、団体、機関、その他の事業体といった企業体は、管理する必要のある大量のデータを有する。企業体の重要データの中には、正規化され、構造化され、関係データベースに格納されているものもあるが、大部分の企業体のデータ（一般に企業体データの８０％前後と考えられる）は構造化されていない。従来の計算システムでは、このような非構造化データの効果的管理および効率的アクセスに問題がある。
【００２３】
索引付けは、データを探索するための効率を高めるのに使用される公知の技法である。索引とは、データの集合と関連付けられた用語およびポインタのリストである。このような索引の一例１００を図１に示す。索引１００は、それぞれが用語１０４（表の「用語」列参照）および１つまたは複数のポインタ１０６（表の「ポインタ」列参照）を含む複数の索引エントリ１０２を含む。索引内の各用語１０４は、語、句、またはデータと関連付けられた他の情報とすることができる。多くの場合、これらの用語はユーザにより指定される。索引内の各ポインタ１０６は、そのエントリ１０２の用語１０４に対応し、その用語がデータ内のどこにあるか識別する。非構造化データでは、データ集合は、しばしば、複数のドキュメントを含む。ドキュメントの例には、ワードプロセッシングファイル、スプレッドシートファイル、電子メール、画像、Ａｄｏｂｅ  Ａｃｒｏｂａｔファイル、ウェブページ、ブック、ブックのページなどといった項目が含まれる。
【００２４】
しかし本発明者らは、従来の索引付け技法は効果的な索引を作成するのに多大な時間を要すると考えるものである。索引付けの計算集約的特性のために、ＧＰＰなどの中央プロセッサ上にソフトウェアとして展開される従来の索引付け技法では、比較的小規模なデータセットでさえも効果的に索引付けするのに何日もかかることがある。企業体には毎日のように大量のデータが発生するため、これらの従来の索引付け技法を使って、企業体が所有する（また企業体がアクセスすることのできる）すべてのデータに索引付けすることは全くもって現実的ではない。むしろ企業体は、どのデータに索引付けすべきかについて事前に判断せざるを得ず、しかもこのことは、ほとんどの企業体のデータの大部分を含む非構造化データについて特に当てはまる。その際に企業体には、そのデータの大部分を効率よく管理し、探索するための有効な手段がない。
【先行技術文献】
【特許文献】
【００２５】
【特許文献１】米国特許第６７１１５５８号明細書
【特許文献２】米国特許第７１３９７４３号明細書
【特許文献３】米国特許出願公開２００６／０２９４０５９号明細書
【特許文献４】米国特許出願公開２００７／００６７１０８号明細書
【特許文献５】米国特許出願公開２００７／０１３０１４０号明細書
【特許文献６】米国特許出願公開２００７／０１７４８４１号明細書
【特許文献７】米国特許出願公開２００７／０２３７３２７号明細書
【発明の概要】
【発明が解決しようとする課題】
【００２６】
当分野の必要に対処するために、本発明者らは本明細書において、データのメタデータの生成をハードウェアアクセラレートする技法を開示する。このデータは、構造化データおよび／または非構造化データを含んでもよい。このメタデータから、ロバストで、高性能なデータ探索および解析を可能にする豊富な索引を生成することができる。本発明の実施形態では、データがコプロセッサに流され、索引用のメタデータがバス帯域幅速度で生成され、それによって索引付け待ち時間の劇的な改善がもたらされる。このような待ち時間の改善により、（すべてではないにせよ）はるかに大量の企業体データを効率よく、効果的に索引付けすることができる。
【課題を解決するための手段】
【００２７】
その際に本発明は、好ましくは、以下の特許および特許出願に開示されている基礎をなすハードウェアアクセラレーション技法を利用する。「Ａｓｓｏｃｉａｔｅｄ  Ｄａｔａｂａｓｅ  Ｓｃａｎｎｉｎｇ  ａｎｄ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｒｅｔｒｉｅｖａｌ」という名称の米国特許第６７１１５５８号明細書、「Ａｓｓｏｃｉａｔｉｖｅ  Ｄａｔａｂａｓｅ  Ｓｃａｎｎｉｎｇ  ａｎｄ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｒｅｔｒｉｅｖａｌ  ｕｓｉｎｇ  ＦＰＧＡ  Ｄｅｖｉｃｅｓ」という名称の米国特許第７１３９７４３号明細書、「Ｉｎｔｅｌｌｉｇｅｎｔ  Ｄａｔａ  Ｓｔｏｒａｇｅ  ａｎｄ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｓｉｎｇ  ＦＰＧＡ  Ｄｅｖｉｃｅｓ」という名称の米国特許出願公開第２００６／０２９４０５９号明細書、「Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｐｅｒｆｏｒｍｉｎｇ  Ｂｉｏｓｅｑｕｅｎｃｅ  Ｓｉｍｉｌａｒｉｔｙ  Ｓｅａｒｃｈｉｎｇ」という名称の米国特許出願公開第２００７／００６７１０８号明細書、（２００７年８月１０日に出願された米国出願第１１／８３６９４７号から公開された）「Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ｐｒｏｔｅｉｎ  Ｓｅｑｕｅｎｃｅ  Ａｌｉｇｎｍｅｎｔ  Ｕｓｉｎｇ  ＦＰＧＡ  Ｄｅｖｉｃｅｓ」という名称の米国特許出願公開第２００８／００８６２７４号明細書、「Ｍｅｔｈｏｄ  ａｎｄ  Ｄｅｖｉｃｅ  ｆｏｒ  Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｒｅｇｕｌａｒ  Ｅｘｐｒｅｓｓｉｏｎ  Ｐａｔｔｅｒｎ  Ｍａｔｃｈｉｎｇ」という名称の米国特許出願公開第２００７／０１３０１４０号明細書、（２００６年５月２日に出願された米国出願第１１／３８１２１４号から公開された）「Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ａｐｐｒｏｘｉｍａｔｅ  Ｐａｔｔｅｒｎ  Ｍａｔｃｈｉｎｇ」という名称の米国特許出願公開第２００７／０２６０６０２号明細書、「Ｆｉｒｍｗａｒｅ  Ｓｏｃｋｅｔ  Ｍｏｄｕｌｅ  ｆｏｒ  ＦＰＧＡ−Ｂａｓｅｄ  Ｐｉｐｅｌｉｎｅ  Ｐｒｏｃｅｓｓｉｎｇ」という名称の米国特許出願公開第２００７／０１７４８４１号明細書、および「Ｍｅｔｈｏｄ  ａｎｄ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｈｉｇｈ  Ｔｈｒｏｕｇｈｐｕｔ  Ｂｌｏｃｋｗｉｓｅ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｅｎｃｒｙｐｔｉｏｎ／Ｄｅｃｒｙｐｔｉｏｎ」という名称の米国特許出願公開第２００７／０２３７３２７号明細書。各特許および特許出願の開示全体を参照により本明細書に組み込むものとする。
【００２８】
ドキュメントがコプロセッサに流される際に、ドキュメントストリームに対していくつかのメタデータ生成操作のいずれかを柔軟に実行することができる。例えば、ドキュメントストリーム内の各語に対して、ドキュメントストリーム内のどの単語がいくつかの辞書のうちのいずれかの単語に対する「ヒット」であるか見つけ出すために、完全マッチング操作および近似マッチング操作を行うことができる。これらの「ヒット」から、豊富な索引を迅速に生成することができる。
【００２９】
参照を容易にするために、以下では本発明の様々な実施形態に従って索引付けされる非構造化データを記述するのにしばしば「ドキュメント」という用語を使用する。しかし、「ドキュメント」という用語の使用は例示のためにすぎず、本明細書で説明する技法を使って他の形の非構造化データを索引付けすることもできることに留意すべきである。また、「単語」という用語は、メタデータ生成操作のためにグループ化されているデータストリーム内のビットを記述するのにも使用される。単語は、好ましくは、個別の文字列を形成するバイトに対応し、各文字は、英字、数字、または他の文字の任意の組み合わせとすることができる。
【００３０】
本発明の実施形態のきわめて強力な一態様によれば、コプロセッサは、ドキュメントストリーム内に複数の事前定義パターンのいずれかが存在するかどうか検出するために、受け取ったドキュメントストリームに対して正規表現パターンマッチングを行うことができる。正規表現パターンマッチングを使って検出され得るパターンの例には、社会保障番号、クレジットカード番号、電話番号、電子メールアドレスなどが含まれる。これらのパターンに基づいて索引を策定することにより、企業体は、企業体のすべてのドキュメントを解析し直さなくても、「当社のドキュメントのうちの何件がクレジットカード番号を含むか？」といった、不明確なパターンに基づく質問に効果的に応答することができる。企業体のすべてのドキュメントを解析し直すのではなく、生成されたクレジットカードパターンに関連する索引にアクセスして、クレジットカード番号を含むものとして識別されているすべてのドキュメントを検索することができる。
【００３１】
さらに、コプロセッサを使ってドキュメントをさらに解析し、索引付けするために、それらのドキュメントに対して分類操作およびクラスタ化操作を行うことができる。
【００３２】
本発明によって可能とされる高性能のストリーム索引付けには無数の有用な用途がある。例えば、企業体内の、かつ／または企業体に入ってくる電子メールトラフィックに、その電子メールトラフィックが受取人に届く前に、または届く際に、「オンザフライで」効果的に索引付けすることができる。
【００３３】
同様に、ウェブトラフィック（企業体内のユーザコンピュータによってダウンロードされたウェブページなど）にも、本発明の様々な実施形態を使って「オンザフライで」索引付けすることができる。
【００３４】
ウェブサーチエンジンは、本発明の実施形態を用いて、本明細書で説明するメタデータ生成および索引生成の技法を実行するように構成された機器にウェブページコンテンツを流すこともできる。その後ウェブサーチエンジンは、探索問い合わせへの応答を作成するときに、生成された（１つまたは複数の）索引に対して探索問い合わせを適用することができる。本発明を用いて、新しいウェブページがインターネットサーチエンジンにより「検索可能」になるまでにかかる遅延時間を劇的に低減し得ることが期待される。
【００３５】
また、本発明の各実施形態は、企業体内の任意のコンピュータによってディスクに保存されるデータを操作するのに用いることもできる。
【００３６】
別の用途は、入来売上取引、入来ニュースサービス情報、ログファイルといったデータストリームを解析し、索引付けすることに関するものである。
【００３７】
別の用途は、以前に索引が付けられなかった企業体データに索引付けすること、および以前に索引付けされた企業体データに索引付けし直すことを含めて、既存の企業体データに遡及的に索引付けすることに関するものである。
【００３８】
本発明の前記その他の特徴および利点は、以下の説明および図面を考察すれば当業者には明らかになるであろう。
【図面の簡単な説明】
【００３９】
【図１】索引の例を示す図である。
【図２ａ】本発明の一実施形態によるメタデータ生成機器の例を示す図である。
【図２ｂ】本発明の別の実施形態によるメタデータ生成機器の例を示す図である。
【図２ｃ】本発明の別の実施形態によるメタデータ生成機器の例を示す図である。
【図３ａ】図２ａから図２ｃの機器において使用するためのプリント回路基板の例を示す図である。
【図３ｂ】図２ａから図２ｃの機器において使用するためのプリント回路基板の例を示す図である。
【図４】ファームウェアパイプラインが複数の再構成可能論理回路にまたがってどのようにして展開され得るかを例示する図である。
【図５ａ】コプロセッサがコプロセッサを流れるデータのメタデータを生成するのにどのようにして使用され得るかを示すハイレベルブロック図である。
【図５ｂ】図５ａのコプロセッサによって生成されたメタデータから作成され得る索引の例を示す図である。
【図６】所望のメタデータ生成操作を実行するために再構成可能論理内で展開され得るファームウェアパイプラインの例を示す図である。
【図７ａ】図６に示すストリーム前処理操作を実行するのに使用され得るファームウェアパイプラインの例を示す図である。
【図７ｂ】図７ａのファームウェアパイプラインによって生成され得る単語および特徴ベクトルの出力ストリームの例を示す図である。
【図８ａ】入来データストリーム内の単語を辞書内の単語と対照して完全マッチさせるシークを実行して特殊索引を生成する特殊索引生成操作の例を示す図である。
【図８ｂ】入来データストリーム内の単語を辞書内の単語と対照して近似マッチさせるシークを実行して特殊索引を生成する特殊索引生成操作の例を示す図である。
【図９ａ】入来データストリーム内の単語を複数の異なる辞書内の単語と対照して完全マッチさせるシークを実行して複数の特殊索引を生成する特殊索引生成操作の例を示す図である。
【図９ｂ】入来データストリーム内の単語を複数の異なる正規表現パターンと対照してマッチさせるシークを実行して複数の特殊索引を生成する特殊索引生成操作の例を示す図である。
【図９ｃ】入来データストリーム内の単語を複数の異なる辞書内の単語と、複数の異なる正規表現パターンとに対照してマッチさせるシークを実行して複数の特殊索引を生成する特殊索引生成操作の例を示す図である。
【図１０】生成された索引を、関係データベースによって維持されている作動用索引に挿入する技法の例を示す図である。
【図１１ａ】語数カウントモジュールを含むストリーム前処理ファームウェアパイプラインを示す図である。
【図１１ｂ】図１１ａの語数カウント機能に関連するメタデータを含む索引の例を示す図である。
【図１１ｃ】生成されたメタデータが入来ドキュメントに関する分類データに対応するファームウェアパイプラインの例を示す図である。
【図１２ａ】入来ドキュメントの複数の異なる分類への関連性を評価するために入来ドキュメントのクラススコアを生成する分類操作の例を示す図である。
【図１２ｂ】各入来ドキュメントごとの分類を決定する分類操作の例を示す図である。
【図１３ａ】ドキュメントクラスタ化を可能にするのにヒストグラム生成を用いるファームウェアパイプラインの例を示す図である。
【図１３ｂ】ドキュメントクラスタ化を可能にするのにヒストグラム生成を用いるファームウェアパイプラインの例を示す図である。
【図１４ａ】入来ドキュメントに対して分類操作、特殊索引生成操作、およびヒストグラム生成操作を実行するファームウェアパイプラインの例を示す図である。
【図１４ｂ】入来ドキュメントに対して分類操作、特殊索引生成操作、およびヒストグラム生成操作を実行するファームウェアパイプラインの例を示す図である。
【図１５】図２ａから図２ｃの機器が用いられ得る環境の例を示す図である。
【図１６】本明細書で説明するメタデータ生成法を用いることのできるドキュメント取込み前処理操作の概要例を示す図である。
【図１７】図２ｃの実施形態によるドキュメント取込み前処理操作の例を示す論理図である。
【図１８】本明細書で説明するメタデータ生成法を用いることのできるドキュメント取込み前処理操作のための図２ｃの機器内のデータフローの例を示す図である。
【発明を実施するための形態】
【００４０】
図２ａに、メタデータ生成機器２００の例示的実施形態を示す。機器２００の実施形態をメタデータ生成機器と呼ぶことができるが、前記の組み込まれた「Ｍｅｔｈｏｄ  ａｎｄ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｉｎｔｅｇｒａｔｉｏｎ，Ｐｒｏｃｅｓｓｉｎｇ  ａｎｄ  Ｓｅａｒｃｈｉｎｇ  ｏｆ  Ｓｔｒｕｃｔｕｒｅｄ  ａｎｄ  Ｕｎｓｔｒｕｃｔｕｒｅｄ  Ｄａｔａ  Ｕｓｉｎｇ  Ｃｏｐｒｏｃｅｓｓｏｒｓ」という名称の、本出願と同日に出願された、米国特許出願第１１／９３８，７０９号明細書に記載されているように、機器２００はメタデータ生成以外の諸機能をサポートすることもできることに留意すべきである。
【００４１】
機器２００は、好ましくは、所望のメタデータを生成するのに、コプロセッサ４５０によるハードウェアアクセラレートされたデータ処理機能を用いる。機器２００内にはコプロセッサ４５０が、（ネットワークインターフェース４１０を介して）ネットワーク４２０から機器２００に流れ込むデータを受け取るように配置されている。ネットワーク４２０は、好ましくは、内部に様々な異なるデータソースが位置する企業体ネットワーク（ＬＡＮであれＷＡＮであれ）を備える。このような入来データは構造化データと非構造化データの両方を含んでもよい。これは、機器２００がどちらのデータ型にも有益なメタデータ生成操作を提供することができるからである。
【００４２】
プロセッサ４１２およびＲＡＭ４０８によって定義されるコンピュータシステムは、当業者であれば理解するはずの任意の市販のコンピュータシステムとすることができる。例えばコンピュータシステムは、ＩｎｔｅｌのＸｅｏｎシステムやＡＭＤのＯｐｔｅｒｏｎシステムなどとすることもできる。したがって、機器２００の中央または主プロセッサとして使用されるプロセッサ４１２は、好ましくは、ＧＰＰを含む。
【００４３】
好ましい実施形態では、コプロセッサ４５０は、再構成可能論理回路４０２を備える。好ましくは、データはシステムバス４０６を介して再構成可能論理回路４０２に流れ込むが、他の設計アーキテクチャも可能である（図３ｂ参照）。好ましくは、再構成可能論理回路４０２はフィールドプログラマブルゲートアレイ（ＦＰＧＡ）であるが、そうでなくてもよい。また、システムバス４０６は、再構成可能論理回路４０２と、機器のプロセッサ４１２および機器のＲＡＭ４０８とを相互接続することもできる。好ましい実施形態では、システムバス４０６はＰＣＩ−ＸバスまたはＰＣＩ−Ｅｘｐｒｅｓｓバスとすることができるが、そうでなくてもよい。
【００４４】
再構成可能論理回路４０２には、その機能を定義するファームウェアモジュールが展開されている。ファームウェアソケットモジュール４０４は、再構成可能論理回路へのデータ移動要件と、再構成可能論理回路からのデータ移動要件（コマンドデータとターゲットデータの両方）を処理し、それによって、やはり再構成可能論理回路上に展開されているファームウェアアプリケーションモジュール（ＦＡＭ）連鎖３５０への一貫性のあるアプリケーションインターフェースを提供する。ＦＡＭ連鎖３５０の各ＦＡＭ３５０ｉは、ファームウェアソケットモジュール４０４から連鎖３５０に流れる任意のデータに対して指定されたデータ処理操作を実行するように構成されている。本発明の好ましい実施形態による、再構成可能論理上に展開され得るＦＡＭの好ましい例を以下で説明する。
【００４５】
ＦＡＭによって実行される特定のデータ処理操作は、ＦＡＭがファームウェアソケットモジュール４０４から受け取るコマンドデータによって制御／パラメータ化される。このコマンドデータはＦＡＭ特有のものとすることができ、コマンドを受け取るとＦＡＭは、受け取ったコマンドによって制御されるデータ処理操作を実行するように編成される。例えば、完全マッチ操作を実行するように構成されたＦＡＭ内では、ＦＡＭの完全マッチ操作は、完全マッチ操作を実行するための（１つまたは複数の）キーを定義するようにパラメータ化され得る。このようにして、完全マッチ操作を実行するように構成されたＦＡＭに１つまたは複数の異なるキーの新しいパラメータをロードするだけで、そのＦＡＭを、別の完全マッチ操作を実行するように容易に編成し直すことができる。
【００４６】
ＦＡＭは、受け取ったコマンドによって指定されるデータ処理操作を実行するように編成された後で、ファームウェアソケットモジュールから受け取るデータストリームに対して、コマンドで指定されたデータ処理操作を実行することができるようになる。よってＦＡＭは、指定されたデータストリームを指定された方法で処理するための適切なコマンドによって、編成されることができる。ＦＡＭがそのデータ処理操作を完了すると、そのＦＡＭには、ＦＡＭによって実行されるデータ処理操作の性質を変更するようＦＡＭを再編成させる別のコマンドを送ることができる。ＦＡＭは、ハードウェア速度で動作（し、ＦＡＭを介して高スループットのデータを提供）するのみならず、そのデータ処理操作のパラメータを変更するよう柔軟にプログラムし直すこともできる。
【００４７】
ＦＡＭ連鎖３５０は、好ましくは、パイプライン化シーケンスとして配列された複数のファームウェアアプリケーションモジュール（ＦＡＭ）３５０ａ、３５０ｂ、．．．を備える。しかし、ファームウェアパイプライン内には、ＦＡＭ３５０ｉの１つまたは複数の並列経路を用いることもできることに留意すべきである。例えばファームウェア連鎖は、相互に並列な、第１のパイプライン化経路として配列された３つのＦＡＭ（ＦＡＭ３５０ａ、３５０ｂ、３５０ｃなど）と、第２のパイプライン化経路として配列された４つのＦＡＭ（ＦＡＭ３５０ｄ、３５０ｅ、３５０ｆおよび３５０ｇなど）とを含んでもよい。さらに、ファームウェアパイプラインは、既存のパイプライン経路から分岐する１つまたは複数の経路を備えることもできる。本発明の実施者は、所与の用途の処理要件に基づき、ＦＡＭ連鎖３５０の適切なＦＡＭ配列を設計することができる。
【００４８】
通信路４３０は、ファームウェアソケットモジュール４０４を、パイプライン化ＦＡＭの第１のＦＡＭ３５０ａの入力と接続する。第１のＦＡＭ３５０ａの入力は、ＦＡＭ連鎖３５０への入口点として使用される。通信路４３２はパイプライン化ＦＡＭ３５０ｍの最後のＦＡＭの出力を、ファームウェアソケットモジュール４０４と接続する。最後のＦＡＭ３５０ｍの出力は、ＦＡＭ連鎖３５０からの出口点として使用される。通信路４３０も通信路４３２も、好ましくは、マルチビット経路である。
【００４９】
特に、ファームウェアソケットモジュールへの、およびファームウェアソケットモジュールからのデータフローに関連して、機器２００によって使用されるソフトウェアおよびハードウェア／ソフトウェアインターフェースがどういったものであるかは、前記の組み込まれた米国特許出願公開第２００７／０１７４８４１号明細書に詳細に記載されている。
【００５０】
図２ｂに、機器２００の別の例示的実施形態を示す。図２ｂの例において機器２００はディスクコントローラ４１４を介してバス４０６と通信状態にある関係データベース管理システム３０４を含む。したがって、コプロセッサ４５０に流されるデータは、ＲＤＢＭＳ３０４からも発し得る。さらに、コプロセッサ４５０によって生成されるメタデータは、ＲＤＢＭＳ３０４内に構造化データとして格納することもでき、ＲＤＢＭＳ３０４からのメタデータを、様々なデータ探索／解析操作のため索引として使用することができる。このような索引は、Ｂツリー索引の形を取り得る。図２ｂの機器２００でのこのような用法の例が、前記の組み込まれた「Ｍｅｔｈｏｄ  ａｎｄ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｉｎｔｅｇｒａｔｉｏｎ，Ｐｒｏｃｅｓｓｉｎｇ  ａｎｄ  Ｓｅａｒｃｈｉｎｇ  ｏｆ  Ｓｔｒｕｃｔｕｒｅｄ  ａｎｄ  Ｕｎｓｔｒｕｃｔｕｒｅｄ  Ｄａｔａ  Ｕｓｉｎｇ  Ｃｏｐｒｏｃｅｓｓｏｒｓ」という名称の、本出願と同日に出願された、米国特許出願第１１／９３８，７０９号明細書に記載されている。
【００５１】
図２ｃに、機器２００の別の例示的実施形態を示す。図２ｃの例において、機器２００は、ディスクコントローラ４１６を介してバス４０６と通信状態にある非構造化データのデータストア３０６も含む。したがって、コプロセッサ４５０に流されるデータは、データストア３０６からも発し得る。さらに、そのメタデータを生成するためにコプロセッサ４５０に流される非構造化データは、任意選択で、データストア３０６内に格納することもできる。前記の組み込まれた「Ｍｅｔｈｏｄ  ａｎｄ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｉｎｔｅｇｒａｔｉｏｎ，Ｐｒｏｃｅｓｓｉｎｇ  ａｎｄ  Ｓｅａｒｃｈｉｎｇ  ｏｆ  Ｓｔｒｕｃｔｕｒｅｄ  ａｎｄ  Ｕｎｓｔｒｕｃｔｕｒｅｄ  Ｄａｔａ  Ｕｓｉｎｇ  Ｃｏｐｒｏｃｅｓｓｏｒｓ」という名称の、本出願と同日に出願された、米国特許出願第１１／９３８，７０９号明細書に記載されているように、ＲＤＢＭＳ３０４内のメタデータ表は、データストア３０６内に格納された非構造化データに対する探索／解析操作をより効率的にするのに使用され得る。
【００５２】
図３ａに、図２ａから図２ｃの実施形態のいずれかの機器２００においてコプロセッサ４５０として使用するために市販のコンピュータシステムのＰＣＩ−ＸまたはＰＣＩ−ｅバス４０６に接続することのできるプリント回路基板またはカード７００を示す。図３ａの例において、プリント回路基板は、メモリ素子７０２およびＰＣＩ−Ｘバスコネクタ７０４と通信状態にあるＦＰＧＡ４０２（Ｘｉｌｉｎｘ  Ｖｉｒｔｅｘ  ＩＩ  ＦＰＧＡなど）を含む。好ましいメモリ素子７０２は、ＳＲＡＭおよびＤＲＡＭメモリを備える。好ましいＰＣＩ−ＸまたはＰＣＩ−ｅバスコネクタ７０４は標準のカード端コネクタである。
【００５３】
図３ｂに、プリント回路基板／カード７００の代替の構成を示す。図３ｂの例において、プリント回路基板７００上には、バス７０６（ＰＣＩ−ＸバスやＰＣＩ−ｅバスなど）、１つまたは複数のディスクコントローラ７０８、およびディスクコントローラ７１０もインストールされている。当分野で理解されるように、任意の市販のディスクインターフェース技術をサポートすることができる。この構成において、ファームウェアソケット４０４は、プロセッサ４１２に、専用ＰＣＩ−Ｘバス７０６を介して接続される任意の（１つまたは複数の）ディスクへの通常のアクセスを可能にするＰＣＩ−Ｘ／ＰＣＩ−Ｘブリッジとしても使用される。図３ｂに示すディスクコントローラおよびディスクコネクタに加えて、またはその代りに、ネットワークインターフェースを使用することもできることを理解すべきである。
【００５４】
図３ａまたは図３ｂの構成において、ファームウェアソケット４０４は、メモリ７０２をバス４０６にアクセス可能にすることができ、それによって、ＯＳカーネルがメモリ７０２を、バスにアクセスすることのできるデータソースからＦＡＭへの転送用のバッファとして使用することが可能になることは注目に値する。また、図３ａおよび図３ｂのプリント回路基板上にはただ１つのＦＰＧＡ４０２しか示されていないが、プリント回路基板７００上に複数のＦＰＧＡを含めることにより、または機器２００に複数のプリント回路基板７００をインストールすることにより複数のＦＰＧＡをサポートすることができることが理解されるはずであることも注目に値する。図４に、１つのパイプライン内の多数のＦＡＭが複数のＦＰＧＡにまたがって展開されている例を示す。
【００５５】
図５ａに、入来データストリームを受け取り、データストリームのメタデータを生成し、生成されたメタデータと共にデータストリームを出力するコプロセッサ４５０をハイレベルで示す。以下では、様々なハードウェアアクセラレートされたメタデータ生成操作の例を、より詳細に説明する。メタデータを生成するために、いくつかのテキストマイニング操作およびテキスト解析操作のいずれかを用いることができる。メタデータ生成操作の例には、それだけに限らないが、品詞タグ付け、情報およびエンティティ抽出、ドキュメント分類、ドキュメントクラスタ化、ならびにテキスト要約が含まれる。これらの例において、考察対象となるデータストリームは、ドキュメントのストリームである。前記のように、この用法は例にすぎず、コプロセッサ４５０および本明細書で説明する技法を使用すれば、ドキュメント以外のデータストリームも容易に処理することができる。これらのデータストリームは、非構造化データおよび／または構造化データを含んでもよい。
【００５６】
図５ｂに、コプロセッサ４５０によって生成されたメタデータから構築され得る索引１００の例を示す。図１に関連して説明したように、各表エントリ１０２は、用語１０４および用語と関連付けられたポインタ１０６を含む。図５ｂの例において、各ポインタ１０６は、ドキュメント識別子Ｄｉ、および１つまたは複数の位置識別子ｐｉを含む。各ドキュメント識別子は、そのポインタ１０６に対応する用語１０４が存在するドキュメントを識別する。ポインタ内の各位置識別子は、その用語１０４が位置する識別ドキュメント内の位置を識別する。好ましくは、位置識別子は、ドキュメントの始めに対するバイトオフセットで表わされる。したがって、図５ｂの「Ａｚｋａｂａｎ」という用語のポインタは、「Ａｚｋａｂａｎ」がドキュメントＤ１２の位置ｐ１と、ドキュメント９９１９の位置ｐ１および位置ｐ２とにあることを示している。図５ｂに示すようなポインタを企業体のファイルシステム内に格納されているドキュメントにマップするには、いくつかの公知の技法のいずれかを使用することができる。
【００５７】
図６に、再構成可能論理４０２においてドキュメント６００の入来ストリームに対してメタデータ生成操作６０４を実行するのに用いられ得るファームウェア３５０の例を示す。メタデータ生成操作６０４の例には、ストリーム前処理操作６０２が含まれる。ストリーム前処理は、好ましくは、様々な位置および特徴ベクトル抽出操作を含む。これらの操作では、本明細書で説明する値およびリストを生成させ、活用させることを可能にするための用語記述子および表を提供するのに、当分野で暗号化ハッシュ法と呼ばれる技法を用いてもよい。
【００５８】
図７ａに、ストリーム前処理段６０２の処理モジュールのシーケンスの例を示す。単語解析モジュール７５０は、好ましくは、ドキュメント内の空白および／または句読点で区切られた用語を識別し、それらの位置を記録するように動作する。次いでこれらの記録した位置を使って、ドキュメント内の単語位置（図５ｂのポインタ内のｐｉ値など）を決定することができる。ストップリストフィルタモジュール７５２は、好ましくは、ドキュメントストリームからストップリストに表示されている単語を除外するように動作する。これが求められるのは、ドキュメントストリームから、その索引付けが特に有用ではないはずの共通単語（「ｔｈｅ」、「ａ」、「ａｎ」など）を除外するためである。ストップリストは、好ましくは、どの単語がドキュメントストリームから除外されるか制御するように調整できる。語幹抽出モジュール７５４は、好ましくは、ドキュメントストリーム内の単語を語幹抽出してその語根にするように動作する。語幹抽出操作の例には、複数形の除外、接頭辞の除外、接尾辞の除外、動名詞形の除外などが含まれる。また、必要な場合には、ストリーム前処理６０２に他の処理モジュールを含めることもできることにも留意すべきである。例えば、単語ストリーム内に存在し得るつづり間違いを訂正するのにスペルチェックモジュールを使用することもできる。
【００５９】
図７ｂに、各単語がその単語の位置識別子７５８を伴うような解析された単語７６０を含む、ストリーム前処理操作６０２からの出力データストリームの例を示す。さらに、ストリーム内に新しいドキュメントがあるときにそれを識別するドキュメント識別子７５６も含まれている。図７ｂの例はこのようなデータの直列ストリームを示すものであるが、ドキュメント識別子７５６および位置識別子７５８は、ファームウェア３５０内で、単語のビットストリーム７６０と並列のビットストリームとして流れてもよいことに留意すべきである。
【００６０】
図７ａに戻って、単語が前処理モジュール６０２を流れる際に、ドキュメントの索引を含むメモリを生成することができる。この索引１００は、ストリーム前処理モジュール６０２が遭遇した異なる単語ごとのエントリが、その単語と関連付けられた位置ベクトル情報（図５ｂに示すドキュメント識別子や位置識別子など）と共に取り込まれている総索引として使用することができる。ストリーム内にすでに総索引１００に加えられている単語が再度発生した場合、索引１００内のその単語のポインタ情報は、単語が見つかった最新の位置を反映するように更新することができる。
【００６１】
単語が前処理モジュール６０２を流れる際に索引１００を格納するのに使用されるメモリは、いくつかの場所のうちのいずれかに置くことができることに留意すべきである。例えばこのメモリは、ＦＰＧＡ４０２の利用可能なオンチップメモリに置くこともできる。またこのメモリは、図３ａおよび図３ｂに示すメモリ素子７０２とすることもできる。さらに、このメモリはＲＡＭ４０８とすることもできる。このメモリは、ＲＤＢＭＳ３０４などの場所とすることさえできる。好ましくは、コプロセッサ４５０は、索引１００を更新する動作を実行する。索引１００に新しいデータを挿入するのにハッシュ法などの技法を使用することができる。
【００６２】
図７ａに示す各モジュールも、ストリーム前処理操作６０２自体も任意選択の特徴であることに留意すべきである。望ましい場合には、前処理されていないドキュメント６００に対してメタデータ生成操作６０４を行うこともできる。
【００６３】
図８ａに、特殊索引生成操作８５０も実行されるメタデータ生成操作６０４の例示的実施形態を示す。図８ａでは、単語および位置ベクトルが完全マッチングモジュール８００に流れ込む。この完全マッチングモジュール８００には、辞書８０２から単語８０４がロードされる。完全マッチングモジュールは、単語８０４を、流れる単語を比較するためのキーとして使用して、単語間に任意の完全マッチが存在するかどうか判定する。モジュール８００によりマッチが見つかると、メモリに維持されている特殊索引８６０が、マッチ単語情報およびマッチ単語の対応するポインタ（図５ｂ参照）で更新される。ポインタ情報として、ストリーム前処理操作６０２によって検出された位置ベクトル（ドキュメント識別子７５６や位置識別子７５８など）を使用することができる。したがって、図７ａに関連して説明した総索引１００に加えて、（辞書８０２に特有の）特殊索引８６０も、コプロセッサ４５０のデータ処理操作により効率よく生成することができる。
【００６４】
完全マッチング操作を実行するために、いくつかの完全マッチング法のいずれかを使用することができる。例えば、ハードウェアアクセラレートされたマッチング法は、前記の組み込まれた米国特許第６７１１５５８号明細書および米国特許第７１３９７４３号明細書、米国特許出願公開第２００６／０２９４０５９号明細書、米国特許出願公開第２００７／０１３０１４０号明細書、ならびに（２００６年５月２日に出願された米国出願第１１／３８１２１４号から公開された）「Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ａｐｐｒｏｘｉｍａｔｅ  Ｐａｔｔｅｒｎ  Ｍａｔｃｈｉｎｇ」という名称の米国特許出願公開第２００７／０２６０６０２号明細書などに開示されている。
【００６５】
どんな単語の集合でも辞書８０２として使用することができる。使用され得る辞書８０２の例には、まる１冊分の英語辞書、まる１冊分の外国語辞書、科学／技術辞書などといった大規模な単語集合が含まれる。また、もっと小規模な単語集合を使用することもできる。
【００６６】
図８ｂに、完全マッチングモジュールではなく近似マッチングモジュール８１０が使用される索引生成の別の実施形態を示す。つづり間違いなどによりドキュメントテキストに誤った索引付けが行われない可能性を低減するために、索引生成操作８５０に近似マッチングモジュール８１０を用いることが望ましい場合もある。また、近似マッチングモジュール８１０として使用するのに適した、ハードウェアアクセラレートされた近似マッチング法の例も、前記の組み込まれた米国特許第６７１１５５８号明細書および米国特許第７１３９７４３号明細書、米国特許出願公開第２００６／０２９４０５９号明細書、米国特許出願公開第２００７／０１３０１４０号明細書、ならびに（２００６年５月２日に出願された米国出願第１１／３８１２１４号から公開された）「Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｆｏｒ  Ａｐｐｒｏｘｉｍａｔｅ  Ｐａｔｔｅｒｎ  Ｍａｔｃｈｉｎｇ」という名称の米国特許出願公開第２００７／０２６０６０２号明細書に開示されている。ストリーム前処理段において前記のようなスペルチェックモジュールが使用される場合、つづり間違いなどに対処するために近似マッチングを用いる必要はなくなることに留意すべきである。
【００６７】
また、流れる単語を単語キー８０４にマッチさせる作業負荷を、複数のマッチングモジュール８００／８１０にわたって分散させるために、複数の完全マッチング／近似マッチングモジュール８００／８１０を並列に展開することができることにも留意すべきである。しかし、望ましい場合には、マッチングモジュール８００／８１０が、流れる単語を単語キー８０４と順次に比較するのに、比較レジスタの単一の直列パイプライン化シーケンスを使用することもできる。
【００６８】
総索引１００を格納するのに使用されるメモリと同様に、特殊索引８６０を格納するのに使用されるメモリは、いくつかの場所のうちのいずれか（ＦＰＧＡ４０２のオンチップメモリ、メモリ素子７０２など）に置くことができる。
【００６９】
本発明の様々な実施形態の強力な一態様は、複数の特殊索引を同時に生成することができることである。この例が図９ａに示されている。この実施形態では、マッチングモジュール８００／８１０は、入来単語を、それぞれが入来単語を判断するためのキーとして使用される独自の単語集合を有する複数の辞書８０２ｉと対照してマッチさせる。図示のように、英語辞書、仏語辞書、医学辞書、技術辞書といった辞書内の単語を入来単語ストリームと比較することができる。入来単語とこれらの辞書のいずれかの単語との間にマッチが見つかると、各辞書と関連付けられた特殊索引をポインタ情報で更新することができる。図９ａには、このような特殊索引の例として英語辞書索引９０２および技術辞書索引９０４が示されている。好ましくは、これらの特殊索引の用語列には、索引と関連付けられた辞書内のすべての単語が事前に取り込まれている。マッチングモジュール８００／８１０により単語ストリーム内でその用語が検出されると、その用語のポインタ情報をそれに応じて更新することができる。
【００７０】
このような実施形態における総索引１００は、どの辞書８０２にも完全マッチングモジュールを流れる単語のマッチが見つからないときに、更新することができる。さらに、望ましい場合には、その他の特殊索引内の各エントリを総索引にマージして、総索引１００がドキュメントストリーム６００内のすべての単語に適用できるようにすることもできる。このマージは、オフラインで行うこともでき、その他の索引を更新するのと同時に行うこともできる。そうではなくコプロセッサ４５０を、単語がストリーム前処理モジュール６０２から流れ出る際に総索引１００を更新し、単語が完全／近似マッチングモジュール８００／８１０から流れ出る際に特殊索引を更新するように構成することもできる。
【００７１】
本発明の様々な実施形態の別の強力な態様は、入来単語に対して正規表現パターンマッチングを行うことができることである。この例が図９ｂに示されている。正規表現は、当分野で周知のように、単語ストリーム内の様々な複雑度のパターンを検出するのに使用することができる。正規表現が検出の有効な手段であるパターンの例が社会保障番号（ＳＳＮ）である。ＳＳＮはｘｘｘ−ｘｘ−ｘｘｘｘのパターンを有し、ｘは０から９までの任意の数とすることができる。また、電話番号、クレジットカード番号、主要口座番号（ＰＡＮ）、電子メール、ＵＲＬなどといった項目も、正規表現によって検出可能なパターンを有する。
【００７２】
図９ｂに示すように、正規表現マッチングモジュール９１０を、コプロセッサ４５０上に（好ましくは再構成可能論理回路４０２上のファームウェア３５０に）展開することができる。正規表現マッチングモジュール９１０は、１つまたは複数のユーザ定義のパターンを検出するように構成することができる。例えば、図９ｂの正規表現マッチングモジュール９１０は、電子メールパターン９１２、電話番号パターン９１４、クレジットカード番号パターン９１６、およびＳＳＮパターン９１８を示す単語（単語部分を含む）を検出するように構成されている。正規表現マッチングモジュール９１０により単語ストリーム内でこれらのパターンが検出されると、各パターンと関連付けられた特殊索引を、マッチングパターンの内容とそのマッチングパターンのポインタ情報とで更新することができる。図９ｂに、このような索引の例として電子メール索引９２０およびＳＳＮ索引９２２が示されている。したがって、単語ストリーム内で１２３−４５−６７８９が発生した場合、正規表現マッチングモジュール９１０はこのパターンをＳＳＮパターンとして識別し、ＳＳＮ索引９２２に、用語「１２３−４５−６７８９」および単語ストリーム内のその用語を指し示すポインタを含むエントリを追加する。好ましくは、図９ａに関連して説明したように、単語が正規表現マッチングモジュール９１０を流れるとき、および正規表現マッチングモジュール９１０がどんなパターンマッチも検出しないときに、総索引１００も更新される。
【００７３】
正規表現マッチングモジュール９１０として使用するのに適した、ハードウェアアクセラレートされた正規表現マッチング法の例は、前記の組み込まれた米国特許出願公開第２００７／０１３０１４０号明細書に開示されている。
【００７４】
また、マッチングモジュール８００／８１０に関連して前記したように、コプロセッサ４５０内では、パターンマッチング作業負荷を複数のリソースにわたって分散させるために、直列および並列の正規表現マッチングモジュール９１０の様々な組み合わせを用いることもできる。
【００７５】
図９ｂで示すこのようなパターン索引の威力を軽視することはできない。企業体内の人が、「当企業体内のどのドキュメントがＳＳＮを含むか？」といった質問や、「クレジットカード番号を含む当企業体内のすべてのドキュメントを示せ」といったコマンドに対する回答を効率よく取得することは、通常きわめて難しい。同様に、ウェブサーチエンジンが、個々の番号を特定せずに、クレジットカード番号またはＳＳＮを含むウェブページを検索するよう求めるインターネット探索問い合わせに対して関連する結果を提供することも難しい。しかし、図９ｂに関連して開示する索引付け技法によれば、このような質問に対する回答が容易に示される。
【００７６】
図９ｃに、ハードウェアアクセラレートされた索引生成操作８５０が、対応する特殊索引（索引９０２、９０４、９２０、９２２など）および総索引１００を生成するための、１つまたは複数の完全／近似マッチングモジュール８００／８１０および１つまたは複数の正規表現マッチングモジュール９１０を含む例示的実施形態を示す。この場合もやはり、このような効率的に生成される索引の威力を軽視することはできない。これらの索引は、ドキュメント６００の集合全体を解析し直すことなく、「クレジットカード番号を含み、かつ「盗まれた（ｓｔｏｌｅｎ）」という単語を含むすべてのドキュメントを示せ」といった複雑な問い合わせコマンドに回答するのに使用することができる。
【００７７】
コプロセッサ４５０は、好ましくは、マッチングモジュール８００／８１０／９１０によって使用される辞書および／またはパターンを変更するように構成されていることに留意すべきである。好ましくは、このような変更は、ファームウェアソケットモジュール４０４によりコマンドデータとして受け取られるユーザコマンドに応答して行われる。これらの変更には、辞書／パターンの追加／除去および／または様々な辞書へ／辞書からの単語の追加／除去が含まれ得る。
【００７８】
また、コプロセッサ４５０は、これらのモジュール８００／８１０および９１０を、要望通りに、直列、並列、または直列／並列混成の配列として展開することができることにも留意すべきである。
【００７９】
図１０に、生成された索引（索引１００、９０２、９０４、９２０、９２２など）を、ＲＤＢＭＳ（ＲＤＢＭＳ３０４や企業体ネットワーク４２０内の他の何らかのＲＤＢＭＳなど）内の対応する作動用索引にマージするために、これらの周期的バッチ転送が実行される実施形態を示す。したがって、作動用総索引１０００に総索引１００の内容を挿入するためのバッチ挿入／マージ操作を実行することができる。同様に、索引９０２、９０４、９２０、および９２２の内容を、対応する作動用索引１００２、１００４、１０２０、および１０２２に挿入することもできる。これらの転送は、予定された間隔をおいて周期的に実行することもでき、索引１００、９０２、９０４、９２０、および９２２に利用可能なメモリ空間が不足したときに、必要に応じて実行することもできる。
【００８０】
各作動用索引が更新された後、ＳＱＬデータベースによって格納されている作動用索引に適用されるＳＱＬコマンドなどの標準化された問い合わせを介して、新しく索引付けされたデータにアクセスすることができる。前記の組み込まれた「Ｍｅｔｈｏｄ  ａｎｄ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｉｎｔｅｇｒａｔｉｏｎ，Ｐｒｏｃｅｓｓｉｎｇ  ａｎｄ  Ｓｅａｒｃｈｉｎｇ  ｏｆ  Ｓｔｒｕｃｔｕｒｅｄ  ａｎｄ  Ｕｎｓｔｒｕｃｔｕｒｅｄ  Ｄａｔａ  Ｕｓｉｎｇ  Ｃｏｐｒｏｃｅｓｓｏｒｓ」という名称の、本出願と同日に出願された、米国特許出願第１１／９３８，７０９号明細書には、ＲＤＢＭＳがメタデータ索引を維持している非構造化データを対象とする問い合わせに特に効率のよい問い合わせ処理法が開示されている。
【００８１】
ストリーム前処理モジュール６０２によって実行され得る別のメタデータ生成操作は、図１１ａに示すような、語数カウント操作１１５０である。問い合わせ処理操作時にドキュメント６００の関連性を確認するために、索引付けエンジンは、好ましくは、ドキュメント内の単語に関する統計情報を獲得する。この統計情報は、特定の単語がドキュメントにおいて出現する回数のカウント、および（ドキュメント６００が１つまたは複数の集合にグループ化されている場合には）特定の単語がドキュメント集合全体において出現する回数のカウントを含んでもよい。関連性評価のために求め、使用することのできる別のパラメータは、各ドキュメントの（単語数またはバイト数の）サイズである。これらのパラメータを知ることにより、問い合わせ時に検索されるドキュメントの関連性を、Ｏｋａｐｉ  ＢＭ２５モデルなどの公知の確率論的関連性モデルを使って計算することができる。参照によりその開示全体が本明細書に組み込まれる、Ｋａｒｅｎ  Ｓｐａｅｒｃｋ  Ｊｏｎｅｓ、Ｓｔｅｖｅ  Ｗａｌｋｅｒ、およびＳｔｅｐｈｅｎ  Ｅ．Ｒｏｂｅｒｔｓｏｎ著、「Ａ  Ｐｒｏｂａｂｉｌｉｓｔｉｃ  Ｍｏｄｅｌ  ｏｆ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｒｅｔｒｉｅｖａｌ：Ｄｅｖｅｌｏｐｍｅｎｔ  ａｎｄ  Ｃｏｍｐａｒａｔｉｖｅ  Ｅｘｐｅｒｉｍｅｎｔｓ（ｐａｒｔｓ  １  ａｎｄ  ２）」、Ｉｎｆｏｒｍａｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ  ａｎｄ  Ｍａｎａｇｅｍｅｎｔ、３６（６）：７７９−８４０頁、２０００年を参照されたい。
【００８２】
語数カウントモジュール１１５０により、単語がそこを流れる際に、ドキュメントおよびドキュメント集合のための単語リストが生成される。リスト上の各単語と関連付けられるのは、ストリームにおいて関連付けられた単語が検出されるたびに増分されるカウント値である。図１１ｂに、ポインタ１０６が、参照されるドキュメントにおいて各用語が何回出現するか特定する語数カウントパラメータｗｃを含む索引の例１１５４を示す。また、これらのポインタは、各ドキュメントのサイズを特定するパラメータも含んでもよい（が、この情報を別の索引表に維持することもできる）。また、表１１５４は、ドキュメント集合において各用語が何回出現するか特定する「集合カウント」パラメータを含む別の列１１６０も含んでもよい。単語および位置ベクトルストリーム内のビットには、集合分離を識別するための適切なフラグを加えることができる。語数カウントモジュールからの出力は、好ましくは、このカウント情報を含むため、図１１ａには、語数カウントモジュール１１５０からの出力がカウントベクトルを含むものとして示されている。
【００８３】
コプロセッサ４５０によって実行され得る別のメタデータ生成操作６０４は、分類操作１１００である。このような動作のためのパイプラインの例が図１１ｃに示されている。ドキュメントに対して実行され得るドキュメント分類操作の例には言語分類が含まれる。言語分類では、ドキュメントを、ドキュメント内のテキストが最も密接にマッチする言語を特定するように構成されている統計的Ｎグラムアルゴリズムに適用することができる。参照によりその開示全体が本明細書に組み込まれる、Ｗｉｌｌｉａｍ  Ｂ．ＣａｖｎａｒおよびＪｏｈｎ  Ｍ．Ｔｒｅｎｋｌｅ著、「Ｎ−Ｇｒａｍ−Ｂａｓｅｄ  Ｔｅｘｔ  Ｃａｔｅｇｏｒｉｚａｔｉｏｎ」、Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ＳＤＡＩＲ−９４、３ｒｄ  Ａｎｎｕａｌ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｄｏｃｕｍｅｎｔ  Ａｎａｌｙｓｉｓ  ａｎｄ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｒｅｔｒｉｅｖａｌ、米国ネバダ州ラスベガス、１６１−１７５頁、１９９４年を参照されたい。別のドキュメント分類操作では、ドキュメントのある種の分類を学習するのに隠れマルコフモデル（ＨＭＭ）を用いてもよい。参照によりその開示全体が本明細書に組み込まれる、Ｌｕｄｏｖｉｃ  Ｄｅｎｏｙｅｒ、Ｈｕｇｏ  ＺａｒａｇｏｚａおよびＰａｔｒｉｃｋ  Ｇａｌｌｉｎａｒｉ著、「ＨＭＭ−ｂａｓｅｄ  Ｐａｓｓａｇｅ  Ｍｏｄｅｌｓ  ｆｏｒ  Ｄｏｃｕｍｅｎｔ  Ｃｌａｓｓｉｆｉｃａｔｉｏｎ  ａｎｄ  Ｒａｎｋｉｎｇ」、Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ＥＣＩＲ−０１、２３ｒｄ  Ｅｕｒｏｐｅａｎ  Ｃｏｌｌｏｑｕｉｕｍ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｒｅｔｒｉｅｖａｌ  Ｒｅｓｅａｒｃｈ、独国ダルムシュタット、１２６−１３５頁、２００１年を参照されたい。
【００８４】
図１２ａに、単語のリストが複数の異なるクラスのために維持される分類操作の例を示す。例えば、第１のクラス１２０２が単語１２０４と関連付けられており、以下同様に、クラスｎ１２０６が単語１２０８と関連付けられている。これらの単語を、１つまたは複数のマッチングモジュール８００／８１０が、入来単語と対照して比較するためのキーとして使用することができる。キー単語がドキュメント内の単語とのマッチを検出すると、各クラスごとのマッチのカウントを追跡する得点メモリ１２１０を適宜更新することができる。したがって、マッチングモジュール８００／８１０が、ドキュメントＸ内の所与の単語と第１のクラス１２０２内の単語１２０４との間のマッチを検出すると、そのドキュメントと関連付けられた得点メモリ１２１０内のクラス１の「カウント」フィールドを更新することができる。これらのカウントは、所与のドキュメントが個々のクラスにどの程度の関連性を有するか示すための、各ドキュメントごとのクラス得点として使用することができる。好ましくは、得点メモリ１２１０は、単語ストリームにおいて新しいドキュメントが発生するとリフレッシュされる。得点メモリ１２１０は、好ましくは、ＦＰＧＡ４０２の利用可能なオンチップメモリにおいて、またはメモリ素子７０２において維持される（図３ａおよび図３ｂ参照）。
【００８５】
異なるクラスを、「ニュース」、「スポーツ」、「法律」、「医薬」などといった分類に関連付けることができる。各クラス内の単語は、クラスによって定義された主題に関連するドキュメントにおいて検出されるものと一般的に期待される単語とすることができる。例えば、「野球」という単語は、「スポーツ」分類の単語リストに含まれ、「禁反言で禁ずる（ｅｓｔｏｐ）」という単語は、「法律」分類の単語リストに含まれる。別のドキュメント分類の例を言語分類とすることができる。このような用途では、図１２ａに示す各クラスを異なる言語と関連付けることができ、その場合各クラス内の単語は、その言語のまる１冊分の（または編集された）辞書を含むことになる。図９ａの実施形態を参照すると、このような言語分類操作は、特殊索引付けへの付加語として機能することができ、その場合図９ａに示すマッチング操作は、得点メモリ１２１０を適宜更新するようにも動作し得ることが理解される。さらに別のドキュメント分類の例は、「読解力レベル」とすることができる。各クラスは、異なる読解力レベル（「第５学年の読解力レベル」、「高校１年生の読解力レベル」、「大学学部生の読解力レベル」など）と関連付けることができ、各クラス内の単語は、対応する読解力レベルに属するドキュメントにおいて見られるものと期待される単語とすることができる。図１１ａの語数カウントモジュールによって生成されるカウントベクトル情報は、「読解力レベル」などの分類にも役立ち得ることに留意すべきである。
【００８６】
図１２ｂに、判断論理１２１２を用い、得点メモリ１２１０によって記録されたドキュメントのクラスカウントに基づいてドキュメントに１つまたは複数のクラスが割り当てられる分類実施形態の例を示す。例えば各クラスは関連付けられた閾値を持つことができる。クラスカウントがそのクラスの閾値に合致し、または閾値を超える場合、そのクラスに属するものとしてドキュメントにタグ付けすることができる。したがって、同じドキュメントの複数のクラスでのカウントが、それらのクラスと関連付けられた閾値に合致し、または閾値を超える場合には、そのドキュメントが複数のクラスに属する可能性もある。
【００８７】
さらに、有利には、分類操作１１００と関連して１つまたは複数の正規表現マッチングモジュール９１０を（おそらく１つまたは複数のマッチングモジュール８００／８１０と組み合わせて）用いることもできることに留意すべきである。例えば、ドキュメントがクレジットカード番号を含むことが検出された場合には、このドキュメントはおそらく、「売上げ記録」、「個人記録」などとして分類されるべきであるという推論が行われ得るはずである。また、正規表現マッチングは、いくつの単語が特定の文字長を有するかカウントするのにも役立つ。例えば、ｘを任意の文字とする正規表現「ｘｘｘｘ」は、４文字の単語のカウントを更新するのに使用することができ、正規表現「ｘｘｘｘｘ」は、５文字の単語のカウントを更新するのに使用することができ、以下同様である。このような単語長カウントは、前記の「読解力レベル」などの分類を評価するのに役立てることができる。
【００８８】
分類モジュール１１００を使って、各ドキュメントごとに、それぞれが各ドキュメントを特定のクラスに属するものとしてタグ付けするビットストリングをストリームに加えることにより、モジュール１１００から発する単語ストリームが豊富化されてもよい。例えば分類モジュールが、ドキュメントが属するのは２０分類のうちのどれか判定するように構成されている場合には、各ドキュメントごとに、各ビットが特定の分類と関連付けられており、ドキュメントがその分類に属するかどうかフラグを立てる２０ビットのビットストリングを出力ストリームに加えることができる。したがって、このビットストリング内のビットＸを、ドキュメントがクレジットカード番号を含むかどうかのフラグを立てるために取っておくことができる。したがって、正規表現マッチングモジュール９１０がドキュメント内にクレジットカード番号パターンが存在することを検出した場合、そのドキュメントのビットストリングは、ビットＸをハイに設定するように更新され得る。同様に、ビットストリング内のビットＹを、ドキュメントが法律ドキュメントであるかどうかのフラグを立てるために取っておくこともできる。分類操作により、ドキュメントが法律ドキュメントとみなされるべきであると判定された場合、ビットＹはハイに設定され得る。
【００８９】
また、分類操作１１００によって生成される分類情報は、クラスごとのドキュメントの特殊索引を生成するのに使用することもできるため、分類操作１１００を、メタデータ生成操作の特殊索引生成カテゴリにも属するものとみなし得ることにも留意すべきである。このような索引は、「企業体内に何件のスペイン語ドキュメントがあるか」といった質問に回答し、「スポーツと医薬の間にはどんな関係が存在するか」や、「ジョンスミスに言及されているすべての法律ドキュメントを検索せよ」といった調査を行うのに使用することができるという点で、強力な探索用補助として使用することができる。
【００９０】
また、分類操作は、図９ａから図９ｃに示す実施形態などの実施形態から生成された総索引および特殊索引を使って、ソフトウェア（プロセッサ４１２によって実行されるソフトウェアなど）として実行することができることにも留意すべきである。各ドキュメントごとの分類情報を決定するために、これらの異なる索引を、異なる各クラスのための事前定義された単語リストと相互相関させることができる。
【００９１】
図１１ａに続いて図１３ａを参照すると、コプロセッサ４５０によって実行され得る別のメタデータ生成操作６０４は、ドキュメントクラスタ化に役立つヒストグラム生成操作１３００である。ドキュメントクラスタ化では、異なるドキュメント同士の相互関係を知ることが求められる。このようなクラスタ化判定に役立つように、コプロセッサ４５０を、ドキュメント６００に対してヒストグラム生成操作１３００を実行するように構成することができる（この操作は、同一ではないにせよ、前記の語数カウント操作と同様のものとすることができる）。これらのヒストグラムは、ドキュメント内の単語の頻度を特定することができる。生成されたヒストグラムから、ソフトウェアを使って、特徴ベクトル拡張を実行し、共通の主題などに関して相互に関連し合う可能性の高いドキュメントクラスタを識別する（操作１３０２）ことができる。特徴ベクトル拡張は、個別ドキュメントの特徴ベクトルが、集合内のすべてのドキュメントからの単語を含むように拡張される標準技法である。クラスタ化は、Ｋ平均クラスタ化、ファジィＣ平均クラスタ化、階層的クラスタ化などといった公知の技法のいずれかを使って行うことができる。参照によりその開示全体が本明細書に組み込まれる、Ｍ．Ｓｔｅｉｎｂａｃｈ、Ｇ．Ｋａｒｙｐｉｓ、およびＶ．Ｋｕｍａｒ著、「Ａ  ｃｏｍｐａｒｉｓｏｎ  ｏｆ  Ｄｏｃｕｍｅｎｔ  ｃｌｕｓｔｅｒｉｎｇ  ｔｅｃｈｎｉｑｕｅｓ」、ＫＤＤ  Ｗｏｒｋｓｈｏｐ  ｏｎ  Ｔｅｘｔ  Ｍｉｎｉｎｇ、２０００年を参照されたい。
【００９２】
ストリーム前処理モジュール６０２がすでに語数カウントを用いている場合には、図１３ｂに示すように、ヒストグラム生成段１３００を省略することができる。
【００９３】
図１３ａおよび図１３ｂで示されるクラスタ化操作は、クラスタ化情報が、クラスタごとのドキュメントの特殊索引を生成するのにも使用され得るため、メタデータ生成操作の特殊索引生成カテゴリにも属するものとみなし得ることに留意すべきである。このような索引は、「企業体内のどのドキュメントがドキュメントＸに類似しているか？」や、「このウェブサイトから購入することのできるどの書籍が書籍Ｘと類似しているか？」といった質問に回答するのに使用することができるという点で、強力な探索用補助として使用することができる。
【００９４】
図１４ａおよび図１４ｂに、ハードウェアアクセラレートされたメタデータ生成操作６０４が分類１１００、特殊索引生成８５０、およびヒストグラム生成１３００（または語数カウント１１５０）を含むパイプラインの例を示す。
【００９５】
図１５に、機器２００を効果的に用いることのできる環境の例を示す。図１５には、インターネット１５００から大量の入来データを受け取る企業体コンピュータシステム１５０４が示されている。この入来データは、企業体ファイアウォール１５０２を通過した後で、ファイアウォール出力に接続している機器２００に流すことができる。よって機器２００は、入来データが企業体に到達する際、企業体ネットワーク４２０内のどこかのデータ記憶に入れられる前に、入来データのメタデータおよび索引を生成するのに使用することができる。また、機器２００によって処理されたデータは、企業体コンピュータシステム１５０４内から発せられるデータを含むこともできる。さらに、機器２００は、任意選択で、その生成メタデータを、企業体ネットワーク４２０内の他のリポジトリに配信するために出力するように構成することもできる。さらに任意選択で、機器２００によって索引付けされたデータに対して全文検索または他のデータ解析操作を行うための問い合わせを適用することもできる。前記のように、このような機器２００の使用例が、前記の組み込まれた「Ｍｅｔｈｏｄ  ａｎｄ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｉｎｔｅｇｒａｔｉｏｎ，Ｐｒｏｃｅｓｓｉｎｇ  ａｎｄ  Ｓｅａｒｃｈｉｎｇ  ｏｆ  Ｓｔｒｕｃｔｕｒｅｄ  ａｎｄ  Ｕｎｓｔｒｕｃｔｕｒｅｄ  Ｄａｔａ  Ｕｓｉｎｇ  Ｃｏｐｒｏｃｅｓｓｏｒｓ」という名称の、本出願と同日に出願された、米国特許出願第１１／９３８，７０９号明細書に開示されている。
【００９６】
図１６に、機器２００が企業体内のドキュメントに索引付けするのに使用される一実施形態によるドキュメント取込み前処理の概要を示す。好ましくは、企業体ネットワーク４２０内のユーザコンピュータ上に表示された何らかの形のドキュメント取込みＧＵＩ１６００を介して、ユーザは、どの（１つまたは複数の）ドキュメントが図２ｃのデータストア３０６に取り込まれるべきか指定することができる。任意選択でユーザは、取り込まれるべき（１つまたは複数の）ドキュメントに関する様々な形のメタデータを打ち込むこともできる。しかし、前記のように、コプロセッサ４５０が所望のメタデータ生成操作を自動的に実行するように構成されているため、これが必要であるとは限らない。ＧＵＩ１６００から機器２００に送られた適切なコマンド１６１２に応答して、企業体ネットワーク４２０を介してアクセス可能であるが、機器２００の外部にあるデータストア３０８に格納された１つまたは複数のドキュメント６００が機器２００に送られる。機器２００が、ＮＴＦＳ、ＦＡＴ、ＣＩＦＳ、様々な特色を有するＵＮＩＸ（登録商標）ファイルシステムといった共通ファイルシステム上に格納されたドキュメントへのアクセス、ならびにＨＴＴＰを介したウェブアクセスを可能にするために用いるドキュメント検索機能１６５２においては、様々なアダプタを用いることができる。
【００９７】
コプロセッサが、ファームウェア３５０が展開された再構成可能論理回路４０２を用いる場合には、ファームウェアパイプライン３５０に置かれた各ＦＡＭは、受け取ったドキュメントに対してドキュメントメタデータ生成操作を実行するように構成される。これらのメタデータ生成操作の例については前記している。
【００９８】
次いで、ファームウェア３５０の操作によって生成されたドキュメントメタデータ１６５０をＲＤＢＭＳ３０４に格納することができ、ＲＤＢＭＳエンジンは、後で、データストア３０６内のどのドキュメントが、問い合わせ処理時にハードウェア速度でコプロセッサ４５０によって処理されるべきか特定するために標準化データベース問い合わせを使って問い合わせすることのできる、このドキュメントメタデータの索引を生成し、維持するように動作する。受け取られたドキュメント６００がファームウェア３５０によって処理された後で、非構造化データのデータストア３０６を格納することによりドキュメント６００を機器に取り込むことができる。メタデータ生成およびドキュメント取込みの動作は、好ましくは、事実上ほぼリアルタイムで同時に行われる。ドキュメントメタデータ１６５０は、任意選択で、機器２００の外部にある構造化データベースに格納することもできることに留意すべきである。
【００９９】
図１７に、このドキュメント取込み前処理１７００を論理フローとして示す。ステップ１で、ユーザはＧＵＩ１６００と対話して、機器２００に取り込むための新しいドキュメント６００を特定する。ＧＵＩ１６００は、任意選択で、ドキュメント６００からどんなメタデータを生成すべきかユーザに指定させるように構成されてもよい。次にステップ２で、ドキュメント６００がその元の場所（企業体ドキュメントストア３０８、インターネットまたは企業体ネットワーク４２０からアクセス可能な他の何らかのネットワーク）から取り出される。次いで、ファームウェア３５０がドキュメント６００に対してそのドキュメントメタデータ生成操作６０４を行ってドキュメントメタデータ１６５０を生成する。次いでステップ３で、ドキュメント６００がデータストア３０６のファイルシステムに格納され、（そのデータストア３０６のファイルシステム内の場所を含む）ドキュメントメタデータがＲＤＢＭＳ３０４の関係表に保存される。図１８に、このデータフローが図２ｃの機器２００上に重ね合わせられたものを示す。
【０１００】
このように、機器２００はこれ以後、ＲＤＢＭＳ３０４によって索引付けされたドキュメントメタデータ１６５０を使って、コプロセッサ４５０による問い合わせ指定のデータ処理操作（全文検索操作など）をどのドキュメントに行うべきかに判断するのに役立てることができる。さらに、機器２００内では標準化ＲＤＢＭＳ技術が活用されているため、所与の問い合わせを処理するときに、どのドキュメントにコプロセッサベースのデータ処理操作を行うべきか判断するのに、多くのユーザに周知の標準化データベース問い合わせを使用することができる。この種の問い合わせ処理は、前記の組み込まれた「Ｍｅｔｈｏｄ  ａｎｄ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｉｎｔｅｇｒａｔｉｏｎ，Ｐｒｏｃｅｓｓｉｎｇ  ａｎｄ  Ｓｅａｒｃｈｉｎｇ  ｏｆ  Ｓｔｒｕｃｔｕｒｅｄ  ａｎｄ  Ｕｎｓｔｒｕｃｔｕｒｅｄ  Ｄａｔａ  Ｕｓｉｎｇ  Ｃｏｐｒｏｃｅｓｓｏｒｓ」という名称の、本出願と同日に出願された、米国特許出願第１１／９３８，７０９号明細書に開示されている。
【０１０１】
本明細書で開示した好ましい実施形態においてコプロセッサ４５０はＦＰＧＡなどの再構成可能論理回路４０２を備えているが、コプロセッサ４５０は他の処理装置を使って実現することもできる。例えば、コプロセッサ４５０は、グラフィックス処理装置（ＧＰＵ）、汎用グラフィックスプロセッサ、チップマルチプロセッサ（ＣＭＰ）、専用メモリ素子、複合プログラマブル論理回路、特定用途向け集積回路（ＡＳＩＣ）、および他の入出力処理構成要素を含んでもよい。さらに、機器２００は、直列と並列のどちらかまたは両方のマルチコプロセッサアーキテクチャとして複数のコプロセッサ４５０を用いてもよいことにも留意すべきである。
【０１０２】
以上、本発明をその好ましい実施形態に関連して説明したが、本発明には、やはり本発明の範囲内に含まれる様々な変更が加えられ得る。このような本発明への変更は、本明細書の教示を考察すれば理解されるであろう。したがって、本発明の完全な範囲は、もっぱら添付の特許請求の範囲およびその法的な均等物によって定義されるべきものである。
【図１】
2014041615.tif 000003
【図２ａ】
2014041615.tif 000004
【図２ｂ】
2014041615.tif 000005
【図２ｃ】
2014041615.tif 000006
【図３ａ】
2014041615.tif 000007
【図３ｂ】
2014041615.tif 000008
【図４】
2014041615.tif 000009
【図５ａ】
2014041615.tif 000010
【図５ｂ】
2014041615.tif 000011
【図６】
2014041615.tif 000012
【図７ａ】
2014041615.tif 000013
【図７ｂ】
2014041615.tif 000014
【図８ａ】
2014041615.tif 000015
【図８ｂ】
2014041615.tif 000016
【図９ａ】
2014041615.tif 000017
【図９ｂ】
2014041615.tif 000018
【図９ｃ】
2014041615.tif 000019
【図１０】
2014041615.tif 000020
【図１１ａ】
2014041615.tif 000021
【図１１ｂ】
2014041615.tif 000022
【図１１ｃ】
2014041615.tif 000023
【図１２ａ】
2014041615.tif 000024
【図１２ｂ】
2014041615.tif 000025
【図１３ａ】
2014041615.tif 000026
【図１３ｂ】
2014041615.tif 000027
【図１４ａ】
2014041615.tif 000028
【図１４ｂ】
2014041615.tif 000029
【図１５】
2014041615.tif 000030
【図１６】
2014041615.tif 000031
【図１７】
2014041615.tif 000032
【図１８】
2014041615.tif 000033
【手続補正書】
【提出日】平成25年9月19日(2013.9.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ファームウェア論理が展開されている再構成可能論理回路が、流れるデータを受信するステップと、
ファームウェア論理が、流れるデータを分析し、分析された流れるデータのメタデータを生成するステップと、
生成されたメタデータに基づき流れるデータの索引を構築するステップと
を含む、索引付けの方法。
【請求項２】
分析するステップが、ファームウェア論理がパターンに関して流れるデータに対して正規表現パターンマッチングを実行して、任意のパターンマッチが流れるデータ内に存在するかどうかを検出するステップを含み、
構築するステップが、検出されたパターンマッチに基づき流れるデータのパターン索引を構築するステップを含み、パターン索引が、正規表現パターンマッチングが実行されたパターンに対応し、検出されたパターンマッチの場所データを含む、請求項１に記載の方法。
【請求項３】
流れるデータが複数の非構造化データオブジェクトを含み、非構造化データオブジェクトが複数の単語を含み、パターン索引内の場所データが、パターンマッチが検出された非構造化データオブジェクトのコンピュータシステム内の場所およびパターンのそのような非構造化データオブジェクト内の場所を識別する複数のポインタを含み、方法が、
（ｉ）データオブジェクトを複数の単語に解析すること、（ｉｉ）各データオブジェクトに対応するデータオブジェクト識別子を生成することであって、各データオブジェクト識別子が流れるデータ内のその対応するデータオブジェクトの位置を示すこと、および（ｉｉｉ）各解析された単語に対応する位置識別子を生成することであって、各位置識別子がデータオブジェクト内のその対応する単語の位置を示すことによって、ファームウェア論理が流れるデータを前処理するステップをさらに含み、
パターン索引を構築するステップが、検出されたパターンマッチの生成されたデータオブジェクト識別子および生成された位置識別子に少なくとも部分的に基づきパターン索引のポインタを生成することによってパターン索引を構築するステップを含む、請求項２に記載の方法。
【請求項４】
流れるデータが複数のウェブページを含み、パターン索引が、パターン索引に対応するパターンを含むウェブページへの複数のポインタを含み、方法が、
パターン索引を関係データベースによって記憶された作動パターン索引にマージするステップと、
インターネットサーチエンジンが、パターン問い合わせを受信するステップと、
インターネットサーチエンジンが、作動パターン索引に基づきパターン問い合わせに応答するウェブページを検索するステップと、
インターネットサーチエンジンが、検索するステップに応答してパターン問い合わせのサーチ結果を提供するステップと
をさらに含む、請求項２または３のいずれかに記載の方法。
【請求項５】
パターンがクレジットカード番号パターンを含む、請求項２から４のいずれかに記載の方法。
【請求項６】
パターンが社会保障番号パターンを含む、請求項２から５のいずれかに記載の方法。
【請求項７】
パターンが電子メールアドレスパターンを含む、請求項２から６のいずれかに記載の方法。
【請求項８】
パターンが電話番号パターンを含む、請求項２から７のいずれかに記載の方法。
【請求項９】
パターンがインターネットユニフォームリソースロケータ（ＵＲＬ）パターンを含む、請求項２から８のいずれかに記載の方法。
【請求項１０】
正規表現パターンマッチングステップが、ファームウェア論理が複数のパターンに関して流れるデータに対して正規表現パターンマッチングを実行して、任意のパターンマッチが流れるデータ内に存在するかどうかを検出するステップを含み、
パターン索引を構築するステップが、検出されたパターンマッチに基づき流れるデータの複数のパターン索引を構築するステップを含み、各パターン索引が、正規表現パターンマッチングが実行されたパターンに対応し、検出されたパターンマッチの場所データを含む、
請求項２から９のいずれかに記載の方法。
【請求項１１】
パターン索引を構築するステップが、検出されたパターンマッチに基づき流れるデータのパターン索引を同時に構築するステップを含む、請求項１０に記載の方法。
【請求項１２】
ファームウェア論理が、並行して複数の正規表現パターンマッチングモジュールを含み、各正規表現パターンマッチングモジュールが異なるパターンをキーとし、
各正規表現パターンマッチングモジュールが、（１）流れるデータを受信する、（２）流れるデータに対して正規表現パターンマッチング操作を実行して、そのキーとしたパターンに関して流れるデータ内に存在する任意のパターンマッチを検出する、および（３）その他の正規表現パターンマッチングモジュールと並行して同時に動作する、請求項１０または１１のいずれかに記載の方法。
【請求項１３】
ファームウェア論理が並列正規表現パターンマッチングと並行して流れるデータに対して完全マッチング操作を実行するステップをさらに含み、完全マッチング操作が辞書をキーとし、辞書が複数の単語を含み、完全マッチング操作を実行するステップが、ファームウェア論理が辞書単語のいずれかに関して流れるデータ内に存在する任意の完全マッチを検出するステップを含み、
構築するステップが、検出された完全マッチに基づき流れるデータの辞書索引を構築するステップを含む、請求項２から１２のいずれかに記載の方法。
【請求項１４】
流れるデータが継続して再構成可能論理回路によって受信されるときに、ファームウェア論理が流れるデータに対してハードウェア速度で同時に正規表現パターンマッチングステップおよび完全マッチング操作を実行するステップを実行するステップをさらに含み、
構築するステップが、パターン索引および辞書索引を同時に構築するステップを含む、請求項１３に記載の方法。
【請求項１５】
ファームウェア論理が並列正規表現パターンマッチングと並行して流れるデータに対して近似マッチング操作を実行するステップをさらに含み、近似マッチング操作が辞書をキーとし、辞書が複数の単語を含み、近似マッチング操作を実行するステップが、辞書単語のいずれかに関して流れるデータ内に存在する任意の近似マッチを検出するステップを含み、
構築するステップが、検出された近似マッチに基づき流れるデータの辞書索引を構築するステップを含む、請求項２から１２のいずれかに記載の方法。
【請求項１６】
流れるデータが継続して再構成可能論理回路によって受信されるときに、ファームウェア論理が流れるデータに対してハードウェア速度で同時に正規表現パターンマッチングステップおよび近似マッチング操作を実行するステップを実行するステップをさらに含み、
構築するステップが、パターン索引および辞書索引を同時に構築するステップを含む、請求項１５に記載の方法。
【請求項１７】
流れるデータが複数のデータオブジェクトを含み、方法が、
ファームウェア論理が、正規表現パターンマッチング操作がデータオブジェクト内のデータがパターンに関してパターンマッチであることを検出するのに応答して、そのデータオブジェクトをクラスに属するものとしてタグ付けするステップをさらに含み、
構築するステップが、タグ付けされたデータオブジェクトに基づきクラス索引を構築するステップを含み、クラス索引が、クラスと関連付けられており、関連付けられたクラスに属するデータオブジェクトを識別するように構成されている、請求項２から１６のいずれかに記載の方法。
【請求項１８】
構築するステップが、生成されたメタデータに基づき複数の異なる索引を同時に構築するステップを含む、請求項１から１７のいずれかに記載の方法。
【請求項１９】
異なる索引が、一般索引、辞書索引、パターン索引、およびクラス索引から成る群から選択された少なくとも２つを含む、請求項１８に記載の方法。
【請求項２０】
異なる索引が、一般索引、英語辞書索引、仏語辞書索引、外国語辞書索引、技術辞書索引、医学辞書索引、電子メールアドレスパターン索引、社会保障番号パターン索引、クレジットカード番号パターン索引、電話番号パターン索引、インターネットユニフォームリソースロケータ（ＵＲＬ）パターン索引、およびクラス索引から成る群から選択された少なくとも２つを含む、請求項１８に記載の方法。
【請求項２１】
流れるデータが複数の非構造化データオブジェクトを含み、非構造化データオブジェクトが複数の単語を含み、
分析するステップが、ファームウェア論理が複数のキーと単語の間で複数のマッチング操作を実行して、キーに関して非構造化データオブジェクト内にマッチが存在するかどうかを検出し、どこにそのようなマッチが存在するかを識別するステップを含み、
構築するステップが、索引が複数の用語および用語と関連付けられた複数のポインタを含むように索引を構築するステップを含み、用語がキーに対応し、ポインタが、関連付けられたポインタに対応するキーに関してマッチが検出された非構造化データオブジェクトのコンピュータシステム内の場所およびマッチのそのような非構造化データオブジェクト内の場所を識別する、請求項１から２０のいずれかに記載の方法。
【請求項２２】
分析するステップが、ファームウェア論理が流れるデータに対して完全マッチング操作を実行するステップを含み、完全マッチング操作が辞書をキーとし、辞書が複数の単語を含み、完全マッチング操作を実行するステップが、ファームウェア論理が辞書単語のいずれかに関して流れるデータ内に存在する任意の完全マッチを検出するステップを含み、
構築するステップが、検出された完全マッチに基づき流れるデータの辞書索引を構築するステップを含む、請求項１から２１のいずれかに記載の方法。
【請求項２３】
流れるデータが複数の非構造化データオブジェクトを含み、非構造化データオブジェクトが複数の単語を含み、辞書索引が複数の用語および複数のポインタを含み、各用語が非構造化データオブジェクト内の完全マッチを有する辞書単語に対応し、各ポインタが完全マッチが検出された非構造化データオブジェクトのコンピュータシステム内の場所および完全マッチのそのような非構造化データオブジェクト内の場所を識別し、
分析するステップが、（ｉ）データオブジェクトを複数の単語に解析すること、（ｉｉ）各データオブジェクトに対応するデータオブジェクト識別子を生成することであって、各データオブジェクト識別子が流れるデータ内のその対応するデータオブジェクトの位置を示すこと、および（ｉｉｉ）各解析された単語に対応する位置識別子を生成することであって、各位置識別子がデータオブジェクト内のその対応する単語の位置を示すことによってファームウェア論理が流れるデータを前処理するステップをさらに含み、
構築するステップが、検出された完全マッチの生成されたデータオブジェクト識別子および生成された位置識別子に少なくとも部分的に基づき辞書索引のポインタを生成することによって辞書索引を構築するステップを含む、請求項２２に記載の方法。
【請求項２４】
分析するステップが、ファームウェア論理が流れるデータに対して近似マッチング操作を実行するステップを含み、近似マッチング操作が辞書をキーとし、辞書が複数の単語を含み、近似マッチング操作を実行するステップが、ファームウェア論理が辞書単語のいずれかに関して流れるデータ内に存在する任意の近似マッチを検出するステップを含み、
構築するステップが、検出された近似マッチに基づき流れるデータの辞書索引を構築するステップを含む、請求項１から２１のいずれかに記載の方法。
【請求項２５】
流れるデータが複数の非構造化データオブジェクトを含み、非構造化データオブジェクトが複数の単語を含み、辞書索引が複数の用語および複数のポインタを含み、各用語が非構造化データオブジェクト内の近似マッチを有する辞書単語に対応し、各ポインタが近似マッチが検出された非構造化データオブジェクトのコンピュータシステム内の場所および近似マッチのそのような非構造化データオブジェクト内の場所を識別し、
分析するステップが、（ｉ）データオブジェクトを複数の単語に解析すること、（ｉｉ）各データオブジェクトに対応するデータオブジェクト識別子を生成することであって、各データオブジェクト識別子が流れるデータ内のその対応するデータオブジェクトの位置を示すこと、（ｉｉｉ）各解析された単語に対応する位置識別子を生成することであって、各位置識別子がデータオブジェクト内のその対応する単語の位置を示すことによってファームウェア論理が流れるデータを前処理するステップをさらに含み、
構築するステップが、検出された近似マッチの生成されたデータオブジェクト識別子および生成された位置識別子に少なくとも部分的に基づき辞書索引のポインタを生成することによって辞書索引を構築するステップを含む、請求項２４に記載の方法。
【請求項２６】
流れるデータが複数の非構造化データオブジェクトを含み、非構造化データオブジェクトが複数の単語を含み、
分析するステップが、（ｉ）データオブジェクトを複数の単語に解析すること、（ｉｉ）各データオブジェクトに対応するデータオブジェクト識別子を生成することであて、各データオブジェクト識別子が流れるデータ内のその対応するデータオブジェクトの位置を示すこと、（ｉｉｉ）各解析された単語に対応する位置識別子を生成することであって、各位置識別子がデータオブジェクト内のその対応する単語の位置を示すことによってファームウェア論理が流れるデータを前処理するステップを含み、
構築するステップが、索引内に複数のポインタを含むことによって索引を構築するステップを含み、各ポインタが、データオブジェクト識別子に基づく非構造化データオブジェクトのコンピュータシステム内の場所および位置識別子に基づくそのような非構造化データオブジェクト内の場所を識別する、請求項１から２５のいずれかに記載の方法。
【請求項２７】
構築するステップが、一般索引が複数の用語および複数のポインタを含むように、生成されたデータオブジェクト識別子および生成された位置識別子を使用して前処理された流れるデータから一般索引を構築するステップを含み、一般索引の用語が前処理された流れるデータ内の単語を含み、用語の関連付けられたポインタがそれらの単語に対応するデータオブジェクト識別子および位置識別子を含む、請求項２６に記載の方法。
【請求項２８】
分析するステップが、ファームウェア論理が流れるデータに対してヒストグラム生成操作を実行するステップを含み、
方法が、生成されたヒストグラムに基づき流れるデータに対してクラスタ化操作を実行するステップをさらに含む、請求項１から２７のいずれかに記載の方法。
【請求項２９】
構築するステップが、ファームウェア論理が構築するステップを実行するステップを含む、請求項１から２８のいずれかに記載の方法。
【請求項３０】
実行するステップが、流れるデータが再構成可能論理回路によって継続して受信されるときに、ファームウェア論理がハードウェア速度でその方法のステップを実行するステップを含む、請求項１から２９のいずれかに記載の方法。
【請求項３１】
バス帯域幅速度でバスを介して再構成可能論理回路に流れるデータを配信するステップと、
流れるデータが再構成可能論理回路に継続して配信されるときに、ファームウェア論理がバス帯域幅速度でその方法のステップを実行するステップと
をさらに含む、請求項１から２９のいずれかに記載の方法。
【請求項３２】
バスがＰＣＩ−Ｅｘｐｒｅｓｓバスであり、
配信するステップが、ネットワークソースまたはディスクソースからＰＣＩ−Ｅｘｐｒｅｓｓバスを介して再構成可能論理回路に流れるデータを配信するステップを含む、請求項３１に記載の方法。
【請求項３３】
再構成可能論理回路が、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）を備え、ファームウェア論理がＦＰＧＡ上に存する、請求項１から３２のいずれかに記載の方法。
【請求項３４】
再構成可能論理回路の請求項１から３３のいずれかに記載の方法のステップを実行するように構成されている再構成可能論理回路
を備える、索引付け装置。
【請求項３５】
第１のプロセッサと、
第２のプロセッサと
を備え、
第１のプロセッサが、第２のプロセッサにデータの流れを仕向けるように構成されており、
第２のプロセッサが、（１）流れるデータを受信する、および（２）流れるデータを分析し、分析された流れるデータのメタデータを生成するように構成されており、
第１のプロセッサおよび第２のプロセッサから成る群のメンバが、生成されたメタデータに基づき流れるデータの索引を構築するように構成されており、
第２のプロセッサが、再構成可能論理回路、グラフィックス処理装置（ＧＰＵ）、およびチップマルチプロセッサ（ＣＭＰ）から成る群のメンバを含む、
索引付けシステム。
【請求項３６】
第２のプロセッサが、パターンに関して流れるデータに対して正規表現パターンマッチングを実行することによって流れるデータを分析して、任意のパターンマッチが流れるデータ内に存在するかどうかを検出するようにさらに構成されており、
第１のプロセッサおよび第２のプロセッサから成る群のメンバが、検出されたパターンマッチに基づき流れるデータのパターン索引を構築するようにさらに構成されており、パターン索引が、正規表現パターンマッチングが実行されたパターンに対応し、検出されたパターンマッチの場所データを含む、請求項３５に記載のシステム。
【請求項３７】
流れるデータが複数の非構造化データオブジェクトを含み、非構造化データオブジェクトが複数の単語を含み、パターン索引内の場所データが、パターンマッチが検出された非構造化データオブジェクトのコンピュータシステム内の場所およびパターンのそのような非構造化データオブジェクト内の場所を識別する複数のポインタを含み、
（ｉ）データオブジェクトを複数の単語に解析すること、（ｉｉ）各データオブジェクトに対応するデータオブジェクト識別子を生成することであって、各データオブジェクト識別子が流れるデータ内のその対応するデータオブジェクトの位置を示すこと、（ｉｉｉ）各解析された単語に対応する位置識別子を生成することであって、各位置識別子がデータオブジェクト内のその対応する単語の位置を示すことによって第２のプロセッサが流れるデータを前処理するようにさらに構成されており、
第１のプロセッサおよび第２のプロセッサから成る群のメンバが、検出されたパターンマッチの生成されたデータオブジェクト識別子および生成された位置識別子に少なくとも部分的に基づきパターン索引のポインタを生成することによってパターン索引を構築するようにさらに構成されている、請求項３６に記載のシステム。
【請求項３８】
インターネットサーチエンジン
をさらに備え、
流れるデータが複数のウェブページを含み、パターン索引が、パターン索引に対応するパターンを含むウェブページへの複数のポインタを含み、
第１のプロセッサが、関係データベースによって記憶された作動パターン索引にパターン索引をマージするようにさらに構成されており、
インターネットサーチエンジンが、パターン問い合わせを受信する、（２）作動パターン索引に基づきパターン問い合わせに応答するウェブページを検索する、および（３）検索操作に応答してパターン問い合わせのサーチ結果を提供するように構成されている、請求項３６または３７のいずれかに記載のシステム。
【請求項３９】
パターンがクレジットカード番号パターンを含む、請求項３６から３８のいずれかに記載のシステム。
【請求項４０】
パターンが社会保障番号パターンを含む、請求項３６から３９のいずれかに記載のシステム。
【請求項４１】
パターンが電子メールアドレスパターンを含む、請求項３６から４０のいずれかに記載のシステム。
【請求項４２】
パターンが電話番号パターンを含む、請求項３６から４１のいずれかに記載のシステム。
【請求項４３】
パターンがインターネットユニフォームリソースロケータ（ＵＲＬ）パターンを含む、請求項３６から４２のいずれかに記載のシステム。
【請求項４４】
第２のプロセッサが複数のパターンに関して流れるデータに対して正規表現パターンマッチング操作を実行して、任意のパターンマッチが流れるデータ内に存在するかどうかを検出するようにさらに構成されており、
第１のプロセッサおよび第２のプロセッサから成る群のメンバが、検出されたパターンマッチに基づき流れるデータの複数のパターン索引を構築するようにさらに構成されており、各パターン索引が、正規表現パターンマッチング操作が実行されたパターンに対応し、検出されたパターンマッチの場所データを含む、請求項３６から４３のいずれかに記載のシステム。
【請求項４５】
第１のプロセッサおよび第２のプロセッサから成る群のメンバが、検出されたパターンマッチに基づき流れるデータのパターン索引を同時に構築するようにさらに構成されている、請求項４４に記載のシステム。
【請求項４６】
第２のプロセッサが並行して複数の正規表現パターンマッチングモジュールを含み、各正規表現パターンマッチングモジュールが異なるパターンをキーとし、
各正規表現パターンマッチングモジュールが、（１）流れるデータを受信する、（２）流れるデータに対して正規表現パターンマッチング操作を実行して、そのキーとしたパターンに関して流れるデータ内に存在する任意のパターンマッチを検出する、および（３）その他の正規表現パターンマッチングモジュールと並行して同時に動作するように構成されている、請求項４４または４５のいずれかに記載のシステム。
【請求項４７】
第２のプロセッサが、並列正規表現パターンマッチングと並行して流れるデータに対して完全マッチング操作を実行することによって流れるデータを分析するようにさらに構成されており、完全マッチング操作が辞書をキーとし、辞書が複数の単語を含み、完全マッチング操作が辞書単語のいずれかに関して流れるデータ内に存在する任意の完全マッチを検出するように構成されており、
第１のプロセッサおよび第２のプロセッサから成る群のメンバが、検出された完全マッチに基づき流れるデータの辞書索引を構築するようにさらに構成されている、請求項３６から４６のいずれかに記載のシステム。
【請求項４８】
流れるデータが第２のプロセッサによって継続して受信されるときに、第２のプロセッサが流れるデータに対してハードウェア速度で正規表現パターンマッチング操作および完全マッチング操作を同時に実行するようにさらに構成されており、
第１のプロセッサおよび第２のプロセッサから成る群のメンバが、パターン索引および辞書索引を同時に構築するようにさらに構成されている、請求項４７に記載のシステム。
【請求項４９】
第２のプロセッサが、並列正規表現パターンマッチング操作と並行して流れるデータに対して近似マッチング操作を実行することによって流れるデータを分析するようにさらに構成されており、近似マッチング操作が辞書をキーとし、辞書が複数の単語を含み、近似マッチング操作が、辞書単語のいずれかに関して流れるデータ内に存在する任意の近似マッチを検出するように構成されており、
第１のプロセッサおよび第２のプロセッサから成る群のメンバが、検出された近似マッチに基づき流れるデータの辞書索引を構築するようにさらに構成されている、請求項３６から４６のいずれかに記載のシステム。
【請求項５０】
流れるデータが第２のプロセッサによって継続して受信されるときに、第２のプロセッサが流れるデータに対してハードウェア速度で正規表現パターンマッチング操作および近似マッチング操作を同時に実行するようにさらに構成されており、
第１のプロセッサおよび第２のプロセッサから成る群のメンバが、パターン索引および辞書索引を同時に構築するようにさらに構成されている、請求項４９に記載のシステム。
【請求項５１】
流れるデータが、複数のデータオブジェクトを含み、
第２のプロセッサが、正規表現パターンマッチング操作がデータオブジェクト内のデータがパターンに関してパターンマッチであることを検出するのに応答して、クラスに属するものとしてそのデータオブジェクトをタグ付けするようにさらに構成されており、
第１のプロセッサおよび第２のプロセッサから成る群のメンバが、タグ付けされたデータオブジェクトに基づきクラス索引を構築するようにさらに構成されており、クラス索引が、クラスと関連付けられ、関連付けられたクラスに属するデータオブジェクトを識別するように構成されている、請求項３６から５０のいずれかに記載のシステム。
【請求項５２】
第１のプロセッサおよび第２のプロセッサから成る群のメンバが、生成されたメタデータに基づき複数の異なる索引を同時に構築するようにさらに構成されている、請求項３５から５１のいずれかに記載のシステム。
【請求項５３】
異なる索引が、一般索引、辞書索引、パターン索引、およびクラス索引から成る群から選択された少なくとも２つを含む、請求項５２に記載のシステム。
【請求項５４】
異なる索引が、一般索引、英語辞書索引、仏語辞書索引、外国語辞書索引、技術辞書索引、医学辞書索引、電子メールアドレスパターン索引、社会保障番号パターン索引、クレジットカード番号パターン索引、電話番号パターン索引、インターネットユニフォームリソースロケータ（ＵＲＬ）パターン索引、およびクラス索引から成る群から選択された少なくとも２つを含む、請求項５２に記載のシステム。
【請求項５５】
流れるデータが複数の非構造化データオブジェクトを含み、非構造化データオブジェクトが複数の単語を含み、
第２のプロセッサが、複数のキーと単語の間で複数のマッチング操作を実行することによって流れるデータを分析して、キーに関して非構造化データオブジェクト内にマッチが存在するかどうかを検出し、どこにそのようなマッチが存在するかを識別するようにさらに構成されており、
第１のプロセッサおよび第２のプロセッサから成る群のメンバが、索引が複数の用語および用語と関連付けられた複数のポインタを含むように索引を構築するようにさらに構成されており、用語がキーに対応し、ポインタが、関連付けられたポインタに対応するキーに関してマッチが検出された非構造化データオブジェクトのコンピュータシステム内の場所およびマッチのそのような非構造化データオブジェクト内の場所を識別する、請求項３５から５４のいずれかに記載のシステム。
【請求項５６】
第２のプロセッサが、流れるデータに対して完全マッチング操作を実行することによって流れるデータを分析するようにさらに構成されており、完全マッチング操作が辞書をキーとし、辞書が複数の単語を含み、完全マッチング操作が、辞書単語のいずれかに関して流れるデータ内に存在する任意の完全マッチを検出するように構成されており、
第１のプロセッサおよび第２のプロセッサから成る群のメンバが、検出された完全マッチに基づき流れるデータの辞書索引を構築するようにさらに構成されている、請求項３５から５５のいずれかに記載のシステム。
【請求項５７】
流れるデータが複数の非構造化データオブジェクトを含み、非構造化データオブジェクトが複数の単語を含み、辞書索引が複数の用語および複数のポインタを含み、各用語が非構造化データオブジェクト内の完全マッチを有する辞書単語に対応し、各ポインタが、完全マッチが検出された非構造化データオブジェクトのコンピュータシステム内の場所および完全マッチのそのような非構造化データオブジェクト内の場所を識別し、
（ｉ）データオブジェクトを複数の単語に解析すること、（ｉｉ）各データオブジェクトに対応するデータオブジェクト識別子を生成することであって、各データオブジェクト識別子が流れるデータ内のその対応するデータオブジェクトの位置を示すこと、（ｉｉｉ）各解析された単語に対応する位置識別子を生成することであって、各位置識別子がデータオブジェクト内のその対応する単語の位置を示すことによって、第２のプロセッサが流れるデータを前処理するようにさらに構成されており、
第１のプロセッサおよび第２のプロセッサから成る群のメンバが、検出された完全マッチの生成されたデータオブジェクト識別子および生成された位置識別子に少なくとも部分的に基づき辞書索引のポインタを生成することによって辞書索引を構築するようにさらに構成されている、請求項５６に記載のシステム。
【請求項５８】
第２のプロセッサが、流れるデータに対して近似マッチング操作を実行することによって流れるデータを分析するようにさらに構成されており、近似マッチング操作が辞書をキーとし、辞書が複数の単語を含み、近似マッチング操作が辞書単語のいずれかに関して流れるデータ内に存在する任意の近似マッチを検出するように構成されており、
第１のプロセッサおよび第２のプロセッサから成る群のメンバが、検出された近似マッチに基づき流れるデータの辞書索引を構築するようにさらに構成されている、請求項３５から５５のいずれかに記載のシステム。
【請求項５９】
流れるデータが複数の非構造化データオブジェクトを含み、非構造化データオブジェクトが複数の単語を含み、辞書索引が複数の用語および複数のポインタを含み、各用語が非構造化データオブジェクト内の近似マッチを有する辞書単語に対応し、各ポインタが近似マッチが検出された非構造化データオブジェクトのコンピュータシステム内の場所および近似マッチのそのような非構造化データオブジェクト内の場所を識別し、
（ｉ）データオブジェクトを複数の単語に解析すること、（ｉｉ）各データオブジェクトに対応するデータオブジェクト識別子を生成することであって、各データオブジェクト識別子が流れるデータ内のその対応するデータオブジェクトの位置を示すこと、（ｉｉｉ）各解析された単語に対応する位置識別子を生成することであって、各位置識別子がデータオブジェクト内のその対応する単語の位置を示すことによって、第２のプロセッサが流れるデータを前処理するようにさらに構成されており、
第１のプロセッサおよび第２のプロセッサから成る群のメンバが、検出された近似マッチの生成されたデータオブジェクト識別子および生成された位置識別子に少なくとも部分的に基づき辞書索引のポインタを生成することによって、辞書索引を構築するようにさらに構成されている、請求項５８に記載のシステム。
【請求項６０】
流れるデータが複数の非構造化データオブジェクトを含み、非構造化データオブジェクトが複数の単語を含み、
（ｉ）データオブジェクトを複数の単語に解析すること、（ｉｉ）各データオブジェクトに対応するデータオブジェクト識別子を生成することであって、各データオブジェクト識別子が流れるデータ内のその対応するデータオブジェクトの位置を示すこと、（ｉｉｉ）各解析された単語に対応する位置識別子を生成することであって、各位置識別子がデータオブジェクト内のその対応する単語の位置を示すことによって第２のプロセッサが流れるデータを前処理するようにさらに構成されており、
第１のプロセッサおよび第２のプロセッサから成る群のメンバが、索引内に複数のポインタを含むことによって索引を構築するようにさらに構成されており、各ポインタが、データオブジェクト識別子に基づく非構造化データオブジェクトのコンピュータシステム内の場所および位置識別子に基づくそのような非構造化データオブジェクト内の場所を識別する、請求項３５から５９のいずれかに記載のシステム。
【請求項６１】
第１のプロセッサおよび第２のプロセッサから成る群のメンバが、一般索引が複数の用語および複数のポインタを含むように、生成されたデータオブジェクト識別子および生成された位置識別子を使用して、前処理された流れるデータから一般索引を構築するようにさらに構成されており、一般索引の用語が前処理された流れるデータ内の単語を含み、用語の関連付けられたポインタが、それらの単語に対応するデータオブジェクト識別子および位置識別子を含む、請求項６０に記載のシステム。
【請求項６２】
第２のプロセッサが、流れるデータに対してヒストグラム生成操作を実行するようにされに構成されており、
第１のプロセッサおよび第２のプロセッサから成る群のメンバが、生成されたヒストグラムに基づき流れるデータに対してクラスタ化操作を実行するように構成されている、請求項３５から６１のいずれかに記載のシステム。
【請求項６３】
第２のプロセッサが、構築操作を実行するようにさらに構成されている、請求項３５から６２のいずれかに記載のシステム。
【請求項６４】
流れるデータが第２のプロセッサによって継続して受信されるときに、第２のプロセッサがハードウェア速度でその操作を実行するようにさらに構成されている、請求項３５から６３のいずれかに記載のシステム。
【請求項６５】
第１のプロセッサおよび第２のプロセッサが通信するバス
をさらに備え、
第１のプロセッサが、バス帯域幅速度でバスを介して第２のプロセッサに流れるデータを配信するようにさらに構成されており、
流れるデータが継続して第２のプロセッサに配信されるときに、第２のプロセッサがバス帯域幅速度でその操作を実行するようにさらに構成されている、請求項３５から６３のいずれかに記載のシステム。
【請求項６６】
ネットワークソースまたはディスクソース
をさらに備え、
バスがＰＣＩ−Ｅｘｐｒｅｓｓバスであり、
第１のプロセッサが、ネットワークソースまたはディスクソースからＰＣＩ−Ｅｘｐｒｅｓｓバスを介して第２のプロセッサに流れるデータを配信するようにさらに構成されている、請求項６５に記載のシステム。
【請求項６７】
第２のプロセッサが再構成可能論理回路を含む、請求項３５から６６のいずれかに記載のシステム。
【請求項６８】
再構成可能論理回路がフィールドプログラマブルゲートアレイ（ＦＰＧＡ）を含む、請求項６７に記載のシステム。
【請求項６９】
第２のプロセッサがＧＰＵを含む、請求項３５から６６のいずれかに記載のシステム。
【請求項７０】
第２のプロセッサがＣＭＰを含む、請求項３５から６６のいずれかに記載のシステム。
【請求項７１】
第１のプロセッサが汎用プロセッサ（ＧＰＰ）を含む、請求項３５から７０のいずれかに記載のシステム。
【外国語明細書】
2014041615000001.pdf