(57)【要約】【課題】文書構造を有する構造化文書に対して、複数構造指定検索を行うための必要最小限のまとめインデクスを抽出する手段を提供すること。【解決手段】文書構造を有する構造化文書を格納し、当該構造化文書を検索するためのインデクスを生成するコンピュータが、構造化文書を解析して文書構造を抽出するステップと、抽出した文書構造を正規化することで、階層構造を持った複数の要素から構成される構造インデクスを生成するステップと、生成した構造インデクスにおける各要素の出現数を抽出するステップと、抽出した出現数と所定の第１の閾値とを比較することで、構造インデクスに基づいてインデクスを生成する要素を抽出するステップとを含んで実行するインデクス生成方法。【選択図】図１
2008129842.tif 000002
【特許請求の範囲】
【請求項１】
文書構造を有する構造化文書を格納し、当該構造化文書を検索するためのインデクスを生成するコンピュータにおけるインデクス生成方法であって、
前記コンピュータが、
前記構造化文書を解析して文書構造を抽出するステップと、
前記抽出した文書構造を正規化することで、階層構造を持った複数の要素から構成される構造インデクスを生成するステップと、
前記生成した構造インデクスにおける各要素の出現数を抽出するステップと、
前記抽出した出現数と所定の第１の閾値とを比較することで、前記構造インデクスに基づいてインデクスを生成する要素を抽出するステップとを含んで実行すること、
を特徴とするインデクス生成方法。
【請求項２】
前記各要素の出現数を抽出するステップでは、前記構造インデクスの末端の要素を対象とすること、
を特徴とする請求項１に記載のインデクス生成方法。
【請求項３】
前記抽出した要素の前記構造インデクスにおけるパスをインデクスとして生成するステップをさらに含んで実行すること、
を特徴とする請求項１又は請求項２に記載のインデクス生成方法。
【請求項４】
前記抽出した要素を含んだ表示画面を出力するステップをさらに含んで実行すること、
を特徴とする請求項１又は請求項２に記載のインデクス生成方法。
【請求項５】
前記表示画面を出力するステップの後に、
前記インデクスの生成を命令する情報を取得した場合に、前記抽出した要素の前記構造インデクスにおけるパスをインデクスとして生成するステップをさらに含んで実行すること、
を特徴とする請求項４に記載のインデクス生成方法。
【請求項６】
前記構造インデクスにおいて階層構造を構成する複数の要素からなる要素集合の前記構造インデクスにおける出現数を抽出するステップと、
前記要素集合の出現数と所定の第１の閾値とを比較することで、前記前記構造インデクスに基づいてインデクスを生成する要素集合をさらに抽出するステップとをさらに含んで実行すること、
を特徴とする請求項１又は請求項２に記載のインデクス生成方法。
【請求項７】
前記構造インデクスにおいて階層構造を構成する複数の要素からなる要素集合の前記構造化文書における出現数を抽出するステップと、
前記要素集合の出現数と所定の第２の閾値とを比較することで、前記前記構造インデクスに基づいてインデクスを生成する要素集合をさらに抽出するステップとをさらに含んで実行すること、
を特徴とする請求項１又は請求項２に記載のインデクス生成方法。
【請求項８】
前記抽出した要素集合に包含される各要素の前記構造化文書における出現数を抽出するステップと、
前記抽出した前記要素集合に包含される各要素の出現数の和に対する、前記要素集合に包含される要素の出現数の割合が、所定の第３の閾値以上である前記要素集合に包含される要素を、インデクスを生成しない要素として抽出するステップとをさらに含んで実行すること、
を特徴とする請求項６又は請求項７に記載のインデクス生成方法。
【請求項９】
前記抽出した所定の第３の閾値以上である前記要素集合に包含される要素を含んだ表示画面を出力するステップを含んで実行すること、
を特徴とする請求項７に記載のインデクス生成方法。
【請求項１０】
文書構造を有する構造化文書に対するインデクスを生成するインデクス生成装置であって、
前記構造化文書を取得して、前記インデクス生成装置の記憶装置に格納する構造化文書登録部と、
前記格納した構造化文書を解析して文書構造を抽出する文書構造抽出処理部と、
前記抽出した文書構造を正規化して、階層構造を持った複数の要素から構成される構造インデクスを生成する構造索引生成処理部と、
前記生成した構造インデクスにおける各要素の出現数を抽出する要素出現管理処理部と、
前記抽出した出現数と所定の第１の閾値とを比較することで、前記構造インデクスに基づいてインデクスを生成する要素を抽出する索引定義生成処理部とを備えること、
を特徴とするインデクス生成装置。
【請求項１１】
前記要素出現管理処理部は、
前記構造インデクスの末端の要素を対象として、出現数を抽出すること、
を特徴とする請求項１０に記載のインデクス生成装置。
【請求項１２】
前記抽出した要素の前記構造インデクスにおけるパスをインデクスとして生成する値生成処理部をさらに備えること、
を特徴とする請求項１０又は請求項１１に記載のインデクス生成装置。
【請求項１３】
前記値生成処理部は、
前記抽出した要素を含んだ表示画面を出力し、前記インデクスの生成を命令する情報を取得した場合にのみ、前記抽出した要素の前記構造インデクスにおけるパスをインデクスとして生成すること、
を特徴とする請求項１２に記載のインデクス生成装置。
【請求項１４】
前記要素出現管理処理部は、
前記構造インデクスにおいて階層構造を構成する複数の要素からなる要素集合の前記構造化文書における出現数をさらに抽出し、
前記索引定義生成処理部は、
前記要素集合の出現数と所定の第２の閾値とを比較することで、前記前記構造インデクスに基づいてインデクスを生成する要素集合をさらに抽出し、
前記値生成処理部は、
前記抽出した要素集合の前記構造インデクスにおけるパスをインデクスとしてさらに生成すること、
を特徴とする請求項１２に記載のインデクス生成装置。
【請求項１５】
前記索引定義生成処理部は、
前記要素集合に包含される各要素の前記構造化文書における出現数を抽出し、前記要素集合に包含される各要素の出現数の和に対する、前記要素集合に包含される要素の出現数の割合が、所定の第３の閾値以上である前記要素集合に包含される要素を抽出し、
前記値生成処理部は、
前記抽出した所定の第３の閾値以上である前記要素集合に包含される要素の前記構造インデクスにおけるパスは、インデクスとして生成しないこと、
を特徴とする請求項１４に記載のインデクス生成装置。
【請求項１６】
文書構造を有する構造化文書を格納したコンピュータに、請求項１ないし請求項８のいずれか１項に記載のインデクス生成方法を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の構造化文書を格納する構造化文書データベースを対象として、与えられた任意の条件を満たす構造化文書を検索するためのインデクスを生成するインデクス生成方法、インデクス生成装置及びそのプログラムに関する。
【背景技術】
【０００２】
近年、ＸＭＬ（Extensible Markup Language）で記述された文書（以降、ＸＭＬ文書）に代表される、論理構造を有する構造化文書が普及している。一般に、このような構造化文書は、ディスク装置に配置されたデータベースに蓄積される。
【０００３】
まず、構造化文書の代表例としてＸＭＬ文書について説明し、用語を定義する。ＸＭＬ文書を記述するＸＭＬとは、タグ（例えば、「＜価格＞」や「＜／価格＞」）と呼ばれる特定の文字列を、元となるテキストに埋め込んでいく記述法である。タグには開始タグ（例えば、「＜価格＞」）と終了タグ（例えば、「＜／価格＞」）がある。タグは要素名を記号で囲い込んだ表記であり、開始タグと終了タグは対応して用いられる。例えば、開始タグ「＜価格＞」と終了タグ「＜／価格＞」は対応しており、その要素名は「価格」である。
【０００４】
また、ＸＭＬ文書は、タグによって階層的な構造を持つこともできる。
さらに、ＸＭＬ文書は、開始タグと終了タグの間に要素と呼ばれるデータをもつ（例えば、「＜価格＞１００＜／価格＞」における要素は「１００」）。このような記述を行うことで、ＸＭＬ文書は単体でデータとその意味を定義できる。
【０００５】
また、ＸＭＬでは、タグに属性を付加することもできる。属性とは属性名と値のペアである。例えば、「＜価格  単位＝“円”＞１００＜／価格＞」における属性名は「単位」であり、値は「円」である。
【０００６】
論理構造を有する構造化文書は、ＸＭＬ文書以外にも存在する。例えば、代表的な構造化文書に、ＳＧＭＬ（Standard Generalized Markup Language）がある。ＳＧＭＬでは、構造化文書内の要素名やデータ型といった論理構造に関する情報である構造定義（ＤＴＤ：Document Type Definition）を必要とする。一方、ＸＭＬは構造定義が必須ではない点が特徴である。
【０００７】
このため、ＸＭＬを蓄積するデータベース（以降、ＸＭＬ＿ＤＢ）は、蓄積する構造化文書の構造定義がない状態でも使用できることが求められる。
また、リレーショナルデータベースにおける検索の検索条件を表現する構文としてＳＱＬがあるように、ＸＭＬ＿ＤＢにおける構造指定検索の検索条件を表現する構文としてＸＰａｔｈ（‘http://www.w3.org/TR/xpath’参照）や、Ｘｑｕｅｒｙ（‘http://www.w3.org/TR/xquery’参照）があり、Ｗ３Ｃ（World Wide Web Consortium）で標準化が進められている。
【０００８】
ＸＭＬ＿ＤＢ上に蓄積した多数の構造化文書を利用するために、従来、前記の構文（ＸＰａｔｈ又はＸｑｕｅｒｙ）を用いて、ユーザが指定する検索条件に合致した文書あるいは要素名、要素、属性名、値などを検索する構造化文書検索システムが多く開発されている。このようなＸＭＬ＿ＤＢに対する構造化文書検索システムでは、要素名を指定した検索（以降、構造指定検索）を高速で行うために、要素名を意識したインデクスを作ることが一般的である。
【０００９】
ここで、データベースにおけるインデクスは、一般にインデクスを作成する対象を、データベース管理者が指定して生成する。しかし、蓄積するＸＭＬ文書の論理構造を記述する構造定義がないＸＭＬ＿ＤＢにおいては、どのような論理構造を持つＸＭＬ文書が蓄積されるのかを知ることはできない。
すなわち、ＸＭＬ＿ＤＢに蓄積されるＸＭＬ文書が、どんな要素で、どんなデータ型の要素を含んでいるのか事前に知ることができないため、どの要素にどのデータ型でインデクスを生成するかということをデータベース管理者が予め指定することは難しい。
【００１０】
前記のように、ＸＭＬ＿ＤＢにおいてはデータベース管理者が、生成するインデクスを事前に指定することは難しい。そのため、例えば、ＸＭＬ＿ＤＢに蓄積された全ＸＭＬ文書に含まれる要素名・属性名に対するインデクス（以降、構造インデクス）を生成し、構造インデクス中のすべての要素名・属性名に対応したインデクスを漏れなく生成することを前提として、各要素や値によって生成するインデクスのデータ型を決定する方法（以降、フルオートインデクス方式）が、特許文献１に開示されている。
【００１１】
また、インデクスのデータ型をデータベース管理者が指定せずに済む別の方法として、要素名や属性名を識別することが可能な全文検索インデクスを生成する方法（以降、構造指定対応全文検索インデクス方式）が、特許文献２に開示されている。
【特許文献１】特開２００６−１８５８４号公報（請求項１）
【特許文献２】特開平１０−２４０７５２号公報（段落００２３〜００２８、図３）
【発明の開示】
【発明が解決しようとする課題】
【００１２】
特許文献１に開示されたフルオートインデクス方式では、蓄積された全ＸＭＬ文書に含まれる要素名・属性名に対する構造インデクスを生成するので、任意の要素名を指定した構造指定検索時に、指定した要素名に対するインデクスを使用しての検索実行が可能であるため、検索レスポンス性能が高い。例えば、「／書籍情報／雑誌／価格＝１００」のような構造指定検索を実行する場合、「／書籍情報／雑誌／価格」に対するインデクスを使用して検索を実行することができる。
【００１３】
しかし、構造指定検索における構造への条件は、単一の構造への指定をする場合だけではない。例えば、ＸＭＬ＿ＤＢの構造指定検索の検索条件を表現するＸＰａｔｈでは、ｄｅｓｃｅｎｄａｎｔ軸を用いた指定によって、すべての要素名の中から条件を満たす要素名を複数指定することができる。例えば、「／／価格」と言う表記は、「／書籍情報／雑誌／価格」だけではなく、「／書籍情報／中古／雑誌／価格」、「／書籍情報／新古／雑誌／価格」もまとめて指定できると規定されている。
【００１４】
前記のＸＰａｔｈのｄｅｓｃｅｎｄａｎｔ軸による複数の要素名を指定した構造指定検索（以降、複数構造指定検索）による検索処理においては、フルオートインデクス方式では要素名ごとに存在するインデクスを用いて検索処理を実行する。このため、インデクスごとに生成された検索結果のマージ処理等が必要となり、検索レスポンス性能が低下するという問題点がある。
【００１５】
これに対し、特許文献２に開示された構造指定対応全文検索インデクス方式では、指定された要素名に関わらず、常にＸＭＬ文書全体に対する１つのインデクスを用いるため、インデクスごとに生成される検索結果のマージ処理は必要なく、複数構造指定検索であっても、任意の要素名を指定した構造指定検索と同等の検索レスポンスが実現できる。
しかし、構造指定対応全文検索インデクス方式では、指定された要素名に関わらず、常にＸＭＬ文書全体に対するインデクスを用いるため、指定した要素名以外のデータも処理対象となる。したがって、任意の要素名を指定した構造指定検索の検索レスポンス性能が低いため、複数構造指定検索でもそれと同程度の検索レスポンス性能しか期待できない。
【００１６】
すなわち、複数構造指定検索の場合、フルオートインデクス方式で生成したインデクスによる検索処理や、構造指定対応全文検索インデクス方式で生成したインデクスによる検索処理では、検索レスポンス性能が上がらないという問題点がある。
【００１７】
前記の問題点を解決するためには、単純には、フルオートインデクス方式の考え方に基づいて、全要素名に対して要素名ごとのインデクスをすべて生成する方法論を用いて検索結果をマージする必要のある複数のインデクスをまとめたインデクス（以降、まとめインデクス）を予め生成し、このまとめインデクスを使用して検索する方法が考えられる。
【００１８】
しかし、全要素名に対して要素名ごとのインデクスをすべて生成する方法論を用いて、予めインデクスを生成しようとした場合、すべての構造の組合せに対してインデクスを生成することになり、生成するインデクスの数が膨大になる。このため、インデクスとして管理する情報が膨大となる。また、構造化文書を登録し、インデクスを更新するためにかかる時間も膨大となる。
【００１９】
したがって本発明が解決しようとする課題は、文書構造を有する構造化文書に対して、複数構造指定検索を行うための必要最小限のまとめインデクスを抽出する手段を提供することである。
【課題を解決するための手段】
【００２０】
前記の課題を解決するためになされた本発明は、文書構造を有する構造化文書を格納し、当該構造化文書を検索するためのインデクスを生成するコンピュータにおけるインデクス生成方法であって、このコンピュータが、構造化文書を解析して文書構造を抽出するステップと、抽出した文書構造を正規化することで、階層構造を持った複数の要素から構成される構造インデクスを生成するステップと、生成した構造インデクスにおける各要素の出現数を抽出するステップと、抽出した出現数と所定の第１の閾値とを比較することで、構造インデクスに基づいてインデクスを生成する要素を抽出するステップとを含んで実行することを特徴としている。
なお、本発明の他の態様は、後記する実施形態の中で詳しく説明する。
【発明の効果】
【００２１】
本発明によれば、構造化文書検索におけるインデクス生成の判断に関して、文書構造をまとめた構造インデクスを作成し、この構造インデクスに含まれる要素のうち、出現頻度の高い要素に対してのみインデクスを抽出することで、必要最小限のインデクスを生成することができ、このインデクスを用いることで複数構造指定検索の検索レスポンス性能を改善することができる。
【発明を実施するための最良の形態】
【００２２】
［第１実施形態］
以下に、本発明の第１実施形態として、複数の要素名から構成される構造化文書に対して、必要最小限のまとめインデクスを生成することにより、インデクスにより複数構造指定検索の検索レスポンス性能を改善するインデクス生成装置について説明する。
【００２３】
本実施形態は、階層関係は異なるものの、要素名が同一である末端の枝が、多く存在する要素名（例えば、後記する図３及び図４に示したＸＭＬ文書中の要素名「価格」などに該当する。要素名「価格」は、階層関係を考慮すれば「／書籍情報／雑誌／価格」、「／書籍情報／中古／書籍／価格」、そして「／書籍情報／新古／雑誌／価格」が２箇所の３種類、４つのパス名が当てはまる。）について、この要素名に対応するパス名をまとめたインデクスを生成するものである。
【００２４】
（インデクス生成装置）
図１は、本実施形態のインデクス生成装置の構成例を示す図面である。図１に示すように、本実施形態のインデクス生成装置は、処理の結果を表示する表示装置１０１０と、登録対象文書が入力されるリムーバブルメディアのインタフェースや、登録処置の命令を入力するキーボード、マウス等で具現される入力装置１０２０と、後記する各プログラムを実行するＣＰＵ（Central Processing Unit）１０３０と、ＲＡＭ（Random Access Memory）等で具現される主記憶装置１０４０と、ハードディスクドライブ等で具現される２次記憶装置１０５０とをバス１０６０を介して接続して構成され、一般的なコンピュータを用いて具現される。
【００２５】
インデクス生成装置の主記憶装置１０４０には、インデクス生成装置全体を管理するソフトウェアであるシステム制御プログラム１０７０と、構造化文書登録処理を実行する登録制御プログラム１０８０とが展開され、各プログラムが使用する一時記憶領域である作業領域１０９０が確保されている。
【００２６】
さらに、登録制御プログラム１０８０は、主記憶装置１０４０に展開された構造化文書登録プログラム１１００、文書構造抽出プログラム１１１０、構造索引生成プログラム１１２０、要素出現数管理プログラム１１３０、索引定義生成プログラム１１４０、及び値索引生成プログラム１１５０の各プログラムをサブルーチンとして適宜呼び出す。
なお、本実施形態において、構造索引及び構造インデクスとは、ＸＰａｔｈなどで表現される各構造と、構造ごとのインデクスの対応関係を示す情報を表す。この詳細については後記する。また、値索引及び値インデクスとは、構造毎に存在するＢ−ｔｒｅｅやｎ−ｇｒａｍなどのデータベースで通常使われるインデクスの集合を表す。
【００２７】
ここで、登録制御プログラム１０８０が呼び出す各プログラムの概要を説明する。
まず、構造化文書登録プログラム１１００は、登録処理対象の構造化文書を取得し、文書識別番号を割り当て、格納する処理部を具現するプログラムである。
また、文書構造抽出プログラム１１１０は、登録対象の構造化文書を入力とし、入力された文書のテキストデータの先頭から任意の文字列をマッチングすることで任意の文字列の存在を判定（以降、テキストスキャン）し、タグを検知することで構造化文書の論理構造を解析し、構造化文書の構造解析木を生成する処理部を具現するプログラムである。
【００２８】
また、構造索引生成プログラム１１２０は、構造解析木を入力として、それを正規化して同一の階層構造を持つ枝を１つにまとめ、既に構造インデクスがあれば、正規化した構造解析木にあり、かつ、構造インデクスにない枝を構造インデクスに追加し、あるいは構造インデクスがなければ正規化した構造解析木を構造インデクスとして格納する処理部を具現するプログラムである。
また、要素出現数管理プログラム１１３０は、この構造インデクスにおいてパスに該当する要素を取得し、出現位置として格納するとともに、その総数を出現数として格納する処理をパスごとに実行する処理部を具現するプログラムである。
【００２９】
また、索引定義生成プログラム１１４０は、パスごとに、その出現数と閾値を比較し、出現数が閾値を超えたパスは、このパスの全要素名をまとめた、まとめインデクスの定義として格納する処理部を具現するプログラムである。
さらに、値索引生成プログラム１１５０は、このまとめインデクスの定義に基づき、まとめインデクスを生成する処理部を具現するプログラムである。
【００３０】
コンピュータをインデクス生成装置として機能させるために主記憶装置１０４０に展開された各プログラムは、ＣＤ−ＲＯＭ等の記録媒体に記録されており、これらがハードディスクドライブ等の２次記憶装置１０５０に格納された後、主記憶装置１０４０に展開されて実行されるものとする。
なお、各プログラムを記録する媒体は、ＣＤ−ＲＯＭ以外にも、フラッシュメモリ等のリムーバブルメディアを用いることもでき、図示しない外部のサーバ装置等からネットワークを介して伝送された各プログラムを主記憶装置１０４０に展開して実行する構成としてもよい。
【００３１】
次に、２次記憶装置１０５０には、パス出現位置管理情報１１６０と、値インデクス定義管理情報１１７０と、閾値管理情報１１８０と、文書番号管理情報１１９０と、要素番号管理情報１２００と、構造インデクス１２１０とが確保されている。
また、値インデクス格納領域１２２０と、登録文書格納領域１２３０が確保されている。
さらに、登録対象文書１２４０を格納する領域が確保されている。
なお、本実施形態ではこれらの格納領域を、２次記憶装置１０５０に確保したが、主記憶装置１０４０や他の外部に設置された記憶装置に確保する構成としてもよい。また、２次記憶装置１０５０に格納された各情報の詳しい説明は後記する。また、閾値を入力及び参照する表示画面を作成し、データベース管理者が所定の閾値を入力する構成としてもよい。
【００３２】
（インデクス生成装置における処理）
次に、前記の構成を有するインデクス生成装置において実行される処理について説明する。
まず、インデクス生成装置が起動すると、システム制御プログラム１０７０が、２次記憶装置１０５０から主記憶装置１０４０に読み込まれる。そして、入力装置１０２０から登録対象文書１２４０を読み込み、２次記憶装置１０５０の所定の領域に格納する。
【００３３】
次に、入力装置１０２０から入力される処理開始命令により、システム制御プログラム１０７０は、登録制御プログラム１０８０を２次記憶装置１０５０から主記憶装置１０４０に読み込んで起動し、構造化文書登録処理を開始する。
ここで、図２は登録制御プログラム１０８０における構造化文書登録処理を示すＰＡＤ（Problem Analysis Diagram）の例である。図２に示したＰＡＤを参照しつつ、構造化文書登録処理の手順を説明する（適宜、図１参照）。
【００３４】
はじめに、登録制御プログラム１０８０は、２次記憶装置１０５０に格納されているすべての登録対象文書１２４０について、ステップＳ１００２０からステップＳ１００９０までに示す一連の登録対象文書格納処理を繰り返し実行する（ステップＳ１００１０）。
【００３５】
以下、登録対象文書格納処理について説明する。
まず、登録制御プログラム１０８０は、構造化文書登録プログラム１１００を起動し、処理中の登録対象文書に識別番号を割り当て、インデクス生成装置に格納する（ステップＳ１００２０）。なお、構造化文書登録プログラム１１００の詳細な処理内容は後記する（図５参照）。
そして、文書構造抽出プログラム１１１０を起動し、処理中の登録対象文書の論理構造を解析し、登録対象文書の構造解析木を生成する（ステップＳ１００３０）。なお、文書構造抽出プログラム１１１０の詳細な処理内容は後記する（図６参照）。
【００３６】
次に、登録制御プログラム１０８０は、構造索引生成プログラム１１２０を起動し、構造解析木を入力として、構造インデクス１２１０とパス出現位置管理情報１１６０を更新する（ステップＳ１００４０）。なお、構造索引生成プログラム１１２０の詳細な処理内容は後記する（図９参照）。また、構造インデクス１２１０とパス出現位置管理情報１１６０の詳細な説明は後記する。
そして、登録制御プログラム１０８０は、ステップＳ１００４０において構造インデクス１２１０が更新されたか否かを判定する（ステップＳ１００５０）。ここで、構造インデクス１２１０が更新されている場合は（ステップＳ１００５０において‘Ｙｅｓ’）、構造インデクス１２１０においてステップＳ１００４０にて更新された全要素について、ステップＳ１００７０からステップＳ１００９０までに示す一連の値インデクス定義作成処理を繰り返し実行する（ステップＳ１００６０）。以下、ステップＳ１００７０からステップＳ１００９０までの処理を説明する。
【００３７】
まず、登録制御プログラム１０８０は、要素出現数管理プログラム１１３０を起動し、処理対象要素の出現位置と出現数とを取得して、パス出現位置管理情報１１６０を更新する（ステップＳ１００７０）。なお、要素出現数管理プログラム１１３０の詳細な処理内容は後記する（図１２参照）。
次に、ステップＳ１００７０において取得した処理対象要素の出現数が、閾値管理情報１１８０に格納された所定の閾値より大きいか否かを判定し（ステップＳ１００８０）、大きい場合は（ステップＳ１００８０で‘Ｙｅｓ’）、索引定義生成プログラム１１４０を起動し、値インデクス定義管理情報１１７０を更新する（ステップＳ１００９０）。なお、索引定義生成プログラム１１４０の詳細な処理内容（図１４参照）、及び値インデクス定義管理情報１１７０の詳細な説明は後記する。
【００３８】
次に、ステップＳ１００１０における、全登録対象文書についてのインデクス生成装置への構造化文書登録処理を終了すると、登録制御プログラム１０８０は、値索引生成プログラム１１５０を起動し、値インデクス定義管理情報１１７０に基づき、値インデクスを生成し、値インデクス格納領域１２２０に格納し（ステップＳ１０１００）、構造化文書登録処理は終了する。なお、値索引生成プログラム１１５０の詳細な処理内容は後記する（図１６参照）。
【００３９】
次に、図２に示した登録制御プログラム１０８０の各手順において実行される各プログラムの詳細な処理内容について説明する。
（構造化文書登録プログラム）
構造化文書登録プログラム１１００は、登録制御プログラム１０８０から起動され、２次記憶装置１０５０に格納されている登録対象文書１２４０の１つを処理対象とし、指定された処理対象である構造化文書を、登録文書格納領域１２３０に格納する構造化文書格納実施処理を実行する。
【００４０】
指定される処理対象である構造化文書の例を、図３及び図４を用いて説明する。
処理対象である構造化文書は、論理構造を持ち、論理構造は階層的に挿入されたタグで表現されている。図３及び図４に示した構造化文書であるＸＭＬ文書の論理構造における最上位の要素名は「書籍情報」である。図３に示したＸＭＬ文書では要素名「書籍情報」２０１０の下層に要素名「雑誌」２０２０、要素名「中古」２０３０、要素名「新古」２０４０の３つの要素名が存在する。さらに、要素名「雑誌」２０２０の下層には要素名「価格」２０５０があり、その要素は「５６０円」である。要素名「新古」２０４０の下には要素名「雑誌」２０６０があり、その下層には要素名「価格」２０７０（その要素は「３６０円」）と要素名「価格」２０８０（その要素は「３９０円」）の２つがある。
【００４１】
一方、図４に示したＸＭＬ文書では要素名「書籍情報」７０１０の下層に要素名「雑誌」７０２０、要素名「中古」７０３０の２つの要素が存在する。要素名「雑誌」７０２０の下には要素名「価格」７０４０（その要素は「７８０円」）がある。図４の例では、要素名「書籍情報」７０１０の下層に、要素名「新古」はない。
【００４２】
次に、構造化文書登録プログラム１１００における構造化文書格納実施処理を、図５に示すＰＡＤを用いて説明する（適宜、図１参照）。
まず、構造化文書登録プログラム１１００は、登録制御プログラム１０８０から指定された２次記憶装置１０５０に格納されている登録対象文書１２４０（例えば、図３に示したＸＭＬ文書）を、作業領域１０９０に読み込む（ステップＳ１１０１０）。
【００４３】
次に、構造化文書登録プログラム１１００は、２次記憶装置１０５０に格納されている文書番号管理情報１１９０を作業領域１０９０に読み込み、処理中の登録対象文書１２４０に割り当てた文書番号として対応付ける（ステップＳ１１０２０）。
ここで、文書番号管理情報１１９０は、インデクス生成装置において一意の値（例えば、整数からなる）である。読み込んだ値は、以降、処理中の登録対象文書１２４０に割り当てた文書番号として使用される。
【００４４】
次に、ステップＳ１１０２０において文書番号を割り当てた登録対象文書１２４０を、２次記憶装置１０５０上の登録文書格納領域１２３０に格納すると共に、作業領域１０９０上の文書番号管理情報１１９０から読み込んだ値を、インデクス生成装置において新たな一意の値に更新し、２次記憶装置１０５０上に文書番号管理情報１１９０として格納し（ステップＳ１１０３０）、構造化文書格納実施処理を終了する。
なお、新たな一意の値としては、例えば、元の値が整数であれば、その整数に１を加えた値である。また、登録対象文書１２４０が複数ある場合は、登録対象文書１２４０ごとに、前記の構造化文書格納実施処理を実行する。
【００４５】
（文書構造抽出プログラム）
文書構造抽出プログラム１１１０は、登録制御プログラム１０８０から起動され、登録対象文書に対する論理構造解析処理を実行する。文書構造抽出プログラム１１１０における論理構造解析処理を、図６に示すＰＡＤを用いて説明する（適宜、図１参照）。
【００４６】
まず、文書構造抽出プログラム１１１０は、作業領域１０９０に構造化文書登録プログラム１１００が読み込んだ文書番号を割り当てた登録対象文書を、先頭からテキストスキャンし、最上位の要素を表す開始タグを検出し、作業領域１０９０に検出した要素の要素名をルートノードの要素名とした構造解析木を生成する（ステップＳ１２０１０）。
このとき、構造解析木のルートノードを、現在の処理ノードとする。また、登録対象文書の最上位の要素を現す開始タグの位置をテキストスキャンの現在位置とする。
【００４７】
ここで、図３に示したＸＭＬ文書から生成された構造解析木を示す図７と、図４に示したＸＭＬ文書から生成された構造解析木を示す図８とを用いて、構造解析木について説明する。図７及び図８に示すように、構造解析木は、丸で表現された要素と直線で表現された枝からなる。
【００４８】
前記のように、図７は、図３に示したＸＭＬ文書から生成した構造解析木を表す。最上位要素は要素名「書籍情報」３０１０であることを表している。ここで、「／書籍情報」のような要素名とスラッシュを組み合わせた論理構造を表す表記をパス名と呼ぶ。パス名の最左端のスラッシュは、そのスラッシュの右側の要素名がルートノードの要素名であることを表す。それ以外のスラッシュは、スラッシュの左側の要素名を持つ要素の下層に、スラッシュの右側の要素名の要素が存在することを表す。
【００４９】
パス名「／書籍情報」３０１０から枝で結ばれた要素名「雑誌」３０２０、要素名「中古」３０３０、要素名「新古」３０４０が、「／書籍情報」の下位構造であることを表している。すなわち、それぞれパス名「／書籍情報／雑誌」３０２０、パス名「／書籍情報／中古」３０３０、パス名「／書籍情報／新古」３０４０と表記できる。
この構造解析木は、さらに、パス名「／書籍情報／雑誌／価格」３０５０、パス名「／書籍情報／中古／書籍」３０６０、パス名「／書籍情報／中古／書籍／価格」３０７０、パス名「／書籍情報／新古／雑誌」３０８０、パス名「／書籍情報／新古／雑誌／価格」３０９０、パス名「／書籍情報／新古／雑誌／価格」３１００を有する。
【００５０】
また、前記のように、図８は、図４に示したＸＭＬ文書から生成した構造解析木を表す。最上位要素は要素名「書籍情報」８０１０であることを表している。
以下、それぞれ、パス名「／書籍情報／雑誌」８０２０、パス名「／書籍情報／雑誌／価格」８０３０、パス名「／書籍情報／中古」８０４０、パス名「／書籍情報／中古／雑誌」８０５０、パス名「／書籍情報／中古／雑誌／価格」８０６０の要素を有している。
【００５１】
図６に戻って、文書構造抽出プログラム１１１０は、登録対象文書について最上位の要素を表す終了タグを検出するまで、ステップＳ１２０３０からステップＳ１２０７０までの一連のタグ検出処理を繰り返す（ステップＳ１２０２０）。
以下、ステップＳ１２０３０からステップＳ１２０７０までのタグ検出処理を説明する。
【００５２】
まず、文書構造抽出プログラム１１１０は、次のタグを検出するまで登録対象文書をテキストスキャンし、タグを検出した位置を現在位置に設定する（ステップＳ１２０３０）。そして、ステップＳ１２０３０において検出したタグの種類を判定する（ステップＳ１２０４０）。
【００５３】
ここで、検出したタグが、開始タグであれば、構造解析木の現在の処理ノードの下位に枝を伸ばし、検出した開始タグの要素名と同じ要素名を持つ要素を生成すると共に、現在の処理ノードを、新たに生成した要素にする（ステップＳ１２０５０）。
また、検出したタグが、最上位以外の終了タグであれば、現在の処理ノードを構造解析木の現在の処理ノードの上位の要素にする（ステップＳ１２０６０）。
さらに、検出したタグが、最上位の終了タグであれば、タグ検出処理を終了し（ステップＳ１２０７０）、構造解析木の生成は完成し、文書構造抽出プログラム１１１０の論理構造解析処理は終了する。
【００５４】
（構造索引生成プログラム）
構造索引生成プログラム１１２０は、登録制御プログラム１０８０から起動され、構造インデクス作成処理を実施する。構造索引生成プログラム１１２０における構造インデクス作成処理を、図９に示すＰＡＤを用いて説明する（適宜、図１参照）。
【００５５】
まず、構造索引生成プログラム１１２０は、２次記憶装置１０５０上に、既に構造インデクス１２１０があるか否かを判定する（ステップＳ１３０１０）。
ここで、２次記憶装置１０５０上に構造インデクス１２１０がある場合、２次記憶装置１０５０上にある構造インデクス１２１０を作業領域１０９０に読み込む（ステップＳ１３０２０）。
一方、２次記憶装置１０５０上に構造インデクスがない場合、文書構造抽出プログラム１１１０が生成した構造解析木の最上位の要素の要素名を、最上位の要素名とした構造インデクス１２１０を新たに作業領域１０９０に生成する（ステップＳ１３０３０）。
【００５６】
次に、構造索引生成プログラム１１２０は、文書構造抽出プログラム１１１０が生成した構造解析木が持つ要素名を、枝で結ばれた階層関係に基づき再帰的に調査し、全要素のパス名を抽出する（ステップＳ１３０４０）。
そして、ステップＳ１３０４０で抽出した全要素のパス名について、ステップＳ１３０６０及びステップＳ１３０７０の構造インデクス更新処理を繰り返す（ステップＳ１３０５０）。以下、構造インデクス更新処理について説明する。
【００５７】
まず、構造索引生成プログラム１１２０は、処理中のパス名について、それを満たすパス名が構造インデクス１２１０に存在するか否かを判定する（ステップＳ１３０６０）。ここで、存在しない場合は、２次記憶装置１０５０上の要素番号管理情報１２００を作業領域１０９０に要素番号として読み込み、ステップＳ１３０６０で判定に使用したパス名を満たす新たな要素を、要素番号を割り振った上で構造インデクス１２１０に追加し、構造インデクス１２１０を更新するとともに、要素番号管理情報１２００を更新して２次記憶装置１０５０上に格納する（ステップＳ１３０７０）。
なお、要素番号管理情報１２００は、インデクス生成装置において一意の値である。
【００５８】
そして、全要素のパス名についての構造インデクス更新処理が終了すると、構造インデクス１２１０に基づいて後記するパス出現位置管理情報１１６０を作成して、構造インデクス１２１０と併せて２次記憶装置１０５０に格納し（ステップＳ１３０８０）、構造インデクス作成処理は終了する。
【００５９】
ここで、図１０を用いて構造インデクスについて説明する。図１０は、図７に示した構造解析木から、ステップＳ１３０５０からステップＳ１３０７０の処理によって生成した構造インデクスの例である。
図７に示した構造解析木は、パス名で正規化されるため、パス名「／書籍情報／新古／雑誌／価格」の要素は、図１０のように１つの要素４０１０にまとめられたことがわかる。
そして、次の処理として、図１０に示した構造インデクスを読み込み、図８に示した構造解析木で更新すると、図１１の構造インデクスとなる。この処理により、図１０に示した構造インデクスと比べて、図１１に示した構造インデクスでは、パス名「／書籍情報／中古／雑誌／価格」の要素９０１０が新たに追加されたことがわかる。
【００６０】
（要素出現数管理プログラム）
要素出現数管理プログラム１１３０は、登録制御プログラム１０８０から起動され、要素出現数管理処理を実施する。要素出現数管理プログラム１１３０における要素出現数管理処理を、図１２に示すＰＡＤを用いて説明する（適宜、図１参照）。
【００６１】
まず、要素出現数管理プログラム１１３０は、２次記憶装置１０５０上の構造インデクス１２１０を、作業領域１０９０に読み込む（ステップＳ１４０１０）。
次に、読み込んだ構造インデクス１２１０から、すべての末端要素名を抽出する（ステップＳ１４０１２）。なお、末端要素名とは、構造インデクス１２１０に含まれる全要素の中で、より下層に要素を持たない要素の要素名である。
そして、２次記憶装置１０５０上のパス出現位置管理情報１１６０を作業領域１０９０に読み込む（ステップＳ１４０１５）。
【００６２】
ここで、図１３は、図１０に示した構造インデクスが生成された際に、同じ生成処理内で生成されたパス出現位置管理情報１１６０を示すテーブルである。図１３を用いてパス出現位置管理情報１１６０について説明する（適宜、図１０参照）。
図１３において、パス条件５０１０は、ＸＰａｔｈの表記法で記述された条件であり、例えば、パス条件「／／価格」とは、すべての要素の子孫にある要素名が「価格」である要素を表し、図１０に示した構造インデクスにおいて、このパス条件を満たす要素は、パス名「／書籍情報／雑誌／価格」４０２０、パス名「／書籍情報／中古／書籍／価格」４０３０、パス名「／書籍情報／新古／雑誌／価格」４０１０であるため、出現位置５０２０の項目に、それぞれの要素の要素番号を示す「２，５，１０」が入力されていることがわかる。
また、出現数５０３０の項目には、同一レコードのパス条件５０１０を満たす、構造インデクスの要素の数が入力され、前記の例では「３」が入力さていることがわかる。
【００６３】
次に、要素出現数管理プログラム１１３０は、ステップＳ１４０１２で抽出したすべての末端要素名について、ステップＳ１４０３０からステップＳ１４０５０までの末端要素追加処理を繰り返す（ステップＳ１４０２０）。以下、末端要素追加処理について説明する。
【００６４】
まず、要素出現数管理プログラム１１３０は、処理中の末端要素名と同一の末端要素を持つパスすべてを満たすパス条件を生成する（ステップＳ１４０３０）。
次に、ステップＳ１４０３０で生成したパス条件５０１０と同一のパス条件を持つレコードが、２次記憶装置１０５０上のパス出現位置管理情報１１６０に存在するか否かを判定する（ステップＳ１４０４０）。ここで、存在しなければ、ステップＳ１４０３０で生成したパス条件を、パス出現位置管理情報１１６０に、新たなレコードのパス条件として追加する（ステップＳ１４０５０）。
【００６５】
次に、要素出現数管理プログラム１１３０は、全末端要素名について、末端要素追加処理が終了すると、パス出現位置管理情報１１６０から、すべてのパス条件５０１０を抽出する（ステップＳ１４０６０）。
そして、ステップＳ１４０６０で抽出したすべてのパス条件５０１０について、後記するステップＳ１４０８０の要素出現数更新処理を繰り返す（ステップＳ１４０７０）。
このステップＳ１４０８０における要素出現数更新処理では、２次記憶装置１０５０上の構造インデクス１２１０から、処理中のパス条件５０１０を満たす要素の要素番号を抽出し、処理中のパス条件５０１０に対応する出現位置５０２０として、パス出現位置管理情報１１６０に格納する。また、処理中のパス条件５０１０を満たす要素の数を出現数５０３０としてパス出現位置管理情報１１６０に格納する。
【００６６】
そして、要素出現数管理プログラム１１３０は、パス出現位置管理情報１１６０を２次記憶装置１０５０に格納し（ステップＳ１４０９０）、要素出現数管理処理を終了する。
【００６７】
（索引定義生成プログラム）
索引定義生成プログラム１１４０は、登録制御プログラム１０８０から起動され、値インデクス定義生成処理を実施する。索引定義生成プログラム１１４０における値インデクス定義生成処理を、図１４に示すＰＡＤを用いて説明する（適宜、図１参照）。
【００６８】
まず、索引定義生成プログラム１１４０は、２次記憶装置１０５０上のパス出現位置管理情報１１６０（図１３参照）を作業領域１０９０に読み込む（ステップＳ１５０１０）。次に、パス出現位置管理情報１１６０から、すべてのパス条件５０１０を抽出する（ステップＳ１５０２０）。
【００６９】
次に、索引定義生成プログラム１１４０は、２次記憶装置１０５０上の閾値管理情報１１８０を作業領域１０９０に、値インデクス生成実施閾値として読み込む（ステップＳ１５０２５）。そして、２次記憶装置１０５０上の値インデクス定義管理情報１１７０を、作業領域１０９０に読み込む（ステップＳ１５０２７）。
【００７０】
ここで、図１５は、値インデクス定義管理情報１１７０を示すテーブルである。図１５を用いて、値インデクス定義管理情報１１７０について説明する。
図１５に示した値インデクス定義管理情報１１７０において、インデキシング対象パス６０１０は、まとめインデクスを作成する際にインデキシングの対象となる１つ以上の要素のパス名を表す項目である。
また、作成状況６０２０は、このインデクス生成装置において、現在の作成状況に対応するまとめインデクスのステータスが、「作成済み」であるか否かを表す。
なお、本実施形態ではフルオートインデクス方式を前提としているため、インデキシング対象パス６０１０が単一のパス名からなるインデクスは、すべて作成することとしている。
【００７１】
次に、索引定義生成プログラム１１４０は、ステップＳ１５０２０で抽出したすべてのパス条件５０１０について、ステップＳ１５０４０からステップＳ１５０７０までの値インデクス作成判断処理を繰り返す（ステップＳ１５０３０）。以下、この値インデクス作成判断処理について説明する。
【００７２】
まず、処理中のパス条件５０１０に対応する出現数５０３０と値インデクス生成実施閾値を比較し、出現数５０３０の方が大きいか否かを判定する（ステップＳ１５０４０）。ここで、出現数５０３０の方が大きい場合は、処理中のパス条件５０１０に対応する出現位置５０２０の要素番号を持つ要素を表すパス名を生成し、複数の要素番号がある場合、その数だけのパス名群を生成する（ステップＳ１５０５０）。なお、パス名はパス名に対応する要素に割り振られた要素番号順に並べ替える。
【００７３】
次に、索引定義生成プログラム１１４０は、ステップＳ１５０５０で生成したパス名又はパス名群と完全に等しいインデキシング対象パス６０１０が、値インデクス定義管理情報１１７０に存在するか否かを判定する（ステップＳ１５０６０）。ここで、存在しない場合は、ステップＳ１５０５０で生成したパス名又はパス名群を、インデキシング対象パス６０１０として、値インデクス定義管理情報１１７０に追加し、作成状況６０２０を「未作成」に変更する（ステップＳ１５０７０）。
【００７４】
なお、ステップＳ１５０６０における、ステップＳ１５０５０で生成したパス名又はパス名群と、値インデクス定義管理情報１１７０のインデキシング対象パス６０１０との存否の判定は完全一致ではなく、インデキシング対象パス６０１０が、ステップＳ１５０５０で生成したパス名又はパス名群の一部と一致するか否かの判定であってもよい。このとき、インデキシング対象パス６０１０がステップＳ１５０５０で生成したパス名又はパス名群の一部と一致する場合、当該インデキシング対象パス６０１０をステップＳ１５０５０で生成したパス名又はパス名群で更新する。
【００７５】
そして、すべてのパス条件５０１０について値インデクス作成判断処理が終了すると、索引定義生成プログラム１１４０は、値インデクス定義管理情報１１７０を２次記憶装置１０５０に格納して（ステップＳ１５０８０）、値インデクス定義生成処理は終了する。
【００７６】
（値索引生成プログラム）
値索引生成プログラム１１５０は、登録制御プログラム１０８０から起動され、値インデクス生成制御処理を実施する。値索引生成プログラム１１５０における値インデクス生成制御処理を、図１６に示すＰＡＤを用いて説明する（適宜、図１，図１５参照）。
【００７７】
まず、値索引生成プログラム１１５０は、２次記憶装置１０５０上の値インデクス定義管理情報１１７０を作業領域１０９０に読み込む（ステップＳ１６０１０）。そして、読み込んだ値インデクス定義管理情報１１７０から、すべてのインデキシング対象パス６０１０を抽出する（ステップＳ１６０２０）。
【００７８】
次に、値索引生成プログラム１１５０は、ステップＳ１６０２０で抽出したすべてのインデキシング対象パス６０１０について、値インデクス作成実施処理を繰り返す（ステップＳ１６０３０）。以下に値インデクス作成実施処理を説明する。
【００７９】
まず、値索引生成プログラム１１５０は、処理中のインデキシング対象パス６０１０で指定されたパスすべての値に対してインデクスを生成し、生成したインデクスは、２次記憶装置１０５０上の値インデクス格納領域１２２０に格納する（ステップＳ１６０４０）。次に、処理中のインデキシング対象パス６０１０に対応する値インデクス定義管理情報１１７０の作成状況６０２０を「作成済み」にする（ステップＳ１６０５０）。
【００８０】
そして、すべてのインデキシング対象パス６０１０について、値インデクス作成実施処理が終了すると、値インデクス定義管理情報１１７０を２次記憶装置１０５０に格納する（ステップＳ１６０６０）し、値インデクス生成制御処理は終了する。
以上、説明した構造化文書登録プログラム１１００、文書構造抽出プログラム１１１０、構造索引生成プログラム１１２０、要素出現数管理プログラム１１３０、索引定義生成プログラム１１４０、値索引生成プログラム１１５０を適宜呼び出すことで、登録制御プログラム１０８０は、構造化文書登録処理を実行する。
【００８１】
以上説明した本実施形態に係る構造化文書登録処理は、例えば、パス条件「／／価格」と言う複数構造指定を満たす要素が、パス名「／書籍情報／雑誌／価格」の要素、パス名「／書籍情報／中古／書籍／価格」の要素、パス名「／書籍情報／中古／雑誌／価格」の要素、パス名「／書籍情報／新古／雑誌／価格」の要素のように複数存在する際に効果を発揮する。
【００８２】
すなわち、前記の例において、仮に、要素ごとのインデクスしかない場合にはパス名「／書籍情報／雑誌／価格」のインデクス、パス名「／書籍情報／中古／書籍／価格」のインデクス、パス名「／書籍情報／中古／雑誌／価格」のインデクス、パス名「／書籍情報／新古／雑誌／価格」のインデクス、といった４つのインデクスでそれぞれ検索を実施し、その結果をマージする必要がある。この場合は４回の検索と３回のマージが必要である。
【００８３】
一方、パス名「／書籍情報／中古／書籍／価格」の要素、パス名「／書籍情報／中古／雑誌／価格」の要素、パス名「／書籍情報／新古／雑誌／価格」の要素をまとめてインデキシングした、パス条件「／／価格」に対するインデクス（まとめインデクス）を用いて検索する場合であればマージは必要ない。また、この場合、検索は１回実行するだけでよい。
【００８４】
このように、同一構造名の要素が増えてきた際に、パス条件を満たすパス名を持つ要素を見つけ出し、グルーピングし、まとめインデクスを生成することにより、複数構造指定検索時にまとめインデクスを利用が可能となる。まとめインデクスの利用により、複数のインデクスによる検索結果をマージするなどの余分な処理を省くことで、検索処理にかかる時間を短縮することが可能となる。
【００８５】
［第２実施形態］
前記した第１実施形態においては、自動的にインデクスを生成する方式を説明したが、データベース管理者に対して、生成するインデクスに関する情報を通知する方式であってもよい。通知した後に、データベース管理者の確認を行った上で自動的に生成する方式であってもよい。又は、データベース管理者が後で手動にて生成する方式であってもよい。
【００８６】
以下、複数の要素から構成される構造化文書に対して、必要最小限のまとめインデクスを生成することにより、インデクスにより複数構造指定検索の検索レスポンス性能を改善する、インデクス生成装置において、さらに、登録された構造化文書から構造インデクスを生成し、要素の出現数を蓄積し、値インデクス定義を作り、作成した値インデクス定義に基づく情報をユーザに通知する機能を持つインデクス生成装置を、第２実施形態として説明する。
【００８７】
（インデクス生成装置）
ここで、図１７は、本実施形態におけるインデクス生成装置の構成例を示す図面である。
図１７に示した本実施形態のインデクス生成装置は、図１に示した第１実施形態のインデクス生成装置から、主記憶装置１０４０上の登録制御プログラム１０８０ａ及び索引生成確認プログラム１７０１０を変更した点で異なっている。また、本実施形態のインデクス生成装置において、第１実施形態と同様の構成要素については、同じ参照符号を付してその説明は省略する。
【００８８】
（インデクス生成装置における処理手順）
以下、第１実施形態のインデクス生成装置の構造化文書登録処理からの変更点のみを説明する。
まず、本実施形態のインデクス生成装置が起動すると、システム制御プログラム１０７０が、２次記憶装置１０５０から主記憶装置１０４０に読み込まれる。そして、入力装置１０２０から登録対象文書１２４０を読み込み、２次記憶装置１０５０の所定の領域に格納する。
次に、入力装置１０２０から入力される処理開始命令により、システム制御プログラム１０７０は、登録制御プログラム１０８０ａを２次記憶装置１０５０から主記憶装置１０４０に読み込んで起動し、本実施形態の値インデクス生成確認を伴う構造化文書登録処理を開始する。
【００８９】
ここで、図１８は、本実施形態の値インデクス生成確認を伴う構造化文書登録処理の流れを示すＰＡＤ（Problem Analysis Diagram）の例である。図１８に示したＰＡＤを参照しつつ、本実施形態の構造化文書登録処理の手順を説明する（適宜、図１７参照）。なお、本実施形態の値インデクス生成確認を伴う構造化文書登録処理は、図２に示した第１実施形態の構造化文書登録処理と比べて、ステップＳ１９０１０のみが異なっている。
【００９０】
本実施形態の構造化文書登録処理は、ステップＳ１９０１０で、登録制御プログラム１０８０ａが索引生成確認プログラム１７０１０を起動し、値インデクス定義管理情報１１７０に基づき、データベース管理者に値インデクスの生成の要否を確認したうえで値インデクスを生成し、値インデクス格納領域１２２０に格納して終了する。
【００９１】
（索引生成確認プログラム）
次に、ステップＳ１９０１０で起動される索引生成確認プログラム１７０１０について詳しく説明する。
索引生成確認プログラム１７０１０は、登録制御プログラム１０８０aから起動され、確認式値インデクス生成制御処理を実施する。索引生成確認プログラム１７０１０における確認式値インデクス生成制御処理を、図１９に示すＰＡＤを用いて説明する（適宜、図１７参照）。
【００９２】
確認式値インデクス生成制御処理は、図１６で説明した第１実施形態の値インデクス生成制御処理と、ステップＳ１６０３０ａ及びステップＳ２００１０が異なる。
索引生成確認プログラム１７０１０は、図１６で説明した値インデクス生成制御処理と同様に、ステップＳ１６０１０及びステップＳ１６０２０を実行し、ステップＳ１６０２０で、値インデクス定義管理情報１１７０（図１５参照）から抽出したすべてのインデキシング対象パス６０１０について、値インデクス作成確認処理を繰り返す（ステップＳ１６０３０ａ）。
【００９３】
この値インデクス作成確認処理において、処理中のインデキシング対象パス６０１０についてのインデクスを生成するか否かを判断する情報を取得する（ステップＳ２００１０）。ここで、索引生成確認プログラム１７０１０は、後記する値インデクス生成確認画面を作成して表示装置１０１０に表示し、この値インデクス生成確認画面を見たデータベース管理者の入力装置１０２０からの入力に従って、インデクスを生成するか否かを判断する情報を取得する。
【００９４】
ここで、図２０は、ステップＳ２００１０において、索引生成確認プログラム１７０１０が作成する値インデクス生成確認画面の例である。
図２０に示した値インデクス生成確認画面は、処理中の値インデクス定義管理情報１１７０に基づいて作成され、インデキシング対象パス１８０１０、作成状況１８０２０及び回答１８０３０の項目を含んで構成される。以下、各項目について説明する。
インデキシング対象パス１８０１０は、値インデクス定義管理情報１１７０に対応して、インデクス生成の対象となるパス名を表している。インデキシング対象パス１８０１０に複数のパス名が書かれている場合、まとめインデクスを生成可能であることを示している。
【００９５】
作成状況１８０２０は、「作成済み」又は「未作成」の値を持ち、値インデクス定義管理情報１１７０に対応して、当該作成状況１８０２０に対応するインデキシング対象パス１８０１０に対するインデクスが生成されていれば「作成済み」に、作成されていなければ「未作成」になる。
回答１８０３０は、対応する作成状況１８０２０が「未作成」の場合にのみ表示され、対応するインデキシング対象パス１８０１０に対するインデクスを生成するか否か選択するラジオボタンと、ラジオボタンで選択された情報を送信する場合にマウス等で選択する決定ボタン１８０４０とを含んでいる。
【００９６】
値インデクス生成確認画面において、データベース管理者が決定ボタン１８０４０を選択することで、ステップＳ２００１０は終了し、回答１８０３０のラジオボタンで「生成する」が選択されていれば、インデクスを生成することを示す情報を取得して、索引生成確認プログラム１７０１０は、処理中のインデキシング対象パス６０１０で指定されたパスすべての値に対してインデクスを生成し、この生成したインデクスを、値インデクス格納領域１２２０に格納し（ステップＳ１６０４０）、値インデクス定義管理情報１１７０の処理中のインデキシング対象パス６０１０に対応する作成状況６０２０を「作成済み」にする（ステップＳ１６０５０）。
【００９７】
そして、すべてのインデキシング対象パス６０１０について、値インデクス作成確認処理が終了すると、索引生成確認プログラム１７０１０は、作業領域１０９０上の値インデクス定義管理情報１１７０を２次記憶装置１０５０に格納して（ステップＳ１６０６０）、確認式値インデクス生成制御処理が終了する。
以上が、本実施形態における登録処理で、第１実施形態の処理と異なる処理の内容である。
【００９８】
このように、同一構造名の要素が増えてきた際に、条件を満たすパスを見つけ出し、グルーピングしてデータベース管理者に提示し、データベース管理者の指示により、データベース管理者の意図を踏まえたうえで、複数構造指定検索が行われた際に１つのまとめインデクスを利用して、複数のインデクスによる検索結果をマージしたり、指定以外の要素のデータを呼び出すなどの余分な処理を省くことが可能となり、その結果、検索処理にかかる時間を短縮することが可能となる。
【００９９】
本実施形態では、まとめインデクスの生成状況をデータベース管理者に通知した後に、データベース管理者にインデクス作成の可否を確認し、インデクスを生成するとの命令を受けた場合には生成する方式を説明したが、まとめインデクスの生成状況をデータベース管理者に通知するだけの構成としてもよい。
この場合、データベース管理者が後で手動にてインデクスを生成する方式となる。
また、構造化文書の登録処理時にデータベース管理者への通知を出力するのではなく、データベース管理者から問い合わせがあった際に出力する方式としてもよい。
【０１００】
［第３実施形態］
第１実施形態においては、末端要素のみに着目してまとめインデクスを生成する方式を例に説明した。また、第１実施形態においては単一の要素名をインデキシング対象とする方式を例に説明した。
しかしながら、パス条件「／／雑誌／価格」の要素が「７００円」である、と言った階層構造を意識した複数構造指定検索のように、パス条件「／／価格」等の末端要素だけに着目して生成したまとめインデクスが使用できない場合もあり、そこで、末端要素以外の要素や複数の要素名の階層的な組み合わせ（例えば、パス条件「／／雑誌／価格」などのように、階層構造を意識した複数の要素名からなるパス条件）を対象としたまとめインデクスを生成しておき、それを利用するインデクス生成装置を考える。
【０１０１】
以下、複数の要素から構成される構造化文書に対して、必要最小限のまとめインデクスを生成することにより、インデクスにより複数構造指定検索の検索レスポンス性能を改善する、インデクス生成装置において、さらに、登録された構造化文書から構造インデクスを生成し、階層構造を意識した、複数の要素名の組み合わせからなるパス名の出現数を蓄積し、インデクス定義を生成する機能を持つインデクス生成装置を、第３実施形態として説明する。
【０１０２】
（インデクス生成装置）
ここで、図２１は、本実施形態におけるインデクス生成装置の構成例を示す図面である。
図２１に示した本実施形態のインデクス生成装置は、図１に示した第１実施形態のインデクス生成装置から、主記憶装置１０４０上の要素出現数管理プログラム１１３０ｂ及びパス出現位置管理情報１１６０ｂを変更した点で異なっている。また、本実施形態のインデクス生成装置において、第１実施形態と同様の構成要素については、同じ参照符号を付してその説明は省略する。
【０１０３】
（インデクス生成装置における処理手順）
以下、第１実施形態のインデクス生成装置の構造化文書登録処理からの変更点を説明する。本実施形態のインデクス生成装置における処理手順は、図２に示した第１実施形態の構造化文書登録処理と、ステップＳ１００７０における要素出現数管理プログラム１１３０の実行内容のみが異なる。
そこで、本実施形態の要素出現数管理プログラム１１３０ｂの処理手順についてのみ説明する。
【０１０４】
（要素出現数管理プログラム）
要素出現数管理プログラム１１３０ｂは、登録制御プログラム１０８０から起動され、パス出現数管理処理を実施する。要素出現数管理プログラム１１３０ｂにおけるパス出現数管理処理を、図２２に示すＰＡＤを用いて説明する。
【０１０５】
本実施形態のパス出現数管理処理は、図１２で説明した第１実施形態の要素出現数管理プログラム１１３０の要素出現数管理処理と、ステップＳ１４０１２ｂ、ステップＳ１４０２０ｂ、及びステップＳ１４０３０ｂが異なる。
まず、要素出現数管理プログラム１１３０ｂは、構造インデクス１２１０からすべての階層構造を意識した要素名の組み合わせを抽出し（ステップＳ１４０１２ｂ）、２次記憶装置１０５０上のパス出現位置管理情報１１６０ｂを作業領域１０９０に読み込む（ステップＳ１４０１５）。
【０１０６】
次に、要素出現数管理プログラム１１３０ｂは、ステップＳ１４０１２ｂで抽出したすべての階層構造を意識した要素名の組み合わせについて、パス追加処理を繰り返す（ステップＳ１４０２０ｂ）。以下、ステップＳ１４０３０ｂからステップＳ１４０５０までのパス追加処理について説明する。
まず、要素出現数管理プログラム１１３０ｂは、処理中の要素名の組み合わせと同一の要素名の組み合わせを持つパスすべてを満たすパス条件を生成する（ステップＳ１４０３０ｂ）。
【０１０７】
ここで、本実施形態のパス出現数管理処理により生成されるパス出現位置管理情報１１６０ｂの例を、図２３に示す。図１３に示した第１実施形態の末端要素のみを扱ったパス出現位置管理情報１１６０と比べ、パス条件５０１０ｂに、単一の要素名だけでなく、構造を意識した複数の要素名からなる項目があることがわかる。また、図２３に示したパス出現位置管理情報１１６０ｂでは、パス条件「／／価格」２３０１０の出現位置５０２０に含まれる要素「２，５，１０」が、パス条件「／／雑誌／価格」２３０２０及びパス条件「／／書籍／価格」２３０３０の出現位置５０２０の要素にも含まれていることがわかる。
このよう生成されたパス出現位置管理情報１１６０ｂにより、図１４に示した索引定義生成プログラム１１４０が実行する値インデクス定義生成処理において、パス条件「／／雑誌／価格」２３０２０の要素の出現数５０３０が、値インデクス生成実施閾値よりも大きくなれば、「／／雑誌／価格」２３０２０に含まれる要素群に対してインデクスを生成する。
【０１０８】
以降、要素出現数管理プログラム１１３０ｂは、図１２で説明した第１実施形態の要素出現数管理プログラム１１３０の要素出現数管理処理と同様の手順を実行する（ステップＳ１４０４０ないしステップＳ１４０９０）。
以上が、本実施形態における登録処理で、第１実施形態の処理と異なる処理の内容である。
【０１０９】
このように、同一構造名の要素が増えてきた際に、パス条件を満たすパス名を持つ要素を見つけ出してグルーピングし、まとめインデクスを生成することにより、階層を意識した複数構造指定検索時に、まとめインデクスを利用することが可能となる。また、このようなまとめインデクスの利用により、複数のインデクスによる検索結果をマージするなどの余分な処理を省くことで、検索処理にかかる時間を短縮することが可能となる。
【０１１０】
［第４実施形態］
第１実施形態ないし第３実施形態のインデクス生成装置は、フルオートインデクス方式を前提としており、構造インデクス１２１０の各末端要素に対するインデクスを必ず生成することを説明した。
ここで、各末端要素を実際に持つ登録文書が多く、インデクスがなければ検索時間を要する要素にだけインデクスを生成する機能を有することにしてもよい。
【０１１１】
例えば、テキストスキャンで登録文書を直接検索することで、パス条件「／新古／雑誌／価格」に対しての検索を０．０１秒で終えられる場合には、パス条件「／新古／雑誌／価格」に対するインデクスは生成しなくともよいと考えられる。
【０１１２】
以下、複数の要素から構成される構造化文書に対して、インデクスにより複数構造指定検索の検索レスポンス性能を改善するために、必要最小限のまとめインデクスを生成するインデクス生成装置において、さらに、全登録文書内での当該要素の実際の出現数を蓄積し、出現数が多い要素にのみ、インデクスを生成することと判断する機能を有するインデクス生成装置を、第４実施形態として説明する。
【０１１３】
ここで、図２４は、本実施形態におけるインデクス生成装置の構成例を示す図面である。図２４に示したインデクス生成装置は、図２１に示した第３実施形態のインデクス生成装置から、主記憶装置１０４０上の要素出現数管理プログラム１１３０ｃ及び索引定義生成プログラム１１４０ｃと、２次記憶装置１０５０上の閾値管理情報１１８０ｃを変更した点で異なっている。また、本実施形態のインデクス生成装置において、第１実施形態及び第３実施形態と同様の構成要素については、同じ参照符号を付してその説明は省略する。
【０１１４】
（インデクス生成装置における処理手順）
本実施形態のインデクス生成装置における処理手順は、図２に示した第１実施形態の構造化文書登録処理と、ステップＳ１００７０における要素出現数管理プログラム１１３０の実行内容及びステップＳ１００９０における索引定義生成プログラム１１４０の実行内容のみが異なる。そこで、本実施形態の要素出現数管理プログラム１１３０ｃ及び索引定義生成プログラム１１４０ｃの処理手順についてのみ説明する。
【０１１５】
（要素出現数管理プログラム）
要素出現数管理プログラム１１３０ｃは、登録制御プログラム１０８０から起動され、構造出現数を考慮したパス出現数管理処理を実施する。要素出現数管理プログラム１１３０ｃにおけるパス出現数管理処理を、図２５に示すＰＡＤを用いて説明する。本実施形態の構造出現数を考慮したパス出現数管理処理は、図２２で説明した第３実施形態のパス出現数管理処理と、ステップＳ１４０８０ｃが異なる。
【０１１６】
まず、要素出現数管理プログラム１１３０ｃは、構造インデクス１２１０からすべての要素を抽出し（ステップＳ１４０１２ｂ）、２次記憶装置１０５０上のパス出現位置管理情報１１６０ｂ（図２３参照）を作業領域１０９０に読み込む（ステップＳ１４０１５）。
【０１１７】
次に、要素出現数管理プログラム１１３０ｃは、ステップＳ１４０１２ｂで抽出したすべての階層構造を意識した要素名の組み合わせについて、ステップＳ１４０３０ｂないしステップＳ１４０５０のパス追加処理を繰り返す（ステップＳ１４０２０ｂ）。
【０１１８】
まず、要素出現数管理プログラム１１３０ｃは、処理中の要素名の組み合わせと同一の要素名の組み合わせを持つパスすべてを満たすパス条件を生成する（ステップＳ１４０３０ｂ）。
次に、ステップＳ１４０３０ｂで生成したパス条件５０１０と同一のパス条件を持つレコードが、２次記憶装置１０５０上のパス出現位置管理情報１１６０ｂに存在するか否かを判定する（ステップＳ１４０４０）。ここで、存在しなければ、ステップＳ１４０３０ｂで生成したパス条件を、パス出現位置管理情報１１６０ｂに、新たなレコードのパス条件として追加する（ステップＳ１４０５０）。
【０１１９】
そして、パス追加処理で更新されたパス出現位置管理情報１１６０ｂからすべてのパス条件を抽出し（ステップＳ１４０６０）、すべてのパス条件に対して、ステップＳ１４０８０ｃの処理を繰り返す（ステップＳ１４０７０）。
【０１２０】
ステップＳ１４０８０ｃにおいて、要素出現数管理プログラム１１３０ｃは、２次記憶装置１０５０上の構造インデクス１２１０から、処理中のパス条件５０１０ｂを満たす要素の要素番号を抽出し、処理中のパス条件５０１０ｂに対応する出現位置５０２０として、パス出現位置管理情報１１６０ｂに格納する。また、処理中のパス条件５０１０ｂを満たす要素の数を出現数５０３０としてパス出現位置管理情報１１６０ｂに格納する。
さらに、全登録文書の中で処理中のパス条件５０１０ｂを満たす構造の出現数を計数して、「全登録文書中での構造出現数」２５０１０としてパス出現位置管理情報１１６０ｂに格納する。
【０１２１】
ここで、ステップＳ１４０８０ｃを実行後における本実施形態のパス出現位置管理情報１１６０ｂの例を、図２６に示す。図２６に示したパス出現位置管理情報１１６０ｂは、図２３に示した第３実施形態のパス出現位置管理情報１１６０ｂに、パス条件５０１０ｂの項目が「／雑誌／価格」２３０４０、「／中古／書籍／価格」２３０５０、及び「／新古／書籍／価格」２３０６０であるレコードが追加されていることがわかる。
これらのレコードは、ステップＳ１４０８０ｃにおいて、要素出現数管理プログラム１１３０ｃが、全登録文書の中で処理中のパス条件５０１０ｂを満たす構造の出現数を計数して、「全登録文書中での構造出現数」２５０１０として格納することで、登録されたものである。
【０１２２】
そして、要素出現数管理プログラム１１３０ｃは、パス出現位置管理情報１１６０ｂを２次記憶装置１０５０に格納して（ステップＳ１４０９０）、構造出現数を考慮したパス出現数管理処理を終了する。
【０１２３】
（索引定義生成プログラム）
索引定義生成プログラム１１４０ｃは、登録制御プログラム１０８０から起動され、構造出現数を考慮した値インデクス定義生成処理を実施する。索引定義生成プログラム１１４０ｃにおける構造出現数を考慮した値インデクス定義生成処理の流れを、図２７に示すＰＡＤを用いて説明する。本実施形態の構造出現数を考慮した値インデクス定義生成処理は、図１４で説明した第１実施形態の値インデクス定義生成処理と比べて、ステップＳ１５０２５が、ステップＳ１５０２５ｃに置き換わっていることが異なり、さらにステップＳ１５０３０とステップＳ５０４０との間にステップＳ２７０１０を新たに有することが異なる。
なお、本実施形態において閾値管理情報１１８０ｃは、パス出現数の閾値である値インデクス生成実施閾値と併せて、構造出現数の閾値である構造出現数閾値を含んでいる。
【０１２４】
まず、索引定義生成プログラム１１４０ｃは、２次記憶装置１０５０上のパス出現位置管理情報１１６０ｂ（図２３参照）を作業領域１０９０に読み込み（ステップＳ１５０１０）、パス出現位置管理情報１１６０ｂに含まれるすべてのパス条件５０１０を抽出する（ステップＳ１５０２０）。
次に、２次記憶装置１０５０上の閾値管理情報１１８０を作業領域１０９０に、構造出現数閾値及び値インデクス生成実施閾値として読み込み（ステップＳ１５０２５ｃ）、値インデクス定義管理情報１１７０を、作業領域１０９０に読み込む（ステップＳ１５０２７）。
【０１２５】
次に、索引定義生成プログラム１１４０は、ステップＳ１５０２０で抽出したすべてのパス条件５０１０ｂについて、ステップＳ２７０１０からステップＳ１５０７０までの値インデクス作成判断処理を繰り返す（ステップＳ１５０３０）。
そして、この値インデクス作成判断処理において、索引定義生成プログラム１１４０は、処理中のパス条件５０１０ｂに対応する全登録文書中での構造出現数２５０１０（図２６参照）が構造出現数閾値より大きいか否かを判定し（ステップＳ２７０１０）、ここで、構造出現数閾値より大きい場合は、すでに説明したステップＳ１５０４０以降の手順を実行して、構造出現数を考慮した値インデクス定義生成処理が終了する。
以上が、本実施形態における登録処理中で、第３実施形態の処理と異なる処理の内容である。
【０１２６】
以上、説明した本実施形態のインデクス生成装置は、値インデクスを生成していないパスに対して検索を実施する際は、登録文書格納領域１２３０内の登録文書をテキストスキャンする。
このように、各末端要素を実際に持つ登録文書が多い場合に、出現数が多い要素にだけインデクスを生成することで、必要最小限のインデクスを生成することが可能となり、その結果、インデクスの更新・メンテナンスにかかる時間を短縮することが可能となる。
【０１２７】
［第５実施形態］
第１実施形態ないし第４実施形態においては、構造インデクス１２１０における要素の出現数又は登録文書格納領域中の文書における構造の出現数に基づき、インデクスの生成の可否を判断することを説明した。
前記のようなインデクス生成装置は、新たなインデクスを生成したことにより不要となったインデクスを削除する機能を有することもでき、削除を自動的に実施することなく、削除すると判定したことを示す情報をデータベース管理者に通知する機能を有することもできる。
【０１２８】
以下、複数の要素から構成される構造化文書に対して、必要最小限のまとめインデクスを生成することにより、インデクスにより複数構造指定検索の検索レスポンス性能を改善するインデクス生成装置において、さらに、インデキシング対象の重複の割合が閾値よりも高いインデクスが存在する場合、インデクスを重複する一方を削除する機能を持つインデクス生成装置を、第５実施形態として説明する。
【０１２９】
（インデクス生成装置）
ここで、図２８は、本実施形態におけるインデクス生成装置の構成例を示す図面である。図２８に示したインデクス生成装置は、図２４に示した第４実施形態のインデクス生成装置から、主記憶装置１０４０上の索引定義生成プログラム１１４０ｄ及び値索引生成プログラム１１５０ｄを変更した点で異なっている。また、本実施形態のインデクス生成装置において、第４実施形態と同様の構成要素については、同じ参照符号を付してその説明は省略する。
以下、第４実施形態からの変更点のみを説明する。
【０１３０】
（索引定義生成プログラム）
索引定義生成プログラム１１４０ｄは、登録制御プログラム１０８０から起動され、構造出現数を考慮した削除あり値インデクス定義生成処理を実施する。索引定義生成プログラム１１４０ｄにおける構造出現数を考慮した削除あり値インデクス定義生成処理を、図２９に示すＰＡＤを用いて説明する。
【０１３１】
本実施形態のパス出現数管理処理は、図２７で説明した第４実施形態の構造出現数を考慮した値インデクス定義生成処理のステップＳ１５０７０の後に、ステップＳ３００１０ないしステップＳ３００４０を含んで実行される。なお、図２９に示したＰＡＤにおいて、図２７に示したＰＡＤのステップＳ１５０１０ないしステップＳ１５０２７は省略している。
【０１３２】
以下、ステップＳ３００１０以降の処理についてのみ説明する。
ステップＳ１５０７０までの手順により値インデクス定義管理情報１１７０（図１５参照）を更新すると、索引定義生成プログラム１１４０ｄは、値インデクス定義管理情報１１７０のインデキシング対象パス６０１０について、値インデクス削除定義作成処理を繰り返し実行する（ステップＳ３００１０）。以下、値インデクス削除定義作成処理について説明する。
【０１３３】
まず、索引定義生成プログラム１１４０ｄは、パス出現位置管理情報１１６０ｂ（図２６参照）から処理中のインデキシング対象パス６０１０に含まれる各パス名に対応する全登録文書中での構造出現数２５０１０を取得する（ステップＳ３００２０）。
次に、ステップＳ３００２０で取得した各パス名の構造出現数を合計し、処理中のインデキシング対象パス６０１０の合計の構造出現数を算出すると共に、各パス名の構造出現数と合計の構造出現数を比較し、合計の構造出現数に対する割合が規定値以上であるパス名があるか否かを判定する（ステップＳ３００３０）。
【０１３４】
ステップＳ３００３０の判定において、規定値以上の割合のパスがある場合は、値インデクス定義管理情報１１７０において、パス名の構造出現数が合計の構造出現数に対して規定の割合よりも大きいパス名をインデキシング対象パス６０１０としているインデクス定義があれば、それに対応する作成状況６０２０の項目を「未削除」にする。
【０１３５】
そして、索引定義生成プログラム１１４０ｄは、作業領域１０９０上の値インデクス定義管理情報１１７０を２次記憶装置１０５０に格納して（ステップＳ１５０８０）、値インデクス定義生成処理を終了する。
【０１３６】
（値索引生成プログラム）
値索引生成プログラム１１５０ｄは、登録制御プログラム１０８０から起動され、値インデクス更新制御処理を実施する。値索引生成プログラム１１５０ｄにおける値インデクス更新制御処理を、図３０に示すＰＡＤを用いて説明する。本実施形態の値インデクス更新制御処理は、図１６で説明した第１実施形態の値インデクス生成制御処理と比べ、ステップＳ３１０１０ないしステップＳ３１０３０の処理を有する点で異なっている。
【０１３７】
はじめに、値索引生成プログラム１１５０ｄは、２次記憶装置１０５０上の値インデクス定義管理情報１１７０を作業領域１０９０に読み込み（ステップＳ１６０１０）、すべてのインデキシング対象パス６０１０を抽出する（ステップＳ１６０２０）。
そして、ステップＳ１６０２０で抽出したすべてのインデキシング対象パス６０１０について、値インデクス更新実施処理を繰り返す（ステップＳ１６０３０）。以下に値インデクス更新実施処理を説明する。
【０１３８】
まず、値索引生成プログラム１１５０ｄは、値インデクス定義管理情報１１７０を参照して処理中のインデキシング対象パス６０１０に対応する作成状況６０２０が「未作成」又は「未削除」であるかを判定する（ステップＳ３１０１０）。ここで、作成状況６０２０が「未作成」の場合、処理中のインデキシング対象パス６０１０で指定されたパスすべての値に対してインデクスを生成し、生成したインデクスは、２次記憶装置１０５０上の値インデクス格納領域１２２０に格納し（ステップＳ１６０４０）、処理中のインデキシング対象パス６０１０に対応する値インデクス定義管理情報１１７０の作成状況６０２０を「作成済み」にする（ステップＳ１６０５０）。
【０１３９】
一方、ステップＳ３１０１０の判定において、「未削除」の場合、処理中のインデキシング対象パス６０１０で指定されたパス名の要素に対して生成されたまとめインデクスを、値インデクス格納領域１２２０から削除し（ステップＳ３１０２０）、処理中のインデキシング対象パス６０１０に対応する作成状況６０２０を「削除済み」にする（ステップＳ３１０３０）。
【０１４０】
そして、すべてのインデキシング対象パス６０１０について値インデクス更新実施処理が終了すると、値索引生成プログラム１１５０ｄは、作業領域１０９０上の値インデクス定義管理情報１１７０を２次記憶装置１０５０に格納して（ステップＳ１６０６０）、値インデクス更新制御処理を終了する。
以上が、本実施形態における登録処理中で、第４実施形態の処理と異なる処理の内容である。
【０１４１】
以上、説明した本実施形態のインデクス生成装置は、値インデクスが削除済みであるパス名に対して検索を実施する際は、このパス名を包含し、かつ、このパス名の構造出現数に最も近い構造出現数をもつインデキシング対象パス６０１０に対するインデクスを利用し、得られた検索結果からこのパス名の要素以外の要素を排除することにより、検索を可能とする。
前記のように、まとめインデクスを作ったことにより不要になったインデクスを削除することで、必要最低限のインデクスのみを生成することが可能となり、その結果、インデクスの更新・メンテナンスにかかる時間を短縮することが可能となる。
【０１４２】
本実施形態は、第１実施形態に、階層構造を意識した複数の要素名からなるパス名を対象としたまとめインデクスを生成する第３実施形態の機能と、各末端要素を実際に持つ登録文書が多い場合にだけインデクスを生成する第４実施形態の機能を追加したインデクス生成装置に、さらに新たなインデクスを生成したことにより不要となったインデクスを削除する機能を追加したインデクス生成装置である。
【０１４３】
すなわち、複数の要素から構成される構造化文書に対して、必要最小限のまとめインデクスを生成することにより、インデクスにより複数構造指定検索の検索レスポンス性能を改善するインデクス生成装置において、さらに、登録された構造化文書から構造インデクスを生成し、階層構造を意識した、複数の要素名の組み合わせからなるパスの出現数を蓄積し、インデクス定義を生成する機能と、全登録文書内での当該要素の実際の出現数を蓄積し、出現数が多い要素にだけインデクスを生成することとするインデクス定義を生成する機能と、インデキシング対象の重複の割合が閾値よりも高いインデクスが存在する場合、重複するインデクスの一方を削除する機能を持つインデクス生成装置である。
【０１４４】
これらの機能をもつインデクス生成装置は、登録された構造化文書から抽出した各構造の出現数と、登録された構造化文書から生成した構造インデクス１２１０に基づき蓄積した要素の出現数とを利用することで、初期においては各パス名に対するインデクスをもたず、登録文書格納領域１２３０に格納した構造化文書を直接テキストスキャンして検索し、運用することにより生じる登録文書数の増加に伴い、必要最低限のインデクス定義を随時作成するインデクス生成装置として利用可能となる。
【０１４５】
以上、本発明の実施形態を説明したが、本発明は前記の実施形態に限定されることなく様々に変形して実施可能である。例えば、第２実施形態に第３実施形態、第４実施形態、第５実施形態の機能を追加することで、データベース管理者に対して、生成するインデクスに関する情報を通知する方式とすることもでき、通知した後に、データベース管理者の確認を行った上で自動的にインデクスを生成する方式とすることもできる。又は、データベース管理者が後で手動にてインデクスを生成する方式としてもよい。
【０１４６】
また、第４実施形態、第５実施形態で説明した機能は、第１実施形態にそれぞれ単独で組み合わせてもよい。また、それぞれのインデクス生成装置は、生成したインデクス定義に基づきインデクを自動的に作るのではなく、第２実施形態、第５実施形態で説明したように、データベース管理者に対して、生成するインデクスに関する情報を通知する方式であってもよい。
また、生成するインデクスに関する情報を通知した後に、データベース管理者の確認を行った上で自動的に生成する方式であってもよい。又は、データベース管理者が後で手動にて生成する方式であってもよい。
また、前記の実施形態では構造化文書としてＸＭＬ文書を取り扱う例を示したが、本発明にはＸＭＬ文書以外の構造化文書を適用することも可能である。
【０１４７】
従って、本発明は前記の実施形態に限定されることなく、特許請求の範囲に記載された技術的思想により定められるものである。
【図面の簡単な説明】
【０１４８】
【図１】第１実施形態のインデクス生成装置の概略構成を示す図面である。
【図２】登録制御プログラムの処理を示すＰＡＤである。
【図３】ＸＭＬ形式で記述された構造化文書の例を示す図面である。
【図４】ＸＭＬ形式で記述された構造化文書の別の例を示す図面である。
【図５】構造化文書登録プログラムの処理を示すＰＡＤである。
【図６】文書構造抽出プログラムの処理を示すＰＡＤである。
【図７】図３の構造化文書から生成した構造解析木を示す図面である。
【図８】図４の構造化文書から生成した構造解析木を示す図面である。
【図９】構造索引生成プログラムの処理を示すＰＡＤである。
【図１０】図７の構造解析木から生成した構造インデクスを示す図面である。
【図１１】図１０の構造インデクスを元に、図８の構造解析木の情報を加え、更新した構造インデクスを示す図面である。
【図１２】要素出現数管理プログラムの処理を示すＰＡＤである。
【図１３】パス出現位置管理情報の例を示す図面である。
【図１４】索引定義生成プログラムの処理を示すＰＡＤである。
【図１５】値インデクス定義管理情報の例を示す図面である。
【図１６】値索引生成プログラムの処理を示すＰＡＤである。
【図１７】第２実施形態のインデクス生成装置の概略構成を示す図面である。
【図１８】登録制御プログラムの処理内を示すＰＡＤである。
【図１９】索引生成確認プログラムの処理を示すＰＡＤである。
【図２０】値インデクス生成確認画面の例を示す図面である。
【図２１】第３実施形態のインデクス生成装置の概略構成を示す図面である。
【図２２】要素出現数管理プログラムの処理を示すＰＡＤである。
【図２３】パス出現位置管理情報の例を示す図面である。
【図２４】第４実施形態のインデクス生成装置の概略構成を示す図面である。
【図２５】要素出現数管理プログラムの処理を示すＰＡＤである。
【図２６】パス出現位置管理情報の例を示す図面である。
【図２７】索引定義生成プログラムの処理を示すＰＡＤである。
【図２８】第５実施形態のインデクス生成装置の概略構成を示す図面である。
【図２９】索引定義生成プログラムの処理を示すＰＡＤである。
【図３０】値索引生成プログラムの処理を示すＰＡＤである。
【符号の説明】
【０１４９】
１０１０  表示装置
１０２０  入力装置
１０３０  ＣＰＵ
１０４０  主記憶装置
１０５０  ２次記憶装置
１０８０  登録制御プログラム
１１００  構造化文書登録プログラム
１１１０  文書構造抽出プログラム
１１２０  構造索引生成プログラム
１１３０  要素出現数管理プログラム
１１４０  索引定義生成プログラム
１１５０  値索引生成プログラム
１１６０  パス出現位置管理情報
１１７０  値インデクス定義管理情報
１１８０  閾値管理情報
１１９０  文書番号管理情報
１２００  要素番号管理情報
１２１０  構造インデクス
１２２０  値インデクス格納領域
１２３０  登録文書格納領域
【図１】
2008129842.tif 000003
【図２】
2008129842.tif 000004
【図３】
2008129842.tif 000005
【図４】
2008129842.tif 000006
【図５】
2008129842.tif 000007
【図６】
2008129842.tif 000008
【図７】
2008129842.tif 000009
【図８】
2008129842.tif 000010
【図９】
2008129842.tif 000011
【図１０】
2008129842.tif 000012
【図１１】
2008129842.tif 000013
【図１２】
2008129842.tif 000014
【図１３】
2008129842.tif 000015
【図１４】
2008129842.tif 000016
【図１５】
2008129842.tif 000017
【図１６】
2008129842.tif 000018
【図１７】
2008129842.tif 000019
【図１８】
2008129842.tif 000020
【図１９】
2008129842.tif 000021
【図２０】
2008129842.tif 000022
【図２１】
2008129842.tif 000023
【図２２】
2008129842.tif 000024
【図２３】
2008129842.tif 000025
【図２４】
2008129842.tif 000026
【図２５】
2008129842.tif 000027
【図２６】
2008129842.tif 000028
【図２７】
2008129842.tif 000029
【図２８】
2008129842.tif 000030
【図２９】
2008129842.tif 000031
【図３０】
2008129842.tif 000032