(57)【要約】【課題】値検索の対象が複数指定された問い合わせを処理するような場合でも、データベースに格納されている構造化文書をサーチしなくても済むようにする。【解決手段】構造化文書検索システム５０は、値索引テーブル５８と検索処理部５３とを有する。値索引テーブル５８は、データベース４２に格納された構造化文書に含まれているノードに対応付けられる索引であって、当該ノードの位置情報を含むノード情報及び当該ノードの関連ノードの位置情報を含む索引を格納する。検索処理部５３は、クライアントから与えられる検索要求の示す検索条件が複数ノードの値検索で、かつ当該複数のノードに共通な関連ノードを検索対象としている場合に、当該値検索の条件毎に値索引テーブル５８から当該条件に合致する索引を検索し、検索された索引の各々から一致する関連ノードの位置情報を探すことにより、検索対象のノードの候補を絞る。【選択図】      図３
2008234357.tif 000002
【特許請求の範囲】
【請求項１】
データベースに格納された構造化文書に含まれているノードに対応付けられる索引であって、当該ノードの位置情報を含むノード情報及び当該ノードを含む前記構造化文書の木構造上で当該ノードと一定の関係のある予め指定されたノードである関連ノードの位置情報を含む索引を格納する索引格納手段と、
クライアントから与えられる検索要求の示す検索条件に合致する索引を前記索引格納手段から検索する検索処理手段であって、前記検索条件が複数ノードの値検索で、かつ当該複数のノードに共通な関連ノードを検索対象としている場合に、前記値検索の条件毎に前記索引格納手段から当該条件に合致する索引を検索し、前記値検索の条件毎に検索された索引から一致する関連ノードの位置情報を探すことにより、前記検索対象のノードの候補を絞る検索処理手段と
を具備することを特徴とする構造化文書検索システム。
【請求項２】
索引が対応付けられるべきノードの構造と当該構造のノードと一定の関係のある関連ノードの種類とを示す索引付与情報を格納する索引付与情報格納手段と、
クライアントからの索引設定を指示する索引設定要求であって、設定される索引が対応付けられるべきノードを指定する情報及び当該ノードを含む構造化文書上で当該ノードと一定の関係のある関連ノードの種類を指定する情報を含む索引設定要求を受けて、当該要求で指定された、索引が対応付けられるべきノードの構造及び関連ノード種類を示す前記索引付与情報を前記索引付与情報格納手段に追加する索引管理手段と、
クライアントからの構造化文書登録を指示する構造化文書登録要求を受けて、当該要求で指定され構造化文書を前記データベースに格納する文書登録処理手段とを更に具備し、
前記索引管理手段は、前記文書登録手段によって前記データベースに格納される構造化文書に含まれているノードの索引付与情報が前記索引付与情報格納手段に登録されている場合に、当該ノードのノード情報及び当該索引付加情報の示す種類の当該ノードの関連ノードの位置情報を含む索引を前記索引格納手段に追加する
ことを特徴とする請求項１記載の構造化文書検索システム。
【請求項３】
前記索引格納手段に格納される索引に含まれる前記ノード情報は対応するノードの値を含み、前記索引格納手段は、当該索引を値索引として格納する値索引格納手段であることを特徴とする請求項１記載の構造化文書検索システム。
【請求項４】
前記データベースに格納された構造化文書に含まれているノードに対応付けられる構造索引であって、当該ノードの構造を示す構造情報及び当該ノードの位置情報を含む構造索引を格納する構造索引格納手段を更に具備し、
前記検索処理手段は、
前記検索要求の示す検索条件が複数ノードの値検索で、かつ当該複数のノードに共通な関連ノードを検索対象としている場合に、前記値検索の条件に値が合致する複数ノードの各々の値索引を前記値索引格納手段から検索することにより、前記値検索の条件毎に当該条件に値が合致するノード及び関連ノードのリストを第１の候補ノードリストとして取得する値索引検索手段と、
前記値検索の条件に構造が合致する複数ノードの各々の構造索引を前記構造索引格納手段から検索することにより、前記値検索の条件毎に当該条件に構造が合致するノードのリストを第２の候補ノードリストとして取得する構造索引検索手段と、
前記値検索の条件毎に取得される前記第１の候補ノードリスト及び前記第２の候補ノードリストを、前記値検索の条件毎に当該両リストの間で共通なノードについてマージすることにより、前記値検索の条件毎に第３の候補ノードリストを取得し、前記値検索の条件毎に取得される前記第３の候補ノードリストから、一致する関連ノードの位置情報を探すことにより、前記検索対象のノードを検索結果として取得する検索結果取得手段とを含む
ことを特徴とする請求項３記載の構造化文書検索システム。
【請求項５】
前記データベースに格納された構造化文書に含まれているノードに対応付けられる値索引であって、当該ノードの値及び位置情報を含む値索引を格納する値索引格納手段を更に具備し、
前記索引格納手段に格納される索引に含まれる前記ノード情報は対応するノードの構造を示す構造情報を含み、前記索引格納手段は当該索引を構造索引として格納する構造索引格納手段であり、
前記検索処理手段は、
前記検索要求の示す検索条件が複数ノードの値検索で、かつ当該複数のノードに共通な関連ノードを検索対象としている場合に、前記値検索の条件に値が合致する複数ノードの各々の値索引を前記値索引格納手段から検索することにより、前記値検索の条件毎に当該条件に値が合致するノードのリストを第１の候補ノードリストとして取得する値索引検索手段と、
前記値検索の条件に構造が合致する複数ノードの各々の構造索引を前記構造索引格納手段から検索することにより、前記値検索の条件毎に当該条件に構造が合致するノード及び関連ノードのリストを第２の候補ノードリストとして取得する構造索引検索手段と、
前記値検索の条件毎に取得される前記第１の候補ノードリスト及び前記第２の候補ノードリストを、前記値検索の条件毎に当該両リストの間で共通なノードについてマージすることにより、前記値検索の条件毎に第３の候補ノードリストを取得し、前記値検索の条件毎に取得される前記第３の候補ノードリストから、一致する関連ノードの位置情報を探すことにより、前記検索対象のノードを検索結果として取得する検索結果取得手段とを含む
ことを特徴とする請求項１記載の構造化文書検索システム。
【請求項６】
前記構造索引検索手段は、前記第１の候補ノードリストに含まれているノードの数が予め定められた一定数以上の場合に動作して前記第２の候補ノードリストを取得し、
前記検索処理手段は、前記第１の候補ノードリストに含まれているノードの数が前記一定数に満たない場合に動作して、前記第１の候補ノードリストに含まれているノードについて前記データベースに格納されている構造化文書をサーチすることにより値検索の条件に対応する構造条件毎に当該構造条件に構造が合致するノード及び関連ノードのリストを第４の候補ノードリストとして取得する構造化文書サーチ手段を含み、
検索結果取得手段は、前記値検索の条件に対応する構造条件毎に取得される前記第４の候補ノードリストから、一致する関連ノードの位置情報を探すことにより、前記検索対象のノードを検索結果として取得する
ことを特徴とする請求項５記載の構造化文書検索システム。
【請求項７】
データベースに格納された構造化文書の検索に用いられる索引を格納する索引格納手段を備えたデータベースサーバコンピュータに、
クライアントからの構造化文書登録を指示する構造化文書登録要求を受けて、当該要求で指定され構造化文書を前記データベースに格納するステップと、
前記データベースに前記構造化文書が格納される際に、当該構造化文書に含まれているノードに対応付けられる索引であって、当該ノードの位置情報を含むノード情報及び当該ノードを含む前記構造化文書の木構造上で当該ノードと一定の関係のある予め指定されたノードである関連ノードの位置情報を含む索引を前記索引格納手段に追加するステップと、
クライアントからの検索要求を受けて、当該検索要求の示す検索条件に合致する索引を前記索引格納手段から検索するステップであって、前記検索条件が複数ノードの値検索で、かつ当該複数のノードに共通な関連ノードを検索対象としている場合に、前記値検索の条件毎に前記索引格納手段から当該条件に合致する索引を検索して、前記値検索の条件毎に検索された索引から一致する関連ノードの位置情報を探すことにより、前記検索対象のノードの候補を絞るステップと
を実行させるためのプログラム。
【請求項８】
データベースサーバコンピュータがクライアントから与えられる検索要求を実行するのに用いられる索引のデータ構造であって、
前記索引は、
データベースに格納された構造化文書に含まれているノードに対応付けられる索引であり、当該ノードの位置情報を含むノード情報及び当該ノードを含む前記構造化文書の木構造上で当該ノードと一定の関係のある予め指定されたノードである関連ノードの位置情報を含み、
前記索引は、
前記索引を格納する索引格納手段と、
クライアントから与えられる検索要求の示す検索条件に合致する索引を前記索引格納手段から検索する検索処理手段であって、前記検索条件が複数ノードの値検索で、かつ当該複数のノードに共通な関連ノードを検索対象としている場合に、前記値検索の条件毎に前記索引格納手段から当該条件に合致する索引を検索し、前記値検索の条件毎に検索された索引から一致する関連ノードの位置情報を探すことにより、前記検索対象のノードの候補を絞る検索処理手段と
を有する前記データベースサーバコンピュータにより用いられることを特徴とする索引のデータ構造。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースに格納された構造化文書の検索に索引が用いられる構造化文書検索システムに係り、特に検索条件が複数ノードの値検索で、かつ当該複数のノードに共通な関連ノードを検索対象としている場合に好適な、構造化文書検索システム、プログラム及び索引のデータ構造に関する。
【背景技術】
【０００２】
論理構造を持つ文書は構造化文書と呼ばれる。構造化文書において、当該文書の論理構造は、当該文書中に記述されたタグによって示される。このタグを用いて論理構造が表現された構造化文書は、コンピュータでの処理に適している。
【０００３】
さて、タグを用いてデータを記述する手段として、ＸＭＬ（Extensible Markup Language）が広く利用されている。ＸＭＬは、意味付けされたタグによるデータの階層化や構造の自由な拡張性という特長を持つ。これらの特長を生かしたＸＭＬ利用技術として、ＸＭＬデータベース（ＸＭＬＤＢ）と呼ばれるデータベースが知られている。ＸＭＬデータベースはＸＭＬデータベース管理システム（ＸＭＬＤＢＭＳ）と呼ばれるデータベース管理システムによって制御され、ＸＭＬ文書を格納し、またＸＭＬ文書（中の指定された構造）を検索する機能を提供する。
【０００４】
ＸＭＬ文書は、ＸＭＬを使って記述された文書であり、構造化文書の代表として知られている。ＸＭＬ文書は木構造を構成する要素からなる。要素はノード（タグノード）とも呼ばれ、タグと内容（値）とから構成される。木構造はその根となる要素（ルートノード）から始まり、各要素が親子兄弟の関係で構成される。
【０００５】
ＸＭＬ文書内の要素（ノード）の検索には標準化された問い合わせ言語がよく利用される。問い合わせ言語の主なものはＸＰａｔｈとＸＱｕｅｒｙである。ＸＰａｔｈは、ＸＭＬ文書中の要素（ノード）の位置を指定して検索を行うのに用いられる。
【０００６】
ＸＭＬデータベース管理システムを含むＸＭＬ文書検索システム（構造化文書検索システム）では、検索の高速化のために、例えば特許文献１に記載されているように、値検索の対象となり得るノードに索引が付与される（対応付けられる）。このような索引は、値索引と呼ばれる。
【０００７】
ＸＭＬ文書の一例を図２に示す。図２に示されるＸＭＬ文書が格納されているデータベース（ＸＭＬデータベース）において、ｔｉｔｌｅが「ＴＣＰ．．」であるｂｏｏｋを検索するものとする。この場合、クライアント（クライアント端末）からの問い合わせ（以下、第１の問い合わせと称する）は、例えばＸＰａｔｈで表記するならば、
／ｂｉｂ／ｂｏｏｋ［ｔｉｔｌｅ＝”ＴＣＰ．．”］
となる。
【０００８】
このような第１の問い合わせ（ＸＰａｔｈ）に基づく検索の高速化のために、値検索の対象となり得るｔｉｔｌｅノードに値索引が付与される。値索引は、「ＴＣＰ．．」及び「Ａｄｖ．．」のような値（キー）とノードＩＤとの組から構成される。ノードＩＤとはノード毎に割り当てられる固有の番号で、データベースに格納されたＸＭＬ文書における論理的な保存場所（ノード位置）を示す。
【０００９】
値索引の例を図２２に示す。図２２において、同図（ａ）はｔｉｔｌｅノードの値索引の例を、同図（ｂ）はｌａｓｔノード（ｌａｓｔ  ｎａｍｅを値として持つノード）の値索引の例を、同図（ｃ）はｆｉｒｓｔノード（ｆｉｒｓｔ  ｎａｍｅを値として持つノード）の値索引の例を、それぞれ示す。なお、これらの値索引は値索引テーブルに保持されるのが一般的である。
【００１０】
クライアントからの問い合わせに基づく検索時は、ノード（要素）の値をキーにして索引がサーチされ、該当する索引が見つかればその値に対応するノードＩＤを得ることができる。上述の第１の問い合わせ（ＸＰａｔｈ）の例では、ｔｉｔｌｅノードに付与された値索引から、ｔｉｔｌｅが「ＴＣＰ．．」であるノードが存在し、そのノードＩＤが３であると分かる（図２２（ａ）参照）。
【００１１】
このように、検索時に索引（値索引）を利用することにより、データベースに格納されたＸＭＬ文書全体をサーチする（ＸＭＬ文書内を辿る）ことなく、問い合わせの条件に合致するノードが存在するかしないか、また存在するならそのノード位置がどこかが分かるので、検索を高速に行うことができる。
【００１２】
また従来から、構造条件が指定された検索の高速化のために、データベースに格納されたＸＭＬ文書の構造情報を抽出し、索引化する方法が知られている。このような索引は、構造索引と呼ばれる。構造索引は「／」及び「／ｂｉｂ」のような構造を示すパス文字列と当該構造を持つノードのノードＩＤの組から構成される。同一のパス文字列に合致するノードが複数ある場合（／ｂｉｂ／ｂｏｏｋなど）、同じパス文字列に対し、複数のノードＩＤが対応する。このような構造索引のデータ構造は、後述する本発明の実施形態で適用される構造索引と同様であるため、必要ならば図６を参照されたい。
【００１３】
上述の第１の問い合わせ（ＸＰａｔｈ）の例では、値索引により値検索の条件に合致するノードが１つ（ノードＩＤ＝３のノード）見つけられる。しかし、値索引だけでは、このノードがＸＰａｔｈで与えられた構造条件（／ｂｉｂ／ｂｏｏｋ／ｔｉｔｌｅ）に合致しているか分からない。そこで、構造索引を利用して、構造条件に合致するかが調べられる。図６の構造索引（構造索引テーブル）からは、構造条件（／ｂｉｂ／ｂｏｏｋ／ｔｉｔｌｅ）に合致するノード、即ち／ｂｉｂ／ｂｏｏｋ／ｔｉｔｌｅという構造を持つノードが存在し、それらのノードＩＤが３，１３，２６であることが分かる。ノードＩＤ＝３が含まれているので、ノードＩＤ＝３のノードは構造条件と値検索の条件の両方を満たす。よってこのノードが検索条件を全て満たすと判断できる。
【００１４】
このように、検索時に値索引と構造索引とを利用することにより、データベースに格納されたＸＭＬ文書全体をサーチすることなく、構造条件を含む問い合わせの条件に合致するノードが存在するかしないか、また存在するならそのノード位置がどこかが分かるので、検索を高速に行うことができる。
【特許文献１】特開２００６−１８５８４号公報（段落００１３）
【発明の開示】
【発明が解決しようとする課題】
【００１５】
しかしながら、上記従来技術では、値検索の対象が複数指定された問い合わせ、例えば値検索の対象となるノード（タグノード）が「ａｎｄ」によって複数指定された問い合わせを処理する場合、つまり複数ノードの「ａｎｄ」を含む条件での検索の場合、データベースに格納されたＸＭＬ文書全体をサーチする（ＸＭＬ文書内を辿る）処理が必要となるために検索の遅延を招く。以下、このような検索について、次のような第２の問い合わせ（ｘＰａｔｈ）
／ｂｉｂ／ｂｏｏｋ／ａｕｔｈｏｒ［ｌａｓｔ＝”Ｓｔｅｖｅｎｓ”  ａｎｄ  ｆｉｒｓｔ＝”Ｗ．”］
に基づき、「ｌａｓｔ＝”Ｓｔｅｖｅｎｓ”」かつ「ｆｉｒｓｔ＝”Ｗ．”」であるａｕｔｈｏｒを検索する場合を例に説明する。
【００１６】
前述したように、検索の対象となり得るノードに対しては値索引が付与される。値索引は、「Ｓｔｅｖｅｎｓ」及び「Ｂｕｎｅｍａｎ」のような値（キー）とノードＩＤとの組から構成される。第２の問い合わせの場合、図２２（ｂ），（ｃ）に示されるように、ｌａｓｔノード及びｆｉｒｓｔノードにそれぞれ値索引を付与することによって、ｌａｓｔ＝”Ｓｔｅｖｅｎｓ”及びｆｉｒｓｔ＝”Ｗ．”のようなノードを高速に検索できる。
【００１７】
しかし、第２の問い合わせの示す検索条件は、「〜かつ〜であるａｕｔｈｏｒ」というａｎｄ条件である。このため、値索引から検索されたｌａｓｔノードとｆｉｒｓｔノードのうち、同じ親ノード（ａｕｔｈｅｒノード）を持つもの、つまり同じ親ノード（ａｕｔｈｅｒノード）と繋がっているものを選ぶ必要がある。ところが、このような繋がりは、値索引からは判定できない。そのため従来技術では、検索されたｌａｓｔノードとｆｉｒｓｔノードからデータベースに格納されているＸＭＬ文書全体を実際にサーチしなければならず、検索の遅延を招く。
【００１８】
従来技術では、このような遅延は、構造索引を用いた検索においても以下に述べるように発生する。  
第２の問い合わせに基づいて値索引から検索されるｌａｓｔノードのノードＩＤ、つまり、ｌａｓｔ＝”Ｓｔｅｖｅｎｓ”の値検索の条件を満たすノードのノードＩＤは、１６，２９である（図２２（ｂ）参照）。また、値索引から検索されるｆｉｒｓｔノードのノードＩＤ、つまり、ｆｉｒｓｔ＝”Ｗ．”の値検索の条件を満たすノードのノードＩＤは、８，１８，２３である（図２２（ｃ）参照）。
【００１９】
値索引から、ｌａｓｔノードのノードＩＤの集合（候補集合）及びｆｉｒｓｔノードのノードＩＤの集合（候補集合）が取得されると、例えば、これらの２つの候補集合に含まれるノードＩＤが、構造条件（ｌａｓｔノードに関しては／ｂｉｂ／ｂｏｏｋ／ａｕｔｈｏｒ／ｌａｓｔ、ｆｉｒｓｔノードに関しては／ｂｉｂ／ｂｏｏｋ／ａｕｔｈｏｒ／ｆｉｒｓｔ）を満たすかが構造索引を使って調べられる。この例では、全てのノードが構造条件を満たすことが分かる。
【００２０】
次に、「〜かつ〜であるａｕｔｈｏｒ」というａｎｄ条件のため、索引から絞り込まれたｌａｓｔノード及びｆｉｒｓｔノードの組み合わせのうち、同じ親ノード（ａｕｔｈｏｒノード）を持つものを選び出さす必要がある。この例では、ａｎｄ条件を満たすノードは、ｌａｓｔ＝”Ｓｔｅｖｅｎｓ”がノードＩＤ＝１６のノードとｆｉｒｓｔ＝”Ｗ．”がノードＩＤ＝１８のノードとの組み合わせだけである。
【００２１】
ところが、値索引及び構造索引からはｌａｓｔノードとｆｉｒｓｔノードとが同じ親ノードを持つかを判定できない。そのため従来技術では、データベースに格納されているＸＭＬ文書全体を実際にサーチしなければならず、検索の遅延を招く。
【００２２】
本発明は上記事情を考慮してなされたものでその目的は、値検索の対象が複数指定された問い合わせを処理するような場合でも、データベースに格納されている構造化文書をサーチしなくても済み、検索を高速化できる構造化文書検索システム、プログラム及び索引のデータ構造を提供することにある。
【課題を解決するための手段】
【００２３】
本発明の１つの観点によれば、構造化文書検索システムが提供される。このシステムは、データベースに格納された構造化文書に含まれているノードに対応付けられる索引であって、当該ノードの位置情報を含むノード情報及び当該ノードを含む前記構造化文書の木構造上で当該ノードと一定の関係のある予め指定されたノードである関連ノードの位置情報を含む索引を格納する索引格納手段と、クライアントから与えられる検索要求の示す検索条件に合致する索引を前記索引格納手段から検索する検索処理手段であって、前記検索条件が複数ノードの値検索で、かつ当該複数のノードに共通な関連ノードを検索対象としている場合に、前記値検索の条件毎に前記索引格納手段から当該条件に合致する索引を検索し、前記値検索の条件毎に検索された索引から一致する関連ノードの位置情報を探すことにより、前記検索対象のノードの候補を絞る検索処理手段とを具備する。
【発明の効果】
【００２４】
本発明によれば、データベースに格納された構造化文書に含まれているノードに対応付けられる索引に、当該ノードの位置情報を含むノード情報に加えて、当該ノードと一定の関係のある予め指定された関連ノードの位置情報を持たせることにより、値検索の対象として複数ノードが指定され、その複数のノードに共通な関連ノードを検索対象する問い合わせを処理する場合にも、索引格納手段に格納されている索引を検索するだけで処理が完了し、データベースに格納された構造化文書をサーチする必要がなことから、高速に検索できる。
【発明を実施するための最良の形態】
【００２５】
以下、本発明の実施の形態につき図面を参照して説明する。  
図１は本発明の一実施形態に係る構造化文書検索システム５０を含むクライアント−サーバシステムのハードウェア構成を示すブロック図である。クライアント−サーバシステムは、主として、データベースサーバ１０と、複数のクライアント端末（クライアント）とから構成される。複数のクライアント端末はクライアント端末２０を含む。クライアント端末２０上では、データベースサーバ１０を利用するアプリケーション（アプリケーションプログラム）が動作する。クライアント端末２０を含む複数のクライアント端末は、ローカルエリアネットワーク（ＬＡＮ）のようなネットワーク３０を介してデータベースサーバ１０と接続されている。なお、図１では、クライアント端末２０以外のクライアント端末は省略されている。
【００２６】
データベースサーバ１０は、主メモリのようなメモリ１１を有するコンピュータ（データベースサーバコンピュータ）である。データベースサーバ１０は、ハードディスクドライブのような外部記憶装置４０と接続されている。この外部記憶装置４０は、データベース管理プログラム４１及びデータベース４２を格納する。本実施形態において構造化文書検索システム５０は、データベースサーバ１０及び外部記憶装置４０（に格納されているデータベース４２）によって実現される。
【００２７】
データベース管理プログラム４１は、データベースサーバ１０によるデータベース４２の管理、及びクライアント端末からのＸＰａｔｈ，ＸＱｕｅｒｙ等を用いた問い合わせに基づく検索処理に用いられる。データベース４２は構造化文書としての例えばＸＭＬ文書（ＸＭＬ形式の電子文書）を格納するＸＭＬ文書データベース（構造化文書データベース）である。
【００２８】
図２は、データベース４２に格納されているＸＭＬ文書の集合の一例を示す。図２の例では、データベース４２には、ＸＭＬ文書１０１〜１０３を含むＸＭＬ文書群が格納されている。データベース４２に格納されるＸＭＬ文書に含まれている各ノードは、従来と同様に、当該ノードの位置を示す一意のノードＩＤを持つ。
【００２９】
図３は図１に示される構造化文書検索システム５０の主として機能構成を示すブロック図である。構造化文書検索システム５０は、データベース管理システム５１及びデータベース４２から構成される。データベース４２には、ＸＭＬ文書の集合に加えて、索引付与テーブル４２１、値索引テーブル４２２及び構造索引テーブル４２３が格納される。
【００３０】
索引付与テーブル４２１は、データベース４２に格納されるＸＭＬ文書に含まれているノードであって、値索引が付与（設定）される（対応付けられる）べきノードに関する情報（索引付与情報）を管理するのに用いられる。値索引テーブル４２２は、索引付与テーブル４２１によって管理されているノード（値検索の対象となり得るノード）に付与される（対応付けられる）値索引（索引情報）を保持する。この値索引は、詳細を後述するように、ノード（要素）の値（キー）、当該ノードのノードＩＤ及び関連ノード（ここでは親ノード）のノードＩＤの組を含む。構造索引テーブル４２３は、データベース４２に格納されるＸＭＬ文書に含まれているノードの構造を表す構造索引を保持する。
【００３１】
データベース管理システム５１は、要求処理部５２、検索処理部５３、索引管理部５４、文書登録処理部５５、データベース操作部５６、索引付与テーブル５７、値索引テーブル５８及び構造索引テーブル５９を含む。
【００３２】
要求処理部５２は、クライアント端末２０からの要求（コマンド）を受け付けて当該要求の種別を判別し、その判別結果に基づいて当該要求を検索処理部５３、索引管理部５４または文書登録処理部５５に送出する。ここでは要求処理部５２は、クライアント端末２０からの要求が、検索要求ならば当該検索要求を検索処理部５３に送出し、索引設定要求ならば当該索引設定要求を索引管理部５４に送出し、文書登録要求ならば当該文書登録要求を文書登録処理部５５に送出する。
【００３３】
検索処理部５３は、クライアント端末２０からの検索要求を要求処理部５２を介して受け取り、索引管理部５４（によって管理されている値索引テーブル５８）を利用して当該検索要求に含まれている問い合わせ（クエリ）に基づく検索処理を行う。検索処理部５３は、値索引検索部５３１、構造索引検索部５３２及び検索結果取得部５３３を含む。
【００３４】
値索引検索部５３１は検索要求（問い合わせ）の示す検索条件に値が合致する値索引を値索引テーブル５８から検索する。構造索引検索部５３２は、検索要求の示す検索条件に構造が合致する構造索引を構造索引テーブル５９から検索する。検索結果取得部５３３は、値索引検索部５３１及び構造索引検索部５３２による索引検索結果に基づいて検索要求に対する検索結果を取得する。
【００３５】
索引管理部５４は、クライアント端末２０からの索引設定要求を要求処理部５２を介して受け取り、当該索引設定要求に基づく索引設定処理を行う。この索引設定処理では、索引設定要求で指定された値索引が付与（設定）されるべき、ＸＭＬ文書内の要素（ノード）の情報が索引付与テーブル５７に追加される。索引管理部５４はまた、値索引が付与（設定）されているノードの情報を索引付与テーブル５７を用いて管理する。索引管理部５４は更に、検索処理部５３による値検索処理時に、当該検索処理部５３からの要求を受けて、値検索の条件となっているノードについて値索引テーブル５８に基づいて索引情報のリストを作成し、当該リストを検索処理部５３に渡す。
【００３６】
文書登録処理部５５は、クライアント端末２０からの文書登録要求を要求処理部５２を介して受け取り、当該文書登録要求で指定されたＸＭＬ文書をデータベース４２に登録（格納）する文書登録処理を行う。文書登録処理部５５は文書登録処理において、要求処理部５２に登録されるべきＸＭＬ文書に含まれているノードのうち、索引付与テーブル５７によって索引設定が示されているノードに付与する値索引を作成して値索引テーブル５８に追加する。
【００３７】
データベース操作部５６は、検索処理部５３、索引管理部５４及び文書登録処理部５５がデータベース４２にアクセスするのを可能とするインタフェースとして機能して、当該データベース４２に対する処理を行う。
【００３８】
索引付与テーブル５７、値索引テーブル５８及び構造索引テーブル５９は、それぞれ、データベース４２に格納されている索引付与テーブル４２１、値索引テーブル４２２及び構造索引テーブル４２３に対応する。本実施形態では、構造化文書検索システム５０の立ち上がり時に、データベース４２から索引付与テーブル４２１、値索引テーブル４２２及び構造索引テーブル４２３が、それぞれ索引付与テーブル５７、値索引テーブル５８及び構造索引テーブル５９として図１に示されるメモリ１１にコピーされる。構造化文書検索システム５０の稼動中は、索引付与テーブル５７、値索引テーブル５８及び構造索引テーブル５９を対象に参照／更新が行われる。索引付与テーブル５７、値索引テーブル５８及び構造索引テーブル５９の更新内容は、それぞれ、定期的に或いは随時（例えば構造化文書検索システム５０の負荷が低いときに）索引付与テーブル４２１、値索引テーブル４２２及び構造索引テーブル４２３に反映される。
【００３９】
図４は、図３に示される索引付与テーブル５７のデータ構造例を示す。本実施形態において、索引付与テーブル５７のエントリは、パス（パス文字列）及び関連ノード種類の組を設定するのに用いられる。  
パスは、該当するノードの構造を（当該ノードに至るルートノードからの経路で）示す絶対パスである。
【００４０】
関連ノード種類は、対応するパスで指定されるノード（指定ノード）と当該ノードを含むＸＭＬ文書の階層構造（木構造）上で一定の関係のある（つまり当該ノードと関連する）ノード（関連ノード）の種類を示す。ここでは、検索の対象となる複数のノードを検索して、その複数のノードに共通の種類の関連ノードを検索結果として取得したい場合に、その種類がユーザによって指定される。関連ノードとは、前述したように、指定ノードを含むＸＭＬ文書の階層構造（木構造）上で当該ノードと一定の関係のあるノードを指し、例えば親ノード、兄弟ノードのようなノードである。関連ノードは、指定ノードを含むＸＭＬ文書の木構造上で当該指定ノードから辿ることができる。本実施形態では説明の簡略化のために、関連ノード種類が親ノードのみに限られるものとする。
【００４１】
図５は、図３に示される値索引テーブル５８のデータ構造例を示す。本実施形態において、値索引テーブル５８は、索引付与テーブル５７を用いて管理されるノードに付与される値索引（索引情報）を保持するのに用いられる。この値索引は、該当するノードの値（キー）、当該ノードのノードＩＤ及び当該ノードと関連する関連ノードのノードＩＤ（関連ノードＩＤ）を含む。値索引が従来技術と異なる点は、関連ノードＩＤが追加されていることである。図５の値索引テーブル５８は、図２に示すＸＭＬ文書１０１〜１０３中のｌａｓｔノード及びｆｉｒｓｔノードに付与されている値索引を含む。
【００４２】
図６は、図３に示される構造索引テーブル５９のデータ構造例を示す。構造索引テーブル５９は、データベース４２に格納されるＸＭＬ文書に含まれているノードの構造を表す構造索引を保持するのに用いられる。本実施形態で適用される構造索引は、従来技術と同様に、構造を表すパス（パス文字列）及び当該パスで表される構造のノードのノードＩＤの組を含む。
【００４３】
図６の構造索引テーブル５９は、図２に示すＸＭＬ文書１０１〜１０３中の各ノードの構造に付与されている（各ノードに対応付けられている）構造索引、つまり各ノードの構造に対応した構造索引を含む。同一のパス（パス文字列）に複数のノードＩＤが対応する場合、構造索引テーブル５９には、当該同一のパスに対応付けて、ノードＩＤと関連ノードＩＤとの組み合わせが複数登録される。このような例として、図２のＸＭＬ文書１０１〜１０３のように、同じ構造を持つＸＭＬ文書が複数登録された場合が挙げられる。
【００４４】
本実施形態において、要求処理部５２、検索処理部５３、索引管理部５４、文書登録処理部５５及びデータベース操作部５６は、図１のデータベースサーバ１０が外部記憶装置４０に格納されているデータベース管理プログラム４１を当該サーバ１０内のメモリ１１に読み込んで実行することにより実現されるものとする。このプログラム４１は、コンパクトディスク、或いはＲＯＭのような、コンピュータ読み取り可能な記憶媒体に予め格納して頒布可能である。また、このプログラム４１が、ネットワーク３０を介してデータベースサーバ１０にダウンロードされても構わない。
【００４５】
次に、図３の構造化文書検索システム５０の動作について説明する。  
＜索引設定処理＞
まず、構造化文書検索システム５０における索引設定処理について、図７のフローチャートを参照して説明する。
【００４６】
今、クライアント端末２０の表示画面に例えば図２に示されるような木構造のＸＭＬ文書１０１〜１０３が表示されているものとする。図２の例では、これらのＸＭＬ文書１０１〜１０３は、ファイルシステムのフォルダ或いはディレクトリに相当する、”ｂｉｂ”と呼ばれるコレクションに格納して管理されている。ここでは、ＸＭＬ文書１０１〜１０３の最上位のノードはｂｏｏｋノードであり、これらのｂｏｏｋノードの親ノードはｂｉｂノードである。図２の例では、ｂｉｂノードはＸＭＬ文書１０１〜１０３を含む木構造のルートノードをなしている。
【００４７】
さて、図２に示されるような木構造のＸＭＬ文書１０１〜１０３が表示されている状態で、ユーザが、任意のノードを索引が作成されるべきノードとして例えばマウス操作により指定したものとする。このノード指定状態で、ユーザがクライアント端末２０を操作して、索引設定を指示したものとする。この際、関連ノードの指定が必要ならば、ユーザは所望の関連ノードの種類を指定する。
【００４８】
するとクライアント端末２０は、ユーザからの指示に従い、構造化文書検索システム５０に対して、指定のノードに索引を設定（付与）させるための索引設定要求をネットワーク３０経由で送出する（ステップＳ１）。この索引設定要求は、設定される索引が付与されるべきノードの構造を表すパス（絶対パス）、及び関連ノードの種類の情報を含む。
【００４９】
構造化文書検索システム５０内の要求処理部５２は、クライアント端末２０からの索引設定要求を受け取ると、当該索引設定要求を索引管理部５４に渡して索引設定を要求する（ステップＳ２）。索引管理部５４は、クライアント端末２０からの索引設定要求を要求処理部５２を介して受け取ると、当該要求で指定されたノード（つまり索引が設定されべきノード）に関する索引付与情報を索引付与テーブル５７に追加する（ステップＳ３）。ここでは、指定されたノードに関する索引付与情報として、当該ノードの構造を表すパス、及び当該ノードに関連するノード（関連ノード）の種類が索引付与テーブル５７に追加される。
【００５０】
したがって、例えば指定ノードが図２におけるノードＩＤ＝６のノードであり、指定された関連ノードの種類が親ノードであるならば、索引付与テーブル５７には、パス（パス文字列）として「／ｂｉｂ／ｂｏｏｋ／ａｕｔｈｏｒ／ｌａｓｔ」を示し、関連ノードの種類として「親ノード」を示す索引付与情報が追加される（図４参照）。同様に、指定ノードが図２におけるノードＩＤ＝８のノードであり、指定された関連ノードの種類が親ノードであるならば、索引付与テーブル５７には、パスとして「／ｂｉｂ／ｂｏｏｋ／ａｕｔｈｏｒ／ｆｉｒｓｔ」を示し、関連ノードの種類として「親ノード」を示す索引付与情報が追加される（図４参照）。
【００５１】
＜文書登録処理＞
次に、索引設定後の文書登録処理について、図８のフローチャートを参照して説明する。
【００５２】
今、ユーザが、データベース４２に登録されるべきＸＭＬ文書を指定して、当該ＸＭＬ文書の登録を指示するための操作を、クライアント端末２０上で行ったものとする。するとクライアント端末２０は、構造化文書検索システム５０に対して、指定のＸＭＬ文書をデータベース４２に登録させるための文書登録要求をネットワーク３０経由で送出する（ステップＳ１１）。
【００５３】
要求処理部５２は、クライアント端末２０からの文書登録要求を受け取ると、当該文書登録要求を文書登録処理部５５に渡してＸＭＬ文書の登録を要求する（ステップＳ１２）。
【００５４】
文書登録処理部５５は、クライアント端末２０からの文書登録要求を要求処理部５２を介して受け取ると、当該要求で指定されたＸＭＬ文書のパース（構文解析）を開始する（ステップＳ１３）。文書登録処理部５５は、ＸＭＬ文書のパースによって当該ＸＭＬ文書からノードが抽出される都度、そのノードについて次のように処理を行う（ステップＳ１４）。ＸＭＬ文書から抽出されるノードの順序は、当該ＸＭＬ文書に出現するノードの順序に一致する。
【００５５】
まず文書登録処理部５５は、抽出されたノードの情報（ここでは、抽出されたノードの構造を表すパス）が索引付与テーブル５７に登録されているかを、索引管理部５４に問い合わせる（ステップＳ１５）。すると索引管理部５４は、索引付与テーブル５７を参照して、問い合わせられたノードの構造を表すパス（パス文字列）が索引付与テーブル５７に登録されているかを調べ、その結果を文書登録処理部５５に通知する。もし、登録されている場合、索引管理部５４は、問い合わせられたノードの構造を表すパスと組を成して索引付与テーブル５７に登録されている関連ノードの種類も文書登録処理部５５に通知する。
【００５６】
文書登録処理部５５は、索引管理部５４からの通知を受けて、抽出されたノード（の構造を表すパス）が索引付与テーブル５７に登録されているかを判定する（ステップＳ１６）。もし登録されているならば、文書登録処理部５５は索引管理部５４からの通知に基づき、抽出されたノードの構造を表すパスと組を成して索引付与テーブル５７に登録されている関連ノードの種類を確認する。
【００５７】
次に文書登録処理部５５は、抽出されたノードの値が値索引テーブル５８に登録されているかを、索引管理部５４に問い合わせる（ステップＳ１７）。すると索引管理部５４は、値索引テーブル５８を参照して、問い合わせられた値が値索引テーブル５８に登録されているかを調べ、その結果を文書登録処理部５５に通知する。文書登録処理部５５は、索引管理部５４からの通知を受けて、抽出されたノードの値が値索引テーブル５８に登録されているかを判定する（ステップＳ１８）。
【００５８】
もし、登録されていないならば（ステップＳ１８）、文書登録処理部５５は、抽出されたノードの値と当該ノードのノードＩＤと確認された種類の関連ノード（ここでは親ノード）のノードＩＤとの組を、索引管理部５４により値索引テーブル５８に追加させる（ステップＳ１９）。ここで、関連ノードが本実施形態のように親ノードである場合、当該関連ノードは既に抽出されている。これは、関連ノードが、例えば兄ノードの場合、或いは親ノードの更に親ノードの場合（つまり祖父母ノードの場合）にも同様である。もし、関連ノードが例えば弟ノードである場合には、文書登録処理部５５は木構造を辿って弟ノードを抽出する。これに対し、抽出されたノードの値が登録されているならば（ステップＳ１８）、文書登録処理部５５は、当該ノードのノードＩＤと確認された種類の関連ノード（ここでは親ノード）のノードＩＤとの組を、登録されている値に対応付けて、索引管理部５４により値索引テーブル５８に追加させる（ステップＳ２０）。
【００５９】
文書登録処理部５５はステップＳ１９またはＳ２０を実行すると、抽出されたノードの構造を表すパス（パス文字列）が構造索引テーブル５９に登録されているかを、索引管理部５４に問い合わせる（ステップＳ２１）。また文書登録処理部５５は、抽出されたノード（の構造を表すパス）が索引付与テーブル５７に登録されていないと判定された場合には（ステップＳ１６）、直ちに上記ステップＳ２１の問い合わせを行う。
【００６０】
索引管理部５４は、文書登録処理部５５からの問い合わせを受けて構造索引テーブル５９を参照して、問い合わせられたノードの構造を表すパス（パス文字列）が構造索引テーブル５９に登録されているかを調べ、その結果を文書登録処理部５５に通知する。文書登録処理部５５は、索引管理部５４からの通知を受けて、抽出されたノードの構造を表すパスが構造索引テーブル５９に登録されているかを判定する（ステップＳ２２）。
【００６１】
もし、登録されていないならば（ステップＳ２２）、文書登録処理部５５は、抽出されたノードの構造を表すパス（パス文字列）と当該ノードのノードＩＤとの組を、索引管理部５４により構造索引テーブル５９に追加させる（ステップＳ２３）。これに対し、抽出されたノードの構造を表すパスが登録されているならば（ステップＳ２２）、文書登録処理部５５は、当該ノードのノードＩＤを当該パスに対応付けて、索引管理部５４により構造索引テーブル５９に追加させる（ステップＳ２４）。
【００６２】
文書登録処理部５５はステップＳ２３またはＳ２４を実行すると、抽出されたノード（つまりＸＭＬ文書の一部）をデータベース４２に格納するドキュメント格納処理を行う（ステップＳ２５）。
【００６３】
文書登録処理部５５は、ドキュメント格納処理（ステップＳ２５）を行うと、クライアント端末２０から要求されたＸＭＬ文書のパースが全て終了したか、つまりＸＭＬ文書に含まれている全てのノードについて処理をし終えたかを判定する（ステップＳ２６）。もし、未処理のノードが残っているならば、文書登録処理部５５は上記ステップＳ１４に戻り、次のノードについて処理を継続する。
【００６４】
以上の処理により、索引付与テーブル５７に登録されている構造のノードについて、当該ノードに付与される値索引が値索引テーブル５８に追加される。この値索引は、従来の値索引とは異なり、ノード（要素）の値及び当該ノードのノードＩＤに加えて、関連ノード（ここでは親ノード）のノードＩＤ（関連ノードＩＤ）を含む。図５に示される値索引テーブル５８は、図２に示されるＸＭＬ文書１０１〜１０３がデータベース４２に登録された際に追加された値索引を含む。
【００６５】
＜検索処理＞
次に、値索引テーブル５８に登録されている値索引及び構造索引テーブル５９に登録されている構造索引を利用した検索処理について、図９Ａ及び図９Ｂのフローチャートを参照して説明する。
【００６６】
今、ユーザがクライアント端末２０を操作することにより、当該クライアント端末２０から構造化文書検索システム５０に対して、ネットワーク３０経由で検索要求が送出されたものとする（ステップＳ３１）。この検索要求は、例えばＸＰａｔｈで記述された問い合わせ（クエリ）を含むものとする。このとき、データベース４２には、図２に示す構造のＸＭＬ文書１０１〜１０３が格納されているものとする。また、図５に示される値索引テーブル５８は、前述したように、図２に示されるＸＭＬ文書１０１〜１０３がデータベース４２に登録された際に追加された値索引を含むものとする。
【００６７】
要求処理部５２は、クライアント端末２０からの検索要求を受け取ると、当該検索要求を検索処理部５３に渡して検索を要求する（ステップＳ３２）。検索処理部５３は、検索要求を解析する（ステップＳ３３）。ここでは、検索要求に含まれる問い合わせが、発明が解決しようとする課題の欄で述べた第２の問い合わせ（ｘＰａｔｈ）
／ｂｉｂ／ｂｏｏｋ／ａｕｔｈｏｒ［ｌａｓｔ＝”Ｓｔｅｖｅｎｓ”  ａｎｄ  ｆｉｒｓｔ＝”Ｗ．”］
であるものとする。つまり、クライアント端末２０からの検索要求によって、「ｌａｓｔ＝”Ｓｔｅｖｅｎｓ”」かつ「ｆｉｒｓｔ＝”Ｗ．”」であるａｕｔｈｏｒ（親ノード）を検索することが要求されているものとする。ここで、「ｌａｓｔ＝”Ｓｔｅｖｅｎｓ”」、つまり「値が”Ｓｔｅｖｅｎｓ”であるｌａｓｔノードであること」は、値検索の１つの条件である。同様に、「ｆｉｒｓｔ＝”Ｗ．”」、つまり「値が”Ｗ．”であるｆｉｒｓｔノードであること」も、値検索の１つの条件である。
【００６８】
検索処理部５３は、ステップＳ２３での解析結果に基づき、要求された検索が索引設定されている複数ノードの値検索で、かつ要求された検索対象ノードが親ノードであるかを判定する（ステップＳ３４）。本実施形態では、ステップＳ３４の判定条件を満たす。この場合、検索処理部５３内の値索引検索部５３１は値索引テーブル５８を利用した検索を次のように行う。
【００６９】
値索引検索部５３１は、複数の値検索の条件の中から、未処理の条件を１つ選択する（ステップＳ３５）。ここでは、「ｌａｓｔ＝”Ｓｔｅｖｅｎｓ”」が選択されたものとする。値索引検索部５３１は、選択された値検索の条件に合致するノード（値が”Ｓｔｅｖｅｎｓ”であるｌａｓｔノード）についての値索引のリストを索引管理部５４に対して要求する（ステップＳ３６）。以下の説明では、選択された値検索の条件に合致するノードを候補ノードと称する。
【００７０】
索引管理部５４は、値索引検索部５３１からの要求に応じて値索引テーブル５８を参照することにより、要求された候補ノード（値が”Ｓｔｅｖｅｎｓ”であるｌａｓｔノード）の値索引のリストを第１の候補ノードリストとして作成する。第１の候補ノードリストは、候補ノードの値、及び、当該値を持つ全てのノードのノードＩＤと当該ノードの関連ノード（親ノード）のノードＩＤ（関連ノードＩＤ）との組を含む。なお、ノードＩＤと関連ノードＩＤとの組毎に、そのノードの値（ここでは”Ｓｔｅｖｅｎｓ”）を持たせても良い。つまり、第１の候補ノードリストが、値とノードＩＤと関連ノードＩＤとの組のリストであっても構わない。
【００７１】
索引管理部５４は、値索引テーブル５８に基づいて作成された第１の候補ノードリストを検索処理部５３内の値索引検索部５３１に通知する。これにより値索引検索部５３１は、通知された第１の候補ノードリストを取得する（ステップＳ３７）。つまり値索引検索部５３１は、値検索の条件に合致する値索引を、索引管理部５４を介して値索引テーブル５８から検索することにより第１の候補ノードリストを取得する。
【００７２】
値索引検索部５３１は、第１の候補ノードリストを取得するとソート手段として機能して、当該第１の候補ノードリストを、例えば候補ノードのノードＩＤ及び関連ノードＩＤ（親ノードＩＤ）の昇順にソートする（ステップＳ３８）。ここでは、候補ノードのノードＩＤが優先される。ソートされた第１の候補ノードリストは、図１に示すデータベースサーバ１０に含まれているメモリ１１の所定領域に格納される。
【００７３】
値索引検索部５３１はステップＳ３８を実行すると、全ての値検索の条件について処理を行ったかを判定する（ステップＳ３９）。もし、未処理の値検索の条件が残っているならば、値索引検索部５３１はステップＳ３５に戻って、未処理の条件を１つ選択する。ここでは、値が「ｆｉｒｓｔ＝”Ｗ．”」が選択されたものとする。
【００７４】
値索引検索部５３１は、選択された値検索の条件に合致する候補ノード（値が”Ｗ．”であるｆｉｒｓｔノード）について、上記ステップＳ３６以降の処理を実行する。これにより値索引検索部５３１は、候補ノード（値が”Ｗ．”であるｆｉｒｓｔノード）の値索引（索引情報）のリストを第１の候補ノードリストとして取得して、当該リストをソートする。ソートされた第１の候補ノードリストは、図１に示すメモリ１１の所定領域に格納される。
【００７５】
図１０は、図５に示される値索引テーブル５８の場合に取得される、値が”Ｓｔｅｖｅｎｓ”であるｌａｓｔノードの第１の候補ノードリスト１１１と、値が”Ｗ．”であるｆｉｒｓｔノードの第１の候補ノードリスト１１２とを示す。図１１は、図１０に示す候補ノードリスト１１１及び１１２に含まれている、それぞれ、値が”Ｓｔｅｖｅｎｓ”であるｌａｓｔノード及び値が”Ｗ．”であるｆｉｒｓｔノードの、図２に示されるＸＭＬ文書１０１〜１０３における位置を示す。また、図１１において、白抜きの矢印は、値が”Ｓｔｅｖｅｎｓ”であるｌａｓｔノードまたは値が”Ｗ．”であるｆｉｒｓｔノードの関連ノード（親ノード）を指し示す。
【００７６】
値検索の条件となっている複数ノードの全てについて、検索処理部５３内の値索引検索部５３１による処理が行われると（ステップＳ３９）、検索処理部５３内の構造索引検索部５３２が起動される。構造索引検索部５３２は、複数の値検索の条件の中から未処理の条件を１つ選択し（ステップＳ４０）、選択された条件に含まれている構造条件を抽出する（ステップＳ４１）。ここでは、値検索の条件である「値が”Ｓｔｅｖｅｎｓ”であるｌａｓｔノード」に関する構造条件（を表すパス）「／ｂｉｂ／ｂｏｏｋ／ａｕｔｈｏｒ／ｌａｓｔ」が抽出されたものとする。
【００７７】
構造索引検索部５３２は、抽出された構造条件（／ｂｉｂ／ｂｏｏｋ／ａｕｔｈｏｒ／ｌａｓｔ）に合致するノード（候補ノード）についての構造索引のリストを索引管理部５４に対して要求する（ステップＳ４２）。
【００７８】
索引管理部５４は、構造索引検索部５３２からの要求に応じて構造索引テーブル５９を参照することにより、要求された（選択された）構造条件（／ｂｉｂ／ｂｏｏｋ／ａｕｔｈｏｒ／ｌａｓｔ）に合致する候補ノードの構造索引のリストを第２の候補ノードリストとして作成する。第２の候補ノードリストは、構造条件に一致するパス（パス文字列）、及び当該パスで特定される全てのノード（候補ノード）のノードＩＤを含む。なお、ノードＩＤ毎に、選択された構造条件を表すパス（ここでは／ｂｉｂ／ｂｏｏｋ／ａｕｔｈｏｒ／ｌａｓｔ）を持たせても良い。つまり、第２の候補ノードリストが、パスとノードＩＤとの組のリストであっても構わない。
【００７９】
索引管理部５４は、作成された第２の候補ノードリストを検索処理部５３内の構造索引検索部５３２に通知する。これにより構造索引検索部５３２は、通知された第２の候補ノードリストを取得する（ステップＳ４３）。つまり構造索引検索部５３２は、値検索の条件に含まれている構造条件に合致する構造索引を、索引管理部５４を介して構造索引テーブル５９から検索することにより第２の候補ノードリストを取得する。
【００８０】
構造索引検索部５３２は、第２の候補ノードリストを取得するとソート手段として機能して、当該第２の候補ノードリストを、例えば候補ノードのノードＩＤの昇順にソートする（ステップＳ４４）。ソートされた第２の候補ノードリストは、図１に示すデータベースサーバ１０に含まれているメモリ１１の所定領域に格納される。
【００８１】
構造索引検索部５３２はステップＳ４４を実行すると、全ての値検索の条件について処理を行ったかを判定する（ステップＳ４５）。もし、未処理の値検索の条件が残っているならば、構造索引検索部５３２はステップＳ４０に戻って未処理の条件を１つ選択し、選択された条件に含まれている構造条件を抽出する（ステップＳ４１）。ここでは、「値が”Ｗ．”であるｆｉｒｓｔノード」に関する構造条件（を表すパス）「／ｂｉｂ／ｂｏｏｋ／ａｕｔｈｏｒ／ｆｉｒｓｔ」が抽出されたものとする。
【００８２】
構造索引検索部５３２は、抽出された構造条件「／ｂｉｂ／ｂｏｏｋ／ａｕｔｈｏｒ／ｆｉｒｓｔ」について上記ステップＳ４２以降の処理を実行する。これにより構造索引検索部５３２は、構造条件「／ｂｉｂ／ｂｏｏｋ／ａｕｔｈｏｒ／ｆｉｒｓｔ」に合致する候補ノードについての構造索引のリストを第２の候補ノードリストとして取得して、当該リストをソートする。ソートされた第２の候補ノードリストは、図１に示すメモリ１１の所定領域に格納される。
【００８３】
図１２は、図６に示される構造索引テーブル５９の場合に取得される、構造条件「／ｂｉｂ／ｂｏｏｋ／ａｕｔｈｏｒ／ｌａｓｔ」に合致するｌａｓｔノードの第２の候補ノードリスト１１３と、構造条件「／ｂｉｂ／ｂｏｏｋ／ａｕｔｈｏｒ／ｆｉｒｓｔ」に合致するｆｉｒｓｔノードの第２の候補ノードリスト１１４とを示す。
【００８４】
値検索の条件となっている複数ノードの全てについて、検索処理部５３内の構造索引検索部５３２による処理が行われると（ステップＳ４５）、検索処理部５３内の検索結果取得部５３３が起動される。検索結果取得部５３３は、値検索の条件毎に、その条件に関して値索引テーブル５８に基づいて取得された第１の候補ノードリストと構造索引テーブル５９に基づいて取得された第２の候補ノードリストとを、候補ノードのノードＩＤを用いてマージする（ステップＳ４６）。ここでは検索結果取得部５３３は、ノードＩＤをキーにして、候補ノードリスト間の論理積をとる、いわゆるＡＮＤマージを行う。
【００８５】
これにより、図１３に示す第３の候補ノードリスト１１５及び１１６が生成される。第３の候補ノードリスト１１５は、図１０に示す第１の候補ノードリスト１１１及び図１２に示す第２の候補ノードリスト１１３のＡＮＤマージ結果であり、当該リスト１１１及び１１３に共通に含まれているノードＩＤについて、当該ノードＩＤと関連ノードＩＤとの組を含むと共に、対応するノード（要素）に共通の当該ノードの値を含む。第３の候補ノードリスト１１６は、図１０に示す第１の候補ノードリスト１１２及び図１２に示す第２の候補ノードリスト１１４のＡＮＤマージ結果であり、当該リスト１１２及び１１４に共通に含まれているノードＩＤについて、当該ノードＩＤと関連ノードＩＤとの組を含むと共に、対応するノード（要素）に共通の当該ノードの値を含む。
【００８６】
検索結果取得部５３３はステップＳ４６を実行すると、値検索の条件毎に生成された第３の候補ノードリストの間で関連ノードＩＤ（ここでは親ノードＩＤ）が一致する組み合わせを探す（ステップＳ４７）。ここでは検索処理部５３ａは、第３の候補ノードリストに含まれている関連ノードＩＤをキーとして値検索の条件毎に生成された第３の候補ノードリストの間のＡＮＤマージをとることにより、関連ノードＩＤ（親ノードＩＤ）が一致する組み合わせを探す。図１４は、図１３に示す候補ノードリスト１１５及び１１６の場合の関連ノードＩＤ（親ノードＩＤ）が一致する組み合わせのリスト（検索結果リスト）１１７を示す。ここでは、関連ノードＩＤ＝１５だけが一致する。このノードＩＤ＝１５は、図１１からも明らかなように、クライアント端末２０からの検索要求によって要求された、「ｌａｓｔ＝”Ｓｔｅｖｅｎｓ”」かつ「ｆｉｒｓｔ＝”Ｗ．”」であるａｕｔｈｏｒのノードＩＤである。
【００８７】
検索結果取得部５３３はステップＳ４７のＡＮＤマージによって取得された検索結果リストに含まれている関連ノードＩＤ、つまり値検索の条件毎に生成された第３の候補ノードリストの間で一致する関連ノードＩＤを、クライアント端末２０からの検索要求に対する検索結果として、要求処理部５２経由でクライアント端末２０に返す（ステップＳ４８）。図１４に示す検索結果リスト１１７が取得された場合、関連ノードＩＤ＝１５、つまり「ｌａｓｔ＝”Ｓｔｅｖｅｎｓ”」かつ「ｆｉｒｓｔ＝”Ｗ．”」であるａｕｔｈｏｒのノードＩＤ＝１５が、検索結果としてクライアント端末２０に返される。
【００８８】
このように本実施形態においては、値索引テーブル５８に保持される値索引に、関連ノード（親ノード）のノードＩＤ（関連ノードＩＤ）を持たせることにより、複数ノードの値検索で、かつ要求された検索対象ノードが当該複数ノードの関連ノード（親ノード）である検索処理を、データベース４２内のＸＭＬ文書全体をサーチすることなく、当該値索引テーブル５８を参照する索引操作のみで実行できる。このため本実施形態においては、上述の検索処理を高速に検索することができる。
【００８９】
なお、複数ノードの値検索で、かつ要求された検索対象ノードが当該複数ノードの関連ノード（親ノード）である条件に合致しない検索の場合（ステップＳ３４）、検索処理部５３は従来の検索処理（ステップＳ５０）を実行する。
【００９０】
上記実施形態では、索引付与テーブル５７によって管理されるノード（ｌａｓｔノード及びｆｉｒｓｔノード）の関連ノードの種類が親ノードである場合を前提としている。しかし、索引付与テーブル５７によって管理されるノード（ｌａｓｔノード及びｆｉｒｓｔノード）の関連ノードの種類を、親ノード以外とすることも可能である。例えば「ｌａｓｔ＝”Ｓｔｅｖｅｎｓ”」かつ「ｆｉｒｓｔ＝”Ｗ．”」であるａｕｔｈｏｒの本（ｂｏｏｋ）のタイトル（ｔｉｔｌｅ）を検索結果として欲しい場合、ユーザは索引設定要求で、関連ノードとして親ノードの兄ノード（つまり伯父ノード）を指定することにより、ユーザの使用する検索条件に適した関連ノードの情報を値索引テーブル５８に保持される値索引に持たせることができる。これにより、検索条件（検索対象ノード）が変化しても高速な検索が可能となる。
【００９１】
［変形例］
次に、上記実施形態の変形例（特に構造化文書検索システム５０の変形例）について、図面を参照して説明する。  
図１５は、本変形例で適用される構造化文書検索システム５０ａの主として機能構成を示すブロック図である。図１５において、図３と同様の部分には同一符号を付してある。
【００９２】
構造化文書検索システム５０ａは上記実施形態における構造化文書検索システム５０に相当する。構造化文書検索システム５０ａは、構造化文書検索システム５０と同様に、図１に示されるデータベースサーバ１０及び外部記憶装置４０（に格納されているデータベース４２）によって実現されるものとする。
【００９３】
構造化文書検索システム５０ａは、データベース管理システム５１ａ及びデータベース４２から構成される。本変形例においてデータベース４２には、ＸＭＬ文書の集合、索引付与テーブル４２１、値索引テーブル４２２ａ及び構造索引テーブル４２３ａが格納される。
【００９４】
値索引テーブル４２２ａは従来の値索引テーブルと同様のデータ構造を有しており、上記実施形態で適用された値索引テーブル４２２と異なって関連ノードＩＤを持たない。構造索引テーブル４２３ａは、索引付与テーブル４２１によって管理されているノード（値検索の対象となり得るノード）に対応付けられる（付与される）構造索引を保持する。この構造索引は、詳細を後述するように、ノード（要素）の構造を表すパス（パス文字列）、当該パスで特定されるノードのノードＩＤ、及び当該ノードと関連する関連ノード（ここでは親ノード）のノードＩＤの組を含む。
【００９５】
データベース管理システム５１ａが図３の構造化文書検索システム５０と異なる点は、検索処理部５３、値索引テーブル５８及び構造索引テーブル５９に代えて、それぞれ、検索処理部５３ａ、値索引テーブル５８ａ及び構造索引テーブル５９ａが用いられることである。値索引テーブル５８ａ及び構造索引テーブル５９ａは、それぞれ、データベース４２に格納されている値索引テーブル４２２ａ及び構造索引テーブル４２３ａに対応する。値索引テーブル４２２ａ及び構造索引テーブル４２３ａは、構造化文書検索システム５０ａの立ち上がり時に、それぞれ、値索引テーブル５８ａ及び構造索引テーブル５９ａとして図１に示されるメモリ１１にコピーされる。
【００９６】
検索処理部５３ａが上記実施形態における検索処理部５３と異なる点は、値索引検索部５３１、構造索引検索部５３２及び検索結果取得部５３３に加えて、ノード数判定部５３４及び文書サーチ部５３５を含むことである。ノード数判定部５３４は、値索引検索部５３１が取得する第１の候補ノードリストに含まれている候補ノードの総数が予め定められた一定数以上であるかを判定する。文書サーチ部５３５は、候補ノードの総数が一定数未満の場合に、データベース４２に格納されているＸＭＬ文書をサーチすることにより、構造条件に合致する候補ノードのリスト（第４の候補リードリスト）を取得して、これらのリストの間で関連ノードＩＤが一致する組み合わせを探す。
【００９７】
図１６は、図１５に示される値索引テーブル５８ａのデータ構造例を示す。値索引テーブル５８ａは、上記実施形態における値索引テーブル５８と同様に、索引付与テーブル５７を用いて管理されるノードに付与される値索引を保持する。但し、値索引テーブル５８ａに保持される値索引は、値索引テーブル５８に保持される値索引と異なり、関連ノードＩＤを持たない。図１６の値索引テーブル５８ａは、図２に示すＸＭＬ文書１０１〜１０３中のｌａｓｔノード及びｆｉｒｓｔノードに付与されている値索引を含む。
【００９８】
図１７は、図１５に示される構造索引テーブル５９ａのデータ構造例を示す。構造索引テーブル５９ａは、上記実施形態における構造索引テーブル５９と同様に、データベース４２に格納されるＸＭＬ文書に含まれているノードの構造を表す構造索引を保持するのに用いられる。この構造索引は、構造を表すパス（パス文字列）、当該パスで特定されるノードのノードＩＤ及び当該ノードと関連する関連ノードのノードＩＤ（関連ノードＩＤ）を含む。この構造索引が構造索引テーブル５９に保持される構造索引と異なる点は、関連ノードＩＤが追加されていることである。つまり本変形例では、関連ノードＩＤは値索引ではなくて構造索引に持たせられる。図１７の構造索引テーブル５９ａは、図２に示すＸＭＬ文書１０１〜１０３中の各ノードの構造に対応した構造索引を含む。
【００９９】
次に、図１１の構造化文書検索システム５０ａの動作について、上記実施形態における構造化文書検索システム５０の動作と相違する点を中心に説明する。
【０１００】
＜文書登録処理＞
まず、本変形例における索引設定後の文書登録処理について、図１８のフローチャートを参照して説明する。図１８において、図８のフローチャートと同様の処理ステップには同一の符号を付してある。
【０１０１】
今、クライアント端末２０から構造化文書検索システム５０ａに対して、ユーザ指定のＸＭＬ文書をデータベース４２に登録させるための文書登録要求が送出されたものとする（ステップＳ１１）。すると、構造化文書検索システム５０ａ内の文書登録処理部５５は指定のＸＭＬ文書のパース（構文解析）を開始し（ステップＳ１３）、当該ＸＭＬ文書からノードが抽出される都度、そのノードについて次のように処理を行う（ステップＳ１４）
まず文書登録処理部５５は、抽出されたノードの情報（パス）が索引付与テーブル５７に登録されているかを、索引管理部５４に問い合わせることで判定する（ステップＳ１５，Ｓ１６）。もし登録されているならば、文書登録処理部５５は問い合わせに対する索引管理部５４からの通知に基づき、抽出されたノードの構造を表すパスと組を成して索引付与テーブル５７に登録されている関連ノードの種類を確認する。
【０１０２】
さて、抽出されたノードの情報（パス）が索引付与テーブル５７に登録されている場合（ステップＳ１６）、文書登録処理部５５は、当該ノードの値が値索引テーブル５８ａに登録されているかを、索引管理部５４に問い合わせることで判定する（ステップＳ１７，Ｓ１８）。
【０１０３】
もし、登録されていないならば（ステップＳ１８）、文書登録処理部５５は、抽出されたノードの値と当該ノードのノードＩＤとの組を、索引管理部５４により値索引テーブル５８ａに追加させる（ステップＳ１９ａ）。これに対し、抽出されたノードの値が登録されているならば（ステップＳ１８）、文書登録処理部５５は、当該ノードのノードＩＤを、登録されている値に対応付けて、索引管理部５４により値索引テーブル５８ａに追加させる（ステップＳ２０ａ）。
【０１０４】
文書登録処理部５５はステップＳ１９ａまたはＳ２０ａを実行すると、抽出されたノードの構造を表すパス（パス文字列）が構造索引テーブル５９ａに登録されているかを、索引管理部５４に問い合わせることによって判定する（ステップＳ２１，Ｓ２２）。また、ステップＳ１４において抽出されたノードの情報が索引付与テーブル５７に登録されていないと判定されたならば、文書登録処理部５５は直接上記ステップＳ２１，Ｓ２２を実行する。
【０１０５】
もし、抽出されたノードの構造を表すパスが登録されていないならば（ステップＳ２２）、文書登録処理部５５は、当該パス（パス文字列）と当該ノードのノードＩＤと確認された種類の関連ノードのノードＩＤとの組を、索引管理部５４により構造索引テーブル５９に追加させる（ステップＳ２３ａ）。これに対し、抽出されたノードの構造を表すパスが登録されているならば（ステップＳ２２）、文書登録処理部５５は、当該ノードのノードＩＤと確認された種類の関連ノードのノードＩＤとの組を、当該パスに対応付けて、索引管理部５４により構造索引テーブル５９に追加させる（ステップＳ２４ａ）。なお、索引付与テーブル５７に登録されていないノードの構造に関する構造索引、つまり関連ノードの種類が確認されなかったノードの構造に関する構造索引には、関連ノードのノードＩＤは含まれない。
【０１０６】
文書登録処理部５５は、ステップＳ２３ａまたはＳ２４ａを実行すると、抽出されたノード（ＸＭＬ文書の一部）をデータベース４２に格納するドキュメント格納処理を行う（ステップＳ２５）。文書登録処理部５５は、以上の動作を、クライアント端末２０から要求されたＸＭＬ文書のパースが全て終了するまで繰り返す（ステップＳ２６）。
【０１０７】
＜検索処理＞
次に、値索引テーブル５８ａに登録されている値索引及び構造索引テーブル５９ａに登録されている構造索引を利用した検索処理について、図１９Ａ及び図１９Ｂのフローチャートを参照して説明する。図１９Ａ及び図１９Ｂにおいて、図９Ａ及び図９Ｂのフローチャートと同様の処理ステップには同一の符号を付してある。
【０１０８】
今、クライアント端末２０から構造化文書検索システム５０ａに対して、例えばＸＰａｔｈで記述された問い合わせ（クエリ）を含む検索要求が送出されたものとする（ステップＳ３１）。この問い合わせが、前記第２の問い合わせ（ｘＰａｔｈ）であるものとする。この第２の問い合わせは、前述したように「ｌａｓｔ＝”Ｓｔｅｖｅｎｓ”」及び「ｆｉｒｓｔ＝”Ｗ．”」の２つの値検索の条件を含む。また、これらの値検索の条件は、値が”Ｓｔｅｖｅｎｓ”であるｌａｓｔノードに関して「／ｂｉｂ／ｂｏｏｋ／ａｕｔｈｏｒ／ｌａｓｔ」であることの構造条件を含み、値が”Ｗ．”であるｆｉｒｓｔノードに関して「／ｂｉｂ／ｂｏｏｋ／ａｕｔｈｏｒ／ｆｉｒｓｔ」であることの構造条件を含む。
【０１０９】
この場合、構造化文書検索システム５０ａでは、上記実施形態における構造化文書検索システム５０と同様に、ステップＳ３２乃至Ｓ３９が実行される。即ち構造化文書検索システム５０ａに含まれている検索処理部５３ａ内の値索引検索部５３１は、複数の値検索の条件の各々について、その条件に合致するノード（候補ノード）のリスト（第１の候補ノードリスト）を索引管理部５４から取得して、そのリストをソートする。但し本変形例では、値索引テーブル５８ａを用いて第１の候補ノードリストが作成され、候補ノードのノードＩＤの昇順にソートされる。
【０１１０】
図２０は、図１６に示される値索引テーブル５８ａの場合に取得される、値が”Ｓｔｅｖｅｎｓ”であるｌａｓｔノードの第１の候補ノードリスト１１１ａと、値が”Ｗ．”であるｆｉｒｓｔノードの第１の候補ノードリスト１１２ａとを示す。候補ノードリスト１１１ａ，１１２ａは、図１０に示される候補ノードリスト１１１，１１２と異なり、関連ノードＩＤを含んでいない。
【０１１１】
さて、複数の値検索の条件の各々について第１の候補ノードリストが取得されると（ステップＳ３９）、検索処理部５３ａ内のノード数判定部５３４が起動される。ノード数判定部５３４は、ソート後の全ての第１の候補ノードリストに含まれている候補ノードのノードＩＤの総数、つまり候補ノードの総数を算出する（ステップＳ６１）。そしてノード数判定部５３４は、候補ノードの総数が予め定められた一定数以上であるかを判定する（ステップＳ６２）。
【０１１２】
ここでは、候補ノードの総数が一定数以上であるものとする。このような場合（ステップＳ６２）、検索処理部５３ａ内の構造索引検索部５３２は上記実施形態と同様に、複数の値検索の条件に含まれている構造条件の各々について、その構造条件に合致するノードのリスト（第２の候補ノードリスト）を構造索引テーブル５９ａに基づいて取得するための処理を実行する（ステップＳ４０〜Ｓ４５）。これにより構造索引検索部５３２は、図２１に示すような第２の候補ノードリスト１１３ａ及び１１４ａを取得する。候補ノードリスト１１３ａは、値検索の条件である「値が”Ｓｔｅｖｅｎｓ”であるｌａｓｔノード」に関する構造条件（を表すパス）「／ｂｉｂ／ｂｏｏｋ／ａｕｔｈｏｒ／ｌａｓｔ」に合致するノード（候補ノード）についての構造索引のリストである。候補ノードリスト１１４ａは、値検索の条件である「値が”Ｗ．”であるｆｉｒｓｔノード」に関する構造条件（を表すパス）「／ｂｉｂ／ｂｏｏｋ／ａｕｔｈｏｒ／ｆｉｒｓｔ」に合致するノード（候補ノード）についての構造索引のリストである。候補ノードリスト１１３ａ及び１１４ａは、当該リスト１１３ａ及び１１４ａの生成に使用される構造索引テーブル５９ａの特徴（図１７参照）により、図１２に示される候補ノードリスト１１３及び１１４と異なって、関連ノードＩＤを含む。
【０１１３】
複数の値検索の条件に含まれている構造条件の各々について第２の候補ノードリストが取得されると（ステップＳ４５）、検索処理部５３内の検索結果取得部５３３が起動される。検索結果取得部５３３は、上記実施形態と同様に、値検索の条件毎に、その条件に関して値索引テーブル５８ａに基づいて取得された第１の候補ノードリストと構造索引テーブル５９ａに基づいて取得された第２の候補ノードリストとを、候補ノードのノードＩＤを用いてマージ（ＡＮＤマージ）する（ステップＳ４６）。
【０１１４】
ここでは、図２０に示す第１の候補ノードリスト１１１ａ及び図２１に示す第２の候補ノードリスト１１３ａのＡＮＤマージにより、上記実施形態と同様に図１３に示す第３の候補ノードリスト１１５が生成される。同様に、図２０に示す第１の候補ノードリスト１１２ａ及び図２１に示す第２の候補ノードリスト１１４ａのＡＮＤマージにより、上記実施形態と同様に図１３に示す第３の候補ノードリスト１１６が生成される。
【０１１５】
検索結果取得部５３３はステップＳ４６を実行すると、上記実施形態と同様に、値検索の条件毎に生成された第３の候補ノードリストの間で関連ノードＩＤが一致する組み合わせを探す（ステップＳ４７）。そして検索処理部５３は、一致する関連ノードＩＤを、クライアント端末２０からの検索要求に対する検索結果として、要求処理部５２経由でクライアント端末２０に返す（ステップＳ４８）。
【０１１６】
このように本変形例においては、構造索引テーブル５９ａに保持される構造索引に、関連ノード（親ノード）のノードＩＤ（関連ノードＩＤ）を持たせることにより、構造条件に合致する複数ノードの値検索で、かつ要求された検索対象ノードが当該複数ノードの関連ノード（親ノード）である検索処理を、データベース４２内のＸＭＬ文書全体をサーチすることなく、値索引テーブル５８ａ及び当該構造索引テーブル５９ａを参照する索引操作のみで実行できる。このため本変形例においても、上述の検索処理を上記実施形態と同様に高速に検索することができる。この効果は、値検索の個々の条件に合致するノードの数が多いほど顕著となる。
【０１１７】
逆に、値索引テーブル５８ａを用いて求められた、値検索の個々の条件に合致するノードの総数が少ない場合には、従来技術と同様の検索手法、即ちデータベース４２に格納されているＸＭＬ文書を実際にサーチする手法を適用した方が高速に検索できる可能性がある。
【０１１８】
そこで本変形例において検索処理部５３ａは、上記ステップＳ６２で候補ノードの総数（つまり値検索の個々の条件に合致するノードの総数）が上記一定数未満であると判定された場合、以下に述べるように従来技術と同様の検索手法で、要求された検索対象ノード（関連ノード）を検索する。
【０１１９】
まず文書サーチ部５３５内の文書サーチ部５３５は、値検索の条件毎に取得された候補ノードリストに含まれているノードについて、データベース４２に格納されているＸＭＬ文書をサーチして、値検索の条件に対応する構造条件毎に、当該構造条件に合致するノードのノードＩＤと、当該ノードの関連ノード（ここでは親ノード）のノードＩＤ（関連ノードＩＤ）とのリストを第４の候補ノードリストとして取得する（ステップＳ６３）。
【０１２０】
すると検索処理部５３ａ内の検索結果取得部５３３は、構造条件毎に取得された全ての第４の候補ノードリストの間で関連ノードＩＤが一致する組み合わせを探し求める（ステップＳ６４）。そして検索結果取得部５３３は、求められた組み合わせに含まれている関連ノードＩＤを、クライアント端末２０からの検索要求に対する検索結果として、要求処理部５２経由でクライアント端末２０に返す（ステップＳ４８）。
【０１２１】
このように本変形例では、候補ノードの総数に応じて、最適な検索処理手順が自動的に適用されるため、最適な処理性能を実現できる。
【０１２２】
上記実施形態の変形例では、上記実施形態と同様に、索引付与テーブル５７によって管理されるノード（ｌａｓｔノード及びｆｉｒｓｔノード）の関連ノードの種類が親ノードである場合を前提としている。しかし、索引付与テーブル５７によって管理されるノード（ｌａｓｔノード及びｆｉｒｓｔノード）の関連ノードの種類を、親ノード以外とすることも可能である。例えば「ｌａｓｔ＝”Ｓｔｅｖｅｎｓ”」かつ「ｆｉｒｓｔ＝”Ｗ．”」であるａｕｔｈｏｒの本（ｂｏｏｋ）のタイトル（ｔｉｔｌｅ）を検索結果として欲しい場合、ユーザは索引設定要求で、関連ノードとして伯父ノードを指定することにより、ユーザの使用する検索条件に適した関連ノードの情報を構造索引テーブル５９ａに保持される構造索引に持たせることができる。これにより、検索条件（検索対象ノード）が変化しても高速な検索が可能となる。
【０１２３】
なお、本発明は、上記実施形態またはその変形例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。例えば、検索処理部５３または検索処理部５３ａが、直接に、索引付与テーブル５７と、値索引テーブル５８または５８ａと、構造索引テーブル５９または５９ａとを参照しても構わない。
【０１２４】
また、上記実施形態またはその変形例に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば上記実施形態において、その変形例と同様に、検索処理部５３にノード数判定部５３４及び文書サーチ部５３５を持たせても良い。また、上記実施形態またはその変形例に示される全構成要素から幾つかの構成要素を削除してもよい。
【図面の簡単な説明】
【０１２５】
【図１】本発明の一実施形態に係る構造化文書検索システムを含むクライアント−サーバシステムのハードウェア構成を示すブロック図。
【図２】図１に示されるデータベースに格納されているＸＭＬ文書の集合の一例を示す図。
【図３】図１に示される構造化文書検索システムの主として機能構成を示すブロック図。
【図４】図３に示される索引付与テーブルのデータ構造例を示す図。
【図５】図３に示される値索引テーブルのデータ構造例を示す図。
【図６】図３に示される構造索引テーブルのデータ構造例を示す図。
【図７】同実施形態における索引設定処理の手順を示すフローチャート。
【図８】同実施形態における索引設定後の文書登録処理の手順を示すフローチャート。
【図９Ａ】同実施形態における値索引及び構造索引を利用した検索処理の手順を示すフローチャートの一部を示す図。
【図９Ｂ】同実施形態における値索引及び構造索引を利用した検索処理の手順を示すフローチャートの残り示す図。
【図１０】図５に示されるデータ構造の値索引テーブルから値検索の条件毎に取得される第１の候補ノードリストの例を示す図。
【図１１】図１０に示す第１の候補ノードリストに含まれている値が”Ｓｔｅｖｅｎｓ”であるｌａｓｔノード、及び値が”Ｗ．”であるｆｉｒｓｔノードの、図２に示されるＸＭＬ文書における位置を示す図。
【図１２】図６に示されるデータ構造の構造索引テーブルから値検索の条件毎に取得される第２の候補ノードリストの例を示す図。
【図１３】値索引テーブル及び構造索引テーブルから値検索の条件毎に取得された候補ノードリストをマージすることにより取得される第３の候補ノードリストの例を示す図。
【図１４】図１３に示す候補ノードリストの間で関連ノードＩＤが一致する組み合わせのリストを示す図。
【図１５】同実施形態の変形例で適用される構造化文書検索システムの主として機能構成を示すブロック図。
【図１６】図１５に示される値索引テーブルのデータ構造例を示す図。
【図１７】図１５に示される構造索引テーブルのデータ構造例を示す図。
【図１８】同変形例における索引設定後の文書登録処理の手順を示すフローチャート。
【図１９Ａ】同変形例における値索引及び構造索引を利用した検索処理の手順を示すフローチャートの一部を示す図。
【図１９Ｂ】同変形例における値索引及び構造索引を利用した検索処理の手順を示すフローチャートの残りを示す図。
【図２０】図１６に示されるデータ構造の値索引テーブルから値検索の条件毎に取得される第１の候補ノードリストの例を示す図。
【図２１】図１７に示されるデータ構造の構造索引テーブルから値検索の条件毎に取得される第２の候補ノードリストの例を示す図。
【図２２】従来技術で適用される値索引の例を示す図。
【符号の説明】
【０１２６】
１０…データベースサーバ（データベースサーバコンピュータ）、１１…メモリ、２０…クライアント端末、３０…ネットワーク、４０…外部記憶装置、４１…データベース管理プログラム、４２…データベース、５０，５０ａ…構造化文書検索システム、５１，５１ａ…データベース管理システム、５２…要求処理部、５３，５３ａ…検索処理部、５４…索引管理部、５５…文書登録処理部、５６…データベース操作部、５７，４２１…索引付与テーブル（索引付与情報格納手段）、５８，５８ａ，４２２，４２２ａ…値索引テーブル（索引格納手段、値索引格納手段）、５９，５９ａ，４２３，４２３ａ…構造索引テーブル（索引格納手段、構造索引格納手段）、５３１…値索引検索部、５３２…構造索引検索部、５３３…検索結果取得部、５３４…ノード数判定部、５３５…文書サーチ部。
【図１】
2008234357.tif 000003
【図２】
2008234357.tif 000004
【図３】
2008234357.tif 000005
【図４】
2008234357.tif 000006
【図５】
2008234357.tif 000007
【図６】
2008234357.tif 000008
【図７】
2008234357.tif 000009
【図８】
2008234357.tif 000010
【図９Ａ】
2008234357.tif 000011
【図９Ｂ】
2008234357.tif 000012
【図１０】
2008234357.tif 000013
【図１１】
2008234357.tif 000014
【図１２】
2008234357.tif 000015
【図１３】
2008234357.tif 000016
【図１４】
2008234357.tif 000017
【図１５】
2008234357.tif 000018
【図１６】
2008234357.tif 000019
【図１７】
2008234357.tif 000020
【図１８】
2008234357.tif 000021
【図１９Ａ】
2008234357.tif 000022
【図１９Ｂ】
2008234357.tif 000023
【図２０】
2008234357.tif 000024
【図２１】
2008234357.tif 000025
【図２２】
2008234357.tif 000026