(57)【特許請求の範囲】
【請求項１】
クライアントからの検索要求を受け付けると、検索管理サーバにより複数の検索サーバの動作を制御し、該検索要求に応じた検索を該検索サーバに内蔵された逐次検索エンジンが行なう情報検索方法であって、
前記逐次検索エンジンを内蔵する各検索サーバの機能を変更することなくそのまま用いて統合することにより該複数の検索サーバに並列処理を実行させるべく該検索管理サーバと各検索サーバの一部であって該検索管理サーバで受け付けた検索要求を該逐次検索エンジンで実行させる対処理エンジン部とを含んで構成される並列フレームワークにより、該複数の検索サーバを該検索管理サーバに対して並列的に接続するとともに、検索対象データを、該複数の検索サーバに均等もしくは略均等に分散配置しておいてから、
該並列フレームワークの一部を成す該検索管理サーバにより、マルチスレッド機構もしくは非同期型通信方式を用いて、該複数の検索サーバからの検索結果を待つことなく、各クライアントからの検索要求を該複数の検索サーバへ順次放送出力することを特徴とする、情報検索方法。
【請求項２】
検索処理を行なう逐次検索エンジンを内蔵する複数の検索サーバと、クライアントからの検索要求を受け付け該複数の検索サーバの検索動作を制御する検索管理サーバとをそなえてなる情報検索システムにおいて、
前記逐次検索エンジンを内蔵する各検索サーバの機能を変更することなくそのまま用いて統合することにより該複数の検索サーバに並列処理を実行させるべく該検索管理サーバと各検索サーバの一部であって該検索管理サーバで受け付けた検索要求を該逐次検索エンジンで実行させる対処理エンジン部とを含んで構成される並列フレームワークによって、該複数の検索サーバが該検索管理サーバに対して並列的に接続され、
検索対象データが、該複数の検索サーバに均等もしくは略均等に分散配置されるとともに、
該並列フレームワークが、該複数の検索サーバからの検索結果を待つことなく、各クライアントからの検索要求を該複数の検索サーバへ順次放送出力する検索要求出力機構を有して構成され、
該並列フレームワークの該検索要求出力機構が、
複数のスレッドからなり、各スレッドが、各クライアントからの検索要求を割り当てられ、その検索要求を該複数の検索サーバへ順次放送出力するとともに、その検索要求に応じて該複数の検索サーバから返送されてきた検索結果に対する処理を行なうマルチスレッド機構、もしくは、
該複数の検索サーバと非同期に通信を行ない、各クライアントからの検索要求を該複数の検索サーバへ順次かつ非同期に放送出力するとともに、各検索要求に応じて該複数の検索サーバから返送されてきた検索結果を非同期に受信する非同期型通信機構により構成されていることを特徴とする、情報検索システム。
【請求項３】
該検索管理サーバからの検索要求に応じて各検索サーバ内で行なわれた検索の結果を保存する検索結果保存部が、各検索サーバ側にそなえられていることを特徴とする、請求項２記載の情報検索システム。
【請求項４】
該複数の検索サーバからの検索結果に基づいて集計処理を行なった結果を保存する集計結果保存部が、該検索管理サーバ側にそなえられていることを特徴とする、請求項２または請求項３に記載の情報検索システム。
【請求項５】
該検索管理サーバと該複数の検索サーバのうちの少なくとも一つとが同一の処理装置によって構成されていることを特徴とする、請求項２〜請求項４のいずれか１項に記載の情報検索システム。
【請求項６】
クライアントからの検索要求を受け付けると、複数の検索サーバの動作を制御し、該検索要求に応じた検索動作を該複数の検索サーバに内蔵された逐次検索エンジンに実行させる情報検索システム用検索管理装置であって、
前記逐次検索エンジンを内蔵する各検索サーバの機能を変更することなくそのまま用いて統合することにより該複数の検索サーバに並列処理を実行させるべく該検索管理サーバと各検索サーバの一部であって該検索管理サーバで受け付けた検索要求を該逐次検索エンジンで実行させる対処理エンジン部とを含んで構成される並列フレームワークによって、検索対象データを均等もしくは略均等に分散配置された該複数の検索サーバが並列的に接続されるとともに、
該複数の検索サーバからの検索結果を待つことなく、各クライアントからの検索要求を該複数の検索サーバへ順次放送出力する検索要求出力機構が、該並列フレームワークにそなえられ、
該検索要求出力機構が、
複数のスレッドからなり、各スレッドが、各クライアントからの検索要求を割り当てられ、その検索要求を該複数の検索サーバへ順次放送出力するとともに、その検索要求に応じて該複数の検索サーバから返送されてきた検索結果に対する処理を行なうマルチスレッド機構、もしくは、
該複数の検索サーバと非同期に通信を行ない、各クライアントからの検索要求を該複数の検索サーバへ順次かつ非同期に放送出力するとともに、各検索要求に応じて該複数の検索サーバから返送されてきた検索結果を非同期に受信する非同期型通信機構により構成されていることを特徴とする、情報検索システム用検索管理装置。
【請求項７】
該複数の検索サーバからの検索結果に基づいて集計処理を行なった結果を保存する集計結果保存部をそなえたことを特徴とする、請求項６記載の情報検索システム用検索管理装置。
【発明の詳細な説明】
【０００１】
（目次）
発明の属する技術分野
従来の技術（図８，図９）
発明が解決しようとする課題（図９）
課題を解決するための手段（図１）
発明の実施の形態（図２〜図７）
発明の効果
【０００２】
【発明の属する技術分野】
本発明は、各種情報を保持するデータベースから必要な情報を検索して取り出すための情報検索方法，情報検索システムおよび同システム用検索管理装置に関する。
【０００３】
【従来の技術】
近年、インターネットやイントラネットなどのコンピュータネットワークの発展に伴い、電子化された文書の量も飛躍的に増大している。これに伴い、これらの文書の中から必要な情報を取り出すための情報検索システムによるサービスが展開されている。
【０００４】
従来の情報検索システムとしては、例えば図８に示すようなものがある。この図８に示す情報検索システム１００は、検索管理サーバ１０１と、複数（図８では４台）の検索サーバ１０２と、データベース１０３とから構成されている。
ここで、検索管理サーバ１０１は、複数の検索サーバ１０２の検索動作を管理するもので、クライアント（図示省略）からの検索要求を受けると、各検索サーバ１０２に対してデータベース１０３の検索を指示するものであり、各検索サーバ１０２は、逐次検索エンジン（図示省略）を有して構成され、検索管理サーバ１０１からの指示に応じてデータベース１０３の検索を行ない、検索結果を検索管理サーバ１０１へ返送するものである。なお、データベース１０３は、実際にはディスク装置等の記憶装置に保持されている。
【０００５】
このような情報検索システム１００では、一つの大きな領域に保持されているデータベース１０３に対し、複数の検索サーバ１０２が並列的にアクセスして検索を行なっている。通常、各検索サーバ１０２を構成するプロセッサのＣＰＵやメモリの動作速度に比べると、データベース１０３を保持する記憶装置の動作速度の方がはるかに遅い。従って、上述のように一つのデータベース１０３に対して複数の検索サーバ１０２から検索を行なうと、各検索サーバ１０２は記憶装置待ち状態になることが多く、検索効率が低下してしまう。
【０００６】
そこで、従来、例えば図９に示すような情報検索システム２００も提案されている。この情報検索システム２００も、前述した情報検索システム１００と同様、検索管理サーバ２０１および複数（図９では４台）の検索サーバ２０２Ａ〜２０２Ｄを有している。そして、情報検索システム２００では、検索対象のデータベースが、検索サーバ２０２Ａ〜２０２Ｄの数に対応して４つの部分集合に分割され、これらの検索サーバ２０２Ａ〜２０２Ｄのそれぞれにデータベース２０３Ａ〜２０３Ｄとして付属している。
【０００７】
ここで、検索管理サーバ２０１は、検索サーバ２０２Ａ〜２０２Ｄの検索動作を管理するもので、クライアント（図示省略）からの検索要求を受けると、検索サーバ２０２Ａ〜２０２Ｄに対し、それぞれに付属するデータベース２０３Ａ〜２０３Ｄの検索を指示するものである。また、検索サーバ２０２Ａ〜２０２Ｄは、それぞれ、検索管理サーバ２０１からの指示に応じて、分割されたデータベース２０３Ａ〜２０３Ｄの検索を独立に行なうものである。なお、データベース２０３Ａ〜２０３Ｄは、実際にはディスク装置等の記憶装置に保持される。
【０００８】
このような構成により、情報検索システム２００では、複数の検索サーバ２０２Ａ〜２０２Ｄのそれぞれにより、分割されたデータベース２０３Ａ〜２０３Ｄに対する検索が独立／並列的に行なわれ、記憶装置待ち状態になることが少なくなり、検索効率を向上することができる。
【０００９】
【発明が解決しようとする課題】
ところで、近年、前述のようなネットワークの拡大に伴い情報検索性能の向上要求が飛躍的に増大しているため、このような情報検索性能の向上要求に対応できる情報検索システムを構成することが望まれている。
上述した情報検索システム２００については、細粒度処理と呼ばれる処理を施すことにより、検索性能を高めることができる。
【００１０】
情報検索システム２００のごとく複数の検索サーバ（プロセッサ）２０２Ａ〜２０２Ｄにより並列処理を行なう場合、処理性能の向上を高めるためには、複数の検索サーバ２０２Ａ〜２０２Ｄの負荷バランスを均等にすることが望ましい。つまり、全ての検索サーバ２０２Ａ〜２０２Ｄが常に同量の検索処理を担当している状態が最も効率のよい状態と言える。しかし、通常、検索処理の量が検索サーバ２０２Ａ〜２０２Ｄ間で均等に分かれることは極めて少ない。
【００１１】
そこで、従来、検索サーバ２０２Ａ〜２０２Ｄによる検索処理の単位をより細かくする細粒度処理を行なうことで、検索サーバ２０２Ａ〜２０２Ｄの負荷バランスを均等化し、検索性能の向上をはかっている。
即ち、クライアントから検索要求を受けた検索管理サーバ２０１は、検索サーバ２０２Ａ〜２０２Ｄのそれぞれに付属するデータベース２０３Ａ〜２０３Ｄ内の検索対象データを、所定単位で細分割し、所定単位の検索対象データに対する検索処理を終了した検索サーバ２０２Ａ〜２０２Ｄに対し、未処理の検索対象データを順次割り当てていく。これにより、検索サーバ２０２Ａ〜２０２Ｄの負荷バランスが均等化され、検索性能が大幅に向上することになる。
【００１２】
しかしながら、上述のような細粒度処理を行なうと、検索対象データの属する検索サーバ（プロセッサ）とその検索対象データに対する検索処理を行なう検索サーバ（プロセッサ）とが異なっている場合が多々あり、図９に二点鎖線の矢印で示すように、どうしても検索サーバ２０２Ａ〜２０２Ｄの相互間で通信を行なう必要が生じ、オーバヘッドが大きくなってしまう。
【００１３】
また、細粒度処理を行なうためには、検索管理サーバ２０１は、情報検索システム２００のベースとなる、検索サーバ２０２Ａ〜２０２Ｄを成す各逐次検索エンジン本体が内部でどのような処理を行なっているかを常に把握しなければならない。このため、逐次検索エンジンを、その構成に手を加えることなくそのまま使用することはできず、逐次検索エンジンを並列化する際に各逐次検索エンジンの内部構成に対し変更を施す必要があった。
【００１４】
従って、情報検索システムを構成するに際し、逐次検索エンジン本体に関する詳細な知識が必要で、逐次検索エンジンの並列化処理および細粒度処理のために必要となる工数が莫大なものになり、開発に多大な時間がかかっていた。
また、そのことによって、情報検索システムのベースとなる逐次検索エンジンとして新たなものが開発されても、その新たな逐次検索エンジンを直ちに情報検索システムに取り入れることができず、逐次検索エンジンの高性能化に対するキャッチアップ（追従）もままならない状況になっていた。
【００１５】
本発明は、このような課題に鑑み創案されたもので、細粒度処理を行なうことなく検索性能の向上を実現するとともに、逐次検索エンジンの並列化作業を簡易なものとして、短い開発期間で検索性能の向上要求に確実に対応できるようにした、情報検索方法，情報検索システムおよび同システム用検索管理装置を提供することを目的とする。
【００１６】
【課題を解決するための手段】
上記目的を達成するために、本発明の情報検索方法（請求項１）は、クライアントからの検索要求を受け付けると、検索管理サーバにより複数の検索サーバの動作を制御し、検索要求に応じた検索を検索サーバに内蔵された逐次検索サーバが行なうものであって、前記逐次検索サーバを内蔵する各検索サーバの機能を変更することなくそのまま用いて統合することにより複数の検索サーバに並列処理を実行させるべく該検索管理サーバと各検索サーバの一部であって該検索管理サーバで受け付けた検索要求を該逐次検索エンジンで実行させる対処理エンジン部とを含んで構成される並列フレームワークにより、複数の検索サーバを検索管理サーバに対して並列的に接続するとともに、検索対象データを、複数の検索サーバに均等もしくは略均等に分散配置しておいてから、並列フレームワークの一部を成す該検索管理サーバにより、マルチスレッド機構もしくは非同期型通信方式を用いて、複数の検索サーバからの検索結果を待つことなく、各クライアントからの検索要求を複数の検索サーバへ順次放送出力することを特徴としている。
【００１８】
また、本発明の情報検索システム（請求項２）は、検索処理を行なう逐次検索エンジンを内蔵する複数の検索サーバと、クライアントからの検索要求を受け付け複数の検索サーバの検索動作を制御する検索管理サーバとをそなえてなるものにおいて、前記逐次検索エンジンを内蔵する各検索サーバの機能を変更することなくそのまま用いて統合することにより複数の検索サーバに並列処理を実行させるべく検索管理サーバと各検索サーバの一部であって該検索管理サーバで受け付けた検索要求を該逐次検索エンジンで実行させる対処理エンジン部とを含んで構成される並列フレームワークによって、複数の検索サーバを検索管理サーバに対して並列的に接続し、検索対象データを複数の検索サーバに均等もしくは略均等に分散配置するとともに、並列フレームワークが、複数の検索サーバからの検索結果を待つことなく、各クライアントからの検索要求を複数の検索サーバへ順次放送出力する検索要求出力機構を有して構成され、該並列フレームワークの該検索要求出力機構が、複数のスレッドからなり、各スレッドが、各クライアントからの検索要求を割り当てられ、その検索要求を該複数の検索サーバへ順次放送出力するとともに、その検索要求に応じて該複数の検索サーバから返送されてきた検索結果に対する処理を行なうマルチスレッド機構、もしくは、該複数の検索サーバと非同期に通信を行ない、各クライアントからの検索要求を該複数の検索サーバへ順次かつ非同期に放送出力するとともに、各検索要求に応じて該複数の検索サーバから返送されてきた検索結果を非同期に受信する非同期型通信機構により構成されていることを特徴としている。
【００１９】
さらに、本発明の情報検索システム用検索管理装置（検索管理サーバ；請求項６）は、クライアントからの検索要求を受け付けると、複数の検索サーバの動作を制御し、検索要求に応じた検索動作を複数の検索サーバに内蔵された逐次検索エンジンに実行させるものであって、前記逐次検索エンジンを内蔵する各検索サーバの機能を変更することなくそのまま用いて統合することにより複数の検索サーバに並列処理を実行させるべく該検索管理サーバと各検索サーバの一部であって該検索管理サーバで受け付けた検索要求を該逐次検索エンジンで実行させる対処理エンジン部とを含んで構成される並列フレームワークによって、検索対象データを均等もしくは略均等に分散配置された該複数の検索サーバを並列的に接続するとともに、複数の検索サーバからの検索結果を待つことなく各クライアントからの検索要求を複数の検索サーバへ順次放送出力する検索要求出力機構を並列フレームワークにそなえ、該検索要求出力機構が、複数のスレッドからなり、各スレッドが、各クライアントからの検索要求を割り当てられ、その検索要求を該複数の検索サーバへ順次放送出力するとともに、その検索要求に応じて該複数の検索サーバから返送されてきた検索結果に対する処理を行なうマルチスレッド機構、もしくは、該複数の検索サーバと非同期に通信を行ない、各クライアントからの検索要求を該複数の検索サーバへ順次かつ非同期に放送出力するとともに、各検索要求に応じて該複数の検索サーバから返送されてきた検索結果を非同期に受信する非同期型通信機構により構成されたことを特徴としている。
【００２２】
なお、上述した情報検索システムにおいて、検索管理サーバからの検索要求に応じて各検索サーバ内で行なわれた検索の結果を保存する検索結果保存部を、各検索サーバ側にそなえてもよいし（請求項３）、複数の検索サーバからの検索結果に基づいて集計処理を行なった結果を保存する集計結果保存部を、検索管理サーバ側にそなえてもよい（請求項４）。同様の集計結果保存部は、上述した検索管理装置にそなえてもよい（請求項７）。
【００２３】
また、上述した情報検索システムにおいて、検索管理サーバと複数の検索サーバのうちの少なくとも一つとを同一の処理装置によって構成してもよい（請求項５）。
上述した情報検索方法（請求項１），情報検索システム（請求項２，５）および検索管理装置（請求項６）では、並列フレームワークを用いることにより、各検索サーバ（逐次検索エンジン）に手を加えることなく、複数の検索サーバを並列化することができるほか、新たな検索サーバも、手を加えることなく容易にシステム内に取り入れることが可能になる。さらに、検索対象データを各検索サーバに均等もしくは略均等に分散配置するデータの並列化に加え、検索管理サーバから各検索サーバへ検索要求を次々と放送出力する制御の並列化を導入することにより、各検索サーバの動作効率を高めることができる。
【００２４】
また、上述した情報検索システムにおいては、検索管理サーバからの検索要求に応じて各検索サーバ内で行なわれた検索の結果が各検索サーバ側の検索結果保存部に保存され（請求項３）、検索結果に基づいて集計処理を行なった結果が検索管理サーバ側（検索管理装置）の集計結果保存部に保存されるので（請求項４，７）、検索管理サーバと各検索サーバとの間で無駄な通信を行なう必要がなく、検索管理サーバ側（検索管理装置）で膨大な量の検索結果を保存・管理する必要もなくなる。
【００２５】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を説明する。
図１〜図３は本発明の一実施形態としての情報検索システムの構成を示すもので、図１はその全体構成を示すブロック図、図２はその詳細な構成を示すブロック図、図３はその情報検索システムにおけるマスタ（検索管理サーバ，情報検索システム用検索管理装置）の詳細な構成を示すブロック図である。
【００２６】
図１に示すように、本実施形態の情報検索システム１は、マスタ１０と、複数（本実施形態では４台）のスレーブ２０Ａ〜２０Ｄと、ネットワーク３０とから構成されている。
ここで、マスタ１０は、例えばＣＧＩ（Common Gateway Interface）等のクライアント５０（図２参照）からの検索要求を受け付けスレーブ２０Ａ〜２０Ｄの検索動作を制御する検索管理サーバ（情報検索システム用検索管理装置）として機能するもので、マスタサーバ（master server)，サーチマネージャ(search manager)とも呼ばれる。その詳細な構成については、図２および図３を参照しながら後述する。
【００２７】
また、マスタ１０は、スレーブ２０Ａ〜２０Ｄからの検索結果に基づいてソート等の集計処理を行なう機能を有しており、その集計結果（保存集合の実体）を保存する外部記憶装置（集計結果保存部）１１がマスタ１０に付設されており、集計結果についてはマスタ１０側で管理されるようになっている。
【００２８】
スレーブ（検索サーバ）２０Ａ〜２０Ｄは、それぞれ、ベースとなる逐次検索エンジン２０ａ〜２０ｄ（図２参照）を内蔵しており、マスタ１０からの指示（検索要求）に応じて、データベース２１Ａ〜２１Ｄに対する実際の検索処理を独立に担当し、検索結果をマスタ１０へ返送するものである。これらのスレーブ２０Ａ〜２０Ｄはサーチサーバとも呼ばれる。
【００２９】
逐次検索エンジン２０ａ〜２０ｄには、マスタ１０からの検索要求に応じて各スレーブ２０Ａ〜２０Ｄで行なわれた検索の結果を保存する検索結果保存部として機能するメモリ２２がそなえられており、検索結果保存集合の実体は各スレーブ２０Ａ〜２０Ｄ側で管理されるようになっている。
【００３０】
また、本実施形態の情報検索システム１では、検索対象データ（文書群）が、スレーブ２０Ａ〜２０Ｄの数に対応して４つの部分集合に均等もしくは略均等に分割され、これらのスレーブ２０Ａ〜２０Ｄのそれぞれにデータベース２１Ａ〜２１Ｄとして分散配置されている。なお、データベース２１Ａ〜２１Ｄは、実際にはディスク装置等の記憶装置として構成される。
【００３１】
上述したマスタ１０とスレーブ２０Ａ〜２０Ｄとの間にはネットワーク３０が介設され、マスタ１０とスレーブ２０Ａ〜２０Ｄとが相互に通信可能に構成されている。なお、図２ではネットワーク３０の図示は省略されている。
そして、本実施形態の情報検索システム１では、複数のスレーブ２０Ａ〜２０Ｄ（逐次検索エンジン２０ａ〜２０ｄ）が、並列フレームワーク４０により、マスタ１０に対して並列的に接続されている。この並列フレームワーク４０は、各エンジン２０ａ〜２０ｄの機能を変更することなくそのまま用いて統合するためのソフトウェアもしくは機構で、概念的には、図１に示すように、マスタ１０，ネットワーク３０およびスレーブ２０Ａ〜２０Ｄの一部を含んで構成されるものである。
【００３２】
ここで、並列フレームワーク４０について、より詳細に説明する。
クライアントサーバモデルに基づく多くのサーバアプリケーションでは、多量に発生しているクライアントからの個々の処理要求に対して、サーバがそれぞれの処理結果をクライアントへ返すという動作を行なう。一方で、多量のデータを扱うアプリケーションにおいては、複数のプロセッサで対象データを分割して分担し処理の応答速度を得るという手法や、逆に複数のプロセッサで対象データを共有し処理のスループットを得るという手法が一般的に存在する。
【００３３】
並列フレームワークとは、後述するような対クライアント部▲１▼，対処理エンジン部▲２▼および並列制御部▲３▼を組み合わせることにより、本来、逐次動作用に作成されている処理エンジン（逐次検索エンジン２０ａ〜２０ｄ）に大きな修正を加えることなく、全体として並列処理を処理エンジンに実行させるように作成されたモジュールのことである。
【００３４】
対クライアント部▲１▼は、クライアント（図２の符号５０参照）からの処理要求を受け付け、その処理結果をクライアントへ返すものであり、対処理エンジン部▲２▼は、処理要求を処理エンジン（逐次検索エンジン２０ａ〜２０ｄ）で行なわせるものである。
【００３５】
並列フレームワークでは、サーバアプリケーションの基本動作である、クライアントからの処理要求を受け付け、処理エンジンで処理を行なって、クライアントに処理結果を返すという動作が、対クライアント部▲１▼と対処理エンジン部▲２▼との２つに分解して行なわれる。
【００３６】
そして、これらの対クライアント部▲１▼と対処理エンジン部▲２▼との間にそなえられた並列制御部▲３▼が、個々の処理要求を処理単位毎に複数のプロセッサ〔スレーブ（検索サーバ）２０Ａ〜２０Ｄ〕で動作する複数の処理エンジンに分配し、処理結果を収集している。
本発明の実施形態では、データ並列とコントロール並列との２種類の並列性を抽出することによって、高い性能を達成する並列フレームワーク４０を実現している。
【００３７】
本実施形態における並列フレームワーク４０は、クライアント５０からの処理要求の受付と分配とを担当するマスタ１０と、逐次検索エンジン２０ａ〜２０ｄに処理を行なわせるスレーブ（検索サーバ）２０Ａ〜２０Ｄとから構成されており、マスタ１０が、前述した対クライアント部▲１▼および並列制御部▲３▼としての機能を有し、各スレーブ２０Ａ〜２０Ｄが、対処理エンジン部▲２▼としての機能を有している。
【００３８】
上述した並列フレームワークの実現例の一つについて簡単に説明する。ここでは、クライアント・サーバ間通信にコネクション型通信路を用いるとともに、クライアント毎に対応するスレッドをマスタ１０に生成し、各スレッドが各クライアントに対応するという方法によって実現される、並列フレームワーク４０の一例について説明する。
【００３９】
対クライアント部▲１▼は、クライアントからのコネクション接続要求によってクライアント・サーバ間コネクションを確立すると同時に、それに対応するスレッド（図３の符号１４Ａ〜１４Ｃ参照）を生成する。各スレッドは、クライアントからの処理要求をコネクションを通じて受け取り、その処理要求を処理単位として処理要求キュー（図３の符号１６参照）に書き込み、並列制御部▲３▼に新規要求が到着したことを通知する。処理要求キューに書き込まれている要求に対応する処理を終了すると、各スレッドは、その終了通知を並列制御部▲３▼から受け、クライアントに結果を通知した後、対応する要求を処理要求キューから削除する。
【００４０】
並列制御部▲３▼は、新規要求を、それを処理するのに必要なスレーブ（図２の符号２０Ａ〜２０Ｄ参照）に対して転送するが、その際、要求単位毎にタグを付加する。そして、並列制御部▲３▼は、各スレーブが検索処理を行なった結果をマスタに転送し、その結果を必要とするスレッドを前記タグに基づいて判断し、その結果を対クライアント部▲１▼における対応するスレッドに通知する。
【００４１】
スレーブにおける処理エンジン部（逐次検索エンジン；図２の符号２０ａ〜２０ｄ参照）▲２▼は、マスタから順次転送されてくる処理要求に対し、１つずつ処理を行ない、処理結果をタグ付きで並列制御部▲３▼に返却する。なお、処理エンジン部▲２▼は、逐次的に動作していても構わない。
【００４２】
さて、本実施形態におけるマスタ１０は、スレーブ２０Ａ〜２０Ｄからの検索結果を待つことなく、各クライアントからの検索要求をスレーブ２０Ａ〜２０Ｄへ順次放送出力する検索要求出力機構（前述した並列制御部▲３▼に対応）を有して構成されている。特に、本実施形態のマスタ１０は、図２および図３に示すように、複数のスレッドからなるマルチスレッド機構として構成されており、上述した検索要求出力機構はそのマルチスレッド機構により構成されている。即ち、マスタ１０は、スレッドマネージャ１２，コネクションマネージャ１３，アプリケーションサーバ１４（１４Ａ〜１４Ｃ），リクエストマネージャ１５およびキュー１６から構成されている。
【００４３】
ここで、スレッドマネージャ１２は、マルチスレッド機構（スレッド１３〜１５）の全体を管理するもので、特に、後述するアプリケーションサーバ１４（１４Ａ〜１４Ｃ）の動作状態を制御するものである。なお、図３において、スレッドマネージャ１２の図示は省略されている。
コネクションマネージャ（メインスレッド；前述した対クライアント部▲１▼に対応）１３は、クライアント５０（図３では図示省略）からの検索要求を受け付けるとともに、検索結果や集計結果を検索依頼のあったクライアント５０へ返送するものである。
【００４４】
アプリケーションサーバ（アプリケーションスレッド；前述した対クライアント部▲１▼に対応）１４は、実際には図３に示すように複数のスレッド１４Ａ〜１４Ｃからなるもので、コネクションマネージャ１３により受け付けられた検索要求毎に、検索処理を割り当てられるものである。検索処理を割り当てられた各スレッド１４（１４Ａ〜１４Ｃ）は、前述したスレッドマネージャ１２により起動され、検索要求をスレーブ２０Ａ〜２０Ｄへ出力した後には、これらのスレーブ２０Ａ〜２０Ｄから、検索要求に対応する検索結果が返送されてくるまで、スレッドマネージャ１２によりその動作を停止されるようになっている。また、各スレッド１４（１４Ａ〜１４Ｃ）は、検索結果に基づいてソート等の集計処理を行なう機能を果たす。
【００４５】
キュー１６は、各スレッド１４（１４Ａ〜１４Ｃ）から出力された検索要求をその出力順に一時的に保持するものである。なお、図２において、キュー１６の図示は省略されている。
リクエストマネージャ（マスタスレッド；前述した並列制御部▲３▼、即ち検索要求出力機構に対応）１５は、このキュー１６に保持されている検索要求を順次読み出してスレーブ２０Ａ〜２０Ｄへ放送出力（ブロードキャスト）するとともに、スレーブ２０Ａ〜２０Ｄから返送されてきた検索結果を受信しその検索結果を取り扱う所定のスレッド１４（１４Ａ〜１４Ｃ）に受け渡す機能も果たしている。
【００４６】
つまり、本実施形態の各スレッド１４（１４Ａ〜１４Ｃ）は、各クライアントからの検索要求を順次割り当てられ、その検索要求を、マスタスレッド１５を介して複数のスレーブ２０Ａ〜２０Ｄへ順次放送出力するとともに、その検索要求に応じてこれらのスレーブ２０Ａ〜２０Ｄから返送されてきた検索結果に対する処理を行なうように構成されている。
【００４７】
次に、上述のごとく構成された本実施形態の情報検索システム１の動作について、図４〜図７を適宜参照しながら説明する。
上述したように、本実施形態の逐次検索エンジン２０ａ〜２０ｄは、並列フレームワーク４０により並列化される。この並列フレームワーク４０を用いることにより、検索要求の受付と分配とを担当するマスタ１０と、逐次検索エンジン２０ａ〜２０ｄの本体をそれぞれ内蔵したスレーブ２０Ａ〜２０Ｄとがネットワーク３０を介して接続され、逐次検索エンジン２０ａ〜２０ｄの本体に対し、何ら手（変更）を加えることなく、これらのエンジン２０ａ〜２０ｄを並列化することができる。また、新たな逐次検索エンジン（検索サーバ）も、手を加えることなく容易に情報検索システム１内に取り入れることも可能になる。
【００４８】
そして、本実施形態では、図４に示すように、マスタ１０はクライアント５０からの検索要求を受け付け、その要求をスレーブ２０（２０Ａ〜２０Ｄ）に分配（放送出力）し、これらのスレーブ２０（２０Ａ〜２０Ｄ）からの検索結果を収集・集計してクライアント５０に返却する。この部分は並列フレームワーク４０内にのみ存在し、逐次検索エンジン２０ａ〜２０ｄの本体に手を加える必要はない。なお、図４では、逐次検索エンジンをそれぞれ内蔵した複数のスレーブを、いずれも同一の符号２０を付して示し、その台数を限定しない状態で情報検索システム１の全体構成を概略的に示している。以下、スレーブに符号２０を付して説明する場合がある。
【００４９】
実際の検索を実行するスレーブ２０Ａ〜２０Ｄは、ベースとなる逐次検索エンジン２０ａ〜２０ｄを内蔵しており、マスタ１０からの検索要求に従ってそれぞれ逐次検索エンジン２０ａ〜２０ｄを呼び出して検索を実行する。ここで、逐次検索エンジン２０ａ〜２０ｄの本体とマスタ１０との通信を行ない検索要求に従ってエンジン２０ａ〜２０ｄをそれぞれ呼び出す部分は、エンジン２０ａ〜２０ｄから明確に分離されており、並列フレームワーク４０側に含まれている。
【００５０】
また、本実施形態では、各スレーブ２０Ａ〜２０Ｄで得られた検索結果の保存集合の実体は各スレーブ２０Ａ〜２０Ｄ側のメモリ２２で管理される。これにより、マスタ１０とスレーブ２０Ａ〜２０Ｄとの間で無駄な通信を行なう必要を無くすことができる。一方、一旦、マスタ１０でソートなどの集計処理を行なった保存集合については、その実体をマスタ１０側の外部記憶装置１１で保存・管理されるので、ソートのような重い処理を何度も行なう必要がなくなり、システム性能を向上させることができる。
【００５１】
さらに、本実施形態では、検索対象データを各スレーブ２０（２０Ａ〜２０Ｄ）に均等もしくは略均等に分散配置するデータの並列化に加え、マスタ１０から各スレーブ２０へ検索要求を次々と送り込むという制御の並列化を導入することにより、各スレーブ２０の動作効率を高めることができる。つまり、データ並列とコントロール並列との２種類の並列性を抽出することによって、高い性能を達成している。
【００５２】
一般に、情報検索を行なう場合、検索実行にかかる時間の大半は、検索に必要なデータベースに対してアクセスし検索処理を行なうために費やされる。この時間は、検索するデータベースの大きさに依存して時間が増大する性質をもつものである。しかしながら、これらの文書群（検索対象データ）それぞれの間には依存関係がなく、文書群を複数に分割し、それぞれの部分文書群を独立に検索し、それらの結果を集計することで全体の検索結果とすることができる。この性質を利用し、本実施形態では、検索対象データを単純に等量もしくは略等量に分割し、それぞれのデータの検索を担当する逐次検索エンジン２０ａ〜２０ｄを設けることによって、データ並列性を抽出している。
【００５３】
一方で、図５（ａ）および図６に示すごとくマスタ１０から検索要求を出力してからその検索要求に応じた検索結果が全てのスレーブ２０（２０Ａ〜２０Ｄ）から返送されてくるのを待っていたのでは、早く検索処理を終えたスレーブ２０では次の検索要求を待つことになる。従って、単にデータ並列化を行なっても、検索を実際に担当するスレーブ２０の稼働率は、あまり高くならない。
【００５４】
そこで、本実施形態では、データ並列に加えて、マスタ１０側で各検索要求間のコントロール並列性を抽出し、図５（ｂ）および図７に示すように、マスタ１０からスレーブ２０（２０Ａ〜２０Ｄ）へ検索要求を次々と送り込むことによって、高スループットを達成している。
【００５５】
より具体的に説明すると、クライアント５０からの検索要求が、マスタ１０のメインスレッド１３で受け付けられると、スレッドマネージャ１２により、適当なアプリケーションスレッド１４が選択されて起動され検索要求を割り当てられる。検索処理を割り当てられたスレッド１４（１４Ａ〜１４Ｃ）は、スレーブ２０Ａ〜２０Ｄに対する検索要求を出力する。
【００５６】
その検索要求は、出力順にキュー１６に一時的に保持されてから、マスタスレッド１５により、順次読み出されてスレーブ２０Ａ〜２０Ｄへネットワーク３０を介して放送出力（ブロードキャスト）される。
スレッド２０Ａ〜２０Ｄ側では、マスタ１０からの検索要求を受信順にキュー（図示省略）に一時的に保持し、そのキューに保持された検索要求に応じた検索処理が、各逐次検索エンジン２０ａ〜２０ｄによって順次実行され、その検索結果はネットワーク３０を介してマスタ１０へ返送される。なお、検索結果をマスタ１０側で直ちに必要としない場合、その検索結果は、各エンジン２０ａ〜２０ｄ内のメモリ２２に保存される。
【００５７】
そして、スレーブ２０Ａ〜２０Ｄから返送されてきた検索結果は、マスタスレッド１５で受信され、その検索結果を取り扱う所定のスレッド１４（１４Ａ〜１４Ｃ）に受け渡される。検索要求を出力したスレッド１４（１４Ａ〜１４Ｃ）は、全てのスレーブ２０Ａ〜２０Ｄから検索結果が返送されてくるまで、スレッドマネージャ１２により停止状態となっているが、全てのスレーブ２０Ａ〜２０Ｄからの検索結果を受け取ると、その検索結果に基づいてソート等の集計処理を行ない、検索結果や集計結果をクライアント５０へ返送する。
【００５８】
なお、図７では、検索要求を並列的に取り扱う制御系（アプリケーションスレッド１４）が２つである場合について図示されているが、本発明はこれに限定されるものではなく、図３に示すように３つであってもよいし、それ以上であってもよい。
【００５９】
また、マスタ１０から各スレーブ２０へ送信される検索要求には、その検索要求を取り扱うスレッド１４を特定するためのＩＤが付与されるとともに、各スレーブ２０からマスタ１０へ返送される検索結果にも、どの検索要求に応じたものであるかを特定すべく前記ＩＤが付与されており、マスタスレッド１５は、そのＩＤを参照し、検索結果を所定のスレッド１４（１４Ａ〜１４Ｃ）に受け渡している。
【００６０】
このように、本発明の一実施形態としての情報検索システム１によれば、並列フレームワーク４０を用いることにより、各スレーブ２０（２０Ａ〜２０Ｄ）に内蔵される逐次検索エンジン２０ａ〜２０ｄの並列化作業を極めて簡易化できるので、短い開発期間で検索性能の向上要求に確実に対応することができる。
【００６１】
また、並列化作業の簡易化に伴い並列化に要する作業量が大幅に減少し、少ない開発費で逐次検索エンジン２０ａ〜２０ｄ（スレーブ２０）の並列化を実現できるので、多大な費用を投入して開発された高性能の逐次検索エンジン２０ａ〜２０ｄを適宜システム１内に取り入れることができるほか、分散メモリ型並列計算機においても容易に逐次検索エンジン２０ａ〜２０ｄ（スレーブ２０）の並列化が可能になる。従って、高いスケーラビリティが実現され、必要な検索能力を確実に得ることができる。
【００６２】
さらに、検索対象データを各スレーブ２０（２０Ａ〜２０Ｄ）に均等もしくは略均等に分散配置するデータの並列化に加え、マスタ１０から各スレーブ２０へ検索要求を次々と放送出力する制御の並列化を導入することにより、各スレーブ２０の動作効率を高めることができるので、より高いスループット性能を獲得でき、細粒度処理を行なうことなく検索性能が大幅に向上する。
【００６３】
またさらに、並列フレームワーク４０を採用することにより、検索結果や集計結果を各スレーブ２０やマスタ１０で独立性の高い状態で保存できるので、マスタ１０と各スレーブ２０との間で無駄な通信を行なう必要がなく、マスタ１０側で膨大な量の検索結果を保存・管理する必要もなくなる。特に、ソート処理等による集計結果をマスタ１０側で保存することにより、ソート処理のような重い処理を何度も行なう必要がなくなり、情報検索システム１の性能がより向上することになる。
【００６４】
なお、上述した実施形態では、マスタ１０における検索要求出力機構を、マルチスレッド機構を用いて構成した場合について説明したが、本発明は、これに限定されるものではなく、複数のスレーブ２０と非同期に通信を行なう非同期型通信機構により構成し、この非同期型通信機構が、各クライアントからの検索要求を複数のスレーブ２０へ順次かつ非同期に放送出力するとともに、各検索要求に応じて複数のスレーブ２０から返送されてきた検索結果を非同期に受信するように構成してもよい。この場合も、上述した実施形態と同様の作用効果を得ることができる。
【００６５】
このとき、マスタ１０から各スレーブ２０へ送信される検索要求には、その検索要求の出所を特定するためのＩＤが付与されるとともに、各スレーブ２０からマスタ１０へ返送される検索結果にも、どの検索要求に応じたものであるかを特定すべく前記ＩＤが付与されており、マスタ１０側では、そのＩＤを参照し、所定の検索要求に応じた検索結果が全て返送されたか否かを判断している。
【００６６】
また、上述した情報検索システム１において、マスタ１０と複数のスレーブ２０のうちの少なくとも一つとを同一の処理装置（プロセッサエレメント）によって構成することもできる。
そして、本発明は上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
【００６７】
【発明の効果】
以上詳述したように、本発明の情報検索方法（請求項１），情報検索システム（請求項２〜５）および同システム用検索管理装置（請求項６，７）によれば、以下のような効果ないし利点が得られる。
（１）並列フレームワークを用いることにより、各検索サーバに内蔵される逐次検索エンジンの並列化作業を極めて簡易化できるので、短い開発期間で検索性能の向上要求に確実に対応することができる。
【００６８】
（２）並列化作業の簡易化に伴い並列化に要する作業量が大幅に減少し、少ない開発費で検索サーバの並列化を実現できるので、多大な費用を投入して開発されている逐次検索エンジンを適宜システム内に取り入れることができるほか分散メモリ型並列計算機においても容易に検索サーバの並列化が可能になり、高いスケーラビリティが実現され、必要な検索能力を確実に得ることができる。
【００６９】
（３）検索対象データを各検索サーバに均等もしくは略均等に分散配置するデータの並列化に加え、検索管理サーバから各検索サーバへ検索要求を次々と放送出力する制御の並列化を導入することにより、各検索サーバの動作効率を高めることができるので、より高いスループット性能を獲得でき、細粒度処理を行なうことなく検索性能が大幅に向上する。
【００７０】
（４）並列フレームワークを採用することにより、検索結果や集計結果を各検索サーバや検索管理サーバで独立性の高い状態で保存できるので、検索管理サーバと各検索サーバとの間で無駄な通信を行なう必要がなく、検索管理サーバ側で膨大な量の検索結果を保存・管理する必要もなくなる。特に、ソート処理等による集計結果を検索管理サーバ側で保存することにより、ソート処理のような重い処理を何度も行なう必要がなくなり、情報検索システムの性能がより向上することになる。
【図面の簡単な説明】
【図１】本発明の一実施形態としての情報検索システムの全体構成を示すブロック図である。
【図２】本実施形態の情報検索システムの詳細な構成を示すブロック図である。
【図３】本実施形態の情報検索システムにおけるマスタ（検索管理サーバ，情報検索システム用検索管理装置）の詳細な構成を示すブロック図である。
【図４】本実施形態の情報検索システムにおけるマスタの動作を説明するためのブロック図である。
【図５】（ａ），（ｂ）はいずれも本実施形態の情報検索システムの動作を説明するための図である。
【図６】本実施形態の情報検索システムの動作を説明するための図である。
【図７】本実施形態の情報検索システムの動作を説明するための図である。
【図８】従来の情報検索システムの全体構成を示すブロック図である。
【図９】他の従来の情報検索システムの全体構成を示すブロック図である。
【符号の説明】
１  情報検索システム
１０  マスタ（検索管理サーバ，情報検索システム用検索管理装置，マスタサーバ，サーチマネージャ）
１１  外部記憶装置（集計結果保存部）
１２  スレッドマネージャ
１３  コネクションマネージャ（メインスレッド）
１４，１４Ａ，１４Ｂ，１４Ｃ  アプリケーションサーバ（アプリケーションスレッド）
１５  リクエストマネージャ（マスタスレッド）
１６  キュー
２０，２０Ａ〜２０Ｄ  スレーブ（検索サーバ）
２０ａ〜２０ｄ  逐次検索エンジン
２１Ａ〜２１Ｄ  データベース（記憶装置）
２２  メモリ（検索結果保存部）
３０  ネットワーク
４０  並列フレームワーク
５０  クライアント（ＣＧＩ）
【図１】
0004000223.tif 000002
【図２】
0004000223.tif 000003
【図３】
0004000223.tif 000004
【図４】
0004000223.tif 000005
【図５】
0004000223.tif 000006
【図６】
0004000223.tif 000007
【図７】
0004000223.tif 000008
【図８】
0004000223.tif 000009
【図９】
0004000223.tif 000010