(57)【特許請求の範囲】
【請求項１】
情報検索システム内でルーティングアーキテクチャを使用して起点モジュールと転送先モジュールとの間で情報をルートする方法であって、前記方法が、
前記情報を受け取るステップと、
ルータパケットの第一部分が、前記情報からのデータを含むことを提供することによって、前記情報を前記ルータパケットにフォーマットするステップと、
前記ルータパケットを前記ルーティングアーキテクチャに送信するステップと、
前記ルーティングアーキテクチャにより前記転送先モジュールのステータスに基づき前記転送先モジュールに前記ルータパケットを適応可能にルートさせるステップと、
を含んで構成され、
前記ルーティングアーキテクチャに、前記ルータパケットを適応可能にルートさせるステップが、さらに、
（１）別のルータパケットが、前記転送先モジュールによって処理されることを待っているかどうかを決定することによって前記転送先モジュールのステータスをチェックするステップと、
（２）別のルータパケットが、処理されることを待っている場合、生成されるモジュールとして追加の転送先モジュールを生成するステップと、
（３）前記ルータパケットを前記生成されるモジュールにルートするステップと、
を含む、
ことを特徴とする方法。
【請求項２】
前記データが、探索リクエストの複数の要素を含み、
前記ルーティングアーキテクチャに、前記ルータパケットを適応可能にルートさせるステップが、
前記転送先モジュールが、検索エンジンであるかどうかを決定することによって前記転送先モジュールのステータスをチェックするステップと、
前記転送先モジュールが前記検索エンジンである場合、前記データ内の要素を順序付けし、かつ前記転送先モジュールに対して順序付けされるように前記要素をルートするステップと
を含んで構成されることを特徴とする請求項１に記載の方法。
【請求項３】
前記要素を順序付けするステップが、
（１）前記要素の一つに対応するデータベースのレコードの数を決定するステップと、
（２）前記要素のその他の要素に対して前記決定するステップを繰り返すステップと、
（３）各々の要素に対応する各々の最小数のレコードを有するエントリで開始する順に前記要素を順序付けするステップと、
を含んで構成されることを特徴とする請求項２に記載の方法。
【請求項４】
前記ステップ（２）が、さらに、前記情報検索システムの単一のプロセッサで実行するマルチスレッドソフトウェア環境のソフトウェアモジュールとして前記生成されたモジュールを提供することを含んで構成されることを特徴とする請求項１に記載の方法。
【請求項５】
前記ステップ（２）が、さらに、前記情報検索システム内の複数のプロセッサの一つに専用であるソフトウェアモジュールとして前記生成されたモジュールを提供することを含んで構成されることを特徴とする請求項１に記載の方法。
【請求項６】
前記ルーティングアーキテクチャに、前記ルータパケットを適応可能にルートさせるステップが、前記転送先モジュールと関連するキュー内の指定位置に前記ルータパケットをルートすることによって遅くともしきい値期間満了後、前記転送先モジュールにより、前記ルータパケットを処理させることを含んで構成されることを特徴とする請求項１に記載の方法。
【請求項７】
前記転送先モジュールにより、前記ルータパケットを処理するステップが、さらに、前記指定位置内に前記ルータパケットを配置し、前記指定位置が、処理される次のルータパケットを指定することを含んで構成されることを特徴とする請求項６に記載の方法。
【請求項８】
前記フォーマットするステップが、さらに、
（ｉ）前記ルータパケットの第二部分が、前記転送先モジュールに対応する転送先指定を含むことを提供するステップと、
（ｉｉ）前記ルータパケットの第三部分が、前記情報を受け取る前記起点モジュールに対応する起点指定を含むことを提供するステップと、
（ｉｉｉ）前記ルータパケットの第四部分が、前記データの前記転送先モジュールによって実行される所望のアクションに対応するアクション指定を含むことを提供するステップと、
を含んで構成されることを特徴とする請求項１に記載の方法。
【請求項９】
情報検索システム内のルーティングアーキテクチャを使用して起点モジュールと転送先モジュールとの間で情報をルートする方法であって、前記方法が、
前記起点モジュールによって、複数の要素を有する前記情報を受け取るステップと、
前記情報内の前記要素を使用するデータパケットを生成するステップと、
（ｉ）ルータパケットの第一部分が、前記転送先モジュールに対応する転送先指定を含むことを提供すること、
（ｉｉ）前記ルータパケットの第二部分が、前記情報を受け取る前記起点モジュールに対応する起点指定を含むことを提供すること、
（ｉｉｉ）前記ルータパケットの第三部分が、前記データパケットを含むことを提供すること、および
（ｉｖ）前記ルータパケットの第四部分が、前記情報からの前記要素を使用する前記転送先モジュールによって実行される所望のアクションに対応するアクション指定を含むことを提供すること
によって前記情報から前記ルータパケットをフォーマットするステップと、
フォーマット後、前記ルータパケットを前記ルーティングアーキテクチャに送信するステップと、
前記ルーティングアーキテクチャにより、前記転送先モジュールを決定するステップと、
前記ルーティングアーキテクチャに、前記転送先モジュールのステータスに基づいて、前記転送先モジュールに対応するキューに前記ルータパケットを適応可能にルートさせるステップと、
を含んで構成され、
前記ルーティングアーキテクチャに、前記ルータパケットを適応可能にルートさせるステップが、さらに、
（１）別のルータパケットが前記キューにあるかどうかを決定するステップと、
（２）別のルータパケットが前記キューにある場合、メモリに前記転送先モジュールのコピーである新しいモジュールを生成するステップと、
（３）前記ルータパケットを前記新しいモジュールにルートするステップと、
を含む、方法。
【請求項１０】
前記ルータパケットをフォーマットするステップが、さらに、
前記ルータパケットの第五部分が、前記ルータパケットのサイズに対応するサイズ指定を含むことを提供するステップと、
前記ルータパケットの第六部分が、前記ルータパケットの関係をルータパケットのグループと参照するパケットのシーケンス番号を含むことを提供するステップと、
を含んで構成される請求項９に記載の方法。
【請求項１１】
前記データパケットを生成するステップが、前記要素を初期順序に配列することを含んで構成される請求項９に記載の方法。
【請求項１２】
前記ルーティングアーキテクチャにより、前記ルータパケットを適応可能にルートさせるステップが、
前記転送先モジュールが検索エンジンであるかどうかを決定することによって前記転送先モジュールのステータスをチェックするステップと、
前記転送先モジュールが前記検索エンジンである場合、前記要素の初期順序を前記要素の最適化順序に配列し、かつ最適化順序で前記要素を前記転送先モジュールにルートするステップと、
を含んで構成される請求項１１に記載の方法。
【請求項１３】
前記要素の初期順序を最適化順序に配列するステップが、
（１）前記要素の一つに対応するデータベースのレコードの数を決定するステップと、
（２）前記要素のその他の要素に対して前記決定するステップを繰り返すステップと、
（３）各々の要素に各々対応する前記レコードの数に基づき前記要素の最適化順序に、前記要素の初期順序を配列するステップと、
を含んで構成される請求項１２に記載の方法。
【請求項１４】
前記ステップ（３）が、前記最適化順序で要素の第一が、各々の要素に各々対応する最小数のレコードを有するように前記初期順序を、前記最適化順序に配列することを含んで構成される請求項１３に記載の方法。
【請求項１５】
前記ステップ（２）が、さらに、前記情報検索システムの単一のプロセッサで実行するマルチスレッドソフトウェア環境のソフトウェアモジュールとして前記新しいモジュールを提供するステップを含んで構成される請求項９に記載の方法。
【請求項１６】
前記ステップ（２）が、さらに、前記情報検索システム内の複数のプロセッサの一つに専用であるソフトウェアモジュールとして前記新しいモジュールを提供するステップを含んで構成される請求項９に記載の方法。
【請求項１７】
前記ルーティングアーキテクチャに、前記ルータパケットを適応可能にルートさせるステップが、さらに、
（１）前記キュー内の第一位置に前記ルータパケットを配置するステップと、
（２）前記ルータパケットがしきい値期間内に前記転送先モジュールによって処理されていない場合、割り込みを前記転送先モジュールに送るステップと、
（３）前記キュー内の前記ルータパケットの前記第一位置を変更することによって、前記転送先モジュールに前記ルータパケットを処理させるステップと、
を含んで構成される請求項９に記載の方法。
【請求項１８】
前記ステップ（２）の後、前記転送先モジュールに、前記転送先モジュールによって現在実行されている処理活動を取り消させるステップを含んで構成される請求項１７に記載の方法。
【請求項１９】
請求項１７に記載のステップ（３）が、前記キュー内の第二位置に前記ルータパケットを配置するステップを含み、前記第二位置が、前記転送先モジュールによって次に処理されるルータパケットを指定することを特徴とする請求項１８に記載の方法。
【請求項２０】
情報検索システム内のルーティングアーキテクチャを使用して起点モジュールと転送先モジュールとの間で情報をルートする方法であって、前記方法が、
前記起点モジュールによって、複数の要素を有する前記情報を受け取るステップと、
前記情報内の前記要素を使用してデータパケットを生成するステップと、
（ｉ）ルータパケットの第一部分が、前記転送先モジュールに対応する転送先指定を含むことを提供すること、
（ｉｉ）前記ルータパケットの第二部分が、前記情報を受け取る前記起点モジュールに対応する起点指定を含むことを提供すること、
（ｉｉｉ）前記ルータパケットの第三部分が、前記データパケットを含むことを提供すること、および
（ｉｖ）ルータパケットの第四部分が、前記情報からの前記要素を使用する前記転送先モジュールによって実行される所望のアクションに対応するアクション指定を含むことを提供すること
によって、前記情報からの前記ルータパケットをフォーマットするステップと、
フォーマット後、前記ルータパケットを前記ルーティングアーキテクチャに送信するステップと、
前記ルーティングアーキテクチャに、前記転送先モジュールを決定させるステップと、
ルーティングアーキテクチャに、別のルータパケットが、前記転送先モジュールに対応するキューにあるかどうかを決定させるステップと、
前記キュー内の第一位置に前記ルータパケットを配置するステップと、
別のルータパケットが前記キューにある場合には、メモリに追加の転送先モジールを生成し、かつ前記ルータパケットを前記追加の転送先モジュールにルートするステップと、
前記ルータパケットがしきい値期間内に前記転送先モジュールによって処理されていない場合には、割り込みを前記転送先モジュールに送るステップと、
前記キュー内の前記ルータパケットの前記第一位置を変更することによって前記ルータパケットを前記転送先モジュールに処理させるステップと、
を含んで構成される方法。
【請求項２１】
前記割り込みを送るステップの後、前記転送先モジュールに、現在の処理活動を取り消させるステップを含む請求項２０に記載の方法。
【請求項２２】
前記データパケットを生成するステップが、前記要素を初期順序に配列するステップを含む請求項２０に記載の方法。
【請求項２３】
前記転送先モジュールが検索エンジンである場合に、前記要素の前記初期順序を前記要素の最適化順序に配列し、かつ前記最適化順序で前記要素を前記転送先モジュールにルートするステップをさらに含む請求項２２に記載の方法。
【請求項２４】
前記配列するステップが、
（１）前記要素の一つに対応するデータベースのレコードの数を決定するステップと、
（２）前記要素の各々に対して前記決定するステップを繰り返すステップと、
（３）前記最適化順序で前記要素の第一が、各々の要素に各々対応する最小数のレコードを有する前記最適化順序に、前記要素の前記初期順序を配列するステップと、を含んで構成される請求項２３に記載の方法。
【発明の詳細な説明】
関連する出願
本米国特許出願は、“質問セットを動的に生成するためにインデックスを動的に処理するシステムおよび方法”の名称で、１９９７年４月２２日に提出された出願中の米国特許出願番号第０８／８４４，７５１号に関連する。本出願およびこの関連する出願中の米国特許出願は、一般で、ＢｅｌｌＳｏｕｔｈ  Ｃｏｒｐｏｒａｔｉｏｎ（ベルサウスコーポレーション）に譲渡される。
技術分野
本発明は、一般に、情報検索システム内の通信ルーティングに関し、より詳細に説明すると、情報検索システム内の適応ルーティングアーキテクチャを使用して起点モジュールから転送先モジュールへの情報を動的にルートすることに関する。
発明の背景
記録されかつ探索可能な情報の増加し続ける量の態様での急増が、情報の世界を揺り動かしたといわれている。この増加し続ける情報量の中から特定の情報を効率的に探索するために、情報検索システムが開発されてきた。
情報検索システム（“ＩＲシステム”）は、情報の探索、組織化および引渡しのためのシステムである。手作業ＩＲシステムは、検索図書館員にたとえられる。探索パーティーは、書籍やその他の資料などの特定の情報を探索するために図書館員に尋ねることによってこの手作業ＩＲシステムを使用する。図書館員は、リクエストを理解し、情報のための探索を開始し、探索パーティに見つけ出した情報を送る。このように、図書館員は、検索し、見付け出し、見出した情報を引渡すＩＲシステムとしての機能を果たす。図書館員は、探索パーティーにとって重宝であるが、図書館員は、あまり速くなく、かつ情報を故意ではなく見落とす場合がある。
コンピュータによるＩＲシステムは、手作業によるＩＲシステムよりもはるかに効率的である。コンピュータによるＩＲシステムは、一般に、ルーティングメッセージ及びユーザーインターフェースとデータベースの検索エンジンとの間をファイルを含む方法を適用する。ユーザーインターフェースと検索エンジンとの間のリクエスト、メッセージおよびファイルをルートするステップは、“ミドルウェア”コードのルーティングアーキテクチャとして従来から周知であるステップによって行われることが出来る。一般に、このようなミドルウェアコードの実行は、ＩＲシステム内の限定数のリソース（ユーザーインターフェースおよび検索エンジン）量を処理するとき、比較的簡単である。
しかし、ＩＲシステムが、過負荷で使用されるとき、ＩＲシステム内の応答時間が減速し始める。ＩＲシステムのリソース（検索エンジンなど）のアベイラビリティ（使用可能度）は、特定のリソースと関連する固定または限定アクセス限界により制約される。例えば、検索エンジンが、特定時間内に固定数のリクエストを処理できるに過ぎないかもしれない。検索エンジンに対する追加リクエストの処理は、前のリクエストが処理される間、好ましくなく時間を遅らされる。
ＩＲシステムは、種々の入力メカニズム（フロントエンド）や出力メカニズム（引渡しモジュール）を設けることによって拡張され得る。異なるタイプのフロントエンドモジュールを加えると、検索エンジンなどのＩＲシステムのリソースへのアクセスを拡張する。例えば、ＩＲシステムが、音声またはデジタルデータを介してユーザーと対話するために複数のタイプのフロントエンドモジュールを含んでもよい。これにより、ユーザーがオーディオ入力を介してＩＲシステムと対話可能となる。さらに、ユーザーは、ユーザーのコンピュータとＩＲシステムのコンピュータとの間を接続して、ＩＲシステムと対話することが可能となる。このように、ＩＲシステムは、情報リクエストに対する異なるフォーマットをサポートする能力によって向上され得る。
ＩＲシステムは、さらに、複数の引渡しモジュールを有することによって向上され得る。引渡しモジュールは、デジタルデータやオーディオ、ファクシミリなどの特定のフォーマットで探索結果を引渡すメカニズムである。例えば、ファクシミリモジュールは、ファクシミリを介してユーザーに探索問い合わせ結果を提供する。テキストから音声へのモジュールは、ユーザーに対して再生されるオーディオフォーマットになるように処理して、ユーザーに探索問い合わせ結果を提供する。
引渡しモジュールや追加フロントエンジンモジュールなどの新しいモジュールをＩＲシステムに統合することには問題がある。このような新しいモジュールを統合するときに直面する一つの問題は、コモン（共通）言語がないことである。典型的なＩＲシステムにおいては、メッセージおよびファイルのルーティングは、ＩＲシステムのなしに既存のモジュール間のカスタマイズされた言語を使用して実行される。ＩＲシステムに新しいモジュールを追加することは、ＩＲシステム内に既存するその他のモジュールのすべてが、新しいモジュールをサポートするように変更される必要があることを意味する。さらに、新しいモジュールは、それ自体の特定の方法やフォーマット、シンタックス（構文）で既存のモジュールの各々と通信できる必要がある。新しいモジュールおよびＩＲシステム内のその他のモジュール各々を変更すると、費用がかかり、かつ時間もかかる。従って、典型的なＩＲシステムは、一般に、新たな拡張をするには全く順応性がない。
新しいモジュールを統合するときに直面する別の問題は、ＩＲシステムのリソースの使用プロフィルが、増大し、リソースによって情報を処理するのにかかる時間を好ましくなく増やすことである。使用するプロフィルは、ＩＲシステム内の所定のリソース使用が時間中に使用される方法として定義される。所定のリソースと関連する使用プロフィルは、通常の低い使用期間および高需要の使用期間のピーク時間期間を有する。ＩＲシステムが、複数のフロントエンドモジュールで拡張されると、所定の使用リソースに対する需要が増加する機会が増大する。換言すれば、所定のリソースのピーク時間使用期間は、より少数のフロントエンドモジュールを有するＩＲシステムと比較するときより大きい。これにより、所定のリソースによって情報を処理するのにかかる時間を好ましくなく増加する。
さらに、複数のフロントエンドモジュールを有するＩＲシステムは、所定のリソースの使用に対して同時リクエストを発生し得る。例えば、データフロントエンドが検索エンジンの別の探索リクエストを発生すると同時に、音声フロントエンドは、検索エンジンの探索リクエストを発生することが可能である。所定のリソースを使用に対する同時リクエストを受けると、所定のリソースに対してひんぱんに不規則な使用プロフィルを提供する。これにより、探索リクエスト内の情報を処理するのに、好ましくない、かつ予測できない応答時間がかかることになる。
ＩＲシステムが、複数のフロントエンドモジュールおよび引渡しモジュールを有することによって拡張され得るが、拡張により、ＩＲシステムのユーザーに好ましくない、かつ予測できない応答時間をかけることになる可能性がある。ユーザーが、ＩＲシステムへの魅力を薄め、かつこのシステムの使用を中止することになるので、応答時間をかけることは、好ましくない。さらに、ユーザーが、ＩＲシステム内にどこか具合が悪い所があると了解してしまうかもしれないので、予測のできない応答時間がかかったことは好ましくない。
要約すれば、（１）ＩＲシステムのユーザーに対して好ましいレベルの応答時間を維持し、（２）ＩＲシステムのモジュール同士間のコモンインターフェースに対してアブストラクト化レベルを提供し、（３）ＩＲシステム内で今後の増大に拡張可能な、かつ適応可能な、（４）ＩＲシステムを使用するとき、応答時間を向上するために、ＩＲシステムのリソースの使用をインテリジェントに管理し、および（５）ＩＲシステム内のリソースの使用度または使用プロフィルに基づき情報を適応可能にルーティングする適応ルーティングアーキテクチャを介してＩＲシステム内の複数の入力、処理および引渡しメカニズムを統合する一般的解決法が必要である。
本発明の概要
本発明は、一般に、情報検索システム内の起点モジュールと転送先モジュールとの間でパケットベースの情報をルートする方法を提供する。起点モジュールは、情報を転送先モジュールと称される別のソフトウェアモジュールに適応可能にルートするために、情報検索システム内のルーティングアーキテクチャを使用するソフトウェアである。適応可能なルーティングの処理は、転送先モジュールが使用される方法に基づいて行われる。この方法は、単一のプロセッサコンピュータシステムまたは複数のプロセッサを有する分散型コンピュータシステムによって実行され得る。
一般に言われているように、方法は、探索リクエストなどの情報を受け取るステップで始まる。次に、情報は、４つの部分を設けて一つのパケットにフォーマットされる。パケットの第一部分は、転送先モジュールに対応する転送先指定を含む。パケットの第二部分は、起点モジュールに対応する起点指定を含む。パケットの第三部分は、データを含む。データは、受け取られた情報から引き出され、複数の要素を有する場合がある。最後に、パケットの第四の部分は、アクション指定を含む。アクション指定は、データに転送先モジュールによって実行される所望のアクションに対応する。このように、パケットの各々は、起点モジュールによって情報からフォーマットされる。
この方法をさらに参照すると、パケットは、ルーティングアーキテクチャに送信される。ルーティングアーキテクチャの制御下で、パケットは、転送先モジュールが使用される方法により転送先モジュールに適応可能にルートされる。このように、ルーティングアーキテクチャは、パケットが転送先モジュールによって迅速に処理され得るように、パケットをルートすることが可能である。
本発明の一つの態様において、パケット内のデータは、探索リクエストの要素を含む。この状態において、ルーティングアーキテクチャは、パケットのデータ内の要素を順序付けして、さらに、転送先モジュールにパケットをルートすることによって、パケットを適応可能にルートする。要素を順序付けることにより、より効率よく、かつ短い時間でパケットを処理することが可能である。
一般に、要素は、パケットのデータ内の各々の要素に対応するデータベースレコードの数を決定して、順序付けされる。要素は、次に、各々の要素に対応するレコードの各々の数に基づいて順序付けされる。本発明の態様において、要素は、要素の各々に対応するレコードの各々の数の最小数に基づいて順序付けされる。従って、ルーティングアーキテクチャは、パケット内の要素を順序付けして、さらに、適切な転送先モジュールにパケットをルートして、パケットを適応可能にルートする。
本発明の別の態様において、ルーティングアーキテクチャは、別のパケットが、転送先モジュールと関連するキューにあるかどうかを決定して、転送先モジュールにパケットを適応可能にルートする。キューは、転送先モジュールによってまだ処理されていないパケットの一時記憶メカニズムとして使用される順序付けされたメモリ構造である。別のパケットがキューにある場合、ルーティングアーキテクチャが、生成されたモジュールとして追加の転送先モジュールを生成して、パケットを適応可能にルートする。生成されたモジュールは、情報検索システムの単一のプロセッサで実行するマルチスレッドソフトウェア環境のソフトウェアモジュールである。生成されたモジュールは、さらに、情報検索システム内の複数のプロセッサの一つに専用のソフトウェアモジュールとなる。
本発明の別の態様において、ルーティングアーキテクチャは、転送先モジュールに割り込みを送って、転送先モジュールにパケットを適応可能にルートしてもよい。パケットが、しきい値時間内に転送先モジュールによって処理されない場合、割り込みが一般に送られる。割り込みにより、転送先モジュールに適宜にパケットを処理させる。一般に、割り込みにより、転送先モジュールのキューの指定位置内にパケットを配置して、転送先モジュールにパケットを処理させる。指定位置は、転送先モジュールによって処理される次のパケットを保持する。
より詳細に説明すると、本発明の態様は、情報検索システム内にルーティングアーキテクチャを使用して起点モジュールと転送先モジュールとの間に情報をルートするより詳細な方法を提供する。この態様により、情報は、起点モジュールによって受け取られる。探索リクエストなどの情報は、一つ以上の要素を有する。情報からの要素は、データパケットを生成するために使用される。一般に、要素は、初期順序でデータパケット内に配列される。
次に、情報は、様々な部分を設けてルータパケットにフォーマットされる。一般に、パケットの部分は、ルータライブラリに定義される。ルータパケットの第一部分は、転送先モジュールに対応する転送先指定を含む。ルータパケットの第二部分は、情報を受け取る起点モジュールに対応する起点指定を含む。ルータパケットの第三部分は、情報から生成されるデータパケットを含む。ルータパケットの第四部分は、アクション指定を含む。アクション指定は、受け取られた情報からのデータパケットの要素を使用して転送先モジュールによって実行される所望のアクションに対応する。さらに、ルータパケットの第五部分は、ルータパケットのサイズに対応するサイズ指定と、ルータパケットの関連をルータパケットのグループに参照するパケットシーケンス番号とを含む。このように、ルータパケットは、フォーマットされる。
ルータパケットが、フォーマットされた後、ルータパケットは、起点モジュールによってルーティングアーキテクチャに送信される。ルーティングアーキテクチャに送信されると、ルータパケット内の転送先指定が、解釈され、または読み取られ、ルータパケットをルートする場所を決定する。ルーティングアーキテクチャの制御下で、パケットは、転送先モジュールが使用される方法に依存して転送先モジュールに適応可能にルートされる。このように、ルーティングアーキテクチャは、ルータパケットを迅速かつ効率的にルートして、パケットが、転送先モジュールによって迅速に処理されることが可能である。
本発明の一つの態様において、ルータパケットは、データパケットの要素の初期順序を最適化順序に配列し、かつルータパケットを転送先モジュールにルートすることによって適応可能にルートされる。一般に、初期順序を最適化順序に配列するステップは、データパケットの要素の各々に対応するデータベースのレコードの数を決定することによって行われる。レコードの数が、各要素毎に決定されると、要素の初期順序が、要素の各々に対応するレコードの各々の数に基づいて最適化順序に配置される。本発明の態様において、その他の要素に対応するレコードの数と比べるとき、最適化順序で第一要素が、対応するレコード各々の数の最小の数を有する。このように、ルーティングアーキテクチャは、要素を最適化順序に配列し、次にルータパケットを適切な転送先モジュールにルートすることによってルータパケットを適応可能にルートする。
本発明の別の態様において、ルーティングアーキテクチャは、別のルータパケットが転送先モジュールと関連するキューにあるかどうかを決定することによってルータパケットを転送先モジュールに適応可能にルートする。キューは、転送先モジュールによってまだ処理されていないルータパケットの一時記憶メカニズムとして使用される順序付けされたメモリ構造である。別のルータパケットがキューにある場合、ルーティングアーキテクチャが、ルータパケットを新しいモジュールにルートする前にメモリに新しいモジュールを生成することによってパケットを適応可能にルートする。
新しいモジュールは、転送先モジュールのコピーである。前述の転送先モジュールのコピーを生成後、ルーティングアーキテクチャが、ルータパケットをルートし、かつ適宜に処理する要件を満たすために、情報検索システム内の使用可能なリソースを好都合に適合する。新しいモジュールは、情報検索システムの単一のプロセッサで実行するマルチスレッドソフトウェア環境のソフトウェアモジュールである。新しいモジュールは、さらに、情報検索システム内の複数のプロセッサの一つに専用のソフトウェアである。
さらに、本発明の別の態様において、ルーティングアーキテクチャは、転送先モジュールのキュー内の位置にルータパケットを配置することによってルータパケットを転送先モジュールに適応可能にルートする。ルータパケットがしきい値時間内に転送先モジュールによって処理されていない場合、割り込みが、転送先モジュールに送られる。割り込みにより、転送先モジュールに適宜にパケットを処理させる。一般に、割り込みにより、転送先モジュールにその現在の処理活動を取り消させ、ルータパケットを処理するために、転送先モジュールを自由にさせる。
次に、転送先モジュールが、キュー内のルータパケットの位置を変更してルータパケットを処理させる。ルータパケットの位置は、転送先モジュールによって処理される次のパケットとなるルータパケットを指定する別の位置に変更される。
本発明の例示的な態様が、情報を適応可能にルートする方法に向けられているが、本発明が、ここに、記述されている態様に制約されないことは理解されるであろう。
要約すれば、本発明の目的は、情報検索システムの適応ルーティングアーキテクチャを使用する情報検索システムの起点モジュールと転送先モジュールとの間で情報をルートするシステムおよび方法を提供することである。
さらに、本発明の目的は、適応ルーティングアーキテクチャを介して情報検索システム内の複数の入力や処理、引渡しメカニズムを統合する一般的解決法を提供することである。
さらに、本発明の目的は、情報検索システムのユーザーのため所望のレベルの応答時間を維持する情報検索システムの起点モジュールと転送先モジュールとの間で情報をルートする方法を提供することである。
また、本発明の目的は、情報検索システムのモジュール間のコモンインターフェースとして作用するアブストラクト化レベルを有するルーティングアーキテクチャを提供することである。
さらに、本発明の目的は、情報検索システム内の将来成長のために拡張可能な、かつ適応可能な情報検索システムのルーティングアーキテクチャを提供することである。
本発明のさらに別の目的は、探索問合せに対する応答時間を向上するために、システムのリソースの使用をインテリジェントに管理する情報検索システムのルーティングアーキテクチャを提供することである。
本発明のさらに別の目的は、情報検索システム内のリソースの使用可能度または使用プロフィルに適合する情報検索システムのルーティングアーキテクチャを提供することである。
また、本発明の目的は、データ探索の速度を向上するように、ルーティングアーキテクチャによってルートされた探索リクエスト要素の順序を最適化順序に配列し直すことである。
本発明およびその目的、または有利な点、上述のこれらまたはその他のことは、下記の詳細な説明、図面および添付の請求の範囲を検討すると明らかになるであろう。
【図面の簡単な説明】
図１は、本発明の態様の例示的なオペレーティング環境を提供するコンピュータシステムのブロック図である。
図２は、本発明の例示的な態様のソフトウェア構成要素およびそれらの操作相互関係を示している図である。
図３は、情報検索システム内の適応ルーティングアーキテクチャを使用する起点モジュールと転送先モジュールとの間に情報をルートする好ましい方法のステップを示しているフローチャートである。
第４Ａ図および第４Ｂ図からなる図４は、情報検索システム内の適応ルーティングアーキテクチャを使用する起点モジュールと転送先モジュールとの間で情報をルートする好ましい方法のステップを示している詳細なフローチャートである。
図５は、適応ルーティングアーキテクチャによってルートされた後、ルータパケットのデータフィールドにおける要素の順序を調整する好ましい方法のステップを示しているフローチャートである。
詳細な説明
定義
本発明の態様の詳細な説明を通して、当業者が熟知している言葉が、使用されている。さらに、下記の定義は、ここに述べられている本発明の態様を参照にして使用されている：
・“適応ルーティング”−情報検索システムの転送先モジュールのステータスに基づきルータパケットをルートする。
・“データパケット”−ルータパケットの一部分。データパケットは、起点モジュールによって受け取られる情報から引き出される。
・“転送先モジュール”−ルータパケット内に含まれる情報を受け取るために指定されるソフトウェアモジュール
・“起点モジュール”−ルータパケットを生成し、ルーティングアーキテクチャにそれを送信する能力を有するソフトウェアモジュール
・“キュー”−未処理のルータパケットの一時記憶として動作するメモリのデータ構造
・“ルータパケット”デバイスまたはソフトウェアモジュールからその他のデバイスまたはモジュールに情報を伝達するときに使用される特別にフォーマットされたデータ構造
・“ルート”−情報検索システムにおいて、ルータパケットなどの情報を引渡すこと
・“ルーティングアーキテクチャ”−起点モジュールと転送先モジュールとの間にルータパケットをルートする能力を有するソフトウェアモジュール
・“検索エンジン”−特定の情報のデータベースを探索可能なソフトウェアモジュール
・“ステータス”−特定の転送先モジュールが現在使用されている状態に関する情報（例えば、ルータパケットを処理する、処理されるのを待っている別のルータパケットを有するなど）
序文
本発明は、情報検索システム（“ＩＲシステム”）内のルーティングアーキテクチャを使用して起点モジュールから転送先モジュールへ情報をルートするためのシステムおよび方法に関する。一般に、ルーティングアーキテクチャは、好都合には、一様で、効率のよく、および適宜であるように、ＩＲシステム内の起点モジュールと転送先モジュールとを適応可能にリンクする。
本発明の態様において、情報は、起点モジュールによって受け取られる。この情報は、検索エンジンモジュールに向けられる探索リクエストである。起点モジュールが、受け取られた情報に関係するデータを有するルータパケットを生成する。ルータパケットは、転送先指定や起点指定、データパケット、サイズ指定、アクション指定などを含むように、コモンルータライブラリにより特別にフォーマットされる。転送先指定および起点指定は、転送先モジュールおよび起点モジュールに各々に対応する。データパケットは、データ（例えば、情報の要素）から引き出される。サイズ指定は、ルータパケットのメモリサイズに対応する。アクション指定は、データパケットの転送先モジュールによって行われるアクションに対応する。このように、ルータパケットは、ＩＲシステム内の情報をルートするときに使用されるＩＲシステム内のモジュール（起点モジュール）によって生成される通信メカニズムである。
ルータパケットがフォーマットされると、ルータパケットは、次に、ＩＲシステム内のルーティングアーキテクチャに送信される。ルーティングアーキテクチャは、ＩＲシステム内のルータパケットを、ルートする場所を先ず決定することによってルータパケットを取扱う。さらに、ルーティングアーキテクチャは、ＩＲシステムのリソースをインテリジェントに使用して、ルータパケットを適応可能にルートし、ルータパケットの最適応答時間をもたらすことが可能となる。
ＩＲシステムのリソースをインテリジェントに使用する一つの方法は、転送先モジュールと関連するキューにルータパケットを配置することである。キューは、ルーティングアーキテクチャ内に保持され、転送先モジュールによって処理されるために待っている未処理のパケット用保留場所として動作する。別のルータパケットが、キューで待っている場合、ルーティングアーキテクチャが、転送先モジュールの新しいコピーを生成し、最新のルーティングパケットの要求を適応可能に満たす。あるいは、ルーティングアーキテクチャは、転送先モジュールのキュー内の位置にルータパケットを配置する。ルータパケットがしきい値時間内に転送先モジュールによって処理されない場合、ルーティングアーキテクチャは、転送先モジュールに割り込む。ルーティングアーキテクチャは、キュー内の指定位置にルータパケットを配置する。指定位置は、次に処理されるパケットを格納する。これにより、ルータパケットを処理する応答時間を減少する。
ＩＲシステムのリソースをインテリジェントに使用する別の方法は、探索リクエスト情報の順序付け要素を含む。受け取られた情報が、ＩＲシステム内の検索エンジンに向けられる探索リクエストである場合、データは、探索リクエストの要素を含む。要素は、初期順序に配列される。要素の順序は、最適化順序に順序付けられるか、または配列されるかである。要素が、ＩＲシステムのデータベースを探索する前に、最適化順序に配列されて、検索エンジンモジュールが、データベースをより効率的に探索可能である。要約すれば、ＩＲシステム内の情報のパケットを動的にかつ適応可能にルートするためのルーティングアーキテクチャの生成および使用は、本発明の一般的な焦点である。
コンピュータ関連態様についての一般情報
好ましい態様には、例示的なコンピュータシステム内に使用される例示的なＩＲシステムの特定のソフトウェアモジュールに関して一般に記述されているが、当業者には、本発明が、コンピュータの異なるタイプの異なるプログラムモジュールとともに実行されることが可能であることは明らかである。さらに、当業者には、本発明が、独立型または分散型コンピュータを使用する環境で実行されることが可能であることは明らかである。分散型コンピュータを使用する環境において、プログラムモジュールは、異なるローカルおよびリモートメモリ記憶装置に物理的に配置されてもよい。ソフトウェアモジュールの実行は、一つ以上のプロセッサに対して独立型または専用型風にローカル（特定地域）で、またはクライアント／サーバ風にリモート（遠隔地域）で行われる。前述の分散型コンピュータを使用する環境の例としては、ローカルエリアネットワークや企業内コンピュータ、グローバルインターネットなどが挙げられる。その他の方法およびシステムの実行が、当業者には思いつくであろう。
下記の詳細な説明は、従来のコンピュータによる処理および操作の記号表示によって十分に表わされている。独立型環境および分散型コンピュータを使用する環境において、コンピュータで行われる処理および操作は、プロセッサによる信号の操作と、データベースなどのデータセット内のこれらの信号の保守と、インデックスまたはパケットなどのデータ構造とを含む。これらのデータセットおよびデータ構造の各々は、一つ以上のメモリ記憶装置にある。根本的に、データセットは、ユニットとして操作される独立した要素の関連情報のコレクションである。データ構造は、データの解釈とデータ操作とをサポートするために、データを簡約する構造化された組織的スキーマである。データ構造は、メモリ記憶装置に格納されたデータのコレクションに物理的組織を置き、かつ比電気または磁気要素を示している。本発明に関して、データ構造は、独立した要素やデータセットのオブジェクト、別のデータ構造などから生成されることが可能である。例えば、ルータパケットは、データパケットと称される情報の別のパケットを含む。
この論考のために、方法または処理は、所望の結果となるコンピュータを使用して実行されるステップのシーケンスであると一般に考えられる。これらのステップは、一般に、物理的な数量の物理的操作を必要とする。
さらに、ここに記述される方法およびシステムは、特定のコンピュータ（独立型または分散型）または装置に関連または制約されないことは理解されるであろう。さらに、方法およびシステムは、特別の通信アーキテクチャに関連または制約されない。従って、当業者は、ここに記述される説明による汎用機械または特にカスタマイズされたプロミング可能デバイスを使用して本発明のシステムおよび方法を実行可能である。
数枚の図を通して同一符号が、同一要素を示している図面を参照として、本発明および好ましいオペレーティング環境の態様が記述されている。
本発明の態様のオペレーティング環境
図１と下記の論考は、本発明が実行かつ動作される例示的なコンピュータを使用する環境の簡単な一般的な説明を提供するものである。本発明の態様は、コンピュータに関連してオペレーティングシステムを実行するソフトウェアプログラムモジュールに関して一般的に記述されている。一般に、プログラムモジュールは、特定のタスクを実行し、または特定のアブストラクトデータタイプを実行するルーチンやプログラム、構成要素、データ構造などを含む。さらに、当業者は、本発明が、ハンドヘルドデバイスやマルチプロセッサシステム、マイクロプロセッサ利用またはプログラマブル使用者エレクトロニクス、ミニコンピュータ、メインフレームコンピュータなどを含むその他のコンピュータシステム構成で実行されることが可能であることを認めるであろう。当業者は、図１および関連論考が、例示的なコンピュータハードウェアおよびプログラムモジュールの簡単な一般的な説明を提供することと、別の情報が、適切なプログラミングマニュアルやユーザーガイド、類似の出版物などで容易に入手可能であることとを認めるであろう。
図１を参照すると、本発明を実行する例示的なコンピュータシステムは、プロセッサ２１と、システムメモリ２２と、システムメモリ２２をプロセッサ２１に接続するシステムバス２３とを含む従来のコンピュータ２０を含む。図１には示されていないが、本発明を実行する例示的なコンピュータシステムは、追加のプロセッサを含み、それらの各々は、システムメモリ２２に接続されている。その他の構成において、追加のプロセッサは、コンピュータ２０内で同時に実行する特定のソフトウェア処理に専用とされることが可能である補助プロセッサであると考えられる。
システムメモリ２２は、ランダムアクセスメモリ（ＲＡＭ）２５を含む。コンピュータ２０は、さらに、ハードディスクドライブ２７と、光ディスクドライブ３０（例えば、ＣＤ−ＲＯＭディスク３１から読み出しまたは他の光メディアから読み出し、または他の光メディアに書き込むディスクドライブ）とを含む。ハードディスクドライブ２７および光ディスクドライブ３０は、システムバス２３に接続される。ドライブおよびそれらに関連するコンピュータ読み取り可能メディアは、コンピュータ２０用不揮発性記憶装置を提供する。上記のコンピュータ可読メディアの説明は、ＣＤなどのハードディスクドライブ２７および光ディスク３１を含んでいるが、リムーバブル磁気ディスク、磁気カセット、フラッシュメモリカード、デジタルビデオディスクおよびテープ、ベルヌーイカ−トリッジなどのコンピュータによって読み取り可能であるメディアの他のタイプは、図１について記述されている例示的なオペーレーティング環境の各々において使用されることが可能であることは当業者によって認められるであろう。
多数のプログラムモジュールが、オペレーティングシステム３２と、様々な他のソフトウェアプログラムモジュールとを含み、ドライブ２７、３０およびＲＡＭ２５に格納される。本発明の態様において、前述のソフトウェアモジュールの例は、対話型情報検索システムモジュール２６（ＩＲシステムモジュール）と集合的に称されるソフトウェアモジュールのグループである。ＩＲシステムモジュール２６は、下記のソフトウェアモジュールを含むことが好ましい。
・一つ以上のフロントエンドモジュール３３
・一つ以上の引渡しモジュール３４
・ＩＲシステムモジュール２６のその他の物の情報をインテリジェントに、かつ適応可能にルートするソフトウェアのミドルウェアレイヤ３８
・検索エンジンモジュール３９（データベース４０と対話する）
ＩＲシステムモジュール２６のすべてが使用されるとき、プロセッサ２１は、モジュールのサイズのため一度モジュールの一部をメモリに持っていく場合がある。例えば、オペレーティングシステム３２およびデータベース４０は、ＲＡＭ２５内にあるように示されている。しかし、例示的な態様において、これらのソフトウェアモジュールの一部のみが、禁止するサイズのためＲＡＭ２５内に維持されている。ＩＲシステムモジュール２６を含むソフトウェアモジュールが、図２を参照にして以下に詳細に論じられている。
オペレーティングシステム３２は、コンピュータハードウェアおよびソフトウェアリソースと、ユーザーと、ＩＲシステムモジュール２６との間に基本インターフェースを提供する。図１を参照にして記述される例示的なオペレーティング環境において、オペレーティングシステム３２は、Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ，  Ｉｎｃ．の事業部のＳｕｎＳｏｆｔによって製造されるＳＯＬＡＲＩＳオペレーティングシステムなどのリアルタイムオペレーティングシステムであることが好ましい。複数のユーザーと探索し、対話するとき、適切な応答を提供するために、リアルタイムオペレーティングシステムが望ましい。ＳＯＬＡＲＩＳオペレーティングシステムは、対称的マルチ処理をサポート可能な多重、リアルタイムＵＮＩＸカーネルを有する。当業者は、トランザクション実行の適切なレベルをサポートするために、情報検索アプリケーションのリアルタイム、マルチスレッドが必要であることを認めるであろう。さらに、当業者は、マルチ処理オペレーティングシステムを熟知しているであろう。ＳＯＬＡＲＩＳオペレーティングシステムに関する追加の情報は、Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓによって出版されるシステムマニュアルを参照して、またＵＮＩＸオペレーティングシステムについての文献をその他広範囲に入手可能である。
従来のコンピュータシステムについてほとんど、ユーザーは、キーボード（図示せず）と、マウス（図示せず）などの入力またはポインティングデバイスとを介して、コマンドおよび情報をコンピュータ２０に入力する。これらのものおよび他の入力デバイスは、システムバス２３に接続されるゲームポートまたはユニバーサルシリアルバス（ＵＳＢ）などのシリアルポートインターフェース（図示せず）を介してプロセッサ２１に接続されることが多い。モニター（図示せず）またはディスプレイデバイスの他のタイプは、システムバス２３に接続される。モニターの他に、コンピュータ２０などのコンピュータは、一般に、スピーカーやプリンタ、バックアップデバイスなどの他の周辺出力デバイスを含む。
例示的な態様において、コンピュータ２０が、サーバとして機能するとき、ユーザーは一般にコンピュータ２０と対話する。この場合には、コンピュータ２０は、リモートプログラマブルデバイス（リモートコンピュータ４１など）、または電気通信デバイス（従来の電話４２など）をサービスすることが可能であり、それらの各々は、コンピュータ２０に必然的に接続される。
リモートコンピュータ４１は、サーバやルータ、ピアデバイス、その他のコモン（共通）ネットワークノードなどである。一般にリモートコンピュータ４１は、独立型コンピュータ２０に対して記述される多くのまたはすべての要素を含む。図１に示されるリモートコンピュータ４１とコンピュータ２０との間の論理接続は、広域エリアネットワーク（ＷＡＮ）４３などのデータ通信ネットワークである。データ通信ネットワークのその他の例は、企業内コンピュータネットワークやイントラネット、グローバルインタネットなどを含む。コンピュータ２０のネットワーク通信インターフェース４４などの通信インターフェースは、ＷＡＮ４３とコンピュータ２０とをリンクする。しかし、コンピュータ２０への論理接続は、さらに、オフィスで普通であるローカルエリアネットワーク（ＬＡＮ）（図示せず）である。一般に、リモートコンピュータのユーザーは、情報のデータベースを探索し、かつコンピュータ２０によって提出されるスクリプトされた質問に応答するために、前述の論理接続を介してコンピュータ２０と対話する。
従来の公衆交換電話ネットワーク４６（ＰＳＴＮ）に接続される電話技術通信インターフェース４５（電話ラインカードとして周知）は、コンピュータ２０と従来の電話４２との間の論理接続を提供する。このように、ユーザーは、従来の電話４２またはその他の電話デバイスを介して音声応答でコンピュータ２０と対話することが可能である。好ましい態様において、電話技術通信インターフェース４５は、Ａｎｔａｒｅｓ  ２０００（アンタレス  ２０００）デジタル信号処理（ＤＳＰ）を有するモデル  Ｄ／１６０ＳＣ−ＬＳ電話ラインインターフェースカードであり、これらの両方は、ニュージャージー、Ｄｉａｌｏｇｉｃ  Ｃｏｒｐｏｒａｔｉｏｎ  ｏｆ  Ｐａｒｓｉｐｐａｎｙによって製造される。コンピュータ２０が、これらの二つのインターフェースを介してデータ質問を処理するサービスを提供するので、ネットワーク通信インターフェース４４および電話技術通信インターフェースは、“通信インターフェース”と一般に称される。示されているネットワークおよび電話技術接続は、例示であり、コンピュータ２０とリモートコンピュータ４１、または従来の電話４２との間の通信リンク実施するにはその他の手段が用いられる場合があることが認められるであろう。
最初に論じられたように、本発明の好ましい態様は、単一のプロセッサコンピュータシステム２０のＳｕｎＳｏｆｔのＳＯＬＡＲＩＳオペレーティングシステムと関連して動作するように設計されているＩＲシステムモジュール２６で実施されている。しかし、当業者には、本発明が、スレッドが種類が異なるプロセッサに専用であるマルチプロセッサシステムなどのその他のコンピュータアーキテクチャを用いて実施されることが可能であることは直ちに認識されるであろう。
この簡単な説明から、“ＳＯＬＡＲＩＳ”オペレーティングシステムなどのオペレーティングシステムおよびネットワーキングアーキテクチャが、全く複雑であり、コンピュータまたは分散型コンピュータを使用する環境のその他のコンピュータで入手可能なリソースをユーザーとプログラムとに利用させる広範囲のいろいろなサービスを提供することが認められるであろう。当業者は、オペレーティングシステムやネットワーキングアーキテクチャ、それらの様々な特徴などには熟知している。同様に、同業者は、ＩＲシステムモジュール２６が、上述の簡単な説明に含まれるこれらに加えて、広範囲な様々な特徴および機能を提供することを認めるであろう。
残りの図面に戻ると、本発明の例示的な態様が示されている。図２は、本発明の例示的な態様におけるミドルウェアルーティングアーキテクチャおよびその他のソフトウェア構成要素との相互関係とを示している線図である。図３は、ミドルウェアルーティングアーキテクチャを使用する起点モジュールと転送先モジュールとの間で情報をルートする好ましいステップを示しているフローチャートである。第４Ａ図および第４Ｂ図は、より詳細な起点モジュールと転送先モジュールとの間で情報をルートする好ましいステップを示しているフローチャートである。図５は、ルータパケットからの要素が、最適化順序に配列される方法に関する好ましいステップを示しているフローチャートである。
例示的なＩＲシステム内のソフトウェアモジュール
ＩＲシステムモジュールの本質は、検索エンジンモジュール３９と称されるソフトウェア構成要素である。検索エンジンモジュール３９は、ここでは検索エンジンと呼ぶ。探索リクエストなどの情報は、データベース４０を探索する検索エンジンモジュール３９にルートされる。探索結果は、検索エンジンモジュール３９からルートされるか、または送り出される。ミドルウェアルーティングアーキテクチャ（ＭＲＡ）３８は、ＩＲシステムモジュール２６内のその他のソフトウェア構成要素の使用を好都合に拡張すると同時に、適応可能に前述のルーティングサービスを提供する。図２は、本発明の好ましい態様のＭＲＡ３８とその他のソフトウェア構成要素に対する操作の相互関係とを示している線図である。
ミドルウェアルーティングアーキテクチャ
図１および図２に戻ると、ＭＲＡ３８は、様々なフロントエンドモジュールと引渡しモジュール３４とをＩＲシステム２６内の検索エンジンモジュール３９に接続する。ＭＲＡ３８は、ルータライブラリ２４０やルータエンジン２３０、レジストレーションテーブル２３５、例示的なモジュールキュー２４５などを含むいろいろなソフトウェアモジュールを含有し、これらの各々は、ＩＲシステム２６内の前述の接続またはルーティングサービスを提供するために使用される。
述べられているように、ＭＲＡ３８は、ソフトウェアスケジュールとしてルータライブラリ２４０を含む。ルータライブラリ２４０は、従来は、動的ライブラリとしてその他のソフトウェアモジュールに接続されるコードのライブラリである。ルータライブラリ２４０は、ルータパケットを定義し、かつルータパケットをルートするために、ＭＲＡ３８に接続されるあらゆるモジュールにより要求される機能を含む。前述の接続されたソフトウェアモジュールの名前およびアドレスは、レジストレーションテーブル２３５内に保持される。換言すれば、ルータライブラリ２４０は、フロントエンドモジュール３３の一つなどの起点モジュール用の一様なプログラミングインターフェースを画定する。起点モジュールは、ルータライブラリ２４０を使用して、ＩＲシステム２６内の検索エンジンモジュール３９などの転送先モジュールにルータパケットを生成して送る。一様なプログラミングインターフェースを定義して、ルータライブラリ２４０が、ＭＲＡ３８に接続されるモジュール間に送られる情報のパケットに対してコモン（共通）で、かつ拡張可能な言語参照を提供する。
ＩＲシステム２６内で使用されるルータパケットは、ルータライブラリ２４０によって定義される予め定められるフォーマットに従う。例示的な態様は、ルータパケットが、６つの種類が異なる、かつ相互接続される部分またはフィールドにフォーマットされたデータ構造である：［転送先指定］、［アクション指定］、［サイズ］、［パケットシーケンス番号］、［データ］、［起点指定］。これらの種類が異なるルータパケットの分野は、下記の表１に定義される：
0004316681.tif 000002
表１を参照すると、好ましいパケットの個々のフィールドが記述されている。サイズのフィールドは、ルータパケットのメモリサイズを示すルータパケットの部分である。
転送先指定のフィールドは、ルータパケットを受け取るＩＲシステムモジュール２６内の転送先モジュールを示している。一般に、転送先指定は、レジストレーションテーブル２３５内にレジスタされる転送先モジュールの名前およびアドレスのことを指している。
アクション指定のフィールドは、ルータパケット内に含まれるデータで行われることを示している。例えば、アクション指定は、ルータパケットがＭＲＡ３８を介してフロントエンドモジュール３３の一つから検索エンジンモジュール３９に送られる探索問合せを実行するとき、データベース４０を探索するリクエストである。
サイズのフィールドは、ルータパケットの全メモリサイズを含むルータパケットの部分である。一般に、サイズのフィールドは、メモリのバイトで表現される。
パケットシーケンス番号は、ルータパケットの関連づけをルータパケットのグループに参照するルータパケットの部分である。特に、パケットシーケンス番号のフィールドは、グループのルータパケットのシーケンスのルータパケットの相対位置を指定する。これは、起点モジュールが、データを、指定転送先モジュールで集合的処理の複数のパケットに分割する必要があるとき、有用である。例えば、ルータパケットは、検索エンジンモジュール３９によって使用される大きな探索問合せを集合的に含んでいる３つの関連ルータパケットのグループの一つである。
データのフィールドは、起点モジュールによって受け取られるデータを含むルータパケットの部分であり、かつ転送先モジュールによって使用される。例示的な態様において、ルータパケットのデータフィールドは、情報の特定要素を有する埋め込みデータパケットと、データパケットの要素の番号とを含む。
起点指定のフィールドは、ルータパケットを生成し、それをＭＲＡ３８に送信する能力を有するＩＲシステムモジュール２６内の起点モジュールを示している。一般に、起点指定は、レジストレーションテーブル２３５内にレジスタされる起点モジュールの名前およびアドレスのことを指している。
要約すれば、好ましいルータパケットは、ルータライブラリ２４０によって定義される。ルータライブラリ２４０を使用すると、レジスタされたＩＲシステムモジュール２６のすべてが、ＭＲＡ３８を使用して、ルータパケットをその他のレジスタされたＩＲシステムモジュール２６のすべてに適応可能に送る。
すでに述べたように、ＭＲＡ３８は、ソフトウェアモジュールとしてルータエンジン２３０を含む。ルータエンジン２３０は、ルータパケットが取扱われ、適切な転送先モジュールにルートされる方法を適応可能にコントロールする。ルータパケットを取扱い、または処理するために、ルータエンジン２３０は、フロントエンドモジュールの一つなどの起点モジュールから送信されるルータパケットの内容を解釈し、または読み取る。ルータエンジン２３０が、ルータパケットを解釈して、指定転送先モジュールを決定すると、ルータエンジン２３０は、ルータパケットをＭＲＡ３８に接続されるレジストレーションテーブル２３５に登録された適切なモジュール（転送先モジュール）に適応可能にルートする。
ルータパケットの適応ルーティングは、種々の方法で実行される。ＭＲＡ３８によるルータパケットの適応ルーティングは、転送先モジュールがルータパケットによって指定される場所および転送先モジュールが、ＩＲシステムに現在使用されている状態に左右される。例えば、転送先モジュールが使用される状態が、転送先モジュールの未決定のルータパケットの数または転送先モジュールが、ルータパケットを現在処理しているかどうかに左右される。換言すれば、ルータパケットを適応可能にルートすることは、転送先モジュールが使用される状態に基づいてルータパケットをルートし、ルータパケットが転送先モジュールによって処理されることが可能である速度を有利に速めていく。
ルータパケットのルーティングに関して、ルータエンジン２３０は、一般に、ルータパケットを転送先モジュールに適応可能にルートするとき、転送先モジュールと関連するキュー２４５をモニタする。キュー２４５は、特定の転送先モジュールにアドレスされる未決定のルータパケットの一時記憶として動作するメモリのデータ構造である。例えば、転送先モジュールとして検索エンジンモジュール３９を指定するルータパケットが、検索エンジンモジュールのキュー２４５内に一時的に格納される。
転送先モジュールと関連するキュー２４５に未決定のルータパケットがない場合、また転送先モジュールが、別のルータパケットをまだ処理していない場合、ルータエンジン２３０が、転送先モジュールに、直接ルータパケットを適応可能にルートする。この状態において、転送先モジュールは、ルータパケットを直ちに処理可能である。
転送先モジュールによって処理されるルータパケットが既にある場合、ルータエンジン２３０は、できるだけ速く処理を待っているキュー２４５に現在のルータパケットを格納して、ルータパケットを、適応可能にルートする。キュー２４５内に未決定の別のルータパケットが既にある場合、ルータエンジン２３０は、別の転送先モジュールを生成してルータパケットを適応可能にルートし、現在のルータパケットを迅速に処理する。現在のルータパケットが、所望の時間内に処理されない場合、ルータエンジン２３０は、さらに、転送先モジュールに割り込みを送って、ルータパケットを適応可能にルートし、転送先モジュールによる処理を取り消す。さらに、ルータパケット２３０は、現在のルータパケットが、転送先モジュールによって次に処理されることを確実にする。
要約すれば、ＭＲＡ３８は、その構成要素を使用して、ＩＲシステム２６内の様々なフロントエンドモジュール３３、引渡しモジュール３４および検索エンジンモジュール３９の間に通信およびルーティングメカニズムを有利に提供する。ＭＲＡ３８のその他の構成要素と関連してルータエンジン２３０は、ルータパケットを適応可能にルートし、ルータパケットの処理時間を速め、かつルータパケットに関連する応答時間を減少するようにする。ルータパケットを適応可能に取扱うことを含む好ましいステップは、図３、第４Ａ図および第４Ｂ図を参照にして下記により詳細に記述されている。
データベースへのインデックス
ルータパケットが、ＭＲＡ３８によって検索エンジンモジュール３９にルートされるとき、ルータパケットは、一般に、検索エンジンモジュール３９の探索リクエストを定義する情報を表わす。例示的な態様において、探索リクエストを定義する情報は、一般に、インデックス３７からデータベース４０に選択される要素によって表わされる。換言すれば、インデックス３７からの要素は、探索リクエストを定義するために選択される。
インデックス３７は、データベース４０内の情報を見出すために使用されるデータベース４０と関連する構造化ガイドまたはツールである。例示的な態様において、インデックス３７はまた、データベース４０内の情報のレコードに関するキーワードおよびカテゴリーとして知られている要素を含む。一般に、これらのキーワードまたはカテゴリーは、数値識別子によって参照される。したがって、ユーザーは、インデックス３７内の特定のキーワードおよびカテゴリーの識別子を使用する探索リクエストを生成可能である。
データベース４０が、レストラン広告情報を含む例示において、インデックス３７は、下記の表２にリストされるカテゴリーおよび識別子を含む。
0004316681.tif 000003
表２を参照すると、“レストラン”、“中華”および“テイクアウト”は、データベース４０内の情報が組織されるカテゴリーの各々の記述である。これらのカテゴリーの各々は、インデックス３７内のカテゴリーの事前定義・既定タイプの一つである。前述のように、各々のカテゴリーは、別個の数値識別子によって参照しやすくして載せられている。例えば、レストランカテゴリーは、２７６０の数値識別子を有するＬＯＢ（Ｌｉｎｅ  ｏｆ  Ｂｕｓｉｎｅｓｓ（ビジネスライン））タイプのカテゴリーである。中華カテゴリーは、１０８０の数値識別子を有するＱＬＯＢ（Ｑｕａｌｉｆｉｅｄ  Ｌｉｎｅ  ｏｆ  Ｂｕｓｉｎｅｓｓ（ビジネスの修飾ライン））タイプのカテゴリーである。テイクアウトカテゴリーは、１００の数値識別子を有するアメニティータイプのカテゴリーである。
ユーザーが、テイクアウト食品を用意できる中華レストランのデータベース４０を探索するＩＲシステムモジュール２６を使用することを望む場合、例示的な探索リクエストは、上記の３つのリクエストされたカテゴリーおよびそれらの各々の識別子を含む。例示的な探索リクエストの要素は、次のとおりである：ＬＯＢ  ２７６０、ＱＬＯＢ  １０８０、Ａｍｅｎｉｔｙ  １００。
探索リクエストの要素（すなわち、探索リクエストを定義する情報）が、決定されると、ルータパケットが、探索リクエストの要素に基づいて生成される。対話型音声応答（ＩＶＲ）モジュール２０５が、ユーザーと対話するフロントエンドモジュール３３である場合、前述の状態の結果として生ずるルータパケットの分フィールドは、下記のとおりである：［検索エンジンモジュール］、［探索リクエスト］、［１１５バイト］、［３、ＬＯＢ  ２７６０、ＱＬＯＢ  １０８０、アメニティー  １００］および［ＩＶＲモジュール］。
ＩＲシステム内のソフトウェアモジュール間の対話
ＩＲシステムモジュール２６内のルータパケットおよび個々のソフトウェアモジュールの機能性について上記序文とすれば、下記には、ＩＲシステムモジュール２６が本発明の態様において互いに対話する方法が説明されている。図１および図２に戻ると、ＭＲＡ３８は、一般に、起点モジュールによって生成されるルータパケットを利用にするＩＲシステム２６内の情報をルートするために使用される。ルータパケットは、ＭＲＡ３８によって解釈され、その後転送先モジュールにルートされ、ルータパケットが、適宜にかつ効率的に処理される。下記は、本発明の態様によるＩＲシステム２６内のソフトウェアモジュールが、ＭＲＡ３８と対話する方法の二つの例示である。
ＩＲシステムによる探索リクエストの処理
第一の例示は、ＩＲシステム２６が探索リクエストを定義する情報を処理するときのＭＲＡ３８の使用法を示している。ユーザーは、従来の電話４２またはリモートコンピュータ４１を介してコンピュータ２０と通信することによって探索リクエストを開始する。特に、ユーザーは、上述の通信経路の一つを介してＩＲシステム２６のフロントエンドモジュール３３の一つに探索リクエストを定義する情報を伝達する。通信経路がＰＳＴＮ４６を通る場合、情報を受け取るモジュールは、ＩＶＲモジュール２０５である。しかし、通信経路がＷＡＮ４３を通る場合、情報を受け取るモジュールは、フロントエンドモジュール２１５である。いずれの状態においても、情報を受け取る特定のフロントエンドモジュール３３は、この例示では起点モジュールであると考えられる。
フロントエンドモジュール３３が、探索リクエストを定義する情報を受け取ると、フロントエンドモジュール３３は、情報をルータパケットにフォーマットする。ルータパケットのフォーマットは、ルータライブラリ２４０をフロントエンドモジュール３３（すなわち、起点モジュール）にリンクすることによって決定される。フロントエンドモジュール３３は、ルータパケットの一部分がルータエンジン２３０によって読み取られ、かつ解釈されるＭＲＡ３８に、ルータパケットを送信する。解釈されると、ルータエンジン２３０は、ルータパケットがフロントエンドモジュール３３（指定先起点モジュールの基づく）からの探索問合せであること（アクション指定に基づく）を決定する。ルータエンジン２３０は、さらに、ルータパケットが検索エンジンモジュール３９に送られることを決定する（指定転送先モジュールに基づく）。
ルータパケットが検索エンジンモジュール３９に送られることが決定されると、ルータエンジン２３０は、ルータパケットを適応可能にルートする。キュー２４５が、空であり、かつ検索エンジンモジュール３９が、その他のパケットを現在処理していない場合、ルータパケットは、検索エンジンモジュール３９にルートされる。検索エンジンモジュール３９は、ルータパケット内の要素に基づきデータベース４０の探索を迅速に実行する。しかし、検索エンジンモジュール３９によって処理される別のルータパケットがある場合、ルータエンジン２３０が、キュー２４５に、ルータパケットを格納する。別のルータパケットの処理が完了すると、検索エンジンモジュール３９が、ルータパケットを処理し続ける。特に、検索エンジンモジュール３９は、キュー２４５のルータパケットのデータフィールド内の要素に基づいてデータベース４０の探索を実行する。
検索エンジンモジュールのキュー２４５内に未決定の別のルータパケットが既にある場合、ルータエンジン２３０が、ルータパケットを適応可能にルート可能である。ルータエンジン２３０は、メモリに別の検索エンジンモジュール３９を好都合に生成することによって、またはインスタンス生成することによって、ルータパケットを適応可能にルート可能である。検索エンジンモジュール３９の別のコピーを生成することによって、データベース４０が、ルータパケットの探索リクエストを定義する情報による適宜な方法で迅速に探索されることが可能である。
ルータエンジン２３０が、検索エンジンモジュールのキュー２４５にルータパケットを配置する場合、ルータエンジン２３０は、ルータパケットに関する検索エンジンモジュールのキュー２４５のステータスをモニタする。ルータパケットが、検索エンジンモジュール３９によって予め定められた時間内に処理されない場合、ルータエンジン２３０は、状況に適合する。特に、ルータエンジン２３０は、割り込みを検索エンジンモジュール３９に送ることが好ましい。割り込みは、検索エンジンモジュール３９の処理を停止したり、または取り消して、および検索エンジンモジュールのキュー２４５のルータパケットの順序を変更して、現在のルータパケットが次に処理される。
このように、ＭＲＡ３８は、フロントエンドモジュール３３（起点モジュール）の一つから検索エンジンモジュール３９（転送先モジュール）にリクエストを表示するルータパケットを適応可能にルートすることによって探索リクエストを定義する情報を処理するために使用される。
ＩＲシステムよる探索結果の引渡し
前の例示では、ＭＲＡ３８は、フロントエンドモジュール３３を検索エンジンモジュール３９に探索リクエストを伝達するために使用されている。検索エンジンモジュール３９は、探索リクエストを処理して、探索結果を発生する。ミドルウェアルーティングアーキテクチャが使用される用法の別の例示では、検索エンジンモジュール３９は、探索結果を引渡しモジュール３４の一つに送るためにＭＲＡ３８を使用する。
検索エンジンモジュール３９は起点モジュールであり、１つの引渡しモジュール３４は転送先モジュールであると考えられていることを除いては、探索結果を送る処理は、本質的には、先の例示と同一である。検索エンジンモジュール３９は、ルータパケットに探索結果を定義する情報をフォーマットする。ルータパケットは、解釈されて、テキストから音声へ（ＴＴＳ）のモジュール２２０、またはファックスモジュール２２５などの適切な引渡しモジュール３４と関連するキューに伝達される。前述のように、ルータエンジン２３０は、適切な引渡しモジュール３４の使用法および使用可能度によりパケットを適切な引渡しモジュールのキューに適応可能にルートする。適切な引渡しモジュール３４が、ルータパケットを受け取ると、探索結果が、適切な引渡しモジュール３４に対応するフォーマットのユーザーに伝達される。
要約すれば、ＭＲＡ３８は、柔軟に、適応可能に、およびアブストラクト的にＩＲシステムモジュール２６内のモジュール間連結を提供するソフトウェアモジュールである。
ミドルウェアルーティングアーキテクチャを使用するフローチャート
図３および図４は、情報検索システム内に情報をルートする本発明の態様からの好ましいステップを記述するフローチャートである。図３は、ＭＲＡ３８などの情報検索システムの適応ルーティングアーキテクチャを使用する起点モジュールと転送先モジュールとの間で情報をルートする好ましい方法のステップを示しているフローチャートである。
図１、図２および図３を参照すると、ステップ３０５で始る方法３００は、ＩＶＲモジュール２０５などの起点モジュールが情報を受け取るステップで開始する。前述のように、この情報は探索リクエストの形をとる。ステップ３１０で、起点モジュールは、情報をルータパケットにフォーマットする。起点モジュールが情報をフォーマットするとき、起点モジュールは、ＩＶＲモジュール２０５にリンクされるルートライブラリ２４０のルータパケットフォーマットを参照することが好ましい。
ステップ３１５で、起点モジュールは、情報検索システム内の、ルータパケットをＭＲＡ３８などのルーティングアーキテクチャにルータパケットを伝達する。例示的な態様において、起点モジュールは、ルータライブラリ２４０内に定義される一様なプログラミングインターフェースを使用するＭＲＡ３８にルータパケットを伝達可能である。前述の一様なプログラミングインターフェースの部分として、好ましいルータライブラリ２４０は、ルータパケットをルーティングアーキテクチャに伝達する起点モジュールによって呼び出されるｍｓｇｒｔ＿ｓｅｎｄなどの機能を定義する。
ステップ３２０で、ルータパケットが伝達されると、ＭＲＡ３８は、転送先モジュールとして指定されるソフトウェアモジュールのステータスを決定する。ＭＲＡ３８は、（１）ルータパケットの転送先指定フィールドを読み取り、または解釈することによって、（２）未決定ルータパケットの転送先モジュールのキューの内容をモニタすることによって、および（３）処理活動用転送先指定モジュールをモニタすることによってルータパケットの転送先モジュールのステータスを決定することが好ましい。
ステップ３２５で、ＭＲＡ３８は、ルータパケットを転送先モジュールのキューに配置する。本発明の態様において、転送先モジュールのキューは、一般に、順序付けされたメモリ構造のＦＩＦＯ（先入れ先出し）タイプである。ルータパケットは、通常、キューの下部位置に配置され、転送先モジュールは、通常、キューの上部位置からルータパケットを探索する。このように、複数のルータパケットが、転送先モジュールのキュー内に配置される場合、キューにより早く到達するルータパケットが、上部位置などの指定位置にある。
ステップ３３０において、その他のルータパケットが、転送先モジュールのキュー内に存在する場合、ステップ３３０は、ステップ３３５に進む。ステップ３３５で、ＭＲＡ３８は、転送先モジュールの追加のコピーを生成し、ステップ３４０に進む前に、ルータパケットを手早くルートし、かつ処理する。そうでない場合、ステップ３３０は、ステップ３４０に直接進む。
ＭＲＡ３８は、転送先モジュールの追加のコピーを生成可能であるので、適応可能であると考えられている。例示において、ＩＶＲモジュール２０５からのルータパケットは、ＭＲＡ３８に送られる。ルータパケットは、検索エンジンモジュール３９のために結び付けられ、ＭＲＡ３８は、検索エンジンモジュールのキュー２４５がキュー２４５に既にその他のルータパケットを有していないことを決定する。ＭＲＡ３８は、メモリでの他の検索エンジンモジュール３９の構築によって適合され、よりタイミング良く適宜にルータパケットを取扱う。
図１乃至図３に戻ると、ステップ３４０で、現在のルータパケットが予め定められたしきい値時間内に転送先モジュールによって処理された場合、方法３００は、ステップ３４０後終了する。しかし、ルータパケットが、予め定められたしきい値時間内に、転送先モジュールによって処理されなかった場合、ステップ３４０は、ステップ３４５に進む。
転送先モジュールがルータパケットを“処理する”のにかかる時間は、キューからルータパケットを読み取り、ルータパケットと関連する指定アクションを完了するのにかかる時間であると考えられている。異なるタイプのモジュールが、ルータパケットを通常処理して、ＭＲＡ３８から別のルータパケットを受け取るのに、各々に異なる時間を要するので、予め定められたしきい値時間は、個々の転送先モジュールによって異なる。転送先モジュールが、検索エンジンモジュール３９である例示において、予め定められたしきい値時間は、探索するのに時間が十分長くかかる以上の限界である。例示的な態様において、検索エンジンモジュールに関する予め定められたしきい値時間は、５秒間のタイムアウトである。
ステップ３４５で、ＭＲＡ３８は、転送先モジュールによって現在実行され処理活動を停止するか、または取り消しするために割り込みを転送先モジュールに送る。このように、ＭＲＡ３８は、ルータパケットための転送先モジュールをクリアにする。さらに、ＭＲＡ３８は、ステップ３５０で転送先モジュールのキューの上部位置にルータパケット送って、ルータパケットをルートし、転送先モジュールが、ルータパケットを迅速に処理することを確実にする。
要約すれば、ＭＲＡ３８は、ルータパケットを受け取り、ルータパケットを適切に転送先モジュールに適応可能にルートする。例示的な態様において、ＭＲＡ３８は、（１）別の転送先モジュールを追加し、ルータパケットを新しいモジュールにルートすることによって、（２）転送先モジュールを解釈し、かつルータパケットが次に処理されることを確実にすることによって、および（３）ルータパケット内に要素を特別に順序付けし、順序付けされた要素を転送先モジュールにルートすることによって、ルータパケットを適応可能にルートする。ルータパケットを適応可能にルートするこれらの方法の各々は、従来のルータおよびゲートウェイの機能性を優位に超えるであろう。
ミドルウェアルーティングアーキテクチャを使用する詳細なフローチャート
より詳細に記述される第４Ａ図乃至第４Ｂ図は、情報検索システム内に、ＭＲＡ３８などの適応ルーティングアーキテクチャを使用する起点モジュールおよび転送先モジュール間に情報をルートする好ましい方法のステップを示している詳細なフローチャートである。
図１、図２および図４を参照にすると、方法４００は、フロントエンドモジュール３３の一つなどの起点モジュールが、情報を受け取るステップ４０５で開始する。情報は、ＩＲシステムモジュール２６のユーザーから来る探索リクエストを定義する。あるいは、情報は、検索エンジンモジュール３９から来る探索結果を定義する。
ステップ４１０で、起点モジュールがデータパケットを生成する。データパケットは、ステップ４０５からの受け取られた情報の要素から引き出される。ステップ４１５で、起点モジュールは、メッセージをルータパケットのデータフィールドのデータパケットを使用するルータパケットにフォーマットする。ステップ４２０で、起点モジュールは、ルータパケットをＭＲＡ３８に伝達する。
ルータパケットがＭＲＡ３８に伝達されると、ＭＲＡ３８は、ルータパケットの内容を読み取り、または解釈し、ステップ４２５で転送先モジュールを決定する。転送先モジュールを決定することが、ルータパケットの転送先指定フィールドの内容を読み取ることによって行われることは好ましい。
ステップ４３０で、ＭＲＡ３８は、転送先モジュールとして指定されるソフトウェアモジュールのステータスを決定する。一般に、転送先モジュールのステータスは、転送先モジュールおよびその現在の処理活動を記述する情報を含む。前述のように、ＭＲＡ３８は、転送先モジュールのキューおよびその処理活動をモニタ可能である。ＭＲＡ３８は、未決定のルータパケットの転送先モジュールのキューの内容をチェックすることによって、および処理活動の指定された転送先モジュールをチェックすることによって転送先モジュールのステータス（適応ルーティングのための）を決定することが好ましい。
ステップ４３５で、ＭＲＡ３８は、転送先モジュールのキュー内に、一般に、キューの下部位置に、ルータパケットを配置することによってルータパケットを適応可能にルートする。前述のように、ルータパケットが、通常、キューの下部位置に配置されると同時に、転送先モジュールは、キューの上部からルータパケットを受け取る。このように、複数のルータパケットが、転送先モジュールのキュー内に配置される場合、キューに到着する最も早いルータパケットおよび関連ルータパケット（すなわち、シーケンスされたグループのこれらのルータパケット）は、処理される次のものとして指定される上部位置に置かれる。
ステップ４４０で、その他のルータパケットが、転送先モジュールのキュー内で、キューに入れられない場合、または存在しない場合、ステップ４４０は、第４Ｂ図のステップ４４５に進む。しかし、その他のルータパケットは、転送先モジュールのキュー内でキューに入れられる場合、または存在する場合、ステップ４４０は、ステップ４５０に進む。ステップ４５０で、ＭＲＡ３８は、第４Ｂ図のステップ４４５に進む前に、転送先モジュールのコピーとしてメモリに新しいモジュールを生成することによって、ルータパケットを適応可能にルートする。転送先モジュールのこの追加のコピーが生成されて、ルータパケットのルーティングおよび処理を適応可能に迅速に処理する。
例示的な態様において、転送先モジュールの新しいコピーは、ＩＲシステム（すなわち、コンピュータ２０）内のオペレーティングシステム３２のマルチスレッドソフトウェア環境内で単一の処理スレッドとして動作する。換言すると、新しい転送先モジュールは、コンピュータの単一のプロセッサ２１によって実行される新しい処理である。当業者は、スレッド、またはマルチスレッドソフトウェアオペレーティングおよびプログラミング環境には熟知しているであろう。
当業者は、さらに、単一の処理スレッドが、マルチプロセッサコンピュータシステム内のマルチプロセッサ（補助プロセッサと称される）の一つに専用とされる方法であることをすぐに認めるであろう。多数のプロセッサに個々に専用とされるされるとき、複数の転送先モジュールは、効率的に動作され、ルータパケットのルーティングおよび処理を迅速に処理する。ＩＲシステムモジュール２６の使用プロフィルが増大するとき、補助（adjunct）プロセッサを使用する処理ルータパケットの適切なレベルを維持する能力が重要である。当業者は、補助プロセッサを有するマルチプロセッサコンピュータシステムには熟知しているであろう。
図１、図２、第４Ａ図および第４Ｂ図を参照すると、ステップ４４５において、現在のルータパケットが、予め定められたしきい値時間内に転送先モジュールによって処理された場合、方法４００は、ステップ４４５後終了する。しかし、現在のルータパケットが、予め定められたしきい値時間に内に転送先モジュールによって処理されなかった場合、ステップ４４５は、ステップ４５５に進む。
ステップ４５５において、ＭＲＡ３８は、割り込みを指定された転送先モジュールに送る。割り込みを受け取ると、転送先モジュールが、ステップ４６０の転送先モジュール内に生じるその現在の処理活動を取り消す。これらの記述されたステップから、当業者は、ＭＲＡ３８が本質的に転送先モジュールをクリアして、遅くとも、予め定められたしきい値時間の満了後、ルータパケットを処理することを認めるであろう。転送先モジュール内の処理活動が、取り消されると、ＭＲＡ３８は、ステップ４６５で転送先モジュールのキュー内のルータパケットの位置を変更する。キュー内に、上部位置などの指定位置に現在のルータパケットを配置して、転送先モジュールにより、処理される次のルータパケットとして現在のルータパケットを受け取らせて、処理させる。
要約すれば、ＭＲＡ３８は、ルータパケットを受け取り、転送先モジュールおよびそのキューのモニタされたステータスにより、ルータパケットを適切な転送先モジュールに適応可能にルートする。ルータパケットがルートされると、転送先モジュールにより、効率的に処理されることが可能である。
ミドルウェアルーティングアーキテクチャを使用するときの探索問合せ要素の再配列
転送先モジュールが、検索エンジンモジュール３９である場合、本発明の別の態様は、ルータパケットが検索エンジンモジュールによって処理される方法を拡張することを含む。このような状況において、ルータパケット内のデータは、一般に、複数の要素を有する探索問合せである。探索問合せ要素の順序が最適化順序に再配列されるとき、探索問合せの処理（いわゆる、データベース４０を探索すること）は、拡張される。図５は、ルータパケットのデータフィールドから要素の順序を再配列することによってルータパケットを適応可能にルートする好ましい方法のステップを示しているフローチャートである。
図１乃至図５を参照すると、方法５００は、ルータパケットに指定される転送先モジュールが、例示的な検索エンジンモジュール３９などの検索エンジンモジュールであるステップ５０５で開始する。ステップ５１０で、ルータパケットは、例示的な検索エンジンモジュールのキュー２４５などのキューから読み取られる。
ルータパケットが、一般に、検索エンジンモジュール３９によって読み取られると、ステップ５１５−５２５が、検索エンジンモジュール３９による探索問合せ要素をより効果的に処理するために行われる。換言すれば、ステップ５１５−５２５を行うことにより、検索エンジンモジュール３９が探索問合せをインテリジェントに処理可能となり、迅速に探索をする。
ステップ５１５で、探索問合せ要素の初期順序が、ルータパケット内の順序付けされたデータ構成要素から決定される。一般に、データフィールドは、初期順序でルータパケットのデータ内に保持されるデータ構成要素を含む。データフィールド内の各々のデータ構成要素は、探索問合せの要素である。さらに、データ構成要素の順序は、検索エンジンモジュールによって使用される探索問合せ要素の順序に対応する。
ステップ５２０で、検索エンジンモジュール３８は、データベースのどのレコードが探索問合せの各々の個々の要素に対応するかを決定する。探索問合せ要素が、データベースのインデックス３７のキーワードおよびカテゴリーであるとき、各々の要素に対応するレコードを決定することは、データベース４０の情報レコードと、インデックス３７内のキーワードおよびカテゴリーとの間の関係を参照とすることによって行われることが好ましい。例えば、探索問合せ要素が、ＬＯＢ  ２７６０やＱＬＯＢ  １０８０、Ａｍｅｎｉｔｙ  １００などを含む。ＬＯＢ  ２７６０の要素は、データベース４０内の１５００のレコードに対応する。ＱＬＯＢ  １０８０の要素は、データベース４０内のわずか２００のレコードに対応するにすぎない。さらに、Ａｍｅｎｉｔｙ  １００の要素は、データベースの５０のレコードに対応するだけである。
要素関係に対するレコードが決定されると、検索エンジンモジュールが、ステップ５２５で探索問合せ内の要素の問合せ順序を再配列して、ルータパケットが検索エンジンモジュール３８によって処理される方法を拡張する。これは、探索問合せ要素の順序を最適化順序に再配列することによって行われ、その結果検索エンジンモジュール３９がデータベース４０の探索を行うのにかかる時間を軽減される。
探索問合せ要素の最適化順序は、さらに、探索問合せ要素の“的中（ｂｕｌｌｓｅｙｅ）”ランキング（順位）または順序とも表現する。ここで“的中（ｂｕｌｌｓｅｙｅ）”という言葉は、探索中に使用されるときに、最良の探索結果を生ずる要素に依存して、各々の要素が最適化順序に配列されるという理由により使用されている。最良の結果（すなわち、最適化順序で１番目）を生ずるために使用される要素は、標的の中心に類似している。第一要素を使用する探索は、標的の中心の小さな範囲に類似する若い数字の結果を生ずる。最適化順序で次の最良要素は、標的の中心周りの次のリングに類似する。
図５に示されている態様において、最適化順序は、各々の要素に関連するデータベース情報の量に左右される。前述の態様において、最良の探索結果は、探索が情報の最小量を生ずるときに達成される。あるいは、最適化順序が、さらに、特定の探索問合せ要素に関係する好結果の探索結果情報についての統計的データなどの最良探索結果を定義するその他の基準による場合もある。
図５に示されている例示的な態様において、探索問合せ要素の好ましい最適化順序は、第一要素が、それに関係する最少量のデータベース情報を有するときである。一般に、データベース４０の探索は、第一探索問合せ要素の探索を個々に行うことによって複数の探索問合せ要素のために行われる。この、第一探索はデータベース情報の定義されたサブセットを生ずる。次の探索問合せ要素のために行われる探索は、第一探索からの定義されたサブセットを使用して行われる。このように、探索問合せ要素に関係するデータベース情報は、最後の探索問合せ要素を使用する探索中に見つけ出されたデータベース情報のサブセットである。
第一要素が、最少量のデータベース情報に関係する場合、複数の探索問合せ要素を有する全探索処理は、データベース情報の最小可能サブセットで開始する。当業者には、前述のデータベース情報の小量サブセットに基づく結果として起こる探索が、データベース情報のサブセットが初期に大きい場合よりもより速いことは迅速に理解されよう。従って、エントリに対応するデータベース４０の最少量の情報を有するエントリ（第一要素）で開始する最適化順序に探索問合せ要素を配列することは有利な点である。さらに、結果として起こる探索問合せ要素が、最少量の対応するデータベース情報から最大量の対応するデータベース情報へと昇順に最適化順序内に配列されることは熟慮されることである。
前の例示において、Ａｍｅｎｉｔｙ  １００の要素は、関連する５０のレコードが２００以下あるいは１５００以下であったので、それと関連する少量のデータベース情報を有する。ＱＬＯＢ  １０８０の要素（２００のレコードを有する）には、ＬＯＢ  ２７６０（１５００のレコードを有する）が次に続く。当業者には、第一要素を使用して探索をした後に５０のレコードを見つけ出すことによって、第二および第三の要素を使用する結果として起こる探索は、限定５０のレコード領域（universe）で開始することは認識されるであろう。従って、当業者には、データベースのレコードの増大する関係量を有する要素の最適化順序に要素を再配列することが有利であることが認められるであろう。
探索問合せ要素が、最適化順序に配列された後、検索エンジンモジュール３９が、探索問合せ要素の最適化順序を使用するステップ５３０でデータベース４０の探索を行う。従って、上述のステップによれば、探索問合せ要素は、最適化順序に配列され、その結果検索エンジンモジュール３９がデータベース４０の探索を行うのにかかる時間が低減される。
結果
前述の説明から、本発明の態様が、ＩＲシステム２６のＭＲＡ３８を使用する起点モジュールと転送先モジュールとの間で通信のシステムおよび方法を提供することが認められるであろう。起点モジュールの例は、フロンドエンドモジュール３３の一つである。転送先モジュールの例は、検索エンジンモジュール３９である。起点モジュールの一つがメッセージを受け取り後、特別にフォーマットされたルータパケットが、メッセージ内の情報から生成される。ルータパケットが、ルータパケットによって指定される転送先モジュールにルートするＭＲＡ３８に送信される。ＭＲＡ３８は、ルータパケットを転送先モジュールに適応可能にルートする。
転送先モジュールのキューが空である場合、かつ転送先モジュールが、その他のパケットを現在処理していない場合、ＭＲＡ３８は、転送先モジュールのキューにルータパケットを配置する。転送先モジュールは、ルータパケットをキュー２４５から読み取り、ルータパケットを処理する。
転送先モジュールによって処理される別のルータパケットがある場合、ＭＲＡ３８が、キュー２４５に現在のルータパケットを格納する。その他のルータパケットの処理が完了すると、転送先モジュールが、キュー２４５の現在のルータパケットを処理可能である。転送先モジュールのキュー２４５内に未決定の別のルータパケットが既にある場合、ＭＲＡ３８は、メモリに別の転送先モジュールを生成することによって適合可能である。
現在のルータパケットが、予め定められた時間内に転送先モジュールによってまだ処理されていない場合、ＭＲＡ３８が、割り込みを送り、転送先モジュール内での処理を取り消し、現在のルータパケットが、次に処理されることを確実にする。
ルータパケットが検索エンジンモジュール３９に引渡された場合、探索が探索問合せ要素を使用する検索エンジンモジュール３９によって行われる前に、ルータパケットのデータ構成要素に対応する探索問合せ要素は、最適化順序に再配列される。
前述のシステムは、都合の良いことには、図３、第４Ａ図、第４Ｂ図および図５のフローチャートに基づいているコードを有する一つ以上のプログラムモジュールで実行されている。上述のおよび添付図面に例示されているオペレーションと、ステップと、手続きとが、普通の技術の熟練の一つにより本発明を実施させることを可能にすることを十分に開示していると考えられるので、特定のプログラミング言語は、上述の様々な手続きを実行するために必要とされない。さらに、本発明を実施するのに使用される多くのコンピュータおよびオペレーティングシステムがあり、従って、これらの多くの異なるシステムのすべてに適応可能な詳細なコンピュータプログラムを提供できない。特定のコンピュータの各々のユーザーは、ユーザーの必要性と目的とに、最も有効である言語およびツールについて知っているであろう。
本発明は、すべての点で、限定的というよりもむしろ例示的に特定の態様について記述してきた。記述された特定の態様は、ＭＲＡ３８を使用する適応可能なおよび動的な方法で、フロントエンドモジュール３３から検索エンジンモジュール３９に特別にフォーマットされたルータパケットをルートする一つである。しかし、当業者には、本発明の原則は、情報検索システム内の情報およびメッセージを効率的にルートするタスクまたは処理に適用することは理解されるであろう。
本発明がその精神と範囲から逸脱することなく他の態様を、含んでいることについて当業者には明白であろう。従って、本発明の範囲は、前述の記述よりむしろ添付の請求の範囲によって定義される。
【図１】
0004316681.tif 000004
【図２】
0004316681.tif 000005
【図３】
0004316681.tif 000006
【図４Ａ】
0004316681.tif 000007
【図４Ｂ】
0004316681.tif 000008
【図５】
0004316681.tif 000009