(57)【要約】【課題】構造化文書を格納するデータ処理装置間でジョイン検索を行う際のデータの転送量を減少させる。【解決手段】マスタデータベース処理装置は、各データベース処理装置に格納されている構造化文書の階層構造を示す構造情報のうち、第２データベース処理装置に格納された構造化文書のノード群であって、第１データベース処理装置に格納された構造化文書のノード群と一致する同一ノードを抽出し、当該同一ノードを含む検索用構造情報を第１のデータベース処理装置に送信し、第１データベース処理装置は、検索用構造情報を受信し、検索用構造情報中の同一ノードを含む構造化文書を検索し、当該構造化文書が有する同一ノードと当該同一ノードに対するテキスト情報とを第２データベース処理装置に送信し、第２データベース処理装置は、同一ノードと、当該同一ノードのテキスト情報とを受信し、当該テキスト情報と一致する同一ノードを含む構造化文書を検索する。【選択図】        図２
2008210272.tif 000002
【特許請求の範囲】
【請求項１】
各要素が論理的に階層化された構造化文書を格納する第１の格納装置及び第２の格納装置と、当該第１の格納装置及び第２の格納装置を管理する文書管理装置とを接続する文書検索システムにおいて、
前記文書管理装置は、
前記第１の格納装置及び前記第２の格納装置に格納されている各前記構造化文書の前記要素の階層位置関係を、一括して有する階層構造を示す構造情報を記憶する構造記憶部と、
前記構造情報のうち、前記第２の格納装置に格納された前記構造化文書の所定の要素であって、前記第１の格納装置に格納された前記構造化文書の要素と一致する同一要素を抽出する抽出部と、
前記同一要素を、前記第１の格納装置に送信する送信部と、を備え、
前記第１の格納装置は、
前記構造化文書を格納する第１の記憶部と、
前記文書管理装置から前記同一要素を受信する第１の受信部と、
前記第１の記憶部に格納された前記構造化文書から、前記同一要素を含む構造化文書を検索する第１の検索部と、
検索された前記構造化文書が有する前記同一要素と、当該同一要素に対するテキスト情報とを対応付けて、前記第２の格納装置に送信する第１の送信部と、を備え、
前記第２の格納装置は、
前記第１の格納装置から、前記同一要素と、当該同一要素に対応付けられた前記テキスト情報とを受信する第２の受信部と、
受信した前記テキスト情報と一致する前記同一要素を含む構造化文書を検索する第２の検索部と、を備えること、
を特徴とする文書検索システム。
【請求項２】
前記文書管理装置の、
前記構造記憶部は、前記構造情報が保持する前記階層構造内で階層位置が規定されている要素を示す規定要素がユニークであるか否かを示すユニーク情報を規定要素毎に保持し、
前記抽出部は、前記同一要素と、前記構造情報において対応する前記規定要素のユニーク情報がユニークである場合に、前記同一要素と共に、当該ユニーク情報を抽出し、
前記送信部は、前記同一要素と、抽出された前記ユニーク情報とを対応付けて送信し、
前記第１の格納装置の、
前記第１の受信部は、前記同一要素と、前記同一要素に対応付けられた前記ユニーク情報とを受信し、
前記第１の検索部は、前記ユニーク情報に対応付けられた前記同一要素を１つのみ含む前記構造化文書を検索すること、
を特徴とする請求項１に記載のシステム。
【請求項３】
前記第２の格納装置に格納されている前記構造化文書のユニークな要素が、前記第１の格納装置に格納されている前記構造化文書のユニークな要素より多いこと、
を特徴とする請求項２に記載のシステム。
【請求項４】
前記文書管理装置は、
利用者から検索条件として所定の要素が一致する前記構造化文書の組み合わせを検索する旨の指示を受け付ける受付部と、をさらに備え、
前記抽出部は、指示として受け付けた前記所定の要素であって、前記第１の格納装置に格納された前記構造化文書の要素と一致する同一要素を抽出すること、
を特徴とする請求項１乃至３のいずれか一つに記載のシステム。
【請求項５】
前記第１の格納装置の、
前記第１の送信部は、検索された前記構造化文書を、前記文書管理装置に送信し、
前記第２の格納装置は、
検索された前記構造化文書を、前記文書管理装置に送信する第２の送信部をさらに備え、
前記文書管理装置は、
前記第１の格納装置からの前記構造化文書と、前記第２の格納装置からの前記構造化文書を受信する受信部と、
受信した構造化文書から、同一の要素を含む構造化文書の組み合わせた検索結果を生成する生成手段と、をさらに備えること、
を特徴とする請求項１乃至４のいずれか一つに記載のシステム。
【請求項６】
各要素が論理的に階層化された構造化文書を格納する第１の格納装置及び第２の格納装置に対して、検索を行う文書検索方法において、
構造記憶部に記憶された、前記第１の格納装置及び前記第２の格納装置に格納されている各前記構造化文書の前記要素の階層位置関係を、一括して有する階層構造を示す構造情報のうち、前記第２の格納装置に格納された前記構造化文書の所定の要素であって、前記第１の格納装置に格納された前記構造化文書の要素と一致する同一要素を抽出し、
前記同一要素を、前記第１の格納装置に送信し、
前記第１の格納装置が、前記同一要素を受信し、
第１の記憶部に格納された前記構造化文書から、前記同一要素を含む構造化文書を検索し、
検索された前記構造化文書が有する前記同一要素と、当該同一要素に対するテキスト情報とを対応付けて、前記第２の格納装置に送信し、
前記第２の格納装置が、前記第１の格納装置から、前記同一要素と、当該同一要素に対応付けられた前記テキスト情報とを受信し、
受信した前記テキスト情報と一致する前記同一要素を含む構造化文書を検索する、
ことを特徴とする文書検索方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、論理的な階層化された論理構造を有する構造化文書に対して検索を行う文書検索システム及び文書検索方法に関するものである。
【背景技術】
【０００２】
従来から、大量の電子化された文書を扱うために分散リレーショナルデータベースシステムが広く利用されている。この分散リレーショナルデータベースシステムが大規模な場合、文書が有するデータを、予め定められたスキーマに適合するように変換した上で、複数の計算機に格納していた。そして、当該分散リレーショナルデータベースシステムは、ユーザに対して、あたかも１つの計算機やデータベースであるかのようなインターフェイスを提供していた。なお、スキーマとは、データベースシステムが有するテーブルや列などの構造や、当該データベースシステムに格納されるデータの順番等の定義を指している。
【０００３】
そして、当該分散リレーショナルデータベースシステムでは、ユーザから検索要求を受け付けた場合に、ネットワークで接続された複数の計算機が協調して実行処理を行う。これにより、１台の計算機に格納できない大規模な文書群に対する高度な検索機能を実現している。
【０００４】
分散データベースシステムにおいて、より大量の文書を格納するために各計算機に排他にデータを格納する、“Ｓｈａｒｅｄ  Ｎｏｔｈｉｎｇ型”と呼ばれるシステムも存在する。このような分散データベースシステムでは、複数の計算機にまたがって検索を行うためにジョイン演算の機能が提供されている。このようなジョイン演算では、計算機間で中間結果データの転送が発生する。
【０００５】
そして、このような分散データベースシステムにおいては、中間検索結果データの転送時間によるスループットやレスポンスが低下するという問題が生じていた。このような問題を解決するために、例えば特許文献１などジョイン演算に関する技術が数多く提案されている。この特許文献１では、１つの仮想表で異なる条件を複数のマッピング保持できる多重マッピング機構を用いることで、仮想表の切り替え、仮想表上のアクセス項目の変更なしにアクセス先データベースを切り替えることが可能とし、アクセス対象データの変更に柔軟に対応可能としている。また、ジョイン実行方式としてセミ・ジョイン法、ハッシュ・ジョイン法などが提案されている。
【０００６】
このように分散データベースシステムでは、既に提案されているさまざまなジョイン実行方式を用いることで、データ転送量を削減することができる。
【０００７】
ところで、近年、構造化文書の普及が急速に進んでいる。この普及に伴い、大量の構造化文書を管理するために、構造化文書に特化した構造化文書データベースの普及が進んでいる。
【０００８】
構造化文書とは、データ内容とデータ構造を内包し、データ構造が要素と論理的な関係（文書論理構造）を持った文書である。構造化文書を記述するメタ言語の例として、ＳＧＭＬ（ＳｔａｎｄａｒｄＧｅｎｅｒａｌｉｚｅｄ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）や、Ｗ３Ｃ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ  Ｃｏｎｓｏｒｔｉｕｍ）で定められ、近年急速に普及が進んでいるＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）がある。
【０００９】
構造化文書データベースは、構造化文書のための検索言語を用いて、構造化文書に格納された要素の論理的な関係を表す情報を保持している。そして、構造化文書の検索を行う際に、当該要素の論理的な構造を検索式で特定することで、構造化文書の構造を検索条件に指定して精度の高い検索を実現している。例えば、特許文献２では、構造化文書群の論理構造の共通性、規則性を縮約した情報をテンプレートとして保持し、検索時にこれを利用している。
【００１０】
構造化文書がＸＭＬ文書の場合に用いられる検索式については説明する。当該検索式は、構造化文書が有する構造を検索条件に指定するために、Ｗ３Ｃによって規定されているＸＰａｔｈ（ＸＭＬ  Ｐａｔｈ  Ｌａｎｇｕａｇｅ）やＸＱｕｅｒｙ（ＸＭＬ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）言語などが利用される。
【００１１】
ＸＰａｔｈは、ＸＭＬ文書の中の特定の要素や属性を指し示すための、パス式の記述方式を定めた言語である。ＸＱｕｅｒｙは、ＸＰａｔｈをサブセットであり、ＸＰａｔｈで指定されたＸＭＬ要素や属性に対する、繰り返し、代入、比較等の複雑な演算、またＸＭＬ要素や属性の生成の記述可能なＸＭＬ文書のための検索言語である。このような検索言語を用いることで、従来の検索式よりも複雑な検索式を記述する事が可能となる。
【００１２】
構造化文書が複数の計算機に分散して格納された分散構造化文書データベースシステムにおいては、このような検索式でジョイン演算を行う際に、論理構造を有する中間結果データの転送が発生する場合がある。この場合、上述したジョイン実行方式を、分散構造化文書データベースに適用して、転送処理のコストを削減できる。
【００１３】
【特許文献１】特開２００１−１０９７５８号公報
【特許文献２】特開２００５−１９０１６３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
しかしながら、分散構造化文書データベースシステムでは、以下に示す特有の問題が発生する。まず、前述の分散リレーショナルデータベースでは、セミ・ジョインを行う際、所定のフィールドを結合キーとして結合を行うため、当該フィールドのデータのみ転送すればよい。これに対して、分散構造化文書データベースでは、結合キーの各要素が論理構造を持つ場合がある。例えば、結合キーがシーケンス構造などの列であり、さらにその各要素が、ＸＭＬノード（ＸＭＬ部分木）などの数値や文字列を含んだ深いタグ（リスト）構造である場合がある。このように、分散構造化文書データベースシステムの結合キーは、分散リレーショナルデータベースの結合キーと比較してデータサイズが大きくなる可能性が高い。
【００１５】
このように、分散構造化文書データベースでは、セミ・ジョイン法などでデータ転送量を削減しても、結合キーのデータサイズが大きいために転送量が増加して、レスポンスが低下するという問題がある。
【００１６】
本発明は、上記に鑑みてなされたものであって、ジョイン検索を行う際のデータの転送量を減少させる文書検索システム及び文書検索方法を提供することを目的としている。
【課題を解決するための手段】
【００１７】
上述した課題を解決し、目的を達成するために、本発明の文書検索システムは、各要素が論理的に階層化された構造化文書を格納する第１の格納装置及び第２の格納装置と、当該第１の格納装置及び第２の格納装置を管理する文書管理装置とを接続する文書検索システムにおいて、前記文書管理装置は、前記第１の格納装置及び前記第２の格納装置に格納されている各前記構造化文書の前記要素の階層位置関係を、一括して有する階層構造を示す構造情報を記憶する構造記憶部と、前記構造情報のうち、前記第２の格納装置に格納された前記構造化文書の所定の要素であって、前記第１の格納装置に格納された前記構造化文書の要素と一致する同一要素を抽出する抽出部と、前記同一要素を、前記第１の格納装置に送信する送信部と、を備え、前記第１の格納装置は、前記構造化文書を格納する第１の記憶部と、前記文書管理装置から前記同一要素を受信する第１の受信部と、前記第１の記憶部に格納された前記構造化文書から、前記同一要素を含む構造化文書を検索する第１の検索部と、検索された前記構造化文書が有する前記同一要素と、当該同一要素に対するテキスト情報とを対応付けて、前記第２の格納装置に送信する第１の送信部と、を備え、前記第２の格納装置は、前記第１の格納装置から、前記同一要素と、当該同一要素に対応付けられた前記テキスト情報とを受信する第２の受信部と、受信した前記テキスト情報と一致する前記同一要素を含む構造化文書を検索する第２の検索部と、を備えること、を特徴とする。
【００１８】
また、本発明の文書検索方法は、各要素が論理的に階層化された構造化文書を格納する第１の格納装置及び第２の格納装置に対して、検索を行う文書検索方法において、構造記憶部に記憶された、前記第１の格納装置及び前記第２の格納装置に格納されている各前記構造化文書の前記要素の階層位置関係を、一括して有する階層構造を示す構造情報のうち、前記第２の格納装置に格納された前記構造化文書の所定の要素であって、前記第１の格納装置に格納された前記構造化文書の要素と一致する同一要素を抽出し、前記同一要素を、前記第１の格納装置に送信し、前記第１の格納装置が、前記同一要素を受信し、第１の記憶部に格納された前記構造化文書から、前記同一要素を含む構造化文書を検索し、検索された前記構造化文書が有する前記同一要素と、当該同一要素に対するテキスト情報とを対応付けて、前記第２の格納装置に送信し、前記第２の格納装置が、前記第１の格納装置から、前記同一要素と、当該同一要素に対応付けられた前記テキスト情報とを受信し、受信した前記テキスト情報と一致する前記同一要素を含む構造化文書を検索する、ことを特徴とする。
【発明の効果】
【００１９】
本発明によれば、検索を行う際に第１の格納装置及び第２の格納装置の間で送受信されるデータ量を低減できるという効果を奏する。
【発明を実施するための最良の形態】
【００２０】
以下に添付図面を参照して、この発明にかかる文書検索システム及び文書検索方法の最良な実施の形態を詳細に説明する。
【００２１】
図１に示すように、本実施形態にかかる分散構造化文書データベースシステムは、ＬＡＮ１４０を介してマスタデータベース処理装置１００と、第１データベース処理装置１１０と、第２データベース処理装置１２０と、第３データベース処理装置１３０とが接続されている。
【００２２】
なお、本実施の形態では、構造化文書としてＸＭＬ形式の文書を用いることとするが、ＸＭＬ形式に制限するものではなく、他の形式を用いても良い。
【００２３】
マスタデータベース処理装置１００は、マスタＤＢＭＳ(Database  Management  System)１０１を備えている。第１データベース処理装置１１０は、第１スレーブＤＢＭＳ１１１を備え、第１構造化文書データ格納部１１２と接続している。第２データベース処理装置１２０は、第２スレーブＤＢＭＳ１２１を備え、第２構造化文書データ格納部１２２と接続している。第３データベース処理装置１３０は、第３スレーブＤＢＭＳ１３１を備え、第３構造化文書データ格納部１３２と接続している。そして、第１スレーブＤＢＭＳ１１１と第２スレーブＤＢＭＳ１２１と第３スレーブＤＢＭＳ１３１には、構造化文書が格納されている。
【００２４】
マスタデータベース処理装置１００は、ユーザからのクエリ実行要求を受け付ける。そして、受け付けたクエリ実行要求に従った実行命令を生成して、第１データベース処理装置１１０、第２データベース処理装置１２０及び第３データベース処理装置１３０のうちいずれか一つ以上に対して実行命令を送信する。
【００２５】
第１データベース処理装置１１０、第２データベース処理装置１２０及び第３データベース処理装置１３０は、マスタデータベース処理装置１００からの実行命令を受信した場合、当該実行命令に従って、第１構造化文書データ格納部１１２、第２構造化文書データ格納部１２２及び第３構造化文書データ格納部１３２に対してデータ取得処理、ソート処理、データ転送処理、結合処理等の実処理を行う。
【００２６】
なお、本実施の形態では、１台のマスタ及び３台スレーブで構成されている分散構造化文書データベースシステムの例について、図２を用いて説明する。なお、本実施の形態に示す処理は、スレーブ毎に構造化文書を排他に分散格納するシステムであれば適用可能なものである。本実施の形態で示した構成に限らず、あらゆる装置構成及びネットワーク構成に対して適用できる。
【００２７】
マスタデータベース処理装置１００は、マスタＤＢＭＳ１０１を備え、構造情報格納部２０１と接続されている。マスタＤＢＭＳ１０１は、外部通信処理部２１１と、検索処理部２１２と、内部通信処理部２１３と、データ格納処理部２１４とを備える。
【００２８】
外部通信処理部２１１は、ユーザが操作するＰＣ等に接続されたＬＡＮ１４０等を介して通信を行う。そして、外部通信処理部２１１は、ユーザから構造化文書の格納命令やクエリ実行命令などの各種命令や、格納する構造化文書、実行するクエリなどのデータを受信する。また、外部通信処理部２１１は、検索条件が示されたクエリ式を受信するので、換言すれば当該検索条件で他のデータベース処理装置間のジョイン検索を行う旨の指示を受け付ける受付部に相当する。
【００２９】
内部通信処理部２１３は、送信部２１８と受信部２１９とを備え、第１データベース処理装置１１０、第２データベース処理装置１２０及び第３データベース処理装置１３０との間で通信を行う。
【００３０】
送信部２１８は、第１データベース処理装置１１０、第２データベース処理装置１２０及び第３データベース処理装置１３０に対して、ジョイン検索を行うための実行命令、ジョイン検索で用いる検索用構造情報、格納する構造化文書を送信する。
【００３１】
受信部２１９は、検索結果や中間結果データなどの情報を、第１データベース処理装置１１０、第２データベース処理装置１２０及び第３データベース処理装置１３０から受信する。
【００３２】
構造情報格納部２０１は、後述する第１構造化文書データ格納部１１２、第２構造化文書データ格納部１２２及び第３構造化文書データ格納部１３２に格納された構造化文書データの構造情報を格納する。
【００３３】
構造情報は、構造化文書の構造を保持する情報であり、本実施の形態では構造化文書の構造が定義されたスキーマ、又は構造化文書から抽出した構造を保持する構造化テンプレート等とする。これにより、構造情報は、構造化文書に含まれているノードの階層位置関係を一括して保持することとする。
【００３４】
また、構造情報格納部２０１は、構造情報を記憶する記憶手段であり、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、光ディスク、メモリカード、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの一般的に利用されているあらゆる記憶手段により構成することができる。
【００３５】
また、本実施の形態とは異なるが、構造化文書データを定義するスキーマが存在しない場合、構造情報格納部２０１は、後述するデータ格納処理部２１４が構造化文書から抽出した構造の情報を格納する。この構造化文書から抽出した構造の情報を構造テンプレートとする。
【００３６】
図３に示すように、構造情報では、同一のパス構造はまとめられる。また、構造情報では、構造化文書のルートノードの場合、当該ノードに対して“Ｄｏｃｕｍｅｎｔ  Ｒｏｏｔ”フラグが付加される。また、構造情報では、必ず１度だけ存在するノードの場合、符号３０１に示すように各ノードに対して“Unique  Node”フラグが設定されている。この“Unique  Node”フラグは、当該ノードがユニークであることを示している。また、構造情報がスキーマの場合、上述したフラグ等に加えて、上記に加えてノードの繰り返し回数や、格納されるデータ型などの情報が定義されている。なお、本実施の形態では、要素がノードの場合について説明するが、ノード以外の情報を用いても良い。
【００３７】
データ格納処理部２１４は、外部通信処理部２１１が受信した構造化文書を、第１構造化文書データ格納部１１２、第２構造化文書データ格納部１２２及び第３構造化文書データ格納部１３２のうちいずれか１つに格納するための処理を行う。また、データ格納処理部２１４は、構造情報格納部２０１にスキーマが格納されていない場合、受信した構造化文書から構造の情報を抽出する処理を行い、抽出した構造の情報を、構造情報格納部２０１に構造テンプレートとして格納する処理を行う。
【００３８】
検索処理部２１２は、クエリ解析部２１５と、抽出部２１６と、実行部２１７と、を備え、受信したクエリに従って、他のデータベース処理装置で検索処理を行うための実行命令を生成や、検索結果を示す検索結果リストの生成など、検索に関する処理を行う。
【００３９】
クエリ解析部２１５は、外部通信処理部２１１が受信したクエリに対して構文解析を行う。
【００４０】
抽出部２１６は、構造情報格納部２０１から、構文解析結果に合致する構造情報を抽出して、解析されたクエリを表現する検索用構造情報を生成する。また、検索用構造情報の詳細については後述する。
【００４１】
実行部２１７は、生成部２２０を備え、生成された検索用構造情報に基づいて、ジョイン検索を行うための処理を実行する。例えば、実行部２１７は、第１データベース処理装置１１０、第２データベース処理装置１２０及び第３データベース処理装置１３０のうちいずれか一つ以上に、生成された検索用構造情報を用いてジョイン検索を行うための実行命令を生成し、送信部２１８に対して当該実行命令と検索用構造情報の送信を要求する。また、実行部２１７は、第１データベース処理装置１１０、第２データベース処理装置１２０及び第３データベース処理装置１３０に実行命令等の送信を要求した後、検索結果や中間結果を管理する。
【００４２】
生成部２２０は、管理している中間結果及び検索結果から検索結果リストを生成する。なお、検索結果リストについては後述する。
【００４３】
第１データベース処理装置１１０は、第１スレーブＤＢＭＳ１１１を備え、第１構造化文書データ格納部１１２と接続されている。第１スレーブＤＢＭＳ１１１は、内部通信処理部２２１と、検索処理部２２２と、データ格納処理部２２３とを備える。
【００４４】
第１構造化文書データ格納部１１２は、構造化文書を復元可能な形式で格納する記憶手段であり、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、光ディスク、メモリカード、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの一般的に利用されているあらゆる記憶手段により構成することができる。また、第１構造化文書データ格納部１１２は、構造化文書を検索するための索引情報も保持する。また、第１構造化文書データ格納部１１２と、第２構造化文書データ格納部１２２と、第３構造化文書データ格納部１３２とは、排他的に構造化文書を格納する。
【００４５】
なお、後述する第２構造化文書データ格納部１２２及び第３構造化文書データ格納部１３２も同様の記憶手段で構成されるとともに、他の構造化文書格納部と排他的に構造化文書を格納する。
【００４６】
図４に示すように、第１構造化文書データ格納部１１２は、４個の構造化文書（ＸＭＬ文書）を格納している。この図４に示された構造化文書１、構造化文書２、構造化文書３及び構造化文書４の各々は、１機種のＰＣの情報を保持している。また、図４に示すように、第１構造化文書データ格納部１１２が格納する構造化文書は、“ＣｏｍｐａｎｙＴ”社製ＰＣの情報を保持するＸＭＬ文書とする。
【００４７】
図４に示すＸＭＬ文書は、タグ“<parts>”とタグ“</parts>”の間に、当該ＰＣのパーツ情報を格納している。パーツ情報としては、タグ“<hddvd>”を含むＸＭＬ文書（例えば構造化文書１）や、タグ“<hddvd>”を含まないＸＭＬ文書（例えば、構造化文書２）などがある。他の例としては、タグ“<cpu>”など複数出現するＸＭＬ文書もあるし、１つしか出現しないＸＭＬ文書もある。このように、ＸＭＬ文書に応じて様々な情報をタグ内に格納している。
【００４８】
図２に戻り、内部通信処理部２２１は、受信部２２４と、送信部２２５とを備え、第２データベース処理装置１２０、第３データベース処理装置１３０、及びマスタデータベース処理装置１００との間でデータの送受信を行う。
【００４９】
受信部２２４は、マスタデータベース処理装置１００から実行命令、検索用構造情報、又は格納する構造化文書を受信する。また、受信部２２４は、第２データベース処理装置１２０、第３データベース処理装置１３０から検索における中間結果データや、検索結果データなどを受信する。
【００５０】
送信部２２５は、マスタデータベース処理装置１００に対して、中間結果データ、又は検索結果データを送信する。また、送信部２２５は、第２データベース処理装置１２０又は第３データベース処理装置１３０に対して、マスタデータベース処理装置１００から受信した実行命令及び検索用構造情報、中間結果データ、又は検索結果データなどを送信する。
【００５１】
また、中間結果データとは、ジョイン検索における中間検索結果を示したデータとする。この中間結果データを、第２データベース処理装置１２０又は第３データベース処理装置１３０に対して送信することでジョイン検索を可能にする。また、中間結果データは、マスタデータベース処理装置１００にも送信する。これにより、マスタデータベース処理装置１００はジョイン検索の進捗を管理できる。検索結果データは、ジョイン検索の結果を示したデータとする。
【００５２】
検索処理部２２２は、受信部２２４が受信したマスタデータベース処理装置１００からの実行命令に従って、第１構造化文書データ格納部１１２に対してデータ取得処理、ソート処理、データ転送処理、結合処理、などの実処理を行い、中間結果データ又は検索結果データを出力とする。また、検索処理部２２２は、ジョイン検索の場合、第１構造化文書データ格納部１１２に格納された構造化文書から、検索用構造情報に含まれているノードと同一のノードを含む構造化文書を検索する。また、検索処理部２２２は、このような検索を行う際、受信した検索用構造情報に従って、第１構造化文書データ格納部１１２に格納された構造化文書のノードのトラバースと、データ取得条件に一致する構造化文書の全部又は一部のテキスト情報の実体化処理を行う。
【００５３】
データ格納処理部２２３は、マスタデータベース処理装置１００から受信した構造化文書を、第１構造化文書データ格納部１１２に格納する処理を行う。また、データ格納処理部２２３は、第１構造化文書データ格納部１１２に格納された構造化文書を検索するために索引情報を生成する処理を行い、当該索引情報も第１構造化文書データ格納部１１２に格納する。
【００５４】
第２データベース処理装置１２０は、第２スレーブＤＢＭＳ１２１を備え、第２構造化文書データ格納部１２２と接続されている。第２スレーブＤＢＭＳ１２１は、受信部２３４と送信部２３５を有する内部通信処理部２３１と、検索処理部２３２と、データ格納処理部２３３とを備えている。なお、内部通信処理部２３１、検索処理部２３２、及びデータ格納処理部２３３が行う処理は、第１スレーブＤＢＭＳ１１１の内部通信処理部２２１、検索処理部２２２、及びデータ格納処理部２３３が行う処理と同様なので説明を省略する。
【００５５】
第２構造化文書データ格納部１２２は、構造化文書を復元可能な形式で格納する記憶手段とする。図５に示すように、第２構造化文書データ格納部１２２は、４個の構造化文書（ＸＭＬ文書）を格納している。この図５に示された構造化文書５、構造化文書６、構造化文書７及び構造化文書８の各々は、１機種のＰＣの情報を保持している。そして、図５に示すように、第２構造化文書データ格納部１２２が格納する構造化文書は、“ＣｏｍｐａｎｙＤ”社製ＰＣの情報を保持するＸＭＬ文書とする。なお、図５に示すＸＭＬ文書も、図４に示すＸＭＬ文書と同様にタグ“<parts>”とタグ“</parts>”の間に、当該ＰＣのパーツ情報を格納している。
【００５６】
図２に戻り、第３データベース処理装置１３０は、第３スレーブＤＢＭＳ１３１を備え、第３構造化文書データ格納部１３２と接続されている。第３スレーブＤＢＭＳ１３１は、受信部２４４と送信部２４５を有する内部通信処理部２４１と、検索処理部２４２と、データ格納処理部２４３とを備えている。なお、内部通信処理部２４１、検索処理部２４２、及びデータ格納処理部２４３が行う処理は、第１スレーブＤＢＭＳ１１１の内部通信処理部２２１、検索処理部２２２、及びデータ格納処理部２３３が行う処理と同様なので説明を省略する。第３構造化文書データ格納部１３２は、構造化文書を復元可能な形式で格納する記憶手段とする。なお、第３構造化文書データ格納部１３２に格納された構造化文書の例については、説明を容易にするために省略する。
【００５７】
次に、本実施の形態にかかる分散構造化文書データベースシステムのジョイン検索について説明する。後述する処理手順の例では、第１構造化文書データ格納部１１２及び第２構造化文書データ格納部１２２に対してジョイン検索を行う場合について説明する。なお、本実施の形態は、ジョイン検索の検索対象を、第１構造化文書データ格納部１１２及び第２構造化文書データ格納部１２２に制限するものではなく、どの構造化文書データ格納部を検索対象としても良い。また、ジョイン検索は、３個以上の構造化文書データ格納部をジョインして検索を行ってもよい。
【００５８】
図６で示したクエリ式は、ＸＱｕｅｒｙで、第１構造化文書データ格納部１１２に格納された“ＣｏｍｐａｎｙＴ社製(T＿pcs)”のパソコンと、第２構造化文書データ格納部１２２に格納された“ＣｏｍｐａｎｙＤ社製(D＿pcs)”のパソコンとを、それぞれパーツ構成(タグ名・構造)が完全一致か否か比較を行い、これらが完全一致する“ＣｏｍｐａｎｙＴ”社製パソコンと“ＣｏｍｐａｎｙＤ”社製パソコンの組み合わせを全て列挙するように指示している。また、当該クエリ式は、検出された“ＣｏｍｐａｎｙＴ”社製パソコンと“ＣｏｍｐａｎｙＤ”社製パソコンの組み合わせを、タグ“<ans>”とタグ“</ans>”の間に書き込むように指示している。なお、本実施の形態は、クエリ式にＸＱｕｅｒｙを用いたが、他の言語を用いても良い。
【００５９】
次に、分散構造化文書データベースシステムが、第１構造化文書データ格納部１１２及び第２構造化文書データ格納部１２２に対してジョイン検索を行う処理手順について、図７を用いて説明する。
【００６０】
まず、マスタデータベース処理装置１００の外部通信処理部２１１が、ユーザのＰＣ等から検索等が指示されたクエリ（クエリ式）を受信する（ステップＳ７０１）。
【００６１】
次に、クエリ解析部２１５が、受信したクエリの解析を行う（ステップＳ７０２）。そいて、クエリ解析部２１５は、解析結果よりジョイン検索が必要か否か判断する（ステップＳ７０３）。
【００６２】
そして、クエリ解析部２１５は、ジョイン検索が必要ないと判断した場合（ステップＳ７０３：Ｎｏ）、図示していないが通常の処理を行い、処理を終了する。
【００６３】
また、クエリ解析部２１５は、ジョイン検索が必要と判断した場合（ステップＳ７０３：Ｙｅｓ）、抽出部２１６は、構造情報格納部２０１から、送信側のジョインキーのパス群を取得する（ステップＳ７０４）。例えば、抽出部２１６が、図６で示したクエリ式でジョイン検索を行う場合、第１構造化文書データ格納部１１２のパス“/T＿pcs/pc”の下のパス群を、構造情報格納部２０１から取得する。なお、クエリ式において送信側のジョインキーが“//cpu”などの相対パスで表記されていた場合、“/T＿pcs/pc/parts/cpu”等の絶対パスに変換してから、パス群を取得する。また、抽出部２１６は、当該パス群の各ノードに設定されている“Unique  Node”も抽出しておく。
【００６４】
なお、送信側とは、２個のスレーブＤＢＭＳ間でジョイン検索を行う場合に、ジョイン検索の中間検索データを生成して他のデータベース処理装置に送信する側のデータベース処理装置をいう。そして、受信側とは、他のデータベース処理装置からジョイン検索の中間結果データを受信してジョイン検索の検索結果データを生成する側をいう。
【００６５】
次に、抽出部２１６は、構造情報格納部２０１から、受信側のジョインキーのパス群を取得する（ステップＳ７０５）。例えば、抽出部２１６は、図６で示したクエリ式では、第２構造化文書データ格納部１２２のパス“/D＿pcs/pc”の下のパス群を、構造情報格納部２０１から取得する。また、抽出部２１６は、当該パス群の各ノードに設定されている“Unique  Node”も抽出しておく。
【００６６】
そして、抽出部２１６は、取得した送信側のジョインキーのパス群と、受信側のジョインキーのパス群とを、当該パス群に含まれている各ノードの名称で比較を行い、名称が一致する同一ノードを各パス群から抽出する（ステップＳ７０６）。例えば、送信側のジョインキーとして抽出されたパス群が“／ａ／ｂ”と“／ａ”であり、受信側のジョインキーとして抽出されたパス群が“／ｂ”と“／ｂ／ｃ”の場合、受信側のジョインキーのパス群のノードに名称“ａ”が存在せず、送信側のジョインキーのパス群のノードに名称“c”が存在しない。このため、抽出部２１６は、パス“／ａ”とパス“／ｂ／ｃ”を除外し、送信側のジョインキーのパス“／ａ／ｂ”と受信側のジョインキーのパス“／ｂ”のみを抽出する。
【００６７】
図６で示したクエリ式でジョイン検索を行う例では、抽出部２１６は、ステップＳ７０４で取得したパス“/T＿pcs/pc”の子関係にある“parts”と、ステップＳ７０５で取得したパス“/T＿pcs/pc”の子関係にある“parts”とが対応することを確認する。そして、クエリ式に従って、“part”以下のノードに対して、当該ノードの名称が受信側のジョインキー及び送信側のジョインキーに存在するか確認する。
【００６８】
また、抽出部２１６は、抽出したパス群から、検索対象であるデータベース処理装置を受信側及び送信側のうちいずれにするか決定しても良い。例えば抽出部２１６は、上述した対応関係で抽出したパス群に対して、当該パス群に含まれるノードのうち属性に“Uniqe Node”を多く含む方を受信側に設定する。これにより、送信側は各ノードがユニークか否かのチェックし、当該ノードがユニークな構造化文書が保持する情報に限り送信することになる。これにより、送信量を低減させることができる。なお、本処理手順においては、第１データベース処理装置１１０が受信側となり、第２データベース処理装置１２０が送信側となる。
【００６９】
次に、抽出部２１６は、ステップＳ７０６で抽出した受信側のジョインキーのパス群のみを含む検索用構造情報を生成する（ステップＳ７０７）。また、抽出部２１６は、第１データベース処理装置１１０及び第２データベース処理装置１２０に対する実行命令を生成する。抽出部２１６は、第２データベース処理装置１２０に格納された構造化文書の“/part/”以下のノードであって、第１データベース処理装置に格納された構造化文書の/part/”以下のノードと一致する同一ノードを抽出して、抽出した同一ノードを含む検索用構造情報を生成する。
【００７０】
図６で示したクエリ式の例では、図８に示すように、検索用構造情報には、ノード“cpu”と、ノード“memory”と、ノード“hdd”と、ノード“dvdd”とが、ノード“parts”の下に備えられている。これは、抽出部２１６が、図３で示したノード“T＿pcs/pc/parts”の子関係にあるノード群と、ノード“D＿pcs/pc/parts”の子関係にあるノード群とを比較して、両方に存在するノード群を、“D＿pcs/pc/parts”の下のノード（つまり受信側を意味する）から抽出したためである。また、生成した検索用構造情報には、抽出部２１６が抽出した“Unique Node”などの属性情報も含まれている。この“Unique Node”などの属性情報は、該当するノードと対応付けておく。
【００７１】
図７に戻り、送信部２１８は、生成した検索用構造情報と、実行命令と、ステップＳ７０６で抽出したパス群とを、ジョイン検索の送信側データベース処理装置（例えば第１データベース処理装置１１０）に送信する（ステップＳ７０８）。なお、これ以降は図示されていないが、マスタデータベース処理装置１００は、第１データベース処理装置１１０等の中間結果データ等の受信によりジョイン検索の進捗を管理する。
【００７２】
図６で示したクエリ式でジョイン検索を行う例では、送信部２１８は、実行命令と共に、第１構造化文書データ格納部１１２のパス“/T＿pcs/pc/parts”の下のパス群と、図８に示した検索用構造情報とを、第１データベース処理装置１１０に送信する。
【００７３】
次に、ジョイン検索の送信側である第１データベース処理装置１１０に処理が移る。第１データベース処理装置１１０の受信部２２４は、マスタデータベース処理装置１００から、検索用構造情報と、実行命令と、ステップＳ７０６で抽出したパス群とを受信する（ステップＳ７１１）。
【００７４】
図６で示したクエリ式でジョイン検索を行う例では、第１データベース処理装置１１０は、パス“/T＿pcs/pc/parts”の下のパス群と、図８に示した検索用構造情報と、ジョイン検索のための実行命令を受信する。
【００７５】
そして、検索処理部２２２は、受信した実行命令に従って処理を行う。本処理フローでは、検索処理部２２２は、ジョイン検索を行う旨の実行命令を受け付けているので、ジョイン検索のために第１構造化文書データ格納部１１２に格納された構造化文書の木構造を取得する（ステップＳ７１２）。なお、図示していないが、ステップＳ７１２〜ステップＳ７１６までの処理は、第１構造化文書データ格納部１１２に格納されている構造化文書の数だけ行うこととする。
【００７６】
そして、検索処理部２２２は、取得した当該木構造に基づいて、当該構造化文書に含まれるノードから子ノードに再帰的にトラバースし、トラバース先のノードの実体（当該ノードの名称、テキスト情報等も含む）を取得する（ステップＳ７１３）。
【００７７】
そして、検索処理部２２２は、取得したノードが、受信側の構造化文書の構造を示す検索用構造情報に合致するか否かを判断する（ステップＳ７１４）。そして、検索処理部２２２は、合致しないと判断した場合（ステップＳ７１４：Ｎｏ）、当該取得した各ノードの実体を破棄する。また、検索処理部２２２は、当該ノードの実体を破棄した時点で、当該ノードを含む構造化文書の実体化処理を中止する。
【００７８】
次に、検索処理部２２２による取得したデータが構造情報に適合するか否かを確認する処理について説明する。検索用構造情報がスキーマの場合、一般的なスキーマ・ヴァリデーション処理で適合するか否かの確認が可能であるため、説明を省略する。構造情報が構造テンプレートの場合、検索処理部２２２は、構造テンプレートでユニークなノードがあると判断した場合、当該ノードが２回出現した時点で取得したノードの実体を破棄する。このようにユニークなノードが２回出現した場合、当該ノードの情報は送信されないことになる。また、検索処理部２２２は、取得したノードが、構造テンプレートに含まれないノードと判断した場合、当該ノードを送信対象ではないと判断して、当該ノードの実体を破棄する。
【００７９】
そして、検索処理部２２２は、取得したノードが、検索用構造情報に含まれるノードに合致すると判断した場合（ステップＳ７１４：Ｙｅｓ）、ステップＳ７１２で取得した木構造に基づいて、子・兄弟関係のノード（要素）があるか否か判断する（ステップＳ７１５）。検索処理部２２２が子・兄弟関係のノードありと判断した場合（ステップＳ７１５：Ｙｅｓ）、当該子・兄弟関係のノードにトラバースして、当該ノードの実体の取得を行う（ステップＳ７１３）。
【００８０】
検索処理部２２２は、子・兄弟関係のノードがないと判断した場合（ステップＳ７１５：Ｎｏ）、トラバースを終了する。なお、検索処理部２２２は、トラバースを終了した後に、検索用構造情報に含まれているノードが、当該構造化文書に含まれていなかったと判断した場合、当該構造化文書から実体化したノードを破棄して、当該構造化文書に含まれている全てのノードを送信しないものと判断する。
【００８１】
図６で示したクエリ式でジョイン検索を行う場合について説明する。図９に示すように、検索処理部２２２は、受信した検索用構造情報と構造が完全一致するか否かを、第１データベース処理装置１１０に格納された各構造化文書に対して行う。まず、検索処理部２２２は、受信した実行命令に従って、受信した検索用構造情報から、パス“/T＿pcs/pc/parts/”に対応する４個のノードの名称を取得し、取得したノードの名称と、第１構造化文書データ格納部１１２に格納された各構造化文書の各ノードの名称とが完全一致するか否かを判断する。
【００８２】
詳細に例を示すと、まず、検索処理部２２２は、構造化文書１のノード“parts”から開始して、子のノード“cpu”、ノード“memory”へと順次トラバースして、各ノードの実体を取得する。そして、検索処理部２２２は、取得したノードの名称が、検索用構造情報に含まれているノードの名称と一致するか否かを判断する。そして、検索処理部２２２は、ノード“hddvdd”にトラバースしたときに当該ノードの名称が、検索用構造情報に含まれていないので、当該構造化文書は送信する対象とはならないものと判断して、当該構造化文書に対する処理を終了する。
【００８３】
次に、検索処理部２２２は、構造化文書２のノード“parts”から開始して、子のノード“cpu”、ノード“memory”へと順次トラバースして、各ノードの実体を取得する。そして、検索処理部２２２は、取得したノードの名称が、検索用構造情報に含まれているノードの名称と一致するか否かを判断する。そして、検索処理部２２２は、ノード“cdd”にトラバースしたときに当該ノードの名称が、検索用構造情報に含まれていないので、当該構造化文書は送信する対象とはならないものと判断して、当該構造化文書に対する処理を終了する。
【００８４】
次に、検索処理部２２２は、構造化文書３のノード“parts”から開始して、子のノード“cpu”へとトラバースして、ノードの実体を取得する。そして、検索処理部２２２は、次のトラバース先で、当該ノードの名称が“cpu”であることを認識する。この時点で、検索処理部２２２は、検索用構造情報に含まれているノード“cpu”の属性が“Unique  Node”のため完全一致しないと判断して、当該構造化文書に対する処理を終了する。このように、ジョイン検索を行う場合に、受信側がユニークなノードであるにもかかわらず、送信側で当該ノードが複数あると判断した場合に、検索処理部２２２は、完全一致しないもの判断して送信対象から除外する。これにより、送信するデータ量を低減させることができる。
【００８５】
次に、検索処理部２２２は、構造化文書４のノード“parts”から開始して、子のノード“cpu”、“memory”、“dvdd”、“hdd”とトラバースして全てノードの名称が一致するので、構造化文書４のノード“parts”以下のノードの実体（例えばノードの名称、及びテキスト情報）を送信対象と判断する。そして、送信部２２５が、これらのノードを第２データベース処理装置に送信することになる。
【００８６】
本実施の形態では上述した処理を行うことで、構造化文書４のノード“parts”以下のノードのデータのみ送信すればよいことになる。これに対して、従来通りの処理を行う場合、構造化文書１〜４の“parts”以下のノードのデータを全て送信する必要があったため、送信するデータ量を低減させることが可能になる。
【００８７】
また、図９に示したノードのうち着色された丸は、検索処理部２２２がトラバースを行った結果、実体が取得されたノードを示している。これに対して、従来通りの処理では、構造化文書１〜４の“parts”以下の全てに対してトラバースを行い、実体を取得していた。つまり、検索処理部２２２が、上述した処理により受信側と一致しないと判断された時点で、トラバースを中断するので、従来のトラバース回数より減少することになり、処理負担を軽減するとともに処理速度を向上させることが可能となる。
【００８８】
図７に戻り、送信部２２５が、実体化したノード、及びマスタデータベース処理装置１００から受信した実行命令を、第２データベース処理装置１２０に送信する（ステップＳ７１６）。なお、送信部２２５は、これらのデータも中間結果データとしてマスタデータベース処理装置１００に対して送信する。さらに、送信部２２５は、中間結果データとともに、検索処理部２２２により特定された構造化文書４を、マスタデータベース処理装置１００に送信する。これにより、マスタデータベース処理装置１００は、構造化文書４を用いて、検索結果リストを生成することができる。
【００８９】
なお、ハッシュ・ジョイン法を用いる場合、送信部２２５は、構造化文書４のノード“parts”以下のノードに対してのみハッシュ値を求めればよい。
【００９０】
次に、ジョイン検索の受信側である第２データベース処理装置１２０に処理が移る。第２データベース処理装置１２０の受信部２３４は、第１データベース処理装置１１０から、第１データベース処理装置１１０が実体化したノードと、マスタデータベース処理装置１００が生成した実行命令とステップＳ７０６で抽出したパス群とを受信する（ステップＳ７２１）。
【００９１】
そして、検索処理部２３２は、受信した実行命令に従って処理を行う。本処理フローでは、検索処理部２３２は、ジョイン検索を行う旨の実行命令を受け付けているので、ジョイン検索のために第２構造化文書データ格納部１２２に格納された構造化文書の木構造を取得する（ステップＳ７２２）。
【００９２】
そして、検索処理部２３２は、受信データと取得データを比較する（ステップＳ７２３）。つまり、検索処理部２２２は、受信した第１データベース処理装置１１０で実体化されたノードと、第２構造化文書データ格納部１２２に格納されていた構造化文書のノードとが一致するか否か判断する。そして、検索処理部２２２は、これらノードが一致しないと判断した場合、当該構造化文書は検索条件を満たさない構造化文書と判断して、次の構造化文書に処理を移し、当該構造化文書に含まれるノードとの比較を行う。そして、検索処理部２３２は、このような処理を順次行うことで完全一致する構造化文書を特定できる。なお、このようなノード間の比較手法は、周知の手法を問わず、あらゆる手法を用いても良い。
【００９３】
図６で示したクエリ式でジョイン検索を行う例では、検索処理部２２２は、受信データとして構造化文書４のノード“parts"の下に存在する全てのノードの名称及びテキスト情報を取得している。そして、検索処理部２２２は、当該構造化文書４のノード“parts"の下に存在するノードと名称及びテキスト情報が一致する構造化文書を検出する。
【００９４】
構造化文書４のノード“parts”の下のノード“cpu”のテキスト情報が“CompanyI”であり、ノード“memory”のテキスト情報が“CompanyT”であり、ノード“dvdd”のテキスト情報が“CompanyT”であり、ノード“hdd”のテキスト情報が“CompanyS”である。そこで、検索処理部２２２は、当該検索用構造情報と一致する構造化文書として、構造化文書５及び構造化文書６を検出する。
【００９５】
そして、送信部２４５は、検索処理部２３２の検索結果を示す検索結果データ（構造化文書５及び構造化文書６を含む）を、マスタデータベース処理装置１００に送信する（ステップＳ７２４）。これにより、ジョイン検索の処理が終了したことになる。
【００９６】
なお、上述した処理手順は、ジョイン検索の比較条件が、論理構造と値が完全一致する場合について説明した。比較条件が完全一致ではない場合（例えば不一致の場合）は、上述した処理手順の一部を変更することで実行することができる。
【００９７】
上述した処理手順により、構造化文書４とノード“parts”以下が一致する構造化文書として構造化文書５及び構造化文書６が特定できたことになる。
【００９８】
そして、マスタデータベース処理装置１００の生成部２２０は、第１データベース処理装置１１０から受信した中間結果データ、及び第２データベース処理装置１２０から受信した検索結果データ等に基づいて、検索結果リストを生成する。
【００９９】
図１０に示した検索結果リストでは、構造化文書４と構造化文書５、及び構造化文書４と構造化文書６の組み合わせが生成されているのが確認できる。
【０１００】
上述した実施形態によれば、論理構造を指定したジョイン演算において、ジョインキーの転送量を削減すると共に、検索時のトラバースが減少するのでノードの実体化処理を削減することが可能となった。このような処理手順は、特に構造化文書の論理構造が深い場合に特に有効である。
【０１０１】
また、本実施の形態では、上述したようにデータセットにスキーマが存在しない場合でも、構造テンプレートを利用することで、上述した効果を得ることができる。また、本実施の形態で行った処理手順は、また多くの場合、ハッシュ・ジョイン法をはじめとする、既存のジョイン方式と併用する事ができるので、いっそう転送量の削減等を行うことができる。
【０１０２】
図１１に示すように、マスタデータベース処理装置及び第１〜第３データベース処理装置は、ハードウェア構成として、上述したデータベース処理を行うデータベース処理プログラムなどが格納されているＲＯＭ１１０２と、ＲＯＭ１１０２内のプログラムに従って当該装置の各部を制御するＣＰＵ１１０１と、当該装置の制御に必要な種々のデータを記憶するＲＡＭ（Random Access Memory）１１０３と、上述した処理結果等を表示する表示装置１１０４と、ネットワークに接続する通信Ｉ／Ｆ１１０５と、ハードディスクなどの外部記憶装置１１０６と、各部を接続するバス１１０７と、を備えている。また、マスタデータベース処理装置１００、第１データベース処理装置１１０、第２データベース処理装置１２０及び第３データベース処理装置１３０は、上述した構成を備えた一般的なコンピュータに適用することができる。
【０１０３】
上述した実施の形態にかかるマスタデータベース処理装置１００、第１データベース処理装置１１０、第２データベース処理装置１２０及び第３データベース処理装置１３０で実行されるデータベース処理プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【０１０４】
この場合には、データベース処理プログラムは、マスタデータベース処理装置１００、第１データベース処理装置１１０、第２データベース処理装置１２０及び第３データベース処理装置１３０の各装置において上記記録媒体から読み出して実行することにより主記憶装置上にロードされ、上記ソフトウェア構成で説明した各部が主記憶装置上に生成されるようになっている。
【０１０５】
また、上述した実施の形態にかかるマスタデータベース処理装置１００、第１データベース処理装置１１０、第２データベース処理装置１２０及び第３データベース処理装置１３０で実行されるデータベース処理プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、上述した実施の形態にかかるマスタデータベース処理装置１００、第１データベース処理装置１１０、第２データベース処理装置１２０及び第３データベース処理装置１３０で実行されるデータベース処理プログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【０１０６】
また、本実施形態のインスタンス処理プログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【産業上の利用可能性】
【０１０７】
以上のように、本発明にかかる文書検索システム及び文書検索方法は、構造化文書を格納する複数のデータベースに対してジョイン検索を行う技術として有用である。
【図面の簡単な説明】
【０１０８】
【図１】本実施の形態にかかる分散構造化文書データベースシステムの構成を示すブロック図である。
【図２】本実施の形態にかかるマスタデータベース処理装置、第１データベース処理装置、第２データベース処理装置及び第３データベース処理装置の構成を示すブロック図である。
【図３】構造情報格納部に格納されたスキーマで定義された構造化文書の構造情報を示した模式図である。
【図４】第１構造化文書データ格納部に格納された構造化文書群の例を示した図である。
【図５】第２構造化文書データ格納部に格納された構造化文書群の例を示した図である。
【図６】分散構造化文書データベースシステムにおいて、ジョイン演算を含む検索のクエリ式を示した説明図である。
【図７】分散構造化文書データベースシステムで行われるジョイン検索の処理手順の例を示すフローチャートである。
【図８】抽出部が生成した検索用構造情報の例を示した模式図である。
【図９】第１データベース処理装置が検索用構造情報の構造と一致するノードを含む構造化文書を特定してから、第２データベース処理装置に当該構造化文書に含まれるノードのデータを送信するまでの例を示した模式図である。
【図１０】実行部が生成した検索結果リストの例を示した図である。
【図１１】マスタデータベース処理装置、第１データベース処理装置、第２データベース処理装置及び第３データベース処理装置のハードウェア構成を示す図である。
【符号の説明】
【０１０９】
１００  マスタデータベース処理装置
１１０  第１データベース処理装置
１１１  第１スレーブＤＢＭＳ
１１２  第１構造化文書データ格納部
１２０  第２データベース処理装置
１２１  第２スレーブＤＢＭＳ
１２２  第２構造化文書データ格納部
１３０  第３データベース処理装置
１３１  第３スレーブＤＢＭＳ
１３２  第３構造化文書データ格納部
２０１  構造情報格納部
２１１  外部通信処理部
２１２  検索処理部
２１３  内部通信処理部
２１４  データ格納処理部
２１５  クエリ解析部
２１６  抽出部
２１７  実行部
２１８  送信部
２１９  受信部
２２１  内部通信処理部
２２２  検索処理部
２２３  データ格納処理部
２２４  受信部
２２５  送信部
２３１  内部通信処理部
２３２  検索処理部
２３３  データ格納処理部
２３４  受信部
２３５  送信部
２４１  内部通信処理部
２４２  検索処理部
２４３  データ格納処理部
２４４  受信部
２４５  送信部
１１０１  ＣＰＵ
１１０２  ＲＯＭ
１１０３  ＲＡＭ
１１０４  表示装置
１１０５  通信Ｉ／Ｆ
１１０６  外部記憶装置
１１０７  バス
【図１】
2008210272.tif 000003
【図２】
2008210272.tif 000004
【図３】
2008210272.tif 000005
【図４】
2008210272.tif 000006
【図５】
2008210272.tif 000007
【図６】
2008210272.tif 000008
【図７】
2008210272.tif 000009
【図８】
2008210272.tif 000010
【図９】
2008210272.tif 000011
【図１０】
2008210272.tif 000012
【図１１】
2008210272.tif 000013