(57)【特許請求の範囲】
【請求項１】
１以上の各文書に１対１で対応し且つ該当文書の内容を含む行を有するマスタテーブルと、該マスタテーブルのいずれかの行に対応する文書を示す文書識別子と当該文書の別な内容とを含む行を有するサブテーブルとを備える文書検索装置の動作方法であって、
入力された文書から前記マスタテーブルに記憶すべき内容を取り出し該内容を含む行を前記マスタテーブルに生成し、当該文書から前記サブテーブルに記憶すべき内容を取り出し該内容と当該文書を示す文書識別子とを有する行を前記サブテーブルに生成する文書登録ステップと、
前記マスタテーブルから行集合を得る処理、前記サブテーブルから行集合を得る処理、行集合間の集合演算で行集合を得る処理、当該各処理を繰り返して行集合を得る処理の中から、入力された文書検索文で指定された処理を選択して行い、サブテーブルから得た行集合間の集合演算では、一方の行集合内の文書識別子の集合と、他方の行集合内の文書識別子の集合とで集合演算を行い、マスタテーブルから得た行集合とサブテーブルから得た行集合の間の集合演算では、マスタテーブルから得た行集合に対応する文書識別子の集合と、サブテーブルから得た行集合内の文書識別子の集合とで集合演算を行う文書検索ステップと
を備える文書検索装置の動作方法。
【請求項２】
請求項１記載の文書検索装置の動作方法をコンピュータに実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文書検索装置の動作方法およびこれをコンピュータに実行させるためのコンピュータプログラムに関するものである。
【背景技術】
【０００２】
ＸＭＬ文書のような構造化文書を格納して検索する方法としては、大きく分けると、構造情報を利用して汎用的な検索を実現する方式と、用途に特化して従来の記述の上で検索を実現するという２つの方針がある。前者の方針の例としては構造化データの構造定義（スキーマ）を参照してノードの位置を表すパスとノード間の関係を用いて文書のデータを平坦化しリレーショナルデータベースなどに格納して検索を行うものがある（特許文献１）。
【０００３】
そのほかの方法としては平坦化を行わず構造を直接記憶装置に格納するものがある。
【０００４】
後者の方針は具体的には既知の構造のＸＭＬ文書で検索に用いる情報のみをリレーショナルデータベースに格納してリレーショナル演算の結果ＸＭＬデータを単なる文字列として取り出すという方法がとられることが多い。
【０００５】
また別の観点では近年大容量のメモリを搭載したコンピュータが安価になっていることと、要求される情報処理の速度の飛躍的な高まりに対応するために比較的大容量の情報をすべてメモリ上で処理するということも行われるようになってきている。東京証券取引所のアローヘッドなどは最近の代表例となる。
【０００６】
さらにはすべてのデータを識別子だけから取り出すという操作に特化することでデータの取得の所要時間を劇的に低下させる仕組み（キーバリューストア／ＫＶＳ）も普及してきている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特許第３５８３６８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
前述の一番目の方針は汎用性を目指しており、最終的にはＸｐａｔｈやＸｑｕｅｒｙ  などの構造化文書における検索言語を完全にカバーすることを目標としているため一般的に処理が複雑で性能の限界値はそれほど高くはない。二番目の方針に関してもリレーショナルモデルをベースとしているため再帰的な繰り返し構造を持つＸＭＬデータを格納するために元々単一の文書中のデータを一旦複数のテーブルに分割して登録し、検索の際には各テーブルの検索結果の集合演算に際して文書ＩＤに関する結合演算（ＪＯＩＮ）を行う必要があり、処理量が非常に多くなることが避けられない。
【０００９】
ＸＭＬベースで情報の受け渡しを行うシステムやサービスに対してデータや検索のための付加情報をすべてメモリの上で扱うオンメモリ化のアプローチをとることのみでもそれなりに高速化は望めるが、それでも前者の方針に基づく方式ではそれほど複雑な検索条件などを利用しない用途にはそもそも処理量が大きく、後者の方針に関してはメモリ上のみで動作するリレーショナルデータベースシステムは少ない。
【００１０】
リレーショナルデータベースでの結合演算の処理に広く使われている方式にはネステッドループ・ジョイン、ソートマージ・ジョイン、ハッシュ・ジョインがあるが、オンメモリを前提とした場合でも文字列キーによる結合ではネステッドループ・ジョインでは  Ｏ（ｎ＾２）回の文字列比較が、ソートマージ・ジョインではソートにクイックソートを使ったものとすれば平均Ｏ（ｎ  ｌｏｇ  ｎ），  最大Ｏ（ｎ＾２）の文字列比較とマージ処理でＯ（ｎ）回の文字列比較が必要で、ハッシュ・ジョインではシノニムの程度によるがＯ（ｎ）回程度の文字列比較が必要となる。またいずれの場合もソートのためのカラムデータの取得と変換のステップが必要となる。
【００１１】
文書の構成があらかじめ決まっていて、検索のパターンの複雑度がそれほど高くない用途に対しては上記の方法が実現しうる機能はいずれも過大なものとなる。
【００１２】
本発明は、上記の課題に鑑みてなされたものであり、その目的とするところは、文書を高速に検索できる文書検索装置の動作方法を提供することにある。
【課題を解決するための手段】
【００１３】
上記の課題を解決するために、本発明に係る文書検索装置の動作方法は、１以上の各文書に１対１で対応し且つ該当文書の内容を含む行を有するマスタテーブルと、該マスタテーブルのいずれかの行に対応する文書を示す文書識別子と当該文書の別な内容とを含む行を有するサブテーブルとを備える文書検索装置の動作方法であって、入力された文書から前記マスタテーブルに記憶すべき内容を取り出し該内容を含む行を前記マスタテーブルに生成し、当該文書から前記サブテーブルに記憶すべき内容を取り出し該内容と当該文書を示す文書識別子とを有する行を前記サブテーブルに生成する文書登録ステップと、前記マスタテーブルから行集合を得る処理、前記サブテーブルから行集合を得る処理、行集合間の集合演算で行集合を得る処理、当該各処理を繰り返して行集合を得る処理の中から、入力された文書検索文で指定された処理を選択して行い、サブテーブルから得た行集合間の集合演算では、一方の行集合内の文書識別子の集合と、他方の行集合内の文書識別子の集合とで集合演算を行い、マスタテーブルから得た行集合とサブテーブルから得た行集合の間の集合演算では、マスタテーブルから得た行集合に対応する文書識別子の集合と、サブテーブルから得た行集合内の文書識別子の集合とで集合演算を行う文書検索ステップとを備える。
【発明の効果】
【００１４】
本発明によれば、サブテーブルから得た行に含まれる文書識別子を用いて集合演算を行うので、サブテーブルから得た行に含まれる文書の内容を用いて集合演算を行う必要がなく、よって、文書を高速に検索することができる。
【図面の簡単な説明】
【００１５】
【図１】本実施の形態に係る文書検索装置の構成図である。
【図２】構造化文書の構成と内容の例を示す図である。
【図３】構造化文書の構成を示すスキーマの例を示す図である。
【図４】テーブルの構成と内容の例を示す図である。
【図５】テーブルの別な構成と内容の例を示す図である。
【図６】文書登録部１３の動作を示すフローチャートである。
【図７】文書検索部１４の動作を示すフローチャートである。
【図８】文書検索部１４の詳細な動作を示すフローチャートである。
【図９】集合演算についての第１例を示す図である。
【図１０】集合演算についての第２例を示す図である。
【図１１】集合演算についての第３例を示す図である。
【図１２】集合演算についての第４例を示す図である。
【図１３】文書検索文の例を示す図である。
【図１４】検索実行ツリーの例を示す図である。
【発明を実施するための形態】
【００１６】
以下、本発明の実施の形態について図面を参照して説明する。
【００１７】
図１は、本実施の形態に係る文書検索装置の構成図である。
【００１８】
文書検索装置１は、構造化文書を登録し、検索端末２から入力される文書検索文を満たす構造化文書を検索し、検索結果を検索端末２に出力するものである。
【００１９】
文書検索装置１は、１つのマスタテーブル１１と、１以上のサブテーブル１２と、マスタテーブル１１とサブテーブル１２に構造化文書を登録する文書登録部１３と、マスタテーブル１１とサブテーブル１２から構造化文書を検索する文書検索部１４とを備える。
【００２０】
文書登録部１３は、外部から構造化文書を取得し、構造化文書から必要な情報を取り出すパース処理部１３１と、取りだした情報をマスタテーブル１１とサブテーブル１２に記憶させるデータ登録部１３２とを備える。
【００２１】
文書検索部１４は、文書検索文の構造を解析する構文解析部１４１と、解析により得た検索ツリーにより検索を実行する検索実行部１４２と、得られた検索結果を検索端末２に出力する結果返却部１４３を備える。
【００２２】
マスタテーブル１１とサブテーブル１２は、記憶装置に設けられる。
【００２３】
図２は、構造化文書の構成と内容の例を示す図である。
【００２４】
図２（ａ）に示す構造化文書Ａは、該当の構造化文書の英語の題名「Ａ  Ｓｅａｒｃｈ  ｍｅｔｈｏｄ  ｆｏｒ  ｓｔｒｕｃｔｕｒｅｄ  ｄｏｃｕｍｅｎｔｓ」および英語を示す情報「ｅｎ」の組、該当の構造化文書の日本語の題名「構造化文書の検索方法」および日本語を示す情報「ｊａ」の組、該構造化文書の制作年「２０１０」、該構造化文書のジャンルを示す情報「ｉｎｆｏｒｍａｔｉｏｎ  ｐｒｏｃｅｓｓｉｎｇ」を含む。
【００２５】
図２（ｂ）に示す構造化文書Ｂは、該当の構造化文書の英語の題名「Ｓｅｍｉ−ｓｔｒｕｃｔｕｒｅｄ  ｄａｔａ」および英語を示す情報「ｅｎ」の組、該当の構造化文書の日本語の題名「半構造データ」および日本語を示す情報「ｊａ」の組、該構造化文書の制作年「２００１」、該構造化文書のジャンルを示す情報「ｉｎｆｏｒｍａｔｉｏｎ  ｐｒｏｃｅｓｓｉｎｇ」を含む。
【００２６】
図３は、構造化文書の構成を示すスキーマの例を示す図である。
【００２７】
スキーマには、例えば、“ｔｉｔｌｅ”、“ｙｅａｒ”、“ｇｅｎｒｅ”を含む各行があり、これにより、構造化文書が題名、制作年、ジャンルを示す情報を含むべき旨が示されいる。
【００２８】
図４は、テーブルの構成と内容の例を示す図である。
【００２９】
マスタテーブル１１は、ここでは、複数の行を有する。各行は、該当の構造化文書に１対１で対応し、該当の構造化文書の制作年、該当の構造化文書のジャンルを示す情報を含む。
【００３０】
サブテーブル１２の先頭行は、マスタテーブル１１の先頭行に対応する構造化文書を示す文書識別子「１」、当該構造化文書の日本語の題名および日本語を示す情報「ｊａ」を含む。また、２番目の行は、同じ文書識別子「１」、当該構造化文書の英語の題名および英語を示す情報「ｅｎ」を含む。
【００３１】
３番目の行は、マスタテーブル１１の２番目の行に対応する構造化文書を示す文書識別子「２」、当該構造化文書の日本語の題名および日本語を示す情報「ｊａ」を含む。また、３番目の行は、同じ文書識別子「２」、当該構造化文書の英語の題名および英語を示す情報「ｅｎ」を含む。
【００３２】
５番目の行は、マスタテーブル１１の３番目の行に対応する構造化文書を示す文書識別子「３」、当該構造化文書の日本語の題名および日本語を示す情報「ｊａ」を含む。
【００３３】
６番目の行は、マスタテーブル１１の４番目の行に対応する構造化文書を示す文書識別子「４」、当該構造化文書の日本語の題名および日本語を示す情報「ｊａ」を含む。また、７番目の行は、同じ文書識別子「４」、当該構造化文書の英語の題名および英語を示す情報「ｅｎ」を含む。また、８番目の行は、同じ文書識別子「４」、当該構造化文書のドイツ語の題名およびドイツ語を示す情報「ｄｅ」を含む。
【００３４】
９番目の行は、マスタテーブル１１の５番目の行に対応する構造化文書を示す文書識別子「５」、当該構造化文書の日本語の題名および日本語を示す情報「ｊａ」を含む。
【００３５】
１０番目の行は、マスタテーブル１１の６番目の行に対応する構造化文書を示す文書識別子「６」、当該構造化文書の日本語の題名および日本語を示す情報「ｊａ」を含む。
【００３６】
文書識別子はＣＰＵの１命令で直接扱えるものが望ましく、特にマスタテーブル１１がメモリにある場合は、マスタテーブル１１の行のデータが格納されているメモリアドレスを文書識別子としてもよい。
【００３７】
なお、図４の構成に代えて、図５のようにしてもよい。
【００３８】
つまり、マスタテーブル１１の各行には、該当の構造化文書の制作年を含ませ、図４のサブテーブル１２とは別に、さらにサブテーブル１２を設け、その各行には、マスタテーブル１１の行に対応する構造化文書を示す文書識別子、当該構造化文書のジャンルを示す情報を含ませてもよい。
【００３９】
（文書検索装置１の動作）
次に、文書検索装置１の動作を説明する。まず、文書登録部１３の動作を説明する。
【００４０】
図６は、文書登録部１３の動作を示すフローチャートである。
【００４１】
パース処理部１３１は、外部から対象の構造化文書を取得し、構造化文書を要素に分解する（Ｓ１）。次に、データ登録部１３２が、マスタテーブル１１に登録すべき要素を含む行をマスタテーブル１１に生成する（Ｓ２）。次に、データ登録部１３２が、当該行に対応する構造化文書つまり取得した構造化文書を示す文書識別子を取得し（Ｓ３）、当該文書識別子と、サブテーブル１２に登録すべき要素とを含む行をサブテーブル１２に生成する（Ｓ４）。
【００４２】
文書登録部１３は、他の構造化文書についても同様な処理を行う。こうして、マスタテーブル１１とサブテーブル１２の行が増加していく。
【００４３】
図３に示したスキーマを用いて、図４のマスタテーブル１１、サブテーブル１２を構築する際には、パース処理部１３１は、外部から対象の構造化文書を取得し、スキーマに基づいて、当該構造化文書から日本語の題名、英語の題名、制作年、ジャンルを取り出す（Ｓ１）。
【００４４】
次に、データ登録部１３２が、取りだした制作年、ジャンルを含む行をマスタテーブル１１に生成する（Ｓ２）。また、データ登録部１３２は、当該行に対応する構造化文書つまり取得した構造化文書を示す文書識別子を取得し（Ｓ３）、当該文書識別子と、取り出した日本語の題名および情報「ｊａ」の組を含む行をサブテーブル１２に生成する（Ｓ４）。また、データ登録部１３２は、当該文書識別子と、取り出した英語の題名および情報「ｅｎ」の組を含む行をサブテーブル１２に生成する（Ｓ４）。
【００４５】
次に、文書検索部１４の動作を説明する。
【００４６】
図７は、文書検索部１４の動作を示すフローチャートである。
【００４７】
構文解析部１４１は、検索端末２から文書検索文を取得し、構文解析を行い、検索実行ツリーに変換する（Ｓ１１）。次に、検索実行部１４２は、検索実行ツリーのルートノードから再帰的にノードを処理する（Ｓ１２）。次に、検索実行部１４２は、処理結果を結果返却部１４３を介して、検索端末２に出力し（Ｓ１３）、処理を終える。
【００４８】
図８は、図７のステップＳ１２における処理のフローチャートである。
【００４９】
検索実行部１４２は、まず、ルートノードからノードの種別を判定する（Ｓ１２１）。検索実行部１４２は、そのノードが検索ノードなら、検索を実行し、結果を出力し（Ｓ１２３）、処理を終わる。
【００５０】
検索実行部１４２は、そのノードが集合演算ノードなら、左辺、右辺の各ノード処理を行う（Ｓ１２５、Ｓ１２７）。検索実行部１４２は、このノード処理については、図８のフローチャートに従って再帰的に処理を行う。
【００５１】
次に、検索実行部１４２は、ステップＳ１２５で得られた集合と、ステップＳ１２７で得られた集合と、に対し、ステップＳ１２１で判定したノードに対応する集合演算を行い、結果を出力し（Ｓ１２９）、処理を終わる。
【００５２】
［集合演算の例（１）］
ここで、図８のステップＳ１２５、Ｓ１２７のそれぞれで、マスタテーブル１１の検索の結果、または、再帰処理の結果として、文書識別子の集合が得られた場合のステップＳ１２９での集合演算の例を説明する。
【００５３】
図９に示すように、ステップＳ１２５で、例えば、文書識別子の集合「１，３，４，９，１３，１６，３２，３８，…」が得られ、ステップＳ１２７で、例えば、文書識別子の集合「２，４，５，３２，５８，６２…」が得られる。
【００５４】
検索実行部１４２は、ステップＳ１２９の集合演算が論理積演算なら、これらの文書識別子の集合の論理積演算の結果、文書識別子の集合「４、３２、…」を出力する。
【００５５】
なお、図示省略するが、図８のステップＳ１２５、Ｓ１２７のそれぞれで、同一のサブテーブル１２の検索の結果、または、再帰処理の結果として、当該サブテーブルの行を示す識別子（行識別子という）の集合が得られた場合、検索実行部１４２は、ステップＳ１２９の集合演算が論理積演算なら、図９に示す文書識別子の集合の論理積演算と同様に、行識別子の集合の論理積演算を行い、結果（行識別子の集合）を出力する。
【００５６】
［集合演算の例（２）］
次に、図８のステップＳ１２５、Ｓ１２７のそれぞれで、異なるサブテーブル１２の検索の結果、または、再帰処理の結果として、当該サブテーブルの行を示す行識別子が得られた場合のステップＳ１２９での集合演算の例を説明する。
【００５７】
図１０に示すように、ステップＳ１２５で、例えば、行識別子の集合「６１，２８，９４，２９，８６，３３，３９，８９，…」が得られ、ステップＳ１２７で、行識別子の集合「６１，２８，９４，２７，８６，３３，３９，９０，…」が得られる。
【００５８】
検索実行部１４２は、まず、ステップＳ１２５の検索で得た行識別子を有する行内の文書識別子の集合「２，４，５，３２，５８，６２，…」を得て、また、ステップＳ１２７の検索で得た行識別子を有する行内の文書識別子の集合「２，４，６，３２，５８，６１，…」を得る。
【００５９】
検索実行部１４２は、ステップＳ１２９の集合演算が論理積演算なら、これらの文書識別子の集合の論理積演算の結果、文書識別子の集合「２，４，３２，５８，…」を得る。
【００６０】
そして、検索実行部１４２は、ステップＳ１２９では、最終的に文書識別子の集合「２，４，３２，５８，…」を有する当該サブテーブル内の行識別子の集合「６１，２８，９４，８６，３３，３９，…」を出力する。
【００６１】
［集合演算の例（３）］
次に、図８のステップＳ１２５で、マスタテーブル１１の検索の結果、または、再帰処理の結果として、文書識別子の集合が得られ、ステップＳ１２７でサブテーブル１２の検索の結果、または、再帰処理の結果として、当該サブテーブルの行識別子が得られた場合のステップＳ１２９での集合演算の例を説明する。
【００６２】
図１１に示すように、ステップＳ１２５で、例えば、文書識別子の集合「１，３，４，９，１３，１６，３２，３８，…」が得られ、ステップＳ１２７で、例えば、サブテーブルの行識別子の集合「６１，２８，９４，２７，８６，３３，３９，９０，…」が得られる。
【００６３】
検索実行部１４２は、まず、ステップＳ１２７の検索で得た行識別子を有する行内の文書識別子の集合「２，４，６，３２，５８，６１，…」を得る。
【００６４】
検索実行部１４２は、ステップＳ１２９の集合演算が論理積演算なら、これらの文書識別子の集合の論理積演算の結果、ステップＳ１２９では、最終的に文書識別子の集合「４，３２，…」を出力する。
【００６５】
［集合演算の例（４）］
次に、図８のステップＳ１２５で、サブテーブル１２の検索の結果、または、再帰処理の結果として、当該サブテーブルの行識別子が得られ、ステップＳ１２７で、マスタテーブル１１の検索の結果、または、再帰処理の結果として、文書識別子の集合が得らた場合のステップＳ１２９での集合演算の例を説明する。
【００６６】
図１２に示すように、ステップＳ１２５で、例えば、行識別子の集合「６１，２８，９４，２９，８６，３３，３９，８９，…」が得られ、ステップＳ１２７で、文書識別子の集合「２，４，６，３２，５８，６１，…」が得られる。
【００６７】
検索実行部１４２は、まず、ステップＳ１２５の検索で得た行識別子を有する行内の文書識別子の集合「２，４，５，３２，５８，６２，…」を得る。
【００６８】
検索実行部１４２は、ステップＳ１２９の集合演算が論理積演算なら、これらの文書識別子の集合の論理積演算の結果、文書識別子の集合「２，４，３２，５８，…」を得る。
【００６９】
そして、検索実行部１４２は、ステップＳ１２９では、最終的に文書識別子の集合「２，４，３２，５８，…」を有する当該サブテーブル内の行識別子の集合「６１，２８，９４，８６，３３，３９，…」を出力する。
【００７０】
図１３は、文書検索文の例を示す図である。
【００７１】
この文書検索文は、「題名に「ｓｔｒｕｃｔｕｒｅｄ」を含み、当該題名の言語である英語を示す情報「ｅｎ」を含み、制作年が「２０１０」より後である構造化文書を検索せよ」との意味を有する。
【００７２】
図１４は、検索実行ツリーの例を示す図である。
【００７３】
図１３の文書検索文から変換された検索実行ツリーは、「題名の言語である英語を示す情報「ｅｎ」を含む」という条件に該当する検索ノードＮ１と、「題名が「ｓｔｒｕｃｔｕｒｅｄ」を含む」という条件に該当する検索ノードＮ２と、検索ノードＮ１、Ｎ２に接続されて「検索ノードＮ１、Ｎ２の検索結果の論理積（ＡＮＤ）」を求める集合演算を示す集合演算ノードＮ３と、「制作年が「２０１０」より後である」という条件に該当する検索ノードＮ４と、集合演算ノードＮ３と検索ノードＮ４とに接続されて「集合演算ノードＮ３の演算結果と検索ノードＮ４の検索結果の論理積（ＡＮＤ）」を求める集合演算を示す集合演算ノードＮ５（ルートノード）とを有する。
【００７４】
集合演算ノードＮ５に対し、検索ノードＮ４が左辺、集合演算ノードＮ３が右辺となっている。また、集合演算ノードＮ３に対し、検索ノードＮ１が左辺、検索ノードＮ２が右辺となっている。
【００７５】
図１４の検索実行ツリーによる検索は、図７、図８のフローチャート、図９…図１２の例にしたがい、以下のように実行される。
【００７６】
まず、ルートノードの左辺に該当する検索ノードＮ４の条件に合致するマスタテーブル１１の行の集合が検索され、対応する文書識別子の集合が取得される。
【００７７】
次に、ルートノードの右辺に該当するノードが集合演算ノードＮ３なので、集合演算ノードＮ３の左辺に該当する検索ノードＮ１の条件に合致するサブテーブル１２の行の集合が検索され、対応する行識別子の集合が取得される。
【００７８】
次に、集合演算ノードＮ３の右辺に該当する検索ノードＮ２の条件に合致するマスタテーブル１１の行の集合が検索され、対応する文書識別子の集合が取得される。
【００７９】
次に、集合演算ノードＮ３に該当する演算において、まず、検索ノードＮ１の検索で得られた行識別子の集合に対応する文書識別子の集合が得られ、この文書識別子の集合と検索ノードＮ２の検索で得られた文書識別子の集合の論理積（文書識別子の集合）が得られ、この文書識別子の集合に対応する行識別子の集合が得られる。
【００８０】
次に、集合演算ノードＮ５に該当する演算において、まず、集合演算ノードＮ３の演算で得られた行識別子の集合に対応する文書識別子の集合が得られ、この文書識別子の集合と検索ノードＮ４の検索で得られた文書識別子の集合の論理積（文書識別子の集合）が得られる。
【００８１】
以上説明したように、本実施の形態によれば、文書検索装置は、１以上の各文書に１対１で対応し且つ該当文書の内容を含む行を有するマスタテーブル１１と、該マスタテーブル１１のいずれかの行に対応する文書を示す文書識別子と当該文書の別な内容とを含む行を有するサブテーブルとを備え、入力された文書からマスタテーブル１１に記憶すべき内容を取り出し該内容を含む行をマスタテーブルに生成し、当該文書からサブテーブルに記憶すべき内容を取り出し該内容と当該文書を示す文書識別子とを有する行をサブテーブルに生成し（文書登録ステップ）、マスタテーブルから行集合を得る処理、サブテーブルから行集合を得る処理、行集合間の集合演算で行集合を得る処理、当該各処理を繰り返して行集合を得る処理の中から、入力された文書検索文で指定された処理を選択して行い、サブテーブルから得た行集合間の集合演算では、一方の行集合内の文書識別子の集合と、他方の行集合内の文書識別子の集合とで集合演算を行い、マスタテーブルから得た行集合とサブテーブルから得た行集合の間の集合演算では、マスタテーブルから得た行集合に対応する文書識別子の集合と、サブテーブルから得た行集合内の文書識別子の集合とで集合演算を行う（文書検索ステップ）ので、つまり、サブテーブルから得た行に含まれる文書識別子を用いて集合演算を行うので、サブテーブルから得た行に含まれる文書の内容を用いて集合演算を行う必要がなく、よって、文書を高速に検索することができる。
【００８２】
すなわち、マスタテーブルとサブテーブルは文書識別子によって予め結合されている状態となっているので、集合演算が高速に実行でき、構造化文書を高速に検索することができる。
【００８３】
なお、本実施の形態に係る文書検索装置の動作方法をコンピュータを実行させるためのコンピュータプログラムは、半導体メモリ、磁気ディスク、光ディスク、光磁気ディスク、磁気テープなどのコンピュータ読み取り可能な記録媒体に記録でき、また、インターネットなどの通信網を介して伝送させて、広く流通させることができる。
【符号の説明】
【００８４】
１…文書検索装置
２…検索端末
１１…マスタテーブル
１２…サブテーブル
１３…文書登録部
１４…文書検索部
１３１…パース処理部
１３２…データ登録部
１４１…構文解析部
１４２…検索実行部
１４３…結果返却部
【図１】
0005374456.tif 000002
【図２】
0005374456.tif 000003
【図３】
0005374456.tif 000004
【図４】
0005374456.tif 000005
【図５】
0005374456.tif 000006
【図６】
0005374456.tif 000007
【図７】
0005374456.tif 000008
【図８】
0005374456.tif 000009
【図９】
0005374456.tif 000010
【図１０】
0005374456.tif 000011
【図１１】
0005374456.tif 000012
【図１２】
0005374456.tif 000013
【図１３】
0005374456.tif 000014
【図１４】
0005374456.tif 000015