(57)【要約】【課題】構造化文書の索引のうち、少なくとも最下位階層のノードの情報に基づいて生成される索引に重みを付け、重みの高い索引を利用した検索により検索処理を高速化する。【解決手段】重み付き語彙索引生成部５２は、文書データベース４２に登録されるべき構造化文書の各ノードの情報から語彙索引データベース４３に登録されるべき索引を生成する。語彙索引生成部５２は、少なくとも最下位階層のノードの情報に基づいて索引を生成する際に、当該索引に重みを付ける。検索部５５は、ユーザによって指定された検索式の示す検索条件に合致する構造化文書をデータベース４３に登録されている索引のうち一定レベルより高い重みの索引を用いて検索する。結果出力インタフェース５１４は、検索部５５によって取得された検索結果をユーザに提示する。【選択図】      図２
2008026964.tif 000002
【特許請求の範囲】
【請求項１】
複数の構造化文書が登録された文書データベースから、検索条件に合致する構造化文書を索引データベースに登録されている索引を用いて検索する検索処理装置において、
前記文書データベースに登録されるべき構造化文書の各ノードの情報から前記索引データベースに登録されるべき索引を生成する索引生成手段であって、少なくとも最下位階層のノードの情報に基づいて索引を生成する際に、当該索引に重みを付ける索引生成手段と、
ユーザによって指定された検索式の示す検索条件に合致する構造化文書を、前記索引データベースに登録されている索引のうち前記最下位階層のノードの情報に基づいて生成された索引を含む一定レベルより高い重みの索引を用いて前記文書データベースから検索して検索結果を取得する検索手段と、
前記検索手段によって取得された検索結果を前記ユーザに提示する結果出力インタフェースと
を具備することを特徴とする検索処理装置。
【請求項２】
前記索引生成手段は、生成される索引に対応するノードの階層位置に基づいて当該索引に重みを付けるように構成されており、最下位階層位置を基準に、上位の階層に対応する索引ほど低い重みを付けることを特徴とする請求項１記載の検索処理装置。
【請求項３】
前記検索手段は、前記索引データベースに登録されている索引を、前記一定レベルより高い重みの索引が属する最も重みの高い索引グループを含む複数の索引グループに重みに応じて分類し、前記最も重みの高い索引グループから順に、グループ単位で索引を利用して検索を行うことにより、グループ単位で検索結果を取得し、
前記結果出力インタフェースは、前記検索手段によってグループ単位で検索結果が取得される毎に、当該検索結果を前記ユーザに提示する
ことを特徴とする請求項２記載の検索処理装置。
【請求項４】
ユーザによって指定された重み付け条件を入力する重み付け条件入力インタフェースを更に具備し、
前記索引生成手段は、前記生成された索引に対する重み付けを前記重み付け条件入力インタフェースによって入力される重み付け条件に従って行う
ことを特徴とする請求項１記載の検索処理装置。
【請求項５】
前記重み付け条件は、最下位階層位置を含む一定の階層範囲のノードに対応する索引に対する重み付けを指定しており、
前記索引生成手段は、前記重み付け条件によって指定される階層範囲内の階層位置のノードに対応する索引に、最下位階層位置を基準に、上位の階層に対応する索引ほど低い重みを付けることを特徴とする請求項４記載の検索処理装置。
【請求項６】
複数の構造化文書が登録された文書データベースから、検索条件に合致する構造化文書を索引データベースに登録されている索引を用いて検索する検索処理装置において、
前記文書データベースに登録されるべき構造化文書の構造を定義するスキーマ情報であって、検索時に優先的に使用されるべき索引に対応する構造を重み付け箇所として指定するスキーマ情報を記憶する記憶手段から当該スキーマ情報を読み込む手段と、
前記文書データベースに登録されるべき構造化文書の各ノードの情報から前記索引データベースに登録されるべき索引を生成する索引生成手段であって、前記読み込まれたスキーマ情報によって指定される重み付け箇所のノードの情報に基づいて索引を生成する際に、当該索引に重みを付ける索引生成手段と、
ユーザによって指定された検索式の示す検索条件に合致する構造化文書を、前記索引データベースに登録されている索引のうち一定レベルより高い重みの索引を用いて前記文書データベースから検索して検索結果を取得する検索手段と、
前記検索手段によって取得された検索結果を前記ユーザに提示する結果出力インタフェースと
を具備することを特徴とする検索処理装置。
【請求項７】
前記記憶手段は、前記文書データベース内に確保されるフォルダであり、当該フォルダには、当該フォルダに記憶されるスキーマ情報によって定義される構造の構造化文書のみが登録され、
前記読み込む手段は、前記文書データベースに登録されるべき構造化文書の構造を定義するスキーマ情報を、当該構造化文書が登録されるフォルダから読み込む
ことを特徴とする請求項６記載の検索処理装置。
【請求項８】
前記検索手段は、前記索引データベースに登録されている索引を、前記一定レベルより高い重みの索引が属する最も重みの高い索引グループを含む複数の索引グループに重みに応じて分類し、前記最も重みの高い索引グループから順に、グループ単位で索引を利用して検索を行うことにより、グループ単位で検索結果を取得し、
前記結果出力インタフェースは、前記検索手段によってグループ単位で検索結果が取得される毎に、当該検索結果を前記ユーザに提示する
ことを特徴とする請求項６記載の検索処理装置。
【請求項９】
複数の構造化文書が登録された文書データベースから、検索条件に合致する構造化文書を索引データベースに登録されている索引を用いてコンピュータが検索するのに用いられるプログラムであって、
前記コンピュータに、
前記文書データベースに登録されるべき構造化文書の各ノードの情報から前記索引データベースに登録されるべき索引を生成するステップであって、少なくとも最下位階層のノードの情報に基づいて索引を生成する際に、当該索引に重みを付けるステップと、
前記生成された索引を前記索引データベースに登録するステップと、
ユーザによって指定された検索式の示す検索条件に合致する構造化文書を、前記索引データベースに登録されている索引のうち前記最下位階層のノードの情報に基づいて生成された索引を含む一定レベルより高い重みの索引を用いて前記文書データベースから検索して検索結果を取得するステップと、
前記取得された検索結果を前記ユーザに提示するステップと
を実行させるためのプログラム。
【請求項１０】
複数の構造化文書が登録された文書データベースから、検索条件に合致する構造化文書を索引データベースに登録されている索引を用いてコンピュータが検索するのに用いられるプログラムであって、
前記コンピュータに、
前記文書データベースに登録されるべき構造化文書の構造を定義するスキーマ情報であって、検索時に優先的に使用されるべき索引に対応する構造を重み付け箇所として指定するスキーマ情報を読み込むステップと、
前記文書データベースに登録されるべき構造化文書の各ノードの情報から前記索引データベースに登録されるべき索引を生成するステップであって、前記読み込まれたスキーマ情報によって指定される重み付け箇所のノードの情報に基づいて索引を生成する際に、当該索引に重みを付けるステップと、
ユーザによって指定された検索式の示す検索条件に合致する構造化文書を、前記索引データベースに登録されている索引のうち一定レベルより高い重みの索引を用いて前記文書データベースから検索して検索結果を取得するステップと、
前記取得された検索結果を前記ユーザに提示するステップと
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の構造化文書が登録された文書データベースから索引を利用して検索条件に合致するデータを検索するのに好適な検索処理装置及びプログラムに関する。
【背景技術】
【０００２】
従来から、複数の構造化文書が登録された文書データベースから検索条件に合致するデータを検索するのに索引を利用する検索処理装置が開発されている。このような検索処理装置のデータベースにテキストデータを含む文書を登録する場合、登録対象となるデータに索引付けをするのが一般的である。このような索引付けの手法としてＮ−グラム（N-gram）手法が知られている。Ｎ−グラム手法とは、例えば特許文献１に背景技術として記載されているように、文書に含まれる全ての文字をある固定の長さＮの連続する文字列（Ｎ−グラム）として扱い、索引登録と検索を行う手法である。
【０００３】
Ｎ−グラム手法における索引登録（Ｎ−グラム索引登録）は、次のように行われる。まず、データベースに登録される文書の文頭から機械的に１文字ずつずらしながら、長さＮの文字列（Ｎ−グラム）が順に切り出される。この長さＮの文字列（Ｎ−グラム）を便宜的に「語彙」と呼ぶ。但し、一般に良く知られている語彙と異なり、Ｎ−グラム手法で切り出される「語彙」には、意味を持たない「語彙」も存在する。１文字ずつずらして長さＮの文字列を切り出すことにより、文書に含まれる全ての部分文字列を網羅して取り出すことができる。このようにして切り出される語彙の全てが索引登録の対象となる。次に、データベース内での文書の位置及び当該文書中での各語彙の出現位置を含む位置情報が、その語彙に対応付けて登録される。長さＮには、言語や文字の種類によって適切な値が選ばれる。検索の際は、例えば検索条件として与えられた検索語句（文字列）が語彙に分割される。この語彙毎に索引（Ｎ−グラム索引）が検索される。これにより、語彙に一致する索引に対応付けて登録されている位置情報（文書位置−語彙出現位置）を得ることができる。
【特許文献１】特開２００５−２３４９３０（段落０００２）
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上述したようにＮ−グラム手法を適用する検索処理装置においては、索引登録及び検索のアルゴリズムが単純であるため、データベースに登録される文書に含まれている語句を抜けがなく完全に検索できるという利点がある。その一方、Ｎ−グラム手法を適用する検索処理装置は、辞書を利用した単語索引（語句索引）を持つ検索処理装置に比べて、語彙単位の索引の取り出し負荷が増えるために、検索処理に時間かかかる。特に、出現頻度が高い語彙（以下、頻出語彙と称する）を含む語句の検索処理では、語彙の出現位置を含む位置情報の取り出しや、切り出された各語彙の指す位置情報の評価などに時間を要する。このため、Ｎ−グラム手法を適用する従来の検索処理装置では、頻出語彙を含む語句の検索に時間がかかるという問題がある。このような問題は、ＸＭＬ（Extensible Markup Language）形式の文書（ＸＭＬ文書）のような階層構造を持つ構造化文書（つまり階層型データ）が登録されたデータベースを持つ検索処理装置においても同様である。
【０００５】
本発明は上記事情を考慮してなされたものでその目的は、構造化文書の索引のうち、少なくとも最下位階層のノードの情報に基づいて生成される索引に重みを付加し、一定レベルより高い重みの索引を利用した検索を行うことで、検索処理を高速化できる検索処理装置及び及びプログラムを提供することにある。
【課題を解決するための手段】
【０００６】
本発明の１つの観点によれば、複数の構造化文書が登録された文書データベースから、検索条件に合致する構造化文書を索引データベースに登録されている索引を用いて検索する検索処理装置が提供される。この検索処理装置は、前記文書データベースに登録されるべき構造化文書の各ノードの情報から前記索引データベースに登録されるべき索引を生成する索引生成手段であって、少なくとも最下位階層のノードの情報に基づいて索引を生成する際に、当該索引に重みを付ける索引生成手段と、ユーザによって指定された検索式の示す検索条件に合致する構造化文書を、前記索引データベースに登録されている索引のうち前記最下位階層のノードの情報に基づいて生成された索引を含む一定レベルより高い重みの索引を用いて前記文書データベースから検索して検索結果を取得する検索手段と、前記検索手段によって取得された検索結果を前記ユーザに提示する結果出力インタフェースとを具備する。
【発明の効果】
【０００７】
本発明によれば、構造化文書の索引のうち、少なくとも最下位階層のノードの情報に基づいて生成される索引に重みを付加し、一定レベルより高い重みの索引を利用した検索を行うことで、ユーザが意図した重要度の高いデータを含んでいる可能性が極めて高い検索結果を短時間で取得できる。
【発明を実施するための最良の形態】
【０００８】
以下、本発明の実施の形態につき図面を参照して説明する。  
図１は本発明の一実施形態に係る検索処理装置を含むクライアント−サーバシステムのハードウェア構成を示すブロック図である。クライアント−サーバシステムは、主として、データベースサーバ（データベースサーバコンピュータ）１０と、複数のクライアント端末とから構成される。複数のクライアント端末はクライアント端末２０を含む。クライアント端末２０上では、データベースサーバ１０を利用するクライアントソフトウェアが動作する。クライアントソフトウェアは例えばブラウザである。クライアント端末２０を含む複数のクライアント端末は、ローカルエリアネットワーク（ＬＡＮ）のようなネットワーク３０を介してデータベースサーバ１０と接続されている。なお、図１にはクライアント端末２０以外のクライアント端末は省略されている。
【０００９】
データベースサーバ１０は、主メモリのようなメモリ１１を含む。データベースサーバ１０は、ハードディスクドライブ（ＨＤＤ）のような外部記憶装置４０と接続されている。この外部記憶装置４０は、データベースサーバ１０による検索処理に用いられる検索処理プログラム４１を格納する。データベースサーバ１０及び外部記憶装置４０は検索処理装置５０を構成する。
【００１０】
図２は図１に示される検索処理装置５０の主として機能構成を示すブロック図である。検索処理装置５０は、インタフェース５１、重み付き語彙索引生成部５２、データ登録処理部５３、解析部５４及び検索部５５を含む。本実施形態において、これらの各部５１乃至５５は、図１のデータベースサーバ１０が外部記憶装置４０に格納されている検索処理プログラム４１をメモリ１１に読み込んで実行することにより実現されるものとする。このプログラム４１は、コンピュータ読み取り可能な記憶媒体に予め格納して頒布可能である。また、このプログラム４１が、ネットワーク３０を介してデータベースサーバ１０にダウンロードされても構わない。
【００１１】
検索処理装置５０はまた、メモリ１１及び外部記憶装置４０を含む。外部記憶装置４０は、図１に示される検索処理プログラム４１に加えて、文書データベース４２及び語彙索引データベース４３を格納する。文書データベース４２は、複数の構造化文書（階層型データ）、例えばＸＭＬ文書（ＸＭＬ文書データ）を格納する。語彙索引データベース４３は、文書データベース４２に登録されている全てのＸＭＬ文書に含まれる語彙（Ｎ−グラム）毎に、その語彙の索引（Ｎ−グラム索引）を格納する。
【００１２】
各語彙索引は、対応する語彙の位置（語彙位置）に関する情報（語彙位置情報）を持つ。この語彙位置情報は、当該位置情報に対応する語彙を含む全てのＸＭＬ文書の文書データベース４２内での位置（文書位置）と、当該ＸＭＬ文書において当該語彙が出現する全ての位置（語彙出現位置）とを表す。各語彙索引はまた、語彙位置情報に加えて、対応する語彙の重みの情報を持つ。各語彙索引で示される語彙の重みは、当該語彙のＸＭＬ文書における階層位置に依存する。
【００１３】
インタフェース５１は、クライアント端末２０を含むクライアント端末との間のデータの入出力を行うユーザインタフェースとして用いられる。インタフェース５１は、重み付け条件入力インタフェース（重み付け条件入力ＩＦ）５１１、データ登録インタフェース（データ登録ＩＦ）５１２、検索条件入力インタフェース（検索条件入力ＩＦ）５１３及び結果出力インタフェース（結果出力ＩＦ）５１４を含む。
【００１４】
重み付け条件入力ＩＦ５１１は、ユーザ、例えば管理者の操作に応じてクライアント端末（管理端末）から与えられる重み付け条件（つまりユーザ指定の重み付け条件）を入力する。この重み付け条件については後述する。データ登録ＩＦ５１２は、ユーザが例えばクライアント端末を操作して作成したＸＭＬ文書を文書データベース４２に登録する際の入出力インタフェースをなす。検索条件入力ＩＦ５１３は、ユーザの操作に応じてクライアント端末から与えられるＸＭＬ文書検索の検索条件（つまりユーザ指定の検索条件）を入力する。結果出力ＩＦ５１４は、検索部５５によるＸＭＬ文書検索の結果を、当該検索を要求したクライアント端末に出力することにより、ユーザに提示する。
【００１５】
重み付き語彙索引生成部５２は、データ登録ＩＦ５１２によって入力されるＸＭＬ文書（つまり、文書データベース４２に登録されるべきＸＭＬ文書）に含まれる語彙毎に、語彙索引を生成する。この語彙索引の生成は、メモリ１１に格納される語彙索引テーブル１１０上で行われる。重み付き語彙索引生成部５２は、語彙索引を生成する際に、当該語彙索引の重み付け、更に詳細に述べるならば当該語彙索により示される語彙の重み付けを行う。つまり重み付き語彙索引生成部５２は、重み付き語彙索引を生成する。
【００１６】
語彙の重みは、当該語彙のＸＭＬ文書における階層位置に依存する。本実施形態では、語彙の重みは、最下位階層を基準に設定され、上位の階層ほど低くなるように設定される。この重み付けの条件、即ち最下位階層を基準とする階層位置と重みとの対応関係を表す条件（重み付け条件）は、例えば管理者がクライアント端末を操作することによって指定され、重み付け条件入力ＩＦ５１１によって入力される。
【００１７】
データ登録処理部５３は、重み付き語彙索引生成部５２による語彙索引の生成の対象となるＸＭＬ文書を文書データベース４２に登録する。データ登録処理部５３はまた、重み付き語彙索引生成部５２によって生成された重み付き語彙索引を語彙索引データベース４３に登録する。
【００１８】
解析部５４は、検索条件入力ＩＦ５１３によって入力される検索条件を解析する。この検索条件は、例えば構造化文書問い合わせで使用される検索式（ＸＱｕｅｒｙの式）によって表されるものとする。ここでは、検索条件は文字列を含む。
【００１９】
検索部５５は、解析部５４によって解析された検索条件に合致するＸＭＬ文書データを文書データベース４２から検索する。この検索には、語彙索引データベース４３に登録されている重み付き語彙索引が用いられる。ここでは検索部５５は、まず重みの高い語彙索引のみを参照して検索を実行し、検索結果を結果出力ＩＦ５１４に返す。
【００２０】
図３は、図２に示される重み付き語彙索引生成部５２の構成を示すブロック図である。この重み付き語彙索引生成部５２は、ＤＯＭ展開部５２１、ノード取り出し部５２２、分解部５２３、語彙位置／階層位置取得部５２４及び重み付け部５２５から構成される。
【００２１】
ＤＯＭ展開部５２１は、データ登録ＩＦ５１２によって入力されるＸＭＬ文書を構文解析してドキュメントオブジェクトモデル（Document Object Model：ＤＯＭ）ツリーに展開する。ＤＯＭツリーは、ＸＭＬ文書の木構造を表す。
【００２２】
ノード取り出し部５２２は、ＤＯＭツリーから逐次ノードを取り出す。分解部５２３は、取り出されたノードにテキストノードまたは属性ノードが存在する場合に、当該テキストノードまたは属性ノードの文字列を語彙（Ｎ−グラム）に分解する。
【００２３】
語彙位置／階層位置取得部５２４は、分解された各語彙の文書位置及び語彙出現位置に関する情報（語彙位置情報）と階層位置に関する情報（階層位置情報）とを取得する。語彙位置／階層位置取得部５２４は、取得された各語彙の語彙位置情報及び階層位置情報を、当該語彙に対応付けて、語彙索引として語彙索引テーブル１１０に格納する。
【００２４】
重み付け部５２５は、語彙索引テーブル１１０に登録されている語彙索引（により示される語彙）を重み付けする。ここでは、語彙索引に含まれる階層位置情報の示す階層位置に対応付けられた重みが当該語彙索引に付けられる。階層位置と重みとの対応関係は、重み付け条件入力ＩＦ５１１によって入力される重み付け条件によって指定される。
【００２５】
次に、本実施形態で適用される語彙索引生成を含むＸＭＬ文書登録処理について、図４、図５Ａ及び図５Ｂのフローチャートを参照して説明する。図４は語彙索引生成を含むＸＭＬ文書登録処理の手順を示すフローチャート、図５Ａ及び図５Ｂは図４のステップＳ９の詳細な処理手順を示すフローチャートである。
【００２６】
今、ユーザがクライアント端末２０を操作することにより、例えば当該クライアント端末２０上で作成されたＸＭＬ文書を文書データベース４２に登録することが当該クライアント端末２０から検索処理装置５０に要求されたものとする。この場合、データ登録ＩＦ５１２によって、文書データベース４２に登録されるべきＸＭＬ文書が入力される。なお、このＸＭＬ文書が、例えばネットワーク３０に接続されたＷｅｂサーバ、或いはファイルサーバから検索処理装置５０によって収集されたものであっても構わない。
【００２７】
ＸＭＬ文書、つまり階層構造を持ったＸＭＬ文書データは、リレーショナルデータベースの２次元表にマッピングしにくい非定型なデータを持つ場合がある。規定や規約のようなコンテンツをＸＭＬ文書データとして扱う場合、スキーマが決定できず、文書毎に異なるデータ構造を持つ場合もある。このようなコンテンツを管理するのに、ネイティブなＸＭＬデータベースが活用されている。本実施形態で適用される文書データベース４２は、このネイティブなＸＭＬデータベースに相当する。
【００２８】
規定や規約のようなコンテンツは、階層が深く、構造が複雑な場合が多い。図６は、階層が深いコンテンツ（ＸＭＬ文書６０）の一例を示す。規約や規定などのコンテンツ（ＸＭＬ文書）の場合、末端のノード（最下位階層のノード）の内容が、文書を検索する際のキーとなる語彙を含む重要な内容であることが多い。第６の例では、<PARAGRAF>タグの内容が、これに相当する。つまり、階層が深いＸＭＬ文書では、上位のノードにＸＭＬ文書自身の階層の説明を含み、下位のノード（特に末端ノード）に検索のキーとなる語彙を含む場合が多い。そこで本実施形態では、複雑な構造を持つＸＭＬ文書の少なくとも末端ノードの語彙が優先的に検索されるように考慮されている。具体的には、ＸＭＬ文書の登録に伴う語彙登録（語彙索引生成）時に、図４のフローチャートに従って、次のような手順で末端（最下位階層）のノードの語彙に重みが付与される。
【００２９】
まず、重み付き語彙索引生成部５２のＤＯＭ展開部５２１は、データ登録ＩＦ５１２によって入力される登録されるべきＸＭＬ文書（ＸＭＬ文書データ）をＤＯＭツリーに展開する（ステップＳ１）。重み付き語彙索引生成部５２のノード取り出し部５２２は、ノードの階層位置（現在の階層位置）を指し示す変数（階層位置変数）Ｖ１を、最上位階層位置を表す初期値０に設定する（ステップＳ２）。ノード取り出し部５２２はまた、登録されるべきＸＭＬ文書において現在判明されている最下位階層位置を表す変数Ｖ２を初期値０に設定する。ノード取り出し部５２２は、変数Ｖ１（＝０）の指定するノード、つまり最上位階層位置のノード（最上位ノード）をＤＯＭツリーに展開されたＸＭＬ文書（以下、ＤＯＭツリーと称する）から取り出す（ステップＳ３）。
【００３０】
ノード取り出し部５２２は、取り出されたノードにテキストノードまたは属性ノードが存在するか否かを判定する（ステップＳ４）。もし、テキストノードまたは属性ノードが存在する場合、重み付き語彙索引生成部５２の分解部５２３は当該テキストノードまたは属性ノードの文字列を解析（Ｎ−グラム解析）することにより、当該文字列を語彙（Ｎ−グラム）に分解する（ステップＳ５）。
【００３１】
重み付き語彙索引生成部５２の語彙位置／階層位置取得部５２４は、分解部５２３によって分解された各語彙の文書位置及び語彙出現位置を示す語彙位置情報と階層位置を示す階層位置情報とを取得する（ステップＳ６）。語彙位置／階層位置取得部５２４は、取得された語彙の語彙位置情報及び階層位置情報を、当該語彙に対応付けて語彙索引として語彙索引テーブル１１０に設定する（ステップＳ７）。
【００３２】
ステップＳ７が実行されると、ノード取り出し部５２２は、変数Ｖ１で指定されるノードの子ノードが存在するか否かを判定する（ステップＳ８）。ノード取り出し部５２２は、ステップＳ３で取り出されたノードにテキストノードまたは属性ノードが存在しない場合にも（ステップＳ４）、ステップＳ８を実行する。
【００３３】
もし、子ノードが存在するならば、以下に述べる処理Ａが呼び出される（ステップＳ９）。処理Ａにおいて、ノード取り出し部５２２は子ノードを取り出す（ステップＳ２１）。ノード取り出し部５２２は、変数Ｖ１を１だけインクリメントする（ステップＳ２２）。このインクリメント後の変数Ｖ１は、インクリメント前の階層位置より１つ下位の階層位置を示す。ノード取り出し部５２２は、変数Ｖ１と変数Ｖ２とを比較する（ステップＳ２３）。即ちノード取り出し部５２２は、インクリメント後の変数Ｖ１によって示される現在の階層位置と変数Ｖ２によって示される最下位階層位置とを比較する。もし、現在の階層位置が現在の最下位階層位置よりも低いならば、即ちＶ１＞Ｖ２であるならば（ステップＳ２４）、ノード取り出し部５２２は変数Ｖ２を現在の階層位置を示すように更新する（ステップＳ２５）。即ちノード取り出し部５２２は、現在の階層位置を現在判明されている最下位階層位置として設定する。
【００３４】
ノード取り出し部５２２は、ステップＳ２１で取り出された子ノードにテキストノードまたは属性ノードが存在するか否かを判定する（ステップＳ２６）。もし、テキストノードまたは属性ノードが存在する場合、分解部５２３は当該テキストノードまたは属性ノードの文字列を解析することにより、当該文字列を語彙（Ｎ−グラム）に分解する（ステップＳ２７）。
【００３５】
語彙位置／階層位置取得部５２４は、分解された各語彙の語彙位置情報及び階層位置情報を取得する（ステップＳ２８）。語彙位置／階層位置取得部５２４は、取得された語彙の語彙位置情報及び階層位置情報を、当該語彙に対応付けて語彙索引として語彙索引テーブル１１０に設定する（ステップＳ２９）。
【００３６】
さて、ステップＳ２９が実行されると、ノード取り出し部５２２は、変数Ｖ１で指定されるノードの子ノードが存在するか否かを判定する（ステップＳ３０）。ノード取り出し部５２２は、ステップＳ２６でテキストノードまたは属性ノードが存在しないと判定された場合にも、ステップＳ３０を実行する。
【００３７】
もし、子ノードが存在するならば、処理Ａが再び呼び出される（ステップＳ３１）。次にノード取り出し部５２２は、変数Ｖ１で指定されるノードの兄弟ノードが存在するか否かを判定する（ステップＳ３２）。このステップＳ３２は、ステップＳ３０で子ノードが存在しないと判定された場合にも実行される。
【００３８】
もし、変数Ｖ１で指定されるノードの兄弟ノードが存在するならば、ノード取り出し部５２２は、当該兄弟ノードにテキストノードまたは属性ノードが存在するか否かを判定する（ステップＳ３３）。もし、テキストノードまたは属性ノードが存在する場合、分解部５２３は当該テキストノードまたは属性ノードの文字列を語彙（Ｎ−グラム）に分解する（ステップＳ３４）。
【００３９】
語彙位置／階層位置取得部５２４は、分解された各語彙の語彙位置情報及び階層位置情報を取得する（ステップＳ３５）。語彙位置／階層位置取得部５２４は、取得された語彙の語彙位置情報及び階層位置情報を、当該語彙に対応付けて語彙索引として語彙索引テーブル１１０に設定する（ステップＳ３６）。
【００４０】
ステップＳ３６が実行されると、ノード取り出し部５２２は、変数Ｖ１で指定されるノードの子ノードが存在するか否かを判定する（ステップＳ３７）。ノード取り出し部５２２は、ステップＳ３３でテキストノードまたは属性ノードが存在しないと判定された場合にも、ステップＳ３７を実行する。
【００４１】
もし、子ノードが存在するならば、処理Ａが再び呼び出され（ステップＳ３８）、しかる後にステップＳ３２が実行される。これに対し、子ノードが存在しないならば、ステップＳ３８をスキップしてステップＳ３２が実行される。このステップＳ３２において、変数Ｖ１で指定されるノードの兄弟ノードが存在すると判定されると、上記ステップＳ３３乃至Ｓ３８が再び実行される。
【００４２】
このように重み付き語彙索引生成部５２は、ＤＯＭツリー（で示される登録されるべきＸＭＬ文書）の階層を、再帰的な処理Ａの呼び出しによって最上位階層から順に解析することにより、階層位置情報を含む語彙索引を生成する。
【００４３】
やがて、ＤＯＭツリーの全ての階層の全ノードについて処理が行われると、重み付き語彙索引生成部５２は処理Ａの再帰的呼び出しから解放される。つまり、重み付き語彙索引生成部５２の処理は、ステップＳ９で処理Ａが呼び出された状態に戻る。このとき、登録されるべきＸＭＬ文書の全ノードについての語彙索引が、語彙索引テーブル１１０に生成（設定）されたことになる。また、この時点の変数Ｖ２は、上記ＸＭＬ文書の末端ノード（最下位階層のノード）の位置を示す。
【００４４】
すると、重み付き語彙索引生成部５２の重み付け部５２５は、重み付け条件入力ＩＦ５１１によって入力される重み付け条件（以下、重み付け条件Ｃ１と称する）に従い、各語彙索引により示される語彙に対する重み付けを行う（ステップＳ１０）。ここでは重み付け部５２５は、各語彙索引の語彙に、当該語彙索引中の階層位置情報の示す階層位置と最下位階層位置との位置関係に対応付けられた重みを付ける。この重み付けは、変数Ｖ２の示す最下位階層位置から階層位置を示す値の降順に行われる。ここでは、最下位階層位置の語彙（に対応する語彙索引）の重みが最も高く、上位の階層ほど低くなるように設定される。なお、語彙索引中の階層位置情報が当該階層位置情報の示す階層位置に対応する重みに置き換えられても構わない。
【００４５】
データ登録処理部５３は、語彙索引テーブル１１０に基づき語彙索引データベース４３を更新すると共に、重み付き語彙索引生成部５２による語彙索引生成に用いられたＸＭＬ文書を文書データベース４２に登録する（ステップＳ１１）。
【００４６】
図７は、図６に示すＸＭＬ文書６０に含まれる語彙に対する重み付けの結果の一部を当該ＸＭＬ文書６０と対応付けて示す。
【００４７】
なお、重み付け条件Ｃ１に代えて、例えば最下位階層位置の語彙（に対応する語彙索引）のみに対する重み付けを指定する重み付け条件Ｃ２を用いることも可能である。図８は、重み付け条件Ｃ２を用いた場合における、図６に示すＸＭＬ文書６０に含まれる語彙に対する重み付けの結果の一部を当該ＸＭＬ文書６０と対応付けて示す。
【００４８】
また、例えば最下位階層を含む一定の階層範囲の階層位置の語彙のみに対する重み付けを指定する重み付け条件を用いることも可能である。この重み付け条件が、階層位置に対応付けられる重みの情報を必ずしも含む必要はない。例えば、最下位階層を含む一定の階層範囲の場合に、当該一定の階層範囲内の各階層位置の語彙（に対応する語彙索引）に対する重みを、上位の階層位置の語彙ほど低くなるように、最下位階層位置を基準に所定の重み付けアルゴリズムに従って付与しても良い。また、重み付け条件は、必ずしもユーザ（管理者）によって指定される必要はなく、検索処理プログラム４１によって予め定められていても構わない。
【００４９】
次に、本実施形態で適用される検索処理について、図９のフローチャートを参照して説明する。  
今、ユーザの操作により、クライアント端末２０から検索処理装置５０に対し、構造化文書問い合わせがネットワーク３０を介して与えられたものとする。検索処理装置５０の検索条件入力ＩＦ５１３は、このクライアント端末２０からの構造化文書問い合わせを受け付けると、当該問い合わせを解析部５４に渡す。解析部５４は、この問い合わせで使用される検索式（ユーザ指定の検索式）を解析する。ここでは、文字列による検索が指定されているものとする。この場合、解析部５４は検索式で指定されている文字列（指定文字列）を語彙（Ｎ−グラム）に分解する。つまり解析部５４は、検索式から指定文字列を構成する全ての語彙を抽出する。解析部５４は抽出された語彙を検索部５５に渡して、当該検索部５５を起動する。
【００５０】
すると検索部５５は、指定文字列を構成する各語彙に対応して語彙索引データベース４３に登録されている語彙索引のうち、例えば一定レベル以上の重みが付されている語彙索引（つまり重みの高い語彙索引）を使用して、指定文字列の位置情報を取得する（ステップＳ４１）。検索部５５は、取得された位置情報に基づき文書データベース４２から検索式（検索条件）に合致するＸＭＬ文書を第１の検索結果として取得する（ステップＳ４２）。この第１の検索結果は、重みの高い語彙索引のみを使用した検索処理により、短時間で取得される。しかも第１の検索結果は、ユーザが意図した重要度の高いデータを含んでいる可能性が極めて高い。検索部５５は、この第１の検索結果を結果出力ＩＦ５１４によりクライアント端末２０に返させる（ステップＳ４３）。
【００５１】
次に検索部５５は、指定文字列を構成する各語彙に対応して語彙索引データベース４３に登録されている語彙索引のうち、例えば一定レベル未満の重みが付されている語彙索引（つまり重みの低い語彙索引）を使用して、指定文字列の位置情報を取得する（ステップＳ４４）。検索部５５は、取得された位置情報に基づき文書データベース４２から検索式（検索条件）に合致するＸＭＬ文書を第２の検索結果として取得する（ステップＳ４５）。検索部５５は、この第２の検索結果を結果出力ＩＦ５１４によりクライアント端末２０に返させる（ステップＳ４６）。
【００５２】
このように本実施形態によれば、最初に重みの高い語彙索引を使用した検索処理（第１の検索処理）を行うことで、重要度の高いデータを含む検索結果を高速で取得しながら、第１の検索処理の後に重みの低い語彙索引を使用した検索処理（第２の検索処理）を行うことで、漏れのない検索を実現している。
【００５３】
なお、第１の検索処理だけが実行される構成とすることも可能である。また、第１の検索処理だけを実行する手法（手法１）を適用するか、或いは第１の検索処理と第２の検索処理とを連続して実行する手法（手法２）を適用するかを、クライアント端末２０上でユーザに選択させることも可能である。この場合、ユーザは、例えば重要度の高いデータを含む検索結果を短時間で取得したいならば、手法１を選択すれば良い。また、重要度の高いデータを含む検索結果を確認している間に完全な検索結果とヒット件数を得たい場合は、手法２を選択すれば良い。
【００５４】
また、適用される重みが（重み無しを含めて）３レベル以上の場合に、語彙索引を重みのレベルに応じて３つ以上の語彙索引グループに分類し、重みが最も高い語彙索引グループから順に使用して、逐次検索処理を行うようにしても良い。ここで、重み付けの階層範囲（つまり最下位階層を含む重み付けの階層範囲）が重み付け条件を用いてユーザによって指定される場合、検索の重み付け幅が適正となり、高速に結果を返す範囲を細かく設定できる。
【００５５】
［変形例］
次に、上記実施形態の変形例について説明する。この変形例の特徴は、重み付き語彙索引生成部５２に代えて、スキーマを利用して重み付けを行う重み付き語彙索引生成部５２０（図１１参照）を用いることにある。したがって、必要ならば、図２において、重み付き語彙索引生成部５２を重み付き語彙索引生成部５２０に置き換えられたい。
【００５６】
この変形例では、文書データベース４２に登録されるべきＸＭＬ文書の階層が深くなく（例えば、ほぼフラットで）、且つスキーマ（によって定義される構造）が固定で、検索で利用する箇所がほぼ決定されている場合、ユーザがクライアント端末を操作してスキーマ上で重み付けされるべきタグを指定することで、該当するタグの語彙に対する正確な重み付けが実現される。そのため本変形例では、文書データベース４２にスキーマ別のフォルダが確保される。文書データベース４２内の各フォルダには、そのフォルダに対応付けられたスキーマ（スキーマ情報）が設定される。重み付き語彙索引生成部５２０は、このスキーマ上で、ユーザ指定のタグを重み付け箇所として設定する。文書データベース４２内の各フォルダには、そのフォルダに設定されているスキーマによって定義される構造のＸＭＬ文書のみが登録される。
【００５７】
図１０は、スキーマによる重み付け箇所の指定を説明するための図である。図１０には、スキーマ（スキーマ情報）１０１及び当該スキーマ１０１で定義される構造のＸＭＬ文書１０２の一例が対比して示されている。図１０において、矢印１０３及び１０４は、スキーマ１０１上で設定された重み付け箇所を指し示す。また、矢印１０５は、矢印１０３で指し示される重み付け箇所に対応するＸＭＬ文書１０２内の構造を指し示す。一方、矢印１０６ａ，１０６ｂ及び１０６ｃは、矢印１０４で指し示される重み付け箇所に対応するＸＭＬ文書１０２内の構造を指し示す。
【００５８】
図１０の例では、矢印１０３で指し示されるスキーマ１０１上の<Name>タグ、即ち<Category>タグと兄弟のタグである<Name>タグが、重み付け箇所として指定される。この場合、ＸＭＬ文書１０２内のノードのうち、矢印１０５で指し示される<Name>ノード（タグ）に存在するテキストノードが重み付け箇所として識別される。また、矢印１０３で指し示されるスキーマ１０１上の<Detail>タグの繰り返しに含まれる<Value>タグが、重み付け箇所として指定される。この場合、ＸＭＬ文書１０２内のノードのうち、矢印１０６ａ，１０６ｂ及び１０６ｃでそれぞれ指し示される<Value>ノード（タグ）に存在するテキストノードが重み付け箇所として識別される。
【００５９】
図１１は重み付き語彙索引生成部５２０の構成を示すブロック図である。図１１において、図３と同様の要素には同一参照符号を付してある。重み付き語彙索引生成部５２０は、ＤＯＭ展開部５２１、ノード取り出し部５２２、分解部５２３、重み付け部５２５、スキーマ読み込み部５２６、語彙位置取得部５２７及び重み付け箇所抽出部５２８から構成される。
【００６０】
スキーマ読み込み部５２６は、データ登録ＩＦ５１２によって入力されたＸＭＬ文書が登録されるべき文書データベース４２内のフォルダからスキーマ情報をメモリ１１に読み込む。語彙位置取得部５２７は、分解された各語彙の語彙位置情報を取得する。重み付け箇所抽出部５２８は、語彙位置情報の示す語彙位置とスキーマ情報とに基づいて、重み付けが指定されている箇所の語彙を抽出（識別）する。重み付け部５２５は、取得された各語彙の語彙位置情報を、当該語彙に対応付けて、語彙索引として語彙索引テーブル１１０に格納する。その際に重み付け部５２５は、重み付けが指定されている箇所の語彙の語彙索引に重みを付ける。
【００６１】
次に、上記実施形態の変形例で適用される語彙索引生成を含むＸＭＬ文書登録処理について、図１２、図１３Ａ及び図１３Ｂのフローチャートを参照して説明する。図１２は語彙索引生成を含むＸＭＬ文書登録処理の手順を示すフローチャート、図１３Ａ及び図１３Ｂは図１２のステップＳ６０の詳細な処理手順を示すフローチャートである。
【００６２】
今、データ登録ＩＦ５１２によって、文書データベース４２に登録されるべきＸＭＬ文書が入力されたものとする。ＤＯＭ展開部５２１は、入力されたＸＭＬ文書（ＸＭＬ文書データ）をＤＯＭツリーに展開する（ステップＳ５１）。スキーマ読み込み部５２６は、入力されたＸＭＬ文書が登録されるべき文書データベース４２のフォルダからメモリ１１に、当該ＸＭＬ文書の構造を示すスキーマ情報を読み込む（ステップＳ５２）。
【００６３】
ノード取り出し部５２２は、最上位階層位置のノード（最上位ノード）をＤＯＭツリーから取り出す（ステップＳ５３）。ノード取り出し部５２２は、取り出されたノードにテキストノードまたは属性ノードが存在するか否かを判定する（ステップＳ５４）。もし、テキストノードまたは属性ノードが存在する場合、分解部５２３は当該テキストノードまたは属性ノードの文字列を解析（Ｎ−グラム解析）することにより、当該文字列を語彙（Ｎ−グラム）に分解する（ステップＳ５５）。
【００６４】
語彙位置取得部５２７は、分解部５２３によって分解された各語彙の文書位置及び語彙出現位置を示す語彙位置情報を取得する（ステップＳ５６）。重み付け箇所抽出部５２８は、取得された語彙位置情報の示す語彙位置とステップＳ５２でメモリ１１に読み込まれたスキーマ情報とに基づいて、重み付けが指定されている箇所（タグ）の語彙を抽出（識別）する（ステップＳ５７）。
【００６５】
重み付け部５２５は、取得された各語彙の語彙位置情報を、当該語彙に対応付けて、語彙索引として語彙索引テーブル１１０に設定する（ステップＳ５８）。このステップＳ５８において、重み付け部５２５は、重み付けが指定されている箇所の語彙の語彙索引に重みを付ける。
【００６６】
ノード取り出し部５２２は、取り出されたノードの子ノードが存在するか否かを判定する（ステップＳ５９）。ノード取り出し部５２２は、取り出されたノードにテキストノードまたは属性ノードが存在しない場合にも（ステップＳ５４）、ステップＳ５９を実行する。
【００６７】
もし、子ノードが存在するならば、以下に述べる処理Ｂが呼び出される（ステップＳ６０）。処理Ｂにおいて、ノード取り出し部５２２は子ノードを取り出す（ステップＳ７１）。ノード取り出し部５２２は、ステップＳ７１で取り出された子ノードにテキストノードまたは属性ノードが存在するか否かを判定する（ステップＳ７２）。もし、テキストノードまたは属性ノードが存在する場合、上記ステップＳ５５乃至Ｓ５８と同様の処理（ステップＳ７３乃至Ｓ７６）が実行される。
【００６８】
次にノード取り出し部５２２は、ステップＳ７１で取り出されたノードの子ノードが存在するかを判定する（ステップＳ７７）。ノード取り出し部５２２は、ステップＳ７１で取り出されたノードにテキストノードまたは属性ノードが存在しない場合にも（ステップＳ７２）、ステップＳ７７を実行する。
【００６９】
もし、子ノードが存在するならば、処理Ｂが再び呼び出される（ステップＳ７８）。次にノード取り出し部５２２は、最も最近に取り出されたノードの兄弟ノードが存在するかを判定する（ステップＳ７９）。このステップＳ７９は、ステップＳ７７で子ノードが存在しないと判定された場合にも実行される。
【００７０】
もし、兄弟ノードが存在するならば、ノード取り出し部５２２は、当該兄弟ノードにテキストノードまたは属性ノードが存在するかを判定する（ステップＳ８０）。もし、テキストノードまたは属性ノードが存在する場合、上記ステップＳ５５乃至Ｓ５８と同様の処理（ステップＳ８１乃至Ｓ８４）が実行される。
【００７１】
次にノード取り出し部５２２は、兄弟ノードの子ノードが存在するかを判定する（ステップＳ８５）。ノード取り出し部５２２は、兄弟ノードにテキストノードまたは属性ノードが存在しない場合にも（ステップＳ８０）、ステップＳ８５を実行する。
【００７２】
もし、子ノードが存在するならば、処理Ｂが再び呼び出され（ステップＳ８６）、しかる後にステップＳ７９が実行される。これに対し、子ノードが存在しないならば、ステップＳ８６をスキップしてステップＳ７９が実行される。このステップＳ７９において、兄弟ノードが存在すると判定されると、上記ステップＳ８０乃至Ｓ８６が再び実行される。
【００７３】
やがて、ＤＯＭツリーの全ての階層の全ノードについて処理が行われると、重み付き語彙索引生成部５２０は処理Ｂの再帰的呼び出しから解放される。つまり、重み付き語彙索引生成部５２０の処理は、ステップＳ６０で処理Ｂが呼び出された状態に戻る。このとき、登録されるべきＸＭＬ文書の全ノードについての重み付き／重み無し語彙索引が、語彙索引テーブル１１０に生成（設定）されたことになる。
【００７４】
するとデータ登録処理部５３は、語彙索引テーブル１１０に基づき語彙索引データベース４３を更新すると共に、重み付き語彙索引生成部５２による語彙索引生成に用いられたＸＭＬ文書を文書データベース４２の該当するフォルダに登録する（ステップＳ６１）。
【００７５】
なお、本発明は、上記実施形態またはその変形例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。例えば、上記実施形態またはその変形例では、重み付き語彙索引生成部５２または重み付き語彙索引生成部５２０によって語彙索引（に登録される語彙）に重みが付けられる。しかし、語彙索引以外の索引、例えばＸＭＬ文書に含まれる数値または構造（文書構造）を含むノードを特定する索引（数値索引または構造索引）を用いて検索を行う検索処理装置では、当該数値索引または構造索引（に登録される数値または構造）に重みが付けられる構成とすることも可能である。ここでは、数値索引または構造索引を生成する索引生成部に、当該数値索引または構造索引に重みを付ける機能を持たせれば良い。また、上記実施形態またはその変形例に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態またはその変形例に示される全構成要素から幾つかの構成要素を削除してもよい。
【図面の簡単な説明】
【００７６】
【図１】本発明の一実施形態に係る検索処理装置を含むクライアント−サーバシステムのハードウェア構成を示すブロック図。
【図２】図１に示される検索処理装置の主として機能構成を示すブロック図。
【図３】図２に示される重み付き語彙索引生成部の構成を示すブロック図。
【図４】同実施形態で適用される語彙索引生成を含むＸＭＬ文書登録処理の手順を示すフローチャート。
【図５Ａ】図４のステップＳ９の詳細な処理手順を示すフローチャート。
【図５Ｂ】図４のステップＳ９の詳細な処理手順を示すフローチャート。
【図６】階層が深いＸＭＬ文書の一例を示す図。
【図７】図６に示すＸＭＬ文書に含まれる語彙に対する重み付けの結果の一部を当該ＸＭＬ文書と対応付けて示す図。
【図８】図７と異なる重み付け条件が指定された場合における、図６に示すＸＭＬ文書に含まれる語彙に対する重み付けの結果の一部を当該ＸＭＬ文書と対応付けて示す図。
【図９】同実施形態で適用される検索処理の手順を示すフローチャート。
【図１０】同実施形態の変形例で利用されるスキーマによる重み付け箇所の指定を説明するための図。
【図１１】同変形例で適用される重み付き語彙索引生成部の構成を示すブロック図。
【図１２】同変形例で適用される語彙索引生成を含むＸＭＬ文書登録処理の手順を示すフローチャート。
【図１３Ａ】図１２のステップＳ６０の詳細な処理手順を示すフローチャート。
【図１３Ｂ】図１２のステップＳ６０の詳細な処理手順を示すフローチャート。
【符号の説明】
【００７７】
１０…データベースサーバ（データベースサーバコンピュータ）、２０…クライアント端末、４０…外部記憶装置、４１…検索処理プログラム、４２…文書データベース、４３…語彙索引データベース、５０…検索処理装置、５２，５２０…重み付き語彙索引生成部、５３…データ登録処理部、５５…検索部、６０，１０２…ＸＭＬ文書、１０１…スキーマ、１１０…語彙索引テーブル、５２１…ＤＯＭ展開部、５２２…ノード取り出し部、５２３…分解部、５２４…語彙位置／階層位置取得部、５２５…重み付け部、５２６…スキーマ読み込み部、５２７…語彙位置取得部、５２８…重み付け箇所抽出部。
【図１】
2008026964.tif 000003
【図２】
2008026964.tif 000004
【図３】
2008026964.tif 000005
【図４】
2008026964.tif 000006
【図５Ａ】
2008026964.tif 000007
【図５Ｂ】
2008026964.tif 000008
【図６】
2008026964.tif 000009
【図７】
2008026964.tif 000010
【図８】
2008026964.tif 000011
【図９】
2008026964.tif 000012
【図１０】
2008026964.tif 000013
【図１１】
2008026964.tif 000014
【図１２】
2008026964.tif 000015
【図１３Ａ】
2008026964.tif 000016
【図１３Ｂ】
2008026964.tif 000017