(57)【要約】【課題】構造化文書の検索高速化が可能な索引を生成する構造化文書管理装置を提供する。【解決手段】階層化された論理構造を有する構造化文書に含まれる語彙を識別する語彙識別子と、語彙が出現する位置を特定する特定情報とを対応づけた語彙索引を、固定長の記憶領域であるページに記憶する語彙索引記憶部１４３と、ページに記憶された語彙索引に含まれる特定情報の分布に関する特徴を解析する特徴解析部１１４と、解析された特徴に基づいて、ページを１または複数の語彙索引を含む複数のブロックに分割し、分割したブロックごとに第１範囲を算出して語彙索引記憶部１４３に保存するブロック分割部１１５とを備えた。【選択図】        図１
2008242605.tif 000002
【特許請求の範囲】
【請求項１】
階層化された論理構造を有する構造化文書に含まれる語彙を識別する語彙識別子と、前記語彙が出現する位置を特定する特定情報とを対応づけた語彙索引を、固定長の記憶領域であるページに記憶する語彙索引記憶部と、
前記ページに記憶された前記語彙索引に含まれる前記特定情報の分布に関する特徴を解析する特徴解析部と、
解析された前記特徴に基づいて、前記ページを１または複数の前記語彙索引を含む複数のブロックに分割し、前記ブロックに含まれる前記語彙索引の前記特定情報の範囲を表す第１範囲を算出して前記語彙索引記憶部内の分割した前記ブロックそれぞれに保存するブロック分割部と、
を備えたことを特徴とする構造化文書管理装置。
【請求項２】
前記位置は前記語彙が出現する前記構造化文書であり、前記語彙索引記憶部は、前記語彙が出現する前記構造化文書を識別する文書識別子である前記特定情報を対応づけた前記語彙索引を記憶し、
前記特徴解析部は、前記ページ内で互いに隣接する２つの前記語彙索引の前記文書識別子の差分を前記特徴として解析し、
前記ブロック分割部は、前記文書識別子の差分が予め定められた第１閾値を超えたか否かを判断し、前記文書識別子の差分が前記第１閾値を超えた２つの前記語彙索引の間を境界として前記ブロックに分割すること、
を特徴とする請求項１に記載の構造化文書管理装置。
【請求項３】
前記位置は、前記語彙が出現する前記構造化文書内の前記論理構造に対応する実情報である要素のうち前記語彙が出現する前記要素であり、前記語彙索引記憶部は、前記語彙が出現する前記構造化文書を識別する文書識別子と、前記語彙が出現する前記要素を識別する要素識別子とからなる前記特定情報を対応づけた前記語彙索引を記憶し、
前記特徴解析部は、さらに、前記ページ内で互いに隣接する２つの前記語彙索引の前記要素識別子の差分を前記特徴として解析し、
前記ブロック分割部は、前記ページ内で互いに隣接する２つの前記語彙索引の前記文書識別子が一致するか否かを判断し、一致する場合に、さらに前記要素識別子間の差分が予め定められた第２閾値を超えたか否かを判断し、前記第２閾値を超えた２つの前記語彙索引の間を境界として前記ブロックに分割すること、
を特徴とする請求項１に記載の構造化文書管理装置。
【請求項４】
前記位置は、前記論理構造の単位である構造要素のうち、前記語彙が出現する前記構造要素であり、前記語彙索引記憶部は、前記語彙が出現する前記構造要素を識別する構造識別子である前記特定情報を対応づけた前記語彙索引を記憶し、
前記特徴解析部は、前記ページに記憶された前記語彙索引に含まれる前記構造識別子の分布に関する前記特徴を解析すること、
を特徴とする請求項１に記載の構造化文書管理装置。
【請求項５】
前記特徴解析部は、前記構造識別子に対応する前記構造要素の前記構造化文書内での出現回数を前記特徴として解析し、
前記ブロック分割部は、前記出現回数が多い順に予め定められた個数の前記構造要素の前記構造識別子を第１グループに分類するとともに、前記第１グループに属さない前記構造識別子を第２グループに分類し、前記ページ内で互いに隣接する２つの前記語彙索引に含まれる前記構造識別子の一方が前記第１グループに属し、他方が前記第２グループに属する場合に、２つの前記語彙索引の間を境界として前記ブロックに分割すること、
を特徴とする請求項４に記載の構造化文書管理装置。
【請求項６】
前記特徴解析部は、前記構造識別子に対応する前記構造要素間の前記論理構造における階層数を前記特徴として解析し、
前記ブロック分割部は、前記構造識別子を、前記階層数が互いに予め定められた第３閾値より小さい前記構造要素の前記構造識別子を含むグループに分類し、前記ページ内で互いに隣接する２つの前記語彙索引に含まれる前記構造識別子が属する前記グループが異なる場合に、２つの前記語彙索引の間を境界として前記ブロックに分割すること、
を特徴とする請求項４に記載の構造化文書管理装置。
【請求項７】
入力された検索条件を解析して前記語彙索引から検索すべき前記特定情報を求め、検索すべき前記特定情報を前記語彙索引記憶部の前記ページから検索するときに、前記ページに含まれる前記ブロックのうち、検索すべき前記特定情報が前記ブロックの前記第１範囲に含まれる前記ブロックを検索対象として検索する検索部をさらに備えたこと、
を特徴とする請求項１に記載の構造化文書管理装置。
【請求項８】
前記語彙索引記憶部は、前記ページごとに、前記ページに含まれる前記語彙索引の前記特定情報の範囲を表す第２範囲をさらに記憶し、
前記語彙索引を前記語彙索引記憶部に登録するときに、登録すべき前記語彙索引に含まれる前記特定情報と、前記語彙索引記憶部に記憶されている前記第２範囲とに基づいて、登録すべき前記語彙索引を登録する前記ページを決定するページ決定部をさらに備えたこと、
を特徴とする請求項１に記載の構造化文書管理装置。
【請求項９】
前記ページ決定部は、登録対象となりうる前記ページの空き領域が予め定められた第４閾値より小さく、かつ、登録対象となりうる前記ページの前記第２範囲に対する登録すべき前記語彙索引を登録対象となりうる前記ページに登録した場合の前記第２範囲の割合が予め定められた第５閾値より大きい場合に、新たなページを作成し、作成したページを登録する前記ページとして決定すること、
を特徴とする請求項８に記載の構造化文書管理装置。
【請求項１０】
入力された検索条件を解析して前記語彙索引から検索すべき前記特定情報を求め、検索すべき前記特定情報を前記語彙索引記憶部の前記ページから検索するときに、前記ページのうち、前記ページの前記第２範囲に検索すべき前記特定情報が含まれる前記ページを検索対象として検索する検索部をさらに備えたこと、
を特徴とする請求項８に記載の構造化文書管理装置。
【請求項１１】
特徴解析部によって、階層化された論理構造を有する構造化文書に含まれる語彙を識別する語彙識別子と、前記語彙が出現する位置を特定する特定情報とを対応づけた語彙索引を、固定長の記憶領域であるページに記憶する語彙索引記憶部内の前記ページに記憶された前記語彙索引に含まれる前記特定情報の分布に関する特徴を解析する特徴解析ステップと、
ブロック分割部によって、解析された前記特徴に基づいて、前記ページを１または複数の前記語彙索引を含む複数のブロックに分割し、前記ブロックに含まれる前記語彙索引の前記特定情報の範囲を表す第１範囲を算出して前記語彙索引記憶部内の分割した前記ブロックそれぞれに保存するブロック分割ステップと、
を備えたことを特徴とする構造化文書管理方法。
【請求項１２】
階層化された論理構造を有する構造化文書に含まれる語彙を識別する語彙識別子と、前記語彙が出現する位置を特定する特定情報とを対応づけた語彙索引を、固定長の記憶領域であるページに記憶する語彙索引記憶部内の前記ページに記憶された前記語彙索引に含まれる前記特定情報の分布に関する特徴を解析する特徴解析手順と、
解析された前記特徴に基づいて、前記ページを１または複数の前記語彙索引を含む複数のブロックに分割し、前記ブロックに含まれる前記語彙索引の前記特定情報の範囲を表す第１範囲を算出して前記語彙索引記憶部内の分割した前記ブロックそれぞれに保存するブロック分割手順と、
をコンピュータに実行させる構造化文書管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、検索に用いる索引を作成し、作成した索引で検索することにより構造化文書を管理する装置、方法およびプログラムに関するものである。
【背景技術】
【０００２】
近年、ＸＭＬ（eXtensible Markup Language）などで記述された構造化文書データを記憶・検索する構造化文書データベースが開発されている。構造化文書データベースに対する問合せ（クエリ）は、一般に、Ｗ３Ｃ（World Wide Web Consortium）が標準化を進めているＸＱｕｅｒｙ（XML Query）という問合せ言語によって行われる。
【０００３】
ＸＱｕｅｒｙでは、要素や属性などのＤＯＭ（Document Object Model）におけるノードレベルの情報を検索対象とする。例えば、特許文献１では、構造化文書におけるノードレベルの情報検索を行う以下の技術が提案されている。
【０００４】
特許文献１の方法では、まず、構造化文書をデータベースに格納する際に、対象となる文書のデータ構造を解析し、その構造（ノード）に対する解析情報を語彙索引情報などに埋め込んで索引を作成する。なお、この場合の構造の解析情報は、ＸＰａｔｈ（XML Path Language）で表現できるパスレベルを同一の構造情報（構造テンプレート）と見なした情報である。次に、検索時に検索クエリを解析して問合せグラフを作成し、コスト計算をした上でクエリ実行のプランを作成する。この際、クエリを事前解析し、それぞれの変数が満たさなければならない構造に対する制約を予め求め、索引を利用した検索を行う際に探索範囲を限定することで、中間の候補件数の削減を実現している。
【０００５】
一般に語彙索引では、登録するテキストを複数の語彙に分割し、分割した語彙を単位とした転置リスト形式で索引情報を管理する方式が用いられる。これは全文検索の分野で従来から用いられている方法であって、索引情報として文書識別子と出現位置情報を記録しておくことで、キーワードによる文書検索を高速に検索可能とする方法である。特許文献１では、この方法を構造化文書に拡張するために、索引情報として要素識別子および構造情報（構造識別子）を付加している。
【０００６】
また、転置リストにおける各ページは、ディスクＩ／Ｏ等の効率が良いブロックサイズ単位で管理されることが多い。各ページには複数の索引情報が格納され、これらを効率的に配置するために、索引情報を圧縮することなどが行なわれている。
【０００７】
転置リストで管理する方法の最大の利点は検索の高速性にある。特にディスクＩ／Ｏの観点から言えばリスト形式で連続的に配置することによってディスクキャッシュ効果が見込め、ランダムに配置する場合と比較しても高速なページを読み出しが可能である。このため、Ｂ木などのツリー形式で管理する方式と比較した場合、更新性能は劣るものの、検索性能では高速になる場合が多い。
【０００８】
特許文献２では、転置リストを利用した検索を高速に実行するための技術が提案されている。特許文献２の方法は、語彙ごとの頻度情報を利用して、頻度が低い語彙から優先的に処理することで探索空間を絞り込むことを特徴の１つとしている。また、特許文献２は、ページ配置時に、ページ内に配置された文書識別子の範囲をページの見出しとして記録しておき、検索時に探索する文書識別子と当該範囲とを比較して、範囲外の場合は、当該ページに対する不必要な探索をスキップ可能とすることを特徴としている。
【０００９】
【特許文献１】特開２００１−１４７９３３号公報
【特許文献２】特開２００６−７３０３５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、特許文献２のように語彙索引に文書識別子の範囲を記録しておく方法では、語彙ごとに文書識別子のばらつきが発生する場合が多いことに起因して、ページ内の文書識別子の値がばらつく可能性があった。そして、ページ内の文書識別子の範囲が過大になると、結果的にページ単位での絞り込みが難しくなり高速化の効果が薄れる場合があるという問題があった。
【００１１】
例えば、ページ内に存在する索引の個数が同一であるものとして、文書識別子の範囲が１０〜１００の場合と、１０〜１００００の場合とを比較すると、前者のほうがページ単位の不必要な情報照合のスキップが高い確率で可能であると考えられる。これに対し、後者の場合は範囲が広いため、探索する文書識別子が当該範囲に含まれる可能性が高く、照合のスキップによる検索高速化の効果が得られない場合が多い。
【００１２】
また、構造化文書を対象とする場合は、構造情報と語彙情報とを共に考慮する必要がある。しかし、構造化文書の語彙索引の生成や語彙索引による検索で、特許文献２のように構造情報を考慮しない方法を適用すると、構造制約により結果的に検索が不要な解空間（ページ）に対しても検索する場合が多くなるという問題が生じる。
【００１３】
例えば、ページ内に１０００個の要素が存在し、それらのうち、「/タイトル」という特定構造に関する索引情報は１０個のみ存在すると仮定する。この場合、当該特定構造を指定して検索された場合、構造情報を何ら考慮しないと、その他の９９０個の要素も探索対象とするため、無駄な読み込みが発生する。
【００１４】
本発明は、上記に鑑みてなされたものであって、構造化文書の検索高速化が可能な索引を生成することができる構造化文書管理装置、構造化文書管理方法および構造化文書管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
上述した課題を解決し、目的を達成するために、本発明は、階層化された論理構造を有する構造化文書に含まれる語彙を識別する語彙識別子と、前記語彙が出現する位置を特定する特定情報とを対応づけた語彙索引を、固定長の記憶領域であるページに記憶する語彙索引記憶部と、前記ページに記憶された前記語彙索引に含まれる前記特定情報の分布に関する特徴を解析する特徴解析部と、解析された前記特徴に基づいて、前記ページを１または複数の前記語彙索引を含む複数のブロックに分割し、前記ブロックに含まれる前記語彙索引の前記特定情報の範囲を表す第１範囲を算出して前記語彙索引記憶部内の分割した前記ブロックそれぞれに保存するブロック分割部と、を備えたことを特徴とする。
【００１６】
また、本発明は、上記装置を実行することができる方法およびプログラムである。
【発明の効果】
【００１７】
本発明によれば、構造化文書の検索高速化が可能な索引を生成することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１８】
以下に添付図面を参照して、この発明にかかる構造化文書管理する装置、方法およびプログラムの最良な実施の形態を詳細に説明する。
【００１９】
本実施の形態にかかる構造化文書管理装置は、転置リストの各ページを、文書識別子等の分布に関する特徴を考慮して複数のブロックに分割するとともに、各ブロックに含まれる文書識別子等の範囲を対応づけた語彙索引を作成し、当該範囲を参照して不要なブロックへのアクセスを回避して検索の高速化を可能とするものである。
【００２０】
また、本実施の形態にかかる構造化文書管理装置は、生成した語彙索引を転置リストのページに登録するときに、各ページに格納された文書の文書識別子等の範囲が過大とならないように制御するものである。
【００２１】
図１は、本実施の形態にかかる構造化文書管理システムの構成を示すブロック図である。図１に示すように、本実施の形態の構造化文書管理システムは、ネットワーク２００を介してクライアント３００と、構造化文書管理装置１００とが接続されている。
【００２２】
クライアント３００は、登録する構造化文書（ＸＭＬ文書）や、登録済みの構造化文書を対象とする検索条件（クエリ）を構造化文書管理装置１００に送信し、検索結果を受信するものである。
【００２３】
ネットワーク２００は、クライアント３００と構造化文書管理装置１００とを接続するもので、例えば、インターネット、有線ＬＡＮ（Local Area Network）、無線ＬＡＮなどのあらゆるネットワーク構成を適用することができる。
【００２４】
構造化文書管理装置１００は、クライアント３００からの要求に応じて、構造化文書の登録、索引の生成、構造化文書の検索などを行うものであり、通信部１０１と、構造化文書記憶部１４１と、構造情報記憶部１４２と、語彙索引記憶部１４３と、格納部１１０と、検索部１２０と、を備えている。
【００２５】
通信部１０１は、ネットワーク２００を介して、クライアント３００から各種処理の要求や登録する構造化文書を受信するとともに、検索結果をクライアント３００に送信するものである。
【００２６】
クライアント３００から受信する命令には、格納命令、検索命令が含まれる。格納命令は、入力された構造化文書を格納する処理の実行を要求する命令である。検索命令は、問い合わせ言語（ＸＱｕｅｒｙなど）を入力として、結果集合を取得するための命令である。なお、結果集合とは、検索結果である文書識別子、要素識別子の集合をいう。
【００２７】
通信部１０１が受信した格納命令、検索命令は、それぞれ格納部１１０、検索部１２０に対して通知される。
【００２８】
構造化文書記憶部１４１は、ＸＭＬで記述された構造化文書を記憶する記憶部である。ここで、構造化文書の記述形式について説明する。図２は、ＸＭＬで記述された構造化文書の一例を示す説明図である。
【００２９】
図２では、特許に関する情報をＸＭＬ形式で記述した構造化文書の例が示されている。ＸＭＬでは、文書の構造の表現にタグが用いられる。タグには、開始タグと終了タグが存在し、構造化文書の構成要素を開始タグと終了タグで囲むことにより、文書中の文字列（テキスト）の区切りと、そのテキストが構造上いずれの構成要素に属するのかを明確に記述することができる。
【００３０】
なお、ＸＭＬでは、タグを使って定義したデータの単位を要素という。例えば、＜特許＞タグと＜／特許＞タグとを含み、両タグで囲まれたデータが１つの要素を構成する。
【００３１】
また、要素には、省略可能か、繰り返しが可能かなどの付加的な情報を追加するための属性を指定することができる。属性は、開始タグに「＜要素名称 属性＝"属性値"＞」のような書式で設定する。
【００３２】
また、開始タグは要素名称を記号「＜」、「＞」で閉じた書式で記載され、終了タグは要素名称を記号「＜／」と「＞」で閉じた書式で記載される。開始タグと終了タグとの間には、構造化文書の実情報を表すテキスト、または他の要素（子要素）が設定される。「＜特許ＤＢ＞＜／特許ＤＢ＞」のようにテキストを含まない構成要素は、簡易記法として「＜特許ＤＢ／＞」のように表すこともできる。
【００３３】
同図に示した文書は、「特許」タグから始まる要素を文書ルート（根）とし、その子要素として「タイトル」、「発明者一覧」、「効果」、「キーワードリスト」タグから始まる要素を有する。また、例えば、「タイトル」タグから始まる要素には「構造化文書検索装置」といった、１つのテキスト（文字列）が存在する。
【００３４】
なお、このようなＸＭＬ形式の構造化文書から、各タグの名称や階層関係、繰り返しの個数などを抽出した情報を構造情報という。また、構造化文書の構造情報を構成する論理的な構造の単位を構造要素という。本実施の形態では、上述の要素、属性、テキストが構造要素となる。
【００３５】
次に、構造化文書記憶部１４１に格納された構造化文書のデータ構造について説明する。図３は、構造化文書記憶部１４１に格納された構造化文書のデータ構造の一例を示す説明図である。
【００３６】
図３は、図２に示すような構造化文書を木構造のデータ構造で表した例を示している。図３では、楕円のノードはフォルダを表すノード、六角形のノードは文書を表すノード、一重線の四角形はタグを表すノード、二重線の四角形は属性を表すノード、角の丸い四角形はテキストを表すノードを意味する。
【００３７】
例えば、「発明者一覧」タグを表すノード以下の部分木は、「発明者一覧」要素以下の２つの「発明者」要素を含んでいることを表している。なお、構造化文書記憶部１４１は、このような木構造のデータ構造を表形式で格納するが、図示は省略する。
【００３８】
図１に戻り、構造情報記憶部１４２は、上述のようなＸＭＬ形式の構造化文書から抽出された構造情報を格納するものである。構造情報記憶部１４２は、構造化文書記憶部１４１に格納する構造化文書の構造を、構造情報と照合して解析する際に参照される。
【００３９】
図４は、本実施の形態における構造情報記憶部１４２に格納された構造情報のデータ構造の一例を示す説明図である。図４は、構造情報を木構造で表した例を示している。
【００４０】
同図に示すように、構造情報の木構造は、構造化文書の木構造と同様に、フォルダを表す楕円のノード、文書を表す六角形のノード、タグを表す一重線の四角形のノード、属性を表す二重線の四角形のノード、テキストを表す角の丸い四角形のノードを含んでいる。
【００４１】
また、構造情報には、構造情報の各ノードである構造要素を一意に識別するための識別子である構造識別子（ＴＩＤ）が付与されている。構造情報は、複数の構造化文書から、構造を表す情報のみを抽出した情報である。したがって、例えば、「発明者」タグのノードのように、構造化文書内では複数設定されうる情報であっても、構造情報上では１つに集約される。
【００４２】
なお、構造情報記憶部１４２は、このような木構造の構造情報を表形式で格納するが、図示は省略する。
【００４３】
図１に戻り、語彙索引記憶部１４３は、構造化文書記憶部１４１に記憶されたすべての構造化文書に含まれる語彙を識別する語彙識別子と、当該語彙を含む構造化文書や文書内の位置を特定する特定情報とを対応づけた語彙索引を記憶するものである。図５は、語彙索引記憶部１４３に格納された語彙索引のデータ構造の一例を示す説明図である。
【００４４】
図５に示すように、語彙索引記憶部１４３は、各語彙の発生順に昇順に付与された語彙の識別子である語彙識別子と、語彙の全構造化文書内での発生頻度と、転置リストファイル番号とを対応づけた語彙索引を格納している。転置リストファイル番号とは、語彙識別子に対応する語彙を含む要素に関する情報を含む転置リストファイルを一意に識別するための番号をいう。
【００４５】
同図の下部には、転置リストファイル（以下、単に転置リストという。）のデータ構造の一例が示されている。転置リストは、構造化文書を識別する文書識別子と、構造化文書内の各要素を識別する要素識別子と、構造識別子と、発生位置とを対応づけて格納している。本実施の形態では、対応する語彙を含む構造化文書や文書内の位置を特定する特定情報として、文書識別子、要素識別子、構造識別子、および発生位置が転置リスト内に記憶されている。
【００４６】
発生位置とは、当該転置リストに対応する語彙が、文書識別子と要素識別子とで識別される構造化文書の要素内で出現する位置を表す情報である。このような転置リストを含む語彙索引により、各語彙に対応する要素を特定することができる。
【００４７】
また、発生頻度は、全文検索の一般的手法として、絞り込み検索を効率的に行うための統計情報として用いられることが多い。例えば、Ｎグラムを用いた検索などでは、発生頻度が少ない語彙から順に検索し、位置照合することで不必要な処理をスキップしている。
【００４８】
次に、転置リストの詳細構造についてさらに説明する。図６は、転置リストの詳細構造の一例を示した説明図である。図６に示すように、転置リストは複数のページから構成され、各ページ内には複数の索引情報が格納される。なお、索引情報は場合によっては圧縮して格納される。
【００４９】
ページサイズはディスクＩ／Ｏが効率的に行える固定長サイズをベースにする場合が多い。ページ内には複数の索引要素（例えば１０００個）が格納される。図６では、すべての領域に索引要素を格納済みであるページ１と、空き領域が存在するページ２とを含む転置リストの例が示されている。
【００５０】
また、本実施の形態では、各ページの見出し情報として、少なくとも文書識別子と要素識別子の範囲情報（ノード範囲）と、構造識別子の出現パターン（構造集合）を記憶する。検索時には、このページの見出し情報を参照することにより、明らかに不必要な情報だけが含まれるページをスキップする。
【００５１】
なお、ノード範囲は［＜ａ１、ｂ１＞、＜ａ２、ｂ２＞］の形式で表す。これは、文書識別子の範囲がａ１〜ａ２であり、要素識別子の範囲がｂ１〜ｂ２であることを表している。また、構造集合は、記号｛｝内に、出現する構造識別子を列挙する形式で表す。例えば、図６では、ページ２についてノード範囲が［＜５０、２０＞、＜９０、１５＞］であり、構造集合が｛５、１０｝である場合の例が示されている。
【００５２】
また、図６では、このような転置リストに対して同図の右側に示した５つの索引情報（格納対象索引情報）を格納することを示している。なお、このような索引情報は、後述する索引生成部１１２により生成されるものである。また、索引情報は、＜文書識別子、要素識別子、構造識別子、発生位置＞の形式で記載する。
【００５３】
図７は、索引情報を追加した後の転置リストの詳細構造の一例を示した説明図である。図７は、図６の左側に示したような転置リストに、図６の右側に示した５つの索引情報を追加した後の転置リストの一例を示している。
【００５４】
この場合、ページ２の末尾が格納位置となるので、この位置に５つの索引候補を格納する。なお、ノード範囲［＜５０、２０＞、＜９０、１５＞］、構造集合｛５、１０｝が、既に見出し情報として記憶されているものとする。
【００５５】
ページ内の見出し情報は、索引情報が追加されたタイミングで更新される。この例では、ノード範囲は［＜５０、２０＞、＜１２５、２５＞］、構造集合は｛４、５、１０｝となる。このように、索引情報の登録とともに見出し情報を適宜更新することにより、見出し情報を参照するだけで、ページ単位で解の存在が判定可能となる。そして、解が存在しないと判定できるページをまとめてスキップすることで高速な検索が可能となる。
【００５６】
例えば、Ｎグラム等の検索で必要な位置情報を照合するための結合処理を行う場合を考える。そして、ページ２の文書識別子１２５、要素識別子５０となる候補が、その結合対象の索引要素であるとする。この場合、見出し情報を参照しない方法によれば、ページ２内の各候補に対してスキャンおよび照合処理が必要となる。これに対し、見出し情報を参照する方法によれば、ページ２のノード範囲［＜５０、２０＞、＜１２５、２５＞］に文書識別子１２５、要素識別子５０となる候補が含まれないことを見出し情報のみによって判断でき、このページ２に対する探索をスキップすることができる。
【００５７】
また、構造識別子の条件に着目すれば、例えば、構造識別子８を持つ候補との結合処理を行う際も、見出し情報の構造集合｛５、１０｝を参照し、構造識別子８が構造集合中に存在しないことから、ページ２の探索は不要と判断することができる。
【００５８】
このように、ページの見出し情報として、文書識別子および要素識別子の範囲情報と、構造識別子のとりうる値の情報を記憶し、これらの情報を複合的に利用することでページ内の不必要な探索を軽減している。ただし、空き領域の存在するページに単純に追加して索引情報を格納する方法では、ページ内のこれら情報の精度が緩くなる可能性が高い。そこで、本実施の形態では、このような格納するページを決定する段階で索引情報の配置位置を制御している。この処理は、後述するようにページ決定部１１３によって実行される。
【００５９】
なお、構造化文書記憶部１４１、構造情報記憶部１４２、および語彙索引記憶部１４３は、ＨＤＤ（Hard Disk Drive）、光ディスク、メモリカード、ＲＡＭ（Random Access Memory）などの一般的に利用されているあらゆる記憶媒体により構成することができる。
【００６０】
図１に戻り、格納部１１０は、構造化文書記憶部１４１に構造化文書を登録するとともに、登録する構造化文書を解析し、検索に関する構造や語彙の索引情報などを作成して、構造情報記憶部１４２や語彙索引記憶部１４３に格納するものである。格納部１１０は、構造解析部１１１と、索引生成部１１２と、ページ決定部１１３と、特徴解析部１１４と、ブロック分割部１１５とを備えている。
【００６１】
構造解析部１１１は、通信部１０１から受け取ったテキスト形式の構造化文書を構文解析し、ＤＯＭのようなオブジェクトツリー形式に展開する処理を行う。展開された各オブジェクトには、一意に識別するためのオブジェクト識別子が付加され、構造化文書記憶部１４１に記憶される。なお、文書識別子＋要素識別子が、オブジェクト識別子に相当する。
【００６２】
また、構造解析部１１１は、オブジェクトツリーを走査して、対象文書に対する特徴的な構造情報を抽出し、ツリー形式により構造情報記憶部１４２内で管理する。なお、このような構造情報を構造テンプレートという場合がある。また、本実施の形態では、従来と同様の手法により、統計情報等を利用して適宜構造化文書に対するスキーマ情報が抽出され、それに応じて構造テンプレートが更新されることを前提とする。
【００６３】
索引生成部１１２は、解析された構造化文書の要素ごとにテキスト部分を語彙分割し、索引情報を生成するものである。索引生成部１１２は、語彙の分割方法としてＮグラムを用いた分割方法を適用する。なお、語彙の分割方法はＮグラムによる方法に限られるものではなく、形態素解析を用いた方法などの従来から用いられているあらゆる方法を適用できる。
【００６４】
ページ決定部１１３は、索引生成部１１２が生成した索引情報を登録するページを決定するものである。具体的には、ページ決定部１１３は、まず、空き領域が存在する各ページについて、格納済みの領域の割合を表すページ格納率を算出し、ページ格納率が所定の閾値、例えば、８０％を超えているかを判断する。そして、閾値を超えている場合は、ページ決定部１１３は、生成された索引情報の文書識別子を参照し、当該索引情報を登録した場合の当該ページの見出し情報のノード範囲を求める。そして、ページ決定部１１３は、求めたノード範囲の増加率を算出し、増加率が所定の閾値を超えた場合には、空き領域が存在するページではなく、新規に作成したページに索引情報を格納することを決定する。
【００６５】
また、ページ決定部１１３は、ページ格納率が所定の閾値（例えば８０％）を超えていない場合は、当該ページに索引情報を格納することを決定する。ページ格納率が小さい場合は、新規ページをさらに作成すると索引情報の格納効率が悪化するため、これを回避する必要があるからである。また、ページ決定部１１３は、増加率が所定の閾値を超えていない場合にも、当該ページに索引情報を格納することを決定する。
【００６６】
なお、増加率は、（登録後の文書識別子の範囲−登録前の文書識別子の範囲）×１００／（登録前の文書識別子の範囲）として算出する。また、ページ決定部１１３は、登録後の文書識別子の範囲の絶対値が所定の閾値を超えたか否かによって新規ページに格納するか否かを決定するように構成してもよい。また、ページ決定部１１３は、要素識別子の増加率および／または構造識別子の増加率によってページを決定するように構成してもよい。
【００６７】
特徴解析部１１４は、語彙索引記憶部１４３に記憶された各ページの語彙索引（索引情報）について、文書識別子、要素識別子、および構造識別子の分布に関する特徴を解析するものである。例えば、特徴解析部１１４は、各ページ内で隣接して記憶された２つの語彙索引間で文書識別子または／および要素識別子の値の差分を算出する。
【００６８】
また、特徴解析部１１４は、構造識別子の分布に関する特徴として、構造識別子に対応する構造要素の構造化文書内での出現頻度、または、各構造識別子に対応する構造要素間のツリー上での距離（階層数）を求める。
【００６９】
ブロック分割部１１５は、特徴解析部１１４によって解析された特徴を参照して、各ページを１つまたは複数の語彙索引を含む単位であるブロックに分割するものである。そして、ブロック分割部１１５は、分割したブロックごとに、ブロックに含まれる語彙索引の特定情報の範囲を表す第１範囲を算出し、算出した第１範囲をブロックに対する見出し情報として語彙索引記憶部１４３に保存する。
【００７０】
例えば、ブロック分割部１１５は、特徴として解析された文書識別子の差分を参照し、差分が所定の閾値を超えた２つの語彙索引間を境界としてブロックに分割する。また、文書識別子の差分が０である場合には、ブロック分割部１１５は、さらに要素識別子の差分を参照し、要素識別子の差分が所定の閾値を超えた場合に、同様にブロックを分割する。
【００７１】
また、構造識別子の分布に関する特徴として出現頻度が得られた場合は、ブロック分割部１１５は、出現頻度のランクをさらに求め、ランクが近い隣接する語彙索引をグループ化することによりページをブロックに分割する。さらに、構造識別子の分布に関する特徴として階層数が得られた場合は、ブロック分割部１１５は、階層数が所定の閾値を超えた２つの語彙索引間を境界としてブロックに分割する。
【００７２】
なお、ブロック分割部１１５は、上述の各種特徴のいずれか１つを参照して１つのパターンによりブロックを分割してもよいし、すべての特徴を参照してそれぞれの特徴に応じた上述の手法により、複数のパターンでブロックに分割してもよい。すなわち、上記ブロック分割方法は択一的なものではなく、任意の複数の方法を組合せて適用することができる。
【００７３】
また、ブロック分割部１１５は、文書識別子および要素識別子でブロックを分割した場合はブロックごとの文書識別子および要素識別子の範囲（ページ内ノード範囲という）をブロックの見出し情報として保存する。また、ブロック分割部１１５は、構造識別子でブロックを分割した場合はブロックごとの構造識別子の集合（ページ内構造集合という）をブロックの見出し情報として保存する。
【００７４】
検索部１２０は、クライアント３００から受信した検索命令に従い、入力された検索条件に対して検索処理を実行して結果集合を生成するものであり、制約生成部１２１と、ページ読込部１２２と、ページ判定部１２３と、ブロック判定部１２４とを備えている。
【００７５】
なお、検索部１２０に入力される検索条件はＸＱｕｅｒｙなどの構造化文書に対するクエリ言語であることを前提とする。また、検索部１２０は、特許文献１に記載された方法と同様に、検索条件を解析した内部形式から検索条件を木構造で表したクエリグラフを作成し、クエリグラフに含まれるすべての変数の具体化を目標として、テーブルと呼ばれる変数集合の取り得る値（候補集合）の組み合わせを表すデータを次々と生成することにより検索結果を求めるものである。１つのテーブルを生成する単位処理をオペレータと呼び、各オペレータの結果は、候補集合として候補記憶部（図示せず）に保存される。
【００７６】
制約生成部１２１は、入力された検索条件（クエリ）を構文解析（パージング）し、解析結果としてクエリグラフを生成するものである。この際、各ノードが満たさなければならない構造に対する制約条件を付加する。図８は、入力されたクエリの一例を示す説明図である。また、図９は、図８のクエリを解析して得られたクエリグラフの一例を示す説明図である。
【００７７】
図８では、クエリとして、「配下のタイトルオブジェクトのテキストに“構造化文書”を含む特許文書を取得し、“＜検索結果＞”タグで囲った検索結果データを出力する」ことを意味する検索条件が入力された例が示されている。
【００７８】
図９に示すように、図８のようなクエリを解析して得られるクエリグラフは、構造情報の各構造要素に対応したノードを含む木構造で表される。例えば、図９のクエリグラフのノード２は、図４の特許タグ（ＴＩＤ＝Ｔ３）が対応することを示している。また、例えば、ノード３はタイトルタグが、ノード４はタイトルタグ下のテキスト要素が対応することを示している。
【００７９】
また、クエリグラフの各ノードには、ノードが相互に満たさなければならない構造に関する構造制約が付加される。例えば、クエリグラフのノード４はタイトルタグ下のテキスト要素でなければならないといった制約が構造制約として付加される。この場合、ノード４には、対応する構造要素の候補として、ＴＩＤ＝Ｔ６の構造要素が取得される。同様に、ノード２に対してはＴＩＤ＝Ｔ３の構造要素が候補として取得される。語彙索引をスキャンする場合は、制約条件を満たすものだけをスキャンすればよいため、探索空間を事前に絞り込むことが可能となる。
【００８０】
構造要素に対する検索条件（以下、検索キー）、すなわち、構造要素に含まれるテキストの値に関する値制約が存在する場合は、当該検索キーを、検索キーの検索対象となる構造要素に対応するノードに対応づける。例えば、ノード４に対応するタイトルタグ下のテキスト要素に対して検索キーとして「contains “構造化文書”」が対応づけられている。
【００８１】
このように、制約生成部１２１は、構造情報記憶部１４２を参照して、検索条件と構造化文書の大域的な構造情報（ＴＩＤ）を照合してクエリグラフを作成することにより、探索空間を絞り込む処理を実行している。探索空間を絞り込むことによって、索引情報をスキャンする際に不必要な情報をスキップすることができ、高速に検索処理が実行されることが期待される。
【００８２】
ページ読込部１２２は、語彙索引をスキャンするときにスキャン対象となるページ（対象ページ）を読込むものである。
【００８３】
ページ判定部１２３は、ページ読込部１２２により読込まれた対象ページの見出し情報を参照して、対象ページ内に解候補が存在する可能性があるか否かを判定するものである。具体的には、ページ判定部１２３は、見出し情報のノード範囲を参照し、解候補となる語彙索引の文書識別子、要素識別子がノード範囲に含まれるか否かを判定する。また、ページ判定部１２３は、見出し情報の構造集合を参照し、解候補となる語彙索引の構造識別子が構造集合に含まれるか否かを判定する。
【００８４】
なお、解候補が対象ページ内に存在しないと判定された場合は、この対象ページに対する処理は打ち切られ、検索部１２０は次のページの読込から処理を繰り返すように検索処理を制御する。また、解候補が対象ページ内に存在すると判定された場合は、以下に述べるブロック判定部１２４によって、当該ページ内でさらに探索対象とすべきブロックが判定される。
【００８５】
ブロック判定部１２４は、対象ページ内の各ブロックに対する見出し情報を参照して、対象ページ内のいずれのブロックに解候補が存在するかを判定するものである。具体的には、ブロック判定部１２４は、ページ内ノード範囲を参照し、解候補となる語彙索引の文書識別子、要素識別子がページ内ノード範囲に含まれるか否かを判定する。また、ブロック判定部１２４は、ページ内構造集合を参照し、解候補となる語彙索引の構造識別子がページ内構造集合に含まれるか否かを判定する。
【００８６】
なお、ページ内ノード範囲およびページ内構造集合の両方が保存されている場合は、それぞれの見出し情報を用いて解候補が含まれると判定されたブロックの共通部分が探索空間として得られる。
【００８７】
次に、このように構成された本実施の形態にかかる構造化文書管理装置１００による索引生成処理について図１０を用いて説明する。なお、本実施の形態では、索引生成処理とは、登録が要求された構造化文書を解析して語彙索引を生成し、語彙索引を転置リストの適切なページに格納するとともに、各ページを適切なブロック単位に分割する処理をいう。登録が要求された構造化文書を構造化文書記憶部１４１に登録する処理は従来と同様の処理のため説明は省略する。
【００８８】
図１０は、本実施の形態における索引生成処理の全体の流れを示すフローチャートである。まず、通信部１０１は、クライアント３００から登録するＸＭＬ文書を受信する（ステップＳ１００１）。次に、構造解析部１１１が、受信したＸＭＬ文書を構文解析して木構造に展開し、構造要素を抽出する（ステップＳ１００２）。
【００８９】
次に、索引生成部１１２が、抽出した構造要素に対応するＸＭＬ文書の各要素について、テキスト部分を語彙分割して語彙索引を生成する（ステップＳ１００３）。索引生成部１１２は、語彙分割の方法として、上述のようにＮグラムにより分割する方法を用いる。
【００９０】
次に、生成した語彙索引を格納するページとして、ページの見出し情報の範囲が過大とならないようなページを決定するページ決定処理が実行される（ステップＳ１００４）。ページ決定処理の詳細については後述する。ページ決定処理は、ページスキップの効果を阻害することが明らかな候補を取り除くことが主眼であって、ページ単位での細かな分布に関する制御は、以下の２つのブロック分割処理で行われる。
【００９１】
次に、語彙索引を格納したページを、ページの見出し情報を参照してブロックに分割する処理が実行される。まず、見出し情報のノード範囲に基づくブロック分割処理が実行される（ステップＳ１００５）。ノード範囲に基づくブロック分割処理とは、文書識別子および要素識別子の分布を考慮して各ページをさらに詳細なブロック単位に分割するとともに、分割したブロックにページごとの見出し情報と同様の見出し情報を付与する処理である。これにより、見出し情報を参照してページを絞り込むのと同様に、ブロックごとの見出し情報を参照してブロック単位でさらに探索範囲を絞り込むことが可能となる。
【００９２】
次に、見出し情報の構造集合に基づくブロック分割処理が実行される（ステップＳ１００６）。構造集合に基づくブロック分割処理とは、構造識別子の分布を考慮して各ページをさらに詳細なブロック単位に分割し、分割したブロックにページごとの見出し情報と同様の見出し情報を付与する処理である。
【００９３】
ノード範囲に基づくブロック分割処理および構造集合に基づくブロック分割処理の詳細については後述する。なお、これら２つのブロック分割処理の実行順序は上述のものに限られず、構造集合に基づくブロック分割処理を先に実行するように構成してもよいし、両者を並列的に実行するように構成してもよい。また、両者のうち少なくとも１つを実行するように構成してもよい。
【００９４】
さらに、ページをブロックに分割する処理は、語彙索引を登録するごとに行う必要はなく、索引情報の個数がページ内の最大数に達したタイミングで行うように構成してもよい。これにより、算出コストを削減することが可能となる。
【００９５】
次に、ステップＳ１００４のページ決定処理の詳細について図１１を用いて説明する。図１１は、ページ決定処理の全体の流れを示すフローチャートである。
【００９６】
ステップＳ１００３で語彙索引が生成された後、ページ決定部１１３は、生成した語彙索引の登録先となりうる対象ページについて、ページ格納率が所定の閾値である８０％を超えたか否かを判断する（ステップＳ１１０１）。超えている場合（ステップＳ１１０１：ＹＥＳ）、ページ決定部１１３は、対象ページに格納した場合の文書識別子の範囲を算出する（ステップＳ１１０２）。例えば、図６のページ２に、同図の右側の５つの格納対象索引情報を格納することを仮定すると、文書識別子の範囲は、登録前が４１（＝９０−５０＋１）であったのに対し、登録後は７６（１２５−５０＋１）に増加する。
【００９７】
次に、ページ決定部１１３は、算出した範囲の増加率を求め、増加率が所定の閾値（例えば、３０％）を超えたか否かを判断する（ステップＳ１１０３）。上述の例では、増加率が８５％（＝（７６−４１）×１００／４１）であるため、閾値を超えたと判断される。
【００９８】
増加率が閾値を超えていない場合（ステップＳ１１０３：ＮＯ）、ページ決定部１１３は、対象ページに語彙索引を配置することを決定する（ステップＳ１１０４）。また、増加率が閾値を超えている場合（ステップＳ１１０３：ＹＥＳ）、ページ決定部１１３は、当該対象ページではなく、新規にページを作成し、作成した新規ページに語彙索引を配置することを決定する（ステップＳ１１０５）。
【００９９】
また、ステップＳ１１０１で、ページ格納率が所定の閾値を超えていないと判断された場合は（ステップＳ１１０１：ＮＯ）、ページ決定部１１３は、対象ページに語彙索引を配置することを決定する（ステップＳ１１０４）。
【０１００】
このような処理により、ページ格納率が低いときは新規ページの作成を抑止して転置リスト全体の索引の格納効率を高めることが可能となる。また、ページ格納率が高いときには、見出し情報として用いられる文書識別子の範囲の増加率をさらに判断し、増加率が高い場合には新規ページに語彙索引を格納することにより、文書識別子の範囲が過大となることを防止可能となる。
【０１０１】
次に、このようなページ決定処理によってページが決定される処理の具体例について説明する。まず、比較のために、従来の方法によるページ決定処理の具体例について、図１２を用いて説明する。図１２は、従来の方法によるページ決定処理の一例を説明するための説明図である。
【０１０２】
図１２は、ページ１に索引情報３つ分の空き領域が存在し、３つの索引情報＜３０、１０＞、＜１５５、１５＞、＜１５５、２０＞を新たに登録する場合の例を示している。なお、同図では、構造識別子および発生位置を省略した形式（＜文書識別子、要素識別子＞）で索引情報を表現している。
【０１０３】
この場合、登録前のノード範囲は［＜１０、２０＞、＜２５、１２＞］であったのに対し、同図の右側に示すように３つの索引情報を登録した後は、ノード範囲が［＜１０、２０＞、＜１５５、２０＞］に拡大する。したがって、ページ１に対する解の存在範囲が大きくなり、ページ単位でスキャン不要であると判定できない可能性が高くなる。
【０１０４】
これに対し、本実施の形態では、ページ１に空き領域が存在する場合であっても、所定の格納率を超えている場合は、ノード範囲が拡大する要因となる索引情報である＜１５５、１０＞および＜１５５、２０＞を別のページに配置することができる。
【０１０５】
図１３は、本実施の形態によるページ決定処理の一例を説明するための説明図である。図１３は、図１２と同様に、ページ１に索引情報３つ分の空き領域が存在し、３つの索引情報＜３０、１０＞、＜１５５、１５＞、＜１５５、２０＞を新たに登録する場合の例を示している。
【０１０６】
図１３に示すように、本実施の形態の方法によれば、例えば、ノード範囲の増加率が小さい索引情報である＜３０、１０＞のみをページ１に追加し、その他の索引情報は、新規に作成したページ２に追加することができる。これにより、ページ１のノード範囲は、［＜１０、２０＞、＜３０、１０＞］となるため、範囲が過大となることを防止することができる。
【０１０７】
なお、文書識別子に関しては、ページ内に実際に配置するまでは変更可能であるので、文書を登録する際に文書識別子を変更することによって分布が小さくなるか、または、未だページに配置していない他の文書識別子とその値を交換することにより分布が小さくなるかを検証するように構成してもよい。
【０１０８】
文書識別子は構造化文書管理装置１００が発行および管理する装置内で一意に決定される値であり、例えば構造化文書を登録するときに現時点の最大値に１加算した値を返し、文書を削除した場合は削除した文書に付与されていた文書識別子を空き番号として管理する場合がある。この場合、別の新規文書を登録するときに、分布が小さくなるような空き番号を選択して割り当てることが可能となる。
【０１０９】
図１４および図１５は、空き番号を利用して文書識別子を割り当てる場合の例を示す説明図である。図１４は、単純に空き番号の小さい順に文書識別子を割り当てた場合の例を示している。同図では、ページ２の最初の要素を登録するときに、空き番号の最小値である１８を割り当てたため、ノード範囲が［＜１８、１０＞、＜４０、３０＞］となった例が示されている。
【０１１０】
これに対し、図１５は、空き番号のうち、ページ２のノード範囲が最小となるような空き番号である３５を選択して文書識別子として割り当てた場合の例を示している。これによって、ページ２のノード範囲は［＜３５、１０＞、＜４０、３０＞］となり、図１４の例と比較するとノード範囲の拡大が回避されている。
【０１１１】
なお、図１４および図１５では、語彙索引を新規に登録する時に空き番号を選択して割り当てる例を示していたが、既に登録済みの語彙索引について、文書識別子を空き番号に置き換えることによりノード範囲を縮小できるかを検査するように構成してもよい。
【０１１２】
この場合、対象としている語彙索引だけでなく、この文書識別子を利用する全ての語彙索引に対して文書識別子の変更を行う必要があるため、語彙の検索における重要度を加味しながら値の調整を行うことが望ましい。
【０１１３】
次に、ステップＳ１００５のノード範囲に基づくブロック分割処理の詳細について図１６および図１７を用いて説明する。
【０１１４】
上述のページ決定処理では、ページの格納効率などを考慮しているので結果的に荒くフィルタされる傾向がある。また、見出し情報はページ内の情報全てに対して計算されるものであるので、ページ内の個数が多くなればなるほど精度が落ちる。これを防ぐために、ページ決定後またはページ内の索引情報が最大数に達した段階で、再度ページ単位で補正することが、ノード範囲に基づくブロック分割処理の目的である。
【０１１５】
図１６は、ノード範囲に基づくブロック分割処理の全体の流れを示すフローチャートである。また、図１７は、転置リストのページの一例を示す説明図である。
【０１１６】
まず、特徴解析部１１４は、ブロック分割の対象となる対象ページから、語彙索引の要素を１つ（以下、Ｐｉとする）読み出す（ステップＳ１６０１）。例えば、図１７に示すような語彙索引がページ内に格納されていた場合、最初に語彙索引＜１０、２０、５＞をＰ１として読み出す。なお、同図では、発生位置を省略した形式（＜文書識別子、要素識別子、構造識別子＞）で索引情報を表現している。
【０１１７】
次に、特徴解析部１１４は、前の要素（Ｐｉ−１）と現在の要素（Ｐｉ）との間で、文書識別子の差（以下、Ｄｄとする）と、要素識別子の差（以下、Ｄｅとする）を算出する（ステップＳ１６０２）。なお、最初の要素（Ｐ１）は前の要素が存在しないため本ステップの処理対象外とする。
【０１１８】
次に、ブロック分割部１１５は、Ｄｄが所定の閾値αより大きいか否か、または、Ｄｄ＝０かつＤｅが所定の閾値βより大きいか否かを判断する（ステップＳ１６０３）。Ｄｄ＞α、または、Ｄｄ＝０かつＤｅ＞βを満たさない場合は（ステップＳ１６０３：ＮＯ）、特徴解析部１１４は、次の要素を読み出して処理を継続する（ステップＳ１６０１）。
【０１１９】
Ｄｄ＞α、または、Ｄｄ＝０かつＤｅ＞βを満たす場合（ステップＳ１６０３：ＹＥＳ）、ブロック分割部１１５は、Ｐｉ−１の区間までを新規ブロックとしてグループ化する（ステップＳ１６０４）。例えば、α＝１５、β＝１０としている場合、図１７の例では、６番目の要素であるＰ６＝＜１５、２０、５＞と７番目の要素であるＰ７＝＜３５、１０、９＞でステップＳ１６０３の条件を満たすため、Ｐ１〜Ｐ６までが１つのブロックとして分割される。
【０１２０】
なお、分割したブロックを再統合する場合に参照するため（後述）、ブロック分割部１１５は、このときのＤｄ、およびＤｅの値を保存しておく。上述の例では、Ｄｄ＝２０、Ｄｅ＝１０を保存する。また、各ブロックには、ブロックごとの見出し情報として、ブロックごとのノード範囲（以下、ページ内ノード範囲という）を対応づけて保存する。これにより、解候補がいずれのブロックの範囲に属するか否かを、見出し情報を参照して判断することが可能となる。
【０１２１】
次に、ブロック分割部１１５は、すべての要素を処理したか否かを判断する（ステップＳ１６０５）。処理していない場合は（ステップＳ１６０５：ＮＯ）、特徴解析部１１４は、次の要素を読み出して処理を継続する（ステップＳ１６０１）。
【０１２２】
すべての要素を処理した場合は（ステップＳ１６０５：ＹＥＳ）、ブロック分割部１１５は、ブロック数を調整するため、以下の処理を実行する。
【０１２３】
まず、ブロック分割部１１５は、生成したブロック数が、ブロック数の上限を定める所定の閾値Ｎ１より大きいか否かを判断する（ステップＳ１６０６）。ブロック数がＮ１より大きい場合は（ステップＳ１６０６：ＹＥＳ）、ブロック分割部１１５は、所定の規則に従ってブロックを統合する。具体的には、ブロック分割部１１５は、新規ブロック作成時に保存しておいたＤｄおよびＤｅを参照し、ブロックを分割した境界に存在する２つの索引情報についてのＤｄまたはＤｅが最小となる２つのブロックを検出して統合する（ステップＳ１６０７）。
【０１２４】
ブロック数がＮ１より大きくない場合は（ステップＳ１６０６：ＮＯ）、ノード範囲に基づくブロック分割処理を終了する。
【０１２５】
このように、ノード範囲に基づくブロック分割処理では、ページ決定処理と同様に文書識別子と要素識別子の分布を考慮して、さらにページ内で各識別子が適切に分布するようにブロックに分割することができる。
【０１２６】
次に、ノード範囲に基づくブロック分割処理で分割されたページの具体例について図１８を用いて説明する。図１８は、ノード範囲に基づくブロック分割処理により分割された後の転置リストのページの一例を示す説明図である。図１８は、図１７に示したようなページを、図１６に示したような手順により分割した結果を表している。図１８に示すように、１２個の索引情報の要素は３つのブロックに分割される。各ブロックには、開始位置を表す情報（それぞれ１、７、１０）と、ページ内ノード範囲（それぞれ［＜１０、２０＞、＜１５、２０＞］、［＜３５、１０＞、＜４０、２０＞］、［＜９０、１０＞、＜９０、３０＞］）が対応づけて保存される。
【０１２７】
次に、ステップＳ１００６の構造集合に基づくブロック分割処理の詳細について図１９および図２２を用いて説明する。図１９および図２２は、構造集合に基づくブロック分割処理の全体の流れを示すフローチャートである。
【０１２８】
構造集合に基づくブロック分割処理は、構造識別子の分布を考慮してページ内の索引情報を複数のブロックに分割するものであり、具体的方法としてはさまざまな方法が考えられるが、一例として以下のような２つの方法について説明する。
（Ａ）特徴的な構造識別子に対して高速に検索することを主眼とした方法（図１９）
（Ｂ）ＸＰａｔｈで「//」を使った階層検索を高速に検索することを主眼とした方法（図２２）
【０１２９】
なお、上記２つの方法は択一的なものではなく、いずれか１つを実行するように構成してもよいし、両者を共に実行するように構成してもよい。
【０１３０】
まず、図１９を用いて、Ａの方法について説明する。Ａの方法は、特徴的な構造識別子として、出現頻度が小さい構造要素に対応する構造識別子の検索高速化を目的とするものである。
【０１３１】
まず、特徴解析部１１４は、ブロック分割の対象となる対象ページについて、対象ページ内の構造要素の分布＜構造識別子ｔｊ、出現個数ｃｊ＞を生成する（ステップＳ１９０１）。＜構造識別子ｔｊ、出現個数ｃｊ＞とは、構造識別子ごとに、構造識別子のページ内での出現個数を対応づけた情報を表す。
【０１３２】
図２０は、生成した構造要素の分布の一例を示す説明図である。図２０は、図１７に示すようなページに対して構造要素の分布を生成した場合の例を示している。図２０に示すように、図１７の例では、構造識別子が５の構造要素の出現個数が最も大きいことが、構造識別子の特徴として解析される。
【０１３３】
図１９に戻り、特徴解析部１１４は、出現個数ｃｊが多い順に、予め定められた上位ｓ件の構造識別子を取得し、取得した構造識別子を集合Ｆとする（ステップＳ１９０２）。そして、特徴解析部１１４は、集合Ｆ以外の構造識別子を集合Ｇとする（ステップＳ１９０３）。
【０１３４】
ｓ＝２が定められていたとすると、図２０の例では、出現個数が大きい構造識別子＝５および１５が頻出構造識別子として集合Ｆに分類される。また、その他の構造識別子である１０、１２および９が集合Ｇに分類される。
【０１３５】
次に、ブロック分割部１１５が、対象ページから、語彙索引の要素（Ｐｉ）を１つ読み出す（ステップＳ１９０４）。次に、ブロック分割部１１５は、Ｐｉ内の構造識別子が前の要素（Ｐｉ−１）の構造識別子と異なる集合に属するか否かを判断する（ステップＳ１９０５）。例えば、Ｐｉ−１の要素の構造識別子が集合Ｆに属し、Ｐｉの要素の構造識別子が集合Ｇに属する場合は、両者が異なる集合に属すると判断する。
【０１３６】
Ｐｉ内の構造識別子が前の要素（Ｐｉ−１）の構造識別子と異なる集合に属する場合は（ステップＳ１９０５：ＹＥＳ）、ブロック分割部１１５は、前の要素（Ｐｉ−１）までを新規ブロックとして分割する（ステップＳ１９０６）。これにより、出現個数が同等の構造識別子ごとにブロックに分割することが可能となる。
【０１３７】
Ｐｉ内の構造識別子が前の要素（Ｐｉ−１）の構造識別子と異なる集合に属さない場合（ステップＳ１９０５：ＮＯ）、または、ステップＳ１９０６でブロックを分割した後、ブロック分割部１１５は、すべての要素を処理したか否かを判断する（ステップＳ１９０７）。
【０１３８】
すべての要素を処理していない場合（ステップＳ１９０７：ＮＯ）、特徴解析部１１４は、次の要素を読み出して処理を継続する（ステップＳ１９０４）。
【０１３９】
すべての要素を処理した場合は（ステップＳ１９０７：ＹＥＳ）、ブロック分割部１１５は、ブロック数を調整するため、以下の処理を実行する。
【０１４０】
まず、ブロック分割部１１５は、生成したブロック数が、ブロック数の上限を定める所定の閾値Ｎ２より大きいか否かを判断する（ステップＳ１９０８）。ブロック数がＮ２より大きい場合は（ステップＳ１９０８：ＹＥＳ）、ブロック分割部１１５は、所定の規則に従ってブロックを統合する。具体的には、ブロック分割部１１５は、集合Ｇ内で最も出現個数の多い構造識別子を含むブロックを求め、求めたブロックを、隣接するブロックと統合する（ステップＳ１９０９）。これにより、出現個数の小さいブロックをそのまま保持し、稀少な構造識別子に対する影響を極力軽減することが可能となる。
【０１４１】
ブロック数がＮ２より大きくない場合は（ステップＳ１９０８：ＮＯ）、構造集合に基づくブロック分割処理を終了する。
【０１４２】
このように、構造集合に基づくブロック分割処理では、構造識別子の出現頻度によってブロックを分割するため、探索空間が限定される出現頻度が低い構造識別子の探索空間が、頻出構造識別子によって不当に大きくなることを回避することができる。
【０１４３】
次に、構造集合に基づくブロック分割処理で分割されたページの具体例について図２１を用いて説明する。図２１は、構造集合に基づくブロック分割処理により分割された後の転置リストのページの一例を示す説明図である。ｓ＝２（出現個数が上位２件を集合Ｆとする）、Ｎ２＝４（ブロック数の上限は４とする）とすると、図２０に示したように上位２件の頻出構造識別子は５および１５であり、これらが集合Ｆに分類される。また、その他の構造識別子である１０、１２および９が集合Ｇに分類される。図１７の例では、左から３番目までの索引情報の構造識別子が５であり、４番目の索引情報の要素の構造識別子が１０であるため、３番目までが１つのブロックとして分割される。
【０１４４】
同様の方法により、全体として、１〜３番目、４〜５番目、６番目、７番目、８〜１０番目、および１１〜１２番目の計６個のブロックに分割される。この場合、ブロック数の上限４を超えているため、最も出現個数の多い構造識別子である１０を含む４〜５番目のブロックを隣接するブロックと統合し、最終的に１〜３番目、４〜７番目、８〜１０番目、および１１〜１２番目の計４個のブロックに分割される。
【０１４５】
次に、図２２を用いて、Ｂの方法について説明する。構造化文書に関する検索では、例えば「本文//text（）」のように、検索するパスとして、下位のいずれかの階層のパスを表す記号「//」を指定する場合が多い。Ｂの方法は、このような構造化文書に特有の階層構造の制約を指定する検索の高速化を目的とするものである。
【０１４６】
まず、特徴解析部１１４は、ブロック分割の対象となる対象ページについて、対象ページ内の構造識別子の重複を除去した集合Ｃを生成する（ステップＳ２２０１）。次に、特徴解析部１１４は、構造情報記憶部１４２の構造テンプレートを参照し、ツリー上の距離が所定値Ｔ１以下の構造識別子をまとめた集合Ｖｉ（ｉ＝０・・・ｓ）を生成する（ステップＳ２２０２）。なお、１つの構造識別子はいずれか１つの集合Ｖｉにのみ属するように集合Ｖｉを生成する。例えば、ツリーの末端側から集合を生成し、残りの構造要素についてツリーの上位側に順次遡ってさらに集合を生成するように構成する。
【０１４７】
次に、ブロック分割部１１５が、対象ページから、語彙索引の要素（Ｐｉ）を１つ読み出す（ステップＳ２２０３）。次に、ブロック分割部１１５は、Ｐｉ内の構造識別子が前の要素（Ｐｉ−１）の構造識別子と異なる集合に属するか否かを判断する（ステップＳ２２０４）。例えば、Ｐｉ−１の要素の構造識別子が集合Ｖ１に属し、Ｐｉの要素の構造識別子が集合Ｖ２に属する場合は、両者が異なる集合に属すると判断する。
【０１４８】
Ｐｉ内の構造識別子が前の要素（Ｐｉ−１）の構造識別子と異なる集合に属する場合は（ステップＳ２２０４：ＹＥＳ）、ブロック分割部１１５は、前の要素（Ｐｉ−１）までを新規ブロックとして分割する（ステップＳ２２０５）。これにより、構造テンプレート上で距離が近い構造識別子ごとにブロックに分割することが可能となる。
【０１４９】
Ｐｉ内の構造識別子が前の要素（Ｐｉ−１）の構造識別子と異なる集合に属さない場合（ステップＳ２２０４：ＮＯ）、または、ステップＳ２２０５でブロックを分割した後、ブロック分割部１１５は、すべての要素を処理したか否かを判断する（ステップＳ２２０６）。
【０１５０】
すべての要素を処理していない場合（ステップＳ２２０６：ＮＯ）、特徴解析部１１４は、次の要素を読み出して処理を継続する（ステップＳ２２０３）。
【０１５１】
すべての要素を処理した場合は（ステップＳ２２０６：ＹＥＳ）、ブロック分割部１１５は、ブロック数を調整するため、以下の処理を実行する。
【０１５２】
まず、ブロック分割部１１５は、生成したブロック数が、ブロック数の上限を定める所定の閾値Ｎ３より大きいか否かを判断する（ステップＳ２２０７）。ブロック数がＮ３より大きい場合は（ステップＳ２２０７：ＹＥＳ）、ブロック分割部１１５は、所定の規則に従ってブロックを統合する。具体的には、ブロック分割部１１５は、ツリー上の距離が最も近いブロックを求め、求めたブロック同士を統合する（ステップＳ２２０８）。
【０１５３】
ブロック数がＮ３より大きくない場合は（ステップＳ２２０７：ＮＯ）、構造集合に基づくブロック分割処理を終了する。
【０１５４】
このように、Ｂの方法では、構造テンプレート上で距離が近い構造識別子同士を同一のグループとしてブロック化するため、ユーザが意図したパスのみに限定して探索空間を絞り込むことが可能となる。
【０１５５】
なお、Ｂの方法の変形として、以下のような方法で構造集合に基づくブロック分割処理を実現してもよい。まず、構造テンプレートを走査して、末端要素から親子関係にある構造識別子を優先的にまとめてブロック化する。このようにして得られたブロックの個数が事前に設定したＮ３件以下であれば終了する。
【０１５６】
そうでない場合は、兄弟要素をさらにチェックし、兄弟関係になる構造識別子を同じブロックに統合する。この処理によってもブロック件数の上限を超える場合は、末端要素からさらに構造テンプレート上の上位のノードに辿って同様の処理を行う。このような処理を、ブロック数がＮ３件以下になるまで繰り返す。
【０１５７】
以上のように、本実施の形態によれば、各識別子の範囲情報を参照して適切なページに語彙索引を配置するだけでなく、各ページを各識別子の範囲情報でさらにブロックに分割した索引、および各ページを構造要素に関する制約条件でさらにブロックに分割した索引を生成することができる。これにより、絞り込みの精度を向上させてより高速な検索が実行可能となる。
【０１５８】
次に、このようにして生成された索引を利用した検索処理について図２３を用いて説明する。図２３は、本実施の形態における検索処理の全体の流れを示すフローチャートである。
【０１５９】
まず、通信部１０１は、クライアント３００から検索クエリを受信する（ステップＳ２３０１）。次に、制約生成部１２１が、受信した検索クエリを解析して図９に示すようなクエリグラフを生成する（ステップＳ２３０２）。クエリグラフには、上述のように、グラフ上の各ノードが満たさなければならない制約が付加される。
【０１６０】
次に、検索部１２０は、生成されたクエリグラフを参照し、処理コストが最小になる検索プランを生成する（ステップＳ２３０３）。検索部１２０によるプラン生成処理では、特許文献１と同様の手法を適用することができる。
【０１６１】
次に、検索処理のうち、語彙索引に関する処理である転置ファイルスキャン処理が実行される（ステップＳ２３０４）。転置ファイルスキャン処理では、付加された制約に従い、検索対象となる索引の候補を絞り込む処理が実行される。転置ファイルスキャン処理の詳細については後述する。
【０１６２】
次に、検索部１２０は、残りのプランを実行して検索クエリを満たす構造化文書を検索する（ステップＳ２３０５）。そして、通信部１０１が、検索された構造化文書を検索結果としてクライアント３００に送信し（ステップＳ２３０６）、検索処理を終了する。
【０１６３】
次に、ステップＳ２３０４の転置ファイルスキャン処理について図２４を用いて説明する。図２４は、本実施の形態における転置ファイルスキャン処理の全体の流れを示すフローチャートである。
【０１６４】
まず、ページ読込部１２２が、探索対象とするページを表す対象ページ（以下Ｐとする）を読込み、読込んだページの見出し情報（以下、ページ見出し情報という）を取得する（ステップＳ２４０１）。
【０１６５】
次に、ページ判定部１２３は、チェック対象となる索引要素情報ｃ＝＜文書識別子Ｆ、要素識別子Ｅ、構造識別子Ｔ＞を取得する（ステップＳ２４０２）。チェック対象となる索引要素情報は、転置ファイルスキャン処理の前までのオペレータの処理で得られるものである。
【０１６６】
次に、ページ判定部１２３は、ページ見出し情報のノード範囲内に文書識別子Ｆおよび要素識別子Ｅが含まれるか否かを判断する（ステップＳ２４０３）。含まれる場合は（ステップＳ２４０３：ＹＥＳ）、ページ判定部１２３は、さらに、ページ見出し情報の構造集合に構造識別子Ｔが含まれるか否かを判断する（ステップＳ２４０４）。
【０１６７】
含まれる場合は（ステップＳ２４０４：ＹＥＳ）、各ページ内でさらに該当するブロックを判定するために以下の処理が実行される。まず、ブロック判定部１２４は、ページ内ノード範囲を参照し文書識別子Ｆおよび要素識別子Ｅが含まれるブロックの区間情報Ｒ１を取得する（ステップＳ２４０５）。
【０１６８】
ブロックの区間情報とは、各ブロックに含まれる索引情報の範囲を特定するための情報である。例えば、図１８の例では、ブロックの開始位置を表す情報である１、７、１０から、３つのブロックそれぞれに対して、１〜６、７〜９、および１０〜１２などのような情報を区間情報として取得できる。
【０１６９】
次に、ブロック判定部１２４は、ページ内構造集合を参照し、構造識別子Ｔが含まれるブロックの区間情報の集合Ｒ２を取得する（ステップＳ２４０６）。そして、ブロック判定部１２４は、区間Ｒ１と、集合Ｒ２内の各区間との共通部分を表す区間Ｒ３を求め、求めたＲ３を対象として索引情報の読込みを行い、ｃ＝＜文書識別子Ｆ、要素識別子Ｅ、構造識別子Ｔ＞との照合を行う（ステップＳ２４０７）。
【０１７０】
次に、ブロック判定部１２４は、ｃがＲ３に含まれるか否かを判断する（ステップＳ２４０８）。含まれない場合は（ステップＳ２４０８：ＮＯ）、ページ読込部１２２は、すべてのページを処理したか否かを判断する（ステップＳ２４０９）。処理していない場合（ステップＳ２４０９：ＮＯ）、ページ読込部１２２は、次のページを読込んで処理を繰り返す（ステップＳ２４０１）。
【０１７１】
すべてのページを処理した場合は（ステップＳ２４０９：ＹＥＳ）、チェック対象となる索引要素情報ｃを満たす語彙索引は存在しないものとして転置ファイルスキャン処理が終了する。
【０１７２】
ステップＳ２４０８で、ｃがＲ３に含まれると判断された場合は（ステップＳ２４０８：ＹＥＳ）、チェック対象となる索引要素情報ｃを満たす語彙索引が存在したものとして転置ファイルスキャン処理が終了する。
【０１７３】
ステップＳ２４０３でページ見出し情報のノード範囲内に文書識別子Ｆおよび要素識別子Ｅが含まれないと判断された場合（ステップＳ２４０３：ＮＯ）、および、ステップＳ２４０４でページ見出し情報の構造集合に構造識別子Ｔが含まれないと判断された場合は（ステップＳ２４０４：ＮＯ）、対象ページの探索をスキップし、ステップＳ２４０９の終了判定処理を実行する。
【０１７４】
このように、本実施の形態によれば、（１）クエリにおける大域的な構造制約に対する絞りこみ、（２）ページの見出しに対する絞込み、（３）ページ内のブロックに対する絞込みの三段階のチェックを行うことで、探索空間を限定し、検索を高速化することが可能となる。
【０１７５】
次に、本実施の形態による検索処理の具体例について説明する。まず、ページ見出し情報による探索範囲の限定の例について図２５および図２６を用いて説明する。
【０１７６】
図２５は、検索クエリの一例を示す説明図である。同図は、タイトルタグ下のテキスト（構造識別子＝６）に「ＸＭＬ」を含む特許文書を検索する場合の検索クエリの例を示している。図２６は、語彙索引の一例を示す説明図である。同図では、ページ１内に構造識別子＝４または１０のみが含まれるため、構造集合が｛４、１０｝であることが示されている。
【０１７７】
図２６のようなページ１を対象として、図２５に示すような検索クエリを元に構造識別子６の候補を検索する場合、ページ１には構造集合として｛４、１０｝のみが存在することから、ページ１の探索をスキップすることが可能となる。
【０１７８】
次に、ページ内見出し情報による探索範囲の限定の例について図２７を用いて説明する。なお、語彙索引としては、図１７に示すような情報が格納されており、ノード範囲に基づくブロック分割処理および構造集合に基づくブロック分割処理によって、それぞれ図１８および図２１に示すようなブロックに分割されていることを前提とする。
【０１７９】
図２７は、探索範囲の限定の一例を説明するための説明図である。同図は、上記前提で、例えば索引要素情報として＜３５、１０、９＞をチェック対象として照合を行う場合の例を表している。
【０１８０】
まず、ページ見出し情報から、ページ単位でスキップできるかどうかがチェックされる（ステップＳ２４０３、２４０４）。まず、ノード範囲の条件がチェックされ、文書識別子３５および要素識別子１０は、ノード範囲［＜１０、２０＞、＜９０、３０＞］に含まれると判断される（ステップＳ２４０３：ＹＥＳ）。
【０１８１】
次に構造情報の条件がチェックされ、構造識別子９は、ページ見出し情報の構造集合である｛５、９、１０、１２、１５｝に含まれると判断される（ステップＳ２４０４：ＹＥＳ）。したがって、ページ内の探索（ステップＳ２４０５〜ステップＳ２４０８）が実行される。
【０１８２】
ページ内の探索では、まず、ページ内ノード範囲から、＜３５、１０＞が含まれるブロックＲ１が取得される。この例では、２番目のブロックが条件を満たすため、このブロックが探索区間として取得される（ステップＳ２４０５）。次に、ページ内構造集合との照合が行われる。この例では、構造識別子９が含まれるブロックは２番目のブロックだけであるため、区間の集合Ｒ２は、この２番目のブロックのみとなる（ステップＳ２４０６）。
【０１８３】
これら処理終了後、それぞれの区間（Ｒ１、Ｒ２）の積集合Ｒ３を計算する。この例では、＜３５、１０、９＞の索引要素１個だけを含む区間がＲ３となる。したがって、このＲ３の要素を解候補として照合処理を行い（ステップＳ２４０７）、このページに対する処理を終了する。
【０１８４】
このように、本実施の形態によれば、ページの見出し情報だけでなく、ページをさらに分割したブロックごとの見出し情報も参照して探索空間を絞り込むことにより、検索処理をさらに高速化することが可能となる。
【０１８５】
以上ように、本実施の形態にかかる構造化文書管理装置では、転置リストの各ページを、文書識別子等の分布に関する特徴を考慮して複数のブロックに分割するとともに、各ブロックに含まれる文書識別子等の範囲を対応づけた語彙索引を作成することができる。このため、当該範囲を参照して不要なブロックへのアクセスを回避した検索の高速化が可能となる。
【０１８６】
次に、本実施の形態にかかる構造化文書管理装置のハードウェア構成について図２８を用いて説明する。図２８は、本実施の形態にかかる構造化文書管理装置のハードウェア構成を示す説明図である。
【０１８７】
本実施の形態にかかる構造化文書管理装置は、ＣＰＵ（Central Processing Unit）５１などの制御装置と、ＲＯＭ（Read Only Memory）５２やＲＡＭ５３などの記憶装置と、ネットワークに接続して通信を行う通信Ｉ／Ｆ５４と、ＨＤＤ（Hard Disk Drive）、ＣＤ（Compact Disc）ドライブ装置などの外部記憶装置と、ディスプレイ装置などの表示装置と、キーボードやマウスなどの入力装置と、各部を接続するバス６１を備えており、通常のコンピュータを利用したハードウェア構成となっている。
【０１８８】
本実施の形態にかかる構造化文書管理装置で実行される構造化文書管理プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ（Compact Disk Read Only Memory）、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ（Compact Disk Recordable）、ＤＶＤ（Digital Versatile Disk）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【０１８９】
また、本実施の形態にかかる構造化文書管理装置で実行される構造化文書管理プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、本実施の形態にかかる構造化文書管理装置で実行される構造化文書管理プログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【０１９０】
また、本実施の形態の構造化文書管理プログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【０１９１】
本実施の形態にかかる構造化文書管理装置で実行される構造化文書管理プログラムは、上述した各部（通信部、格納部、検索部）を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ５１（プロセッサ）が上記記憶媒体から構造化文書管理プログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、上述した各部が主記憶装置上に生成されるようになっている。
【産業上の利用可能性】
【０１９２】
以上のように、本発明にかかる構造化文書管理装置、構造化文書管理方法および構造化文書管理プログラムは、語彙索引を用いて検索を行う構造化文書の検索装置、検索方法、および検索プログラムに適している。
【図面の簡単な説明】
【０１９３】
【図１】本実施の形態にかかる構造化文書管理システムの構成を示すブロック図である。
【図２】ＸＭＬで記述された構造化文書の一例を示す説明図である。
【図３】構造化文書記憶部に格納された構造化文書のデータ構造の一例を示す説明図である。
【図４】構造情報記憶部に格納された構造情報のデータ構造の一例を示す説明図である。
【図５】語彙索引記憶部に格納された語彙索引のデータ構造の一例を示す説明図である。
【図６】転置リストの詳細構造の一例を示した説明図である。
【図７】転置リストの詳細構造の一例を示した説明図である。
【図８】入力されたクエリの一例を示す説明図である。
【図９】クエリグラフの一例を示す説明図である。
【図１０】本実施の形態における索引生成処理の全体の流れを示すフローチャートである。
【図１１】ページ決定処理の全体の流れを示すフローチャートである。
【図１２】従来の方法によるページ決定処理の一例を説明するための説明図である。
【図１３】本実施の形態によるページ決定処理の一例を説明するための説明図である。
【図１４】空き番号の小さい順に文書識別子を割り当てた場合の例を示している図である。
【図１５】ノード範囲が最小となるような空き番号を選択して文書識別子として割り当てた場合の例を示している図である。
【図１６】ノード範囲に基づくブロック分割処理の全体の流れを示すフローチャートである。
【図１７】転置リストのページの一例を示す説明図である。
【図１８】分割された後の転置リストのページの一例を示す説明図である。
【図１９】構造集合に基づくブロック分割処理の全体の流れを示すフローチャートである。
【図２０】構造要素の分布を生成した場合の例を示している図である。
【図２１】分割された後の転置リストのページの一例を示す説明図である。
【図２２】構造集合に基づくブロック分割処理の全体の流れを示すフローチャートである。
【図２３】本実施の形態における検索処理の全体の流れを示すフローチャートである。
【図２４】本実施の形態における転置ファイルスキャン処理の全体の流れを示すフローチャートである。
【図２５】検索クエリの一例を示す説明図である。
【図２６】語彙索引の一例を示す説明図である。
【図２７】探索範囲の限定の一例を説明するための説明図である。
【図２８】本実施の形態にかかる構造化文書管理装置のハードウェア構成を示す説明図である。
【符号の説明】
【０１９４】
５１  ＣＰＵ
５２  ＲＯＭ
５３  ＲＡＭ
５４  通信Ｉ／Ｆ
６１  バス
１００  構造化文書管理装置
１０１  通信部
１１０  格納部
１１１  構造解析部
１１２  索引生成部
１１３  ページ決定部
１１４  特徴解析部
１１５  ブロック分割部
１２０  検索部
１２１  制約生成部
１２２  ページ読込部
１２３  ページ判定部
１２４  ブロック判定部
１４１  構造化文書記憶部
１４２  構造情報記憶部
１４３  語彙索引記憶部
２００  ネットワーク
３００  クライアント
【図１】
2008242605.tif 000003
【図２】
2008242605.tif 000004
【図３】
2008242605.tif 000005
【図４】
2008242605.tif 000006
【図５】
2008242605.tif 000007
【図６】
2008242605.tif 000008
【図７】
2008242605.tif 000009
【図８】
2008242605.tif 000010
【図９】
2008242605.tif 000011
【図１０】
2008242605.tif 000012
【図１１】
2008242605.tif 000013
【図１２】
2008242605.tif 000014
【図１３】
2008242605.tif 000015
【図１４】
2008242605.tif 000016
【図１５】
2008242605.tif 000017
【図１６】
2008242605.tif 000018
【図１７】
2008242605.tif 000019
【図１８】
2008242605.tif 000020
【図１９】
2008242605.tif 000021
【図２０】
2008242605.tif 000022
【図２１】
2008242605.tif 000023
【図２２】
2008242605.tif 000024
【図２３】
2008242605.tif 000025
【図２４】
2008242605.tif 000026
【図２５】
2008242605.tif 000027
【図２６】
2008242605.tif 000028
【図２７】
2008242605.tif 000029
【図２８】
2008242605.tif 000030