(57)【要約】【課題】スキーマが定義されていない複数の構造化文書に対し、高速な検索を行うために適切な値索引を生成することができる構造化文書管理システムを提供する。【解決手段】構造化文書記憶部２２は複数の構造化文書を記憶し、構造情報記憶部２１はそれらから抽出された構造情報に含まれる構造要素を統合して記憶する。値索引生成処理部３では、構造要素ごとに、当該構造要素の値と当該値が含まれる構造化文書及びその構造要素を特定する位置情報を保持する値索引において前記保持する情報をいかに配置するかを示す索引タイプを、前記値の特徴により決定し、構造要素ごとに、前記索引タイプ決定手段により決定された索引タイプが示す配置がなされた前記値索引を生成する。この生成において、ユーザによる指定が不要もしくは軽減され、非固定的な部分にも適用でき、検索要求の分析が不要となる。【選択図】      図１
2006018584.tif 000002
【特許請求の範囲】
【請求項１】
複数の構造化文書を記憶する第1の記憶手段と、
前記構造化文書から複数の構造要素を含む構造情報を抽出する抽出手段と、
前記複数の構造化文書から抽出された前記構造情報に含まれる前記構造要素を統合して記憶する第２の記憶手段と、
前記構造要素ごとに、当該構造要素の値と当該値が含まれる構造化文書及びその構造要素を特定する位置情報を保持する値索引において前記保持する情報をいかに配置するかを示す索引タイプを、前記値の特徴により決定する索引タイプ決定手段と、
前記構造要素ごとに、前記索引タイプ決定手段により決定された索引タイプが示す配置がなされた前記値索引を生成する値索引生成手段とを備えたことを特徴とする構造化文書管理システム。
【請求項２】
前記値の特徴は、前記構造要素に該当する値の持つデータタイプ、前記構造要素に該当する値の種類、又は前記構造要素に該当する値の重複数のうちの少なくとも一つを含むものであることを特徴とする請求項１に記載の構造化文書管理システム。
【請求項３】
前記索引タイプ決定手段は、前記索引タイプとして、前記値索引に登録されている複数種類の値をリスト状に保持し且つ前記位置情報を前記値とは別のページに保持する配置を示す索引タイプ、前記値索引に登録されている複数種類の値をツリー状に保持し且つ前記位置情報を前記値とは別のページに保持する配置を示す索引タイプ、又は前記値索引に登録されている複数種類の値をツリー状に保持し且つ前記位置情報を前記値と同一のページに保持する配置を示す索引タイプの少なくとも一つを選択し得るものであることを特徴とする請求項１に記載の構造化文書管理システム。
【請求項４】
前記構造化文書管理システムは、前記索引タイプ決定手段により索引タイプを選択された前記構造要素をユーザに提示し、ユーザから前記値索引を生成すべきものの選択指示を入力する入力手段を更に備え、
前記値索引生成手段は、前記入力手段により入力された選択指示に対応する値索引のみを生成することを特徴とする請求項１に記載の構造化文書管理システム。
【請求項５】
前記値索引生成手段は、前記索引タイプ決定手段により索引タイプを選択された前記構造要素の全てについて、前記値索引を生成することを特徴とする請求項１に記載の構造化文書管理システム。
【請求項６】
ある構造要素に対応する第１の値索引が生成された後で、前記第1の記憶手段に新たに構造化文書が記憶されたことによって、当該構造要素の値の特徴が、第１の値索引の生成時における当該構造要素の値の特徴と比べて変化があった場合に、予め順序づけられた値索引の種類のうちで、当該第１の値索引の種類の次に順序づけられている種類を持つ第２の値索引を生成し、第１の値索引と第２の値索引とを兼ね備えるようにしたことを特徴とする請求項１に記載の構造化文書管理システム。
【請求項７】
前記索引タイプ決定手段は、一つの構造要素ごとに又は特定の基準でまとめられた複数の構造要素からなる構造要素群ごとに、前記索引タイプを、前記複数の構造化文書に含まれる値のうち当該一つの構造要素の値の特徴又は当該構造要素群に含まれる構造要素の値の特徴により決定し、
前記値索引生成手段は、前記一つの構造要素又は前記構造要素群ごとに、前記索引タイプ決定手段により決定された索引タイプが示す配置がなされた前記値索引を生成することを特徴とする請求項１に記載の構造化文書管理システム。
【請求項８】
複数の構造化文書を第1の記憶手段に記憶する第1の記憶ステップと、
前記構造化文書から複数の構造要素を含む構造情報を抽出する抽出ステップと、
前記複数の構造化文書から抽出された前記構造情報に含まれる前記構造要素を統合して第２の記憶手段に記憶する第２の記憶ステップと、
前記構造要素ごとに、当該構造要素の値と当該値が含まれる構造化文書及びその構造要素を特定する位置情報を保持する値索引において前記保持する情報をいかに配置するかを示す索引タイプを、前記値の特徴により決定する決定ステップと、
前記構造要素ごとに、前記索引タイプ決定手段により決定された索引タイプが示す配置がなされた前記値索引を生成する生成ステップとを有することを特徴とする値索引生成方法。
【請求項９】
構造化文書管理システムとしてコンピュータを機能させるためのプログラムにおいて、
前記プログラムは、
複数の構造化文書を第1の記憶手段に記憶する第1の記憶ステップと、
前記構造化文書から複数の構造要素を含む構造情報を抽出する抽出ステップと、
前記複数の構造化文書から抽出された前記構造情報に含まれる前記構造要素を統合して第２の記憶手段に記憶する第２の記憶ステップと、
前記構造要素ごとに、当該構造要素の値と当該値が含まれる構造化文書及びその構造要素を特定する位置情報を保持する値索引において前記保持する情報をいかに配置するかを示す索引タイプを、前記値の特徴により決定する決定ステップと、
前記構造要素ごとに、前記索引タイプ決定手段により決定された索引タイプが示す配置がなされた前記値索引を生成する生成ステップとをコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の構造化文書を管理する構造化文書管理システム、値索引生成方法及びプログラムに関する。
【背景技術】
【０００２】
現在、ＩＴ（情報技術）の進化により、膨大な量の情報を容易に入手することができるようになっている。しかしその反面、必要な情報が大量のデータに埋没するという弊害も生じてきており、十分に活用できない場合がある。情報が大量に存在していても、それをうまく活用できなければ意味がない。
【０００３】
このような情報には、一つの書式に統一された情報もあれば、全く書式のない自由書式の情報も数多く存在する。これらの情報を統一的に扱うための中核技術として期待されている技術がXML（Extensible Markup Language）である。XMLは、柔軟な拡張性と連携性を備えた標準のドキュメント記述言語であり、主要ベンダーからのサポートも約束されている。
【０００４】
XMLにより記述された文書を代表とする構造化文書は、次の特徴を持つ。  
・階層的な構造を持つ。  
・同じ名前の構造要素が発生する位置は一定ではない。入れ子が発生する可能性がある。  
・スキーマ定義が必須ではない。
【０００５】
また、格納されたデータを取り出す手段として、問合せ言語がある。RDBの世界ではSQL(Structured Query Language)があるように、XMLでは、XQuery(XML Query Language)が策定されている。XQueryは、XMLデータをデータベースのように扱うための言語である。XQueryによれば、構造要素の値に関する条件や階層構造に関する条件に合致するデータ集合の取り出しができる。また、パスの正規表現により、『「文書」タグの子孫のどこかに存在する「コメント」タグ』といった曖昧な階層構造に関する条件も利用することができる。
【０００６】
さて、ＸＭＬデータベースなどを扱う構造化文書管理システムでは、検索を高速に実行できることが要請されるが、これに応えるための一つの手段として索引を作成することが一般的に行われる。構造化文書管理システムに対し索引を作成する従来技術としては例えば以下のような方法がある。
【０００７】
特許文献１では、ユーザが１個以上の構造要素に対し予め索引の種類を指示することで、その構造要素の値の特徴に応じて高速に検索可能な索引（特化した）索引を作成する技術が開示されている。検索時に一括して参照される可能性の高い構造要素に対し、まとめて索引管理をすることで、一括参照される検索処理を高速化する効果がある。
【０００８】
特許文献２では、スキーマに従い、固定的な部分には特化した索引を、非固定的な部分には全文検索用の索引を作成する技術が開示されている。これによれば、固定的な部分には特化した索引を設定できる効果がある。
【０００９】
特許文献３では、検索条件として高頻度で使用される構造要素に対し索引を作成する技術が開示されている。これによれば、高速検索に必要な索引を最小限に抑える効果がある。
【特許文献１】特開２０００−３３６６公報
【特許文献２】特開２００３−３２３４２７公報
【特許文献３】特開２００３−２２８５７０公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
異なる文書構造の構造化文書を大量に扱う構造化文書管理システムを考えると以下の状況が発生する。  
・様々な構造をもった文書が存在するため、スキーマの定義が困難である。  
・同じ名前の構造要素が様々な位置に発生するため、索引設定を行うユーザが索引の設定を直接指示することが困難である。  
・様々な構造をもった文書が存在するため、実行されそうな検索要求の事前分析が困難である。
【００１１】
しかし、上記状況において特許文献１，２には次のような問題点がある。  
予めスキーマを定義する、もしくはユーザが作成すべき索引の種類を構造要素に対し指示する必要がある。また、構造化文書内の非固定的な部分についても、共通の特徴の値を持った構造要素が存在し得る。例えば、「ｔｙｐｅ」属性は様々な位置の構造要素の属性となり得るが、限られた種類の値から構成されることが多い。特許文献２ではその特徴に特化した索引の利用ができない。  
また、特許文献３には、実行されそうな検索要求の事前分析を必要とするか、もしくは事前分析をしないならば、実際に検索要求を何度も実行するまで、特化した索引を作成できないという問題点がある。
【００１２】
本発明は、上記事情を考慮してなされたもので、複数の構造化文書に対する値索引を生成するにあたって、ユーザによる指定を不要とし、非固定的な部分にも適用でき、検索要求の分析を不要とする構造化文書管理システム、値索引生成方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明に係る構造化文書管理システムは、複数の構造化文書を記憶する第1の記憶手段と、前記構造化文書から複数の構造要素を含む構造情報を抽出する抽出手段と、前記複数の構造化文書から抽出された前記構造情報に含まれる前記構造要素を統合して記憶する第２の記憶手段と、前記構造要素ごとに、当該構造要素の値と当該値が含まれる構造化文書及びその構造要素を特定する位置情報を保持する値索引において前記保持する情報をいかに配置するかを示す索引タイプを、前記値の特徴により決定する索引タイプ決定手段と、前記構造要素ごとに、前記索引タイプ決定手段により決定された索引タイプが示す配置がなされた前記値索引を生成する値索引生成手段とを備えたことを特徴とする。
【００１４】
本発明によれば、構造化文書内のタグや属性の値のデータタイプに特化した値索引を、１つの構造要素もしくは類似の構造要素群に対し作成できるため、検索処理時に検索条件に最適な値索引を適用することで、より高速な検索が可能となる。
【００１５】
また、本発明によれば、予めスキーマを定義することなく、構造化文書内の構造要素の値の特徴に特化した値索引を生成することができる。
【００１６】
また、本発明によれば、スキーマ定義がなければ、特化した値索引を一度作成した後に値の特徴が変わる可能性がある。例えば、データタイプの傾向が変わる可能性がある。しかし、そのような状況下においても、順序付けられた方向に対し値索引を追加するとともに、検索処理時に検索条件に適用可能な値索引を選択することにより、既に作成していた値索引を流用することが可能となる。
【００１７】
なお、装置に係る本発明は方法に係る発明としても成立し、方法に係る本発明は装置に係る発明としても成立する。  
また、装置または方法に係る本発明は、コンピュータに当該発明に相当する手順を実行させるための（あるいはコンピュータを当該発明に相当する手段として機能させるための、あるいはコンピュータに当該発明に相当する機能を実現させるための）プログラムとしても成立し、該プログラムを記録したコンピュータ読み取り可能な記録媒体としても成立する。
【発明の効果】
【００１８】
本発明によれば、スキーマが定義されていない複数の構造化文書に対し、高速な検索を行うために適切な値索引を生成することができる。この生成において、ユーザによる指定が不要もしくは軽減され、非固定的な部分にも適用でき、検索要求の分析が不要となる。
【発明を実施するための最良の形態】
【００１９】
以下、図面を参照しながら本発明の実施形態について説明する。
【００２０】
図１及び図２に、本発明の一実施形態に係る構造化文書管理システムの構成例を示す。なお、図１では、検索処理部４を省略し、図２では、格納処理部１及び値索引生成処理部３を省略している。
【００２１】
図１及び図２に示す通り、本実施形態の構造化文書管理システムは、対象となった構造化文書１００に関する情報を構造化文書データベース（構造化文書ＤＢ）２に格納するための処理を行う格納処理部１、複数の構造化文書に関する情報を記憶するための構造化文書ＤＢ２、値索引（特化値索引）を生成するための処理を行う値索引生成処理部３、検索のための処理を行う検索処理部４を備えている。
【００２２】
格納処理部１は、構造化文書１００から構造を抽出するための処理を行う構造抽出部１１と、構造化文書１００を構造化文書ＤＢ２に格納するための処理を行う文書格納部１２を含む。文書格納部１２は、索引追加処理を行うための処理を行う索引追加部１２１を含んでもよい。
【００２３】
構造化文書ＤＢ２は、構造情報を記憶する構造情報記憶部２１と、構造化文書１００を記憶する構造化文書記憶部２２と、値索引（特化値索引）の設定を記憶する値索引設定記憶部２３と、値索引を記憶する値索引記憶部２４を含み、値索引記憶部２４は、特化値索引を記憶する特化値索引記憶部２４１と、汎用値索引を記憶する汎用値索引記憶部２４２を含む。
【００２４】
値索引生成処理部３は、索引タイプを抽出する索引タイプ抽出部３１と、値索引を設定する値索引設定部３２を含む。索引タイプ抽出部３１は、索引をマージする索引マージ部３１１を含んでもよい。
【００２５】
検索処理部４は、与えられた問合せデータ１０１に対して構文解析を行う問合せ構文解析部４１と、問合せに必要な構造を抽出する問合せ構造抽出部４２と、抽出された構造を利用して問合せを実行して結果データ１０２を生成する問合せ実行部４３を含む。
【００２６】
次に、本構造化文書管理システムの各部の概要を説明する。
【００２７】
本システムに構造化文書１００が入力されると、まず、構造抽出部１１が、該構造化文書をもとに例えばＤＯＭ（Document Object Model）のようなオブジェクトツリーを作成して、該構造化文書の持つ構造を抽出し、この抽出結果を構造情報として構造情報記憶部２１に格納する。次に、文書格納部１２は、入力された構造化文書を構造化文書記憶部２２に格納する。また、文書格納部１２は、必要に応じて、入力された構造化文書内に値情報があれば（索引追加部１２１により）値索引設定記憶部２３の情報に従い索引化して値索引記憶部２４に格納する。
【００２８】
図３に、構造化文書の一例を示す。また、図４に、図３の構造化文書から抽出された構造情報の一例（この例ではツリー）を示す。図４の構造情報では、パス「／文書」の「文書」タグに対応した構造要素が“ＴＩＤ１”、パス「／文書／＠ｉｄ」の「ｉｄ」属性に対応した構造要素が“ＴＩＤ２”、パス「／文書／年」の「年」タグに対応した構造要素が“ＴＩＤ３”、…、とそれぞれ構造要素識別情報（ＴＩＤ）が割り当てられる。なお、＠が付されたものは属性を示し、そうでないものはタグを示すものとする。ただし、構造情報では、同一パスの構造要素は１つに縮約するものとする。例えば、図３の構造化文書では、パス「／文書／著者一覧／名前」の「名前」タグは２つ含まれるが、図４の構造情報では、これらは１つに縮約されて、ＴＩＤ８という１つのＴＩＤが割り当てられている。なお、構造が異なる複数の構造化文書については、構造情報の重ね合わせにより、全ての構造化文書を包含する汎化した構造パターンを形成する。
【００２９】
値索引生成処理部３は、タグや属性の特徴に応じて高速に検索可能な値索引（以下、特化した値索引または特化値索引とも記す）の生成を行う。すなわち、詳しくは後述するが、値索引生成処理部３は、構造要素ごとに、当該構造要素の値と当該値が含まれる構造化文書及びその構造要素を特定する位置情報を保持する値索引において該保持する情報をいかに配置するかを示す索引タイプを、該値の特徴により決定し、該構造要素ごとに、決定された該索引タイプが示す配置がなされた値索引を生成する。この値索引生成処理部３による値索引生成処理は、ある程度の数の構造化文書が蓄積された後、自動的に、若しくはユーザの指示により、実行するのが望ましい。値索引生成処理が開示されると、まず、索引タイプ抽出部３１は、構造情報記憶部２１に記憶されている構造情報や構造化文書記憶部２２に記憶されている構造化文書を利用して、データタイプ情報とテンポラリ辞書を作成し、該データタイプ情報とテンポラリ辞書をもとにして、タグや属性に特化した特化値索引の索引設定情報を抽出する。次に、値索引設定部３２は、抽出された索引設定情報の全てを、若しくは抽出された索引設定情報を一旦ユーザに対し提示し、ユーザの選択した索引設定情報を、値索引設定記憶部２３に格納するとともに、該索引設定情報に従って構造化文書記憶部２２に記憶されている構造化文書内の値情報を索引化して特化値索引記憶部２４１に格納する。
【００３０】
検索処理部４では、問合せデータ１０１が与えられると、まず、問合せ構文解析部４１が、該問合せデータを構文解析する。この構文解析の結果は、例えば、問合せグラフとして表現される。問合せ構造抽出部４２は、構文解析結果から、問合せ処理に必要となる構造を抽出する。問合せ実行部４３は、抽出された構造を利用して、構造化文書記憶部２２、値索引設定記憶部２３、値索引記憶部２４にアクセスして、問合せデータに合致する結果データ１０２を生成する。
【００３１】
次に、値索引（特化値索引）に関して説明する。
【００３２】
値索引は、値を含む辞書情報と、辞書情報に含まれる各値がどの文書のどの構造要素に存在するかを示す情報を含む位置情報（例えば、文書ＩＤと構造要素ＩＤの対）とから構成される。
【００３３】
当該構造要素の値と、当該値が含まれる構造化文書及びその構造要素を特定する位置情報とを保持するにあたって、これら保持する情報をいかに配置するかについては、様々な形態がある。これら保持する情報をいかに配置するかを示すものが、索引タイプである。
【００３４】
辞書情報の保持方法としては、値をリスト状に保持する方法や、ツリー状に保持する方法がある。ツリー状の例として、数値のような固定長データや、文字列長が小さい値におさまる場合には、Ｂ＋木が適用できる。文字列長が小さい値におさまらない場合には、例えば、値単位ではなく、文字単位でツリー状に保持するトライやパトリシアツリーなどが適用できる。
【００３５】
位置情報の保持方法としては、辞書情報と同一のページに保持する方法や、辞書情報とは別のページに保持する方法がある。
【００３６】
なお、ページとはブロックとも呼ばれており、ディスク（２次記憶装置）と主記憶との間のデータのやりとりの単位（固定長サイズ）である。
【００３７】
図５に、特化値索引の保持方法の一例を示す。図５は、値をリスト状に保持し、値と同一のページに当該値に対応する位置情報（文書ＩＤ，構造要素ＩＤ）を保持する方法である。なお、同じ値に対して、複数の相異なる位置情報が存在する場合には、当該値に係る１つの列に該当する複数の位置情報を保持してもよいし、１つの列は１対の値及び位置情報のみを含むものとして、位置情報の数だけ列を設けるようにしてもよい。
【００３８】
図６に、特化値索引の保持方法の他の例を示す。図６は、値をリスト状に保持し、値とは別のページに位置情報を保持する（値と同じページには、位置情報が保持されているページを示す情報（例えば、ページＩＤ）を保持する）方法である。
【００３９】
図７に、特化値索引の保持方法のさらに他の例を示す。図７は、文字列長が小さい値におさまる場合（この例では、最大文字列長が５の場合）のＢ＋木で、値と同じページに位置情報を保持する方法である。図７の変形例として、値とは別のページに位置情報を保持する（例えば、図７において、位置情報の代わりにページＩＤを保持する）方法もある。また、中間ノードからも位置情報を持つ方法もある。
【００４０】
なお、Ｂ＋木については、例えば、文献“リレーショナルデータベース入門［新訂版］−データモデル・ＳＱＬ・管理システム−，  増永良文著，  サイエンス社”に詳しく開示されている（特に、同文献の第２０３頁の図７．１２、第２０６頁の図７．１３（ｆ）、第２０８頁の図１５，１６等参照）。
【００４１】
これらの保持方法には、値の持つ特徴に依って有利・不利がある。例えば、ツリー状に保持すると、サーチコストを小さくできるが、ツリーを構成するノード間のリンク情報を多く保持する必要がある。一方、リスト状に保持すると、サーチコストが大きくなる反面、リンク情報が少ないのでページ内の情報量を増やすことができる。
【００４２】
本実施形態では、値の特徴により索引タイプを決定し、決定された索引タイプが示す配置がなされた値索引を生成するものである。これによって、それぞれのタグや属性の値に適するタイプの値索引（特化値索引）を作成することができ、高速な検索処理を実現することができる。
【００４３】
なお、特化値索引とは別に、全てのタグや属性の値を保持する汎用的な索引（汎用値索引記憶部２４２内の汎用値索引）を利用するようにしてもよい。このようにすることで、最低限の検索処理を保証することができる。例えば、Ｎグラム方式に代表される全文検索用の索引により、ほとんどのタグや属性について検索条件として利用される包含関係について高速な検索が可能である。大小比較の高速検索も保証したい場合は、例えば、全文検索用の索引（汎用値索引）に加えて、数値だけの値すべてをＢ＋木で保持することで、汎用的な索引として利用するとよい。
【００４４】
次に、値の特徴と好ましい特化値索引の構造に関して説明する。
【００４５】
構造化文書の数が大量になると、タグや属性の値は、図８に示すように、異なる値の数がいくつ存在するかを表す値の種類（横軸）と、同じ値がどの程度重複しているかを表す重複数（縦軸）とにより、主に、ケースＡ〜Ｃの３つのケースに分類することができる。
【００４６】
（ケースＡ）値の種類が少なく、かつ、重複数の最大値が大きいケース  
例えば、「年」タグの値は「１９９９」「２０００」「２００１」「２００２」「２００３」「２００４」のように６種類しか存在しないと、どの値に対しても重複数が大きい値となる。
【００４７】
（ケースＢ）値の種類が多く、かつ、重複数の最大値が大きいケース  
値の種類が多くても、同じ値の発生に大きな偏りがあると、重複数の高い値が存在する。例えば、「キーワード」タグの値は、発生頻度の高い値や低い値をもつことが多い。
【００４８】
（ケースＣ）値の種類が多く、かつ、重複数の最大値が小さいケース  
値の種類が多く、同じ値の発生頻度が均等である場合は、どの値の重複数も小さい。例えば、「名前」タグの値は、ほとんど異なった値が発生する。
【００４９】
ここで、ケース毎に、高速検索を実現するための索引情報の保持方法の違いが生じる。
【００５０】
（ケースＡ）辞書情報のサイズが限られているので、リスト状の保持方法でページ当たりの情報量を増やすことができる。また、位置情報のサイズは大きいので、位置情報を辞書情報とは別のページで保持することにより、ページ当たりの情報量を増やすことができる（図６参照）。
【００５１】
（ケースＢ）辞書情報のサイズが大きいので、ツリー状に保持すると辞書サーチコストを少なくできる。また、位置情報のサイズは大きいので、ケースＡと同様に、位置情報を辞書情報とは別のページで保持するのが好ましい（図７参照（ただし位置情報は別ページになる））。
【００５２】
（ケースＣ）辞書情報のサイズが大きいので、ケースＢと同様に、ツリー状に保持するのが好ましい。また、位置情報のサイズは限られているので、位置情報は辞書情報とまとめて保持することにより、ページ内の空き領域を節約することができる（図７参照）。
【００５３】
次に、値の特徴が変化する場合について説明する。
【００５４】
構造化文書を追加するうちに値の特徴が途中で変わる場合が想定される。このような場合に、ケースＡ〜Ｃについて変化の有無を考えると、「ケースＡからケースＢ」または「ケースＣからケースＢ」の方向への変化はあるが、その他の方向への変化はない。これは、ケースＡとケースＢは重複数の最大値が大きい場合であり、この値が小さくなることはなく、また、ケースＢとケースＣは値の種類が多い場合であり、この値が少なくなることはないからである。
【００５５】
同様の考え方は、数値、文字列などのデータケースにも適用できる。例えば、数値だけを含む「数値」、アルファベットと数値とを含む「英数字」（ただし、「数値」に該当するものは除く）、英数字だけでなく日本語を含む「日本語」（ただし、「数値」又は「英数字」に該当するものは除く）の３つのデータケースについて考えると、図９に示すように「数値→英数字→日本語」という順序づけで変化の方向性を定義することができる。
【００５６】
本実施形態は、このように順序づけられた索引候補から、タグや属性の値を包含する最も特化した索引を、該当するタグや属性に対し割り当てることで、値の特徴の変化に対応することができる。
【００５７】
ここで、ある特化値索引を作成し、この後、構造化文書を追加するうちに値の特徴が変わり、新規に特化値索引を作成した後における索引登録方法について幾つかの例を示す。
【００５８】
なお、以降ではケースＡ，Ｂ，Ｃに特化した値索引を対応付けたものを索引タイプＡ，Ｂ，Ｃと呼ぶ。
【００５９】
（１）値の特徴で特化値索引を特定可能な場合は、該当する特化値索引に登録するものとする。
【００６０】
例えば、データタイプ別に特化値索引を作成する時、例えば数値の特化値索引の作成後に英数字の特化値索引を作成した後において、数値「１２３」については数値の特化値索引に登録し、英数字「ｅ３４」については英数字の特化値索引に登録する。
【００６１】
（２）元の特化値索引に値が存在し、かつ、辞書情報と位置情報が分離されている場合は、元の特化値索引に登録するものとする。
【００６２】
例えば、索引タイプＡの特化値索引に対して索引タイプＢの特化値索引を新規作成した場合で、前者に値が存在する場合は（なお、索引タイプＡの特化値索引は辞書情報と位置情報が分離されている）、元の索引タイプＡの特化値索引に登録する。
【００６３】
（３）辞書情報と位置情報が分離されていない場合には、追加する値の位置情報の数によって決定するものとする。追加する値の位置情報の数がＮ個未満ならば、元の特化値索引に登録するものとし、追加する値の位置情報の数がＮ個以上ならば、新規作成した特化値索引に登録するものとする。
【００６４】
例えば、（辞書情報と位置情報が分離されていない）索引タイプＣの特化値索引に対し索引タイプＢの特化値索引を新規作成した場合で、希少頻度の値は元の索引タイプＣの特化値索引に登録し、高頻度の値は新規作成した索引タイプＢの特化値索引に登録する。
【００６５】
上記の３つの例の他にも種々の登録方法が考えられる。
【００６６】
（４）索引タイプＡの特化値索引に索引タイプＢの特化値索引を新規作成した後は、いずれの特化値索引に登録してもよいものとする。
【００６７】
（５）索引タイプＣの特化値索引に対し索引タイプＢの特化値索引を新規作成した後は、すべて新規作成した索引タイプＢの特化値索引に登録するものとする。
【００６８】
次に、値索引生成処理部３による値索引生成処理について詳細に説明する。
【００６９】
値索引生成処理は、データタイプ情報とテンポラリ辞書を作成する処理（第１の処理）と、索引タイプ割り当ての処理（第２の処理）を含む。
【００７０】
図１０に、第１の処理の手順の一例を示す。また、図１１に、この第１の処理の手順に続いて行われる第２の処理の手順の一例を示す。
【００７１】
まず、索引タイプ抽出部３１は、構造情報記憶部２１に記憶されている全構造情報について、図１０に示す手順を行って、データタイプ情報とテンポラリ辞書を作成する。
【００７２】
なお、図１０の手順は、例えばパス（ＴＩＤ）又は複数のパス（ＴＩＤ）をマージしたグループごとに行われる。
【００７３】
ここで、図３及び図４の例を用いて、パス「／文書／年」の「年」タグについて図１０の手順を行う場合を想定して説明する。
【００７４】
図１２に、データタイプ情報の構造の一例を示す。この例では、データタイプ情報は、構造要素識別情報（ＴＩＤ）、値の種類、要素数、データタイプ、文字列長総和、文字列長二乗和、テンポラリ辞書ＩＤを含む。なお、文字列長総和及び文字列長二乗和は、必ずしも含まなくてよい。
【００７５】
図１３に、テンポラリ辞書の構造の一例を示す。この例では、テンポラリ辞書は、値、カウンタを含む。なお、テンポラリ辞書は例えばパス（ＴＩＤ）又は複数のパス（ＴＩＤ）をマージしたグループごとに設けられ、各テンポラリ辞書にはテンポラリ辞書ＩＤが付与される。
【００７６】
まず、構造化文書記憶部２２に格納されている構造化文書群から対象となっている値（例えば、パス「／文書／年」の値（例えば、“２００４”））を一つ取得し（ステップＳ１）、データタイプ情報の「要素数」を１つインクリメントする（ステップＳ２）。
【００７７】
次に、ステップＳ１で得た値（例えば、“２００４”）がテンポラリ辞書に存在すれば（ステップＳ３のＹｅｓ）、テンポラリ辞書中の当該値と等しい「値」を持つ列の「カウンタ」を１つインクリメントする（ステップＳ４）。反対に、ステップＳ１で得た値がテンポラリ辞書に存在しなければ（ステップＳ３のＮｏ）、データタイプ情報の「値の種類」を１つインクリメントし（ステップＳ５）、テンポラリ辞書に当該値と同じ「値」を持つ列を新規に追加し（ステップＳ６）、この追加した列の「カウンタ」を１に設定する（ステップＳ７）。
【００７８】
ステップＳ４またはステップＳ７の次に、データタイプ情報の「値の種類」が予め設定されている上限値未満であり（ステップＳ８のＹｅｓ）、かつ、構造化文書記憶部２２に格納されている構造化文書群で対象となっている値のうちまだ取得していないものがある（ステップＳ９のＹｅｓ）場合には、ステップＳ１に戻って、上記処理を繰り返す。
【００７９】
ステップＳ４またはステップＳ７の次に、データタイプ情報の「値の種類」が予め設定されている上限値を越えた場合（ステップＳ８のＮｏ）、または構造化文書記憶部２２に格納されている構造化文書群で対象となっている値のすべてについて処理を終えた場合（例えば、すべてのパス「／文書／年」の値について処理を終えた場合）（ステップＳ９のＮｏ）には、この手順を終了する。
【００８０】
以上により、対象となったパスの値の特徴が得られたことになる。
【００８１】
例えば、パス「／文書／年」の値の特徴が、図１０の手順終了時における図１２のデータタイプ情報の内容及び図１３のテンポラリ辞書の内容として得られる。
【００８２】
図１０の処理が終了すると、索引タイプ抽出部３１は、続いて、図１４に示す索引タイプの割り当て基準に従い図１１に示す索引タイプ割り当て処理を行う。
【００８３】
ここで、Ｘt1，Ｙt1，Ｚt1はそれぞれ図１０の処理で得られたデータタイプ情報の「要素数」，「値の種類」、テンポラリ辞書の「カウンタ」と比較するための予め定められた基準値とする。
【００８４】
まず、「要素数」がパラメータＸt1未満であれば（ステップＳ１１のＮｏ）、索引タイプを割り当てずに、この手順を終了する。すなわち、この場合には、特化値索引をまだ作成しないことになる。
【００８５】
「要素数」がパラメータＸt1以上であり（ステップＳ１１のＹｅｓ）、かつ、「値の種類」がＹt1以下であれば（ステップＳ１２のＹｅｓ）、索引タイプＡを割り当てる。
【００８６】
「要素数」がパラメータＸt1以上であり（ステップＳ１１のＹｅｓ）、かつ、「値の種類」がＹt1を越えており（ステップＳ１２のＮｏ）、かつ、Ｚt1以上の値を持つ「カウンタ」が存在すれば（ステップＳ１３のＹｅｓ）、索引タイプＢを割り当てる。
【００８７】
「要素数」がパラメータＸt1以上であり（ステップＳ１１のＹｅｓ）、かつ、「値の種類」がＹt1を越えており（ステップＳ１２のＮｏ）、かつ、Ｚt1以上の値を持つ「カウンタ」が存在しなければ（ステップＳ１３のＮｏ）、索引タイプＣを割り当てる。
【００８８】
上記索引タイプの割り当てをまとめると次のようになる。ただし、いずれも「要素数」がパラメータＸt1以上であることを条件とする。  
（条件１）「値の種類」がパラメータＹt1以下であるならば、索引タイプＡを割り当てる。  
（条件２）「値の種類」がパラメータＹt1より多く、かつ、「カウンタ」でパラメータＺt1以上となる値が１個でも存在するならば、索引タイプＢを割り当てる。  
（条件３）その他の場合は、索引タイプＣを割り当てる。  
例えば、Ｘt1＝５００、Ｙt1＝１００、Ｚt1＝５０とすると、図１２に示すパス「／文書／年」の場合は、（条件１）を満たすので、索引タイプＡが割り当てられる。
【００８９】
なお、図１４の索引タイプの割り当て基準は一例であり、この他にも、例えば図１５に示す基準など、種々のものが考えられる。
【００９０】
なお、値索引設定部３２にて得られた索引タイプをユーザに対して提示する場合には、例えば、図１６に示す特化値索引生成候補一覧画面を表示する。この場合、ユーザは、例えば、一覧の中から所望の項目を、例えば左側のチェックボックスをチェックすることによって選択し、生成ボタンを押す。そして、ユーザにより選択された項目に対応する値索引のみについて、設定・生成を行う。この結果、ユーザは、実際に必要なだけ特化した値索引を容易に設定・生成させることができる。なお、図１６の一覧画面例では、パス又は複数のパスをまとめたものと、これに割り当てられた索引タイプとを表示しているが、複数のパスをまとめて表現せずに、個々のパスを提示するようにしてもよい。例えば、図１６の「／文書直下と／文書／本文以下のコメントタグの名前属性」を、「／文書／コメント／＠名前」（図４のＴＩＤ１０）、「／文書／本文／章／コメント／＠名前」（図４のＴＩＤ１４）、「／文書／本文／章／節／コメント／＠名前」（図４のＴＩＤ１７）のように個別に提示してもよい。
【００９１】
次に、値索引のマージについて説明する。
【００９２】
複数のタグや属性の値が同様の特徴をもっている場合には、特化値索引を共通管理すると、同じ名前のタグ群や属性群に対する検索処理時に索引アクセス数を削減でき有効である。
【００９３】
図１７に、辞書情報を共通管理し、位置情報をＴＩＤ別に保持する例を示す。
【００９４】
なお、特化値索引の作成後に値の特徴に変化がないことが保証されるのであれば、位置情報も共通管理するようにしてもよい。
【００９５】
図１８に、特化値索引の共通管理のために索引タイプ抽出部３１の索引マージ部３１１により行われる索引マージ処理の手順の一例を示す。
【００９６】
この処理は、図１０，１１の処理が行われた後に、行うことができる。
【００９７】
なお、ここでは、ステップＳ２１１がない場合いついて説明し、後でステップＳ２１１について言及する。
【００９８】
また、図４に示す構造情報を具体例として説明する。
【００９９】
まず、図４に示す構造情報と図１０，１１の処理で得られた索引タイプ情報を用いて、類似の構造をもち、かつ、同一の索引タイプであるパス群を求める（ステップＳ２１）。
【０１００】
類似の構造の判断基準の例としては、例えば、「パスの末端要素の名前が同じであること。ただし、タグであるか属性であるかは区別しない。」など種々の基準が考えられる。
【０１０１】
ここでは、一例として、末端要素の名前が「名前」である構造要素について考えると、５種類のパス「／文書／著者一覧／名前」（ＴＩＤ８）、「文書／コメント／＠名前」（ＴＩＤ２０）、「文書／本文／章／＠名前」（ＴＩＤ１０）、「文書／本文／章／節／＠名前」（ＴＩＤ１４）、「文書／整形／＠名前」（ＴＩＤ１７）が存在する。それぞれの索引タイプが順に「Ｃ」、「Ａ」、「Ａ」、「Ａ」、「Ａ」であるとすると、後者の４種類のパス「文書／コメント／＠名前」（ＴＩＤ２０）、「文書／本文／章／＠名前」（ＴＩＤ１０）、「文書／本文／章／節／＠名前」（ＴＩＤ１４）、「文書／整形／＠名前」（ＴＩＤ１７）が獲得される。
【０１０２】
次に、これら獲得された４種類のパスについて、図１９に示すテンポラリ辞書を作成しながら、図２０に示すマージ判定用情報を作成する。
【０１０３】
ステップＳ２１の次に、各ＴＩＤについて、パスに対応する値群をテンポラリ辞書に追加するとともに、マージ判定用情報においてテンポラリ辞書内の値を含むことを示すフラグを設定する（ステップＳ２２〜Ｓ２４）。図２０の例では、「∨」部分が、テンポラリ辞書内の値を含むフラグが設定されていることを意味している。
【０１０４】
続いて、各値ごとに、発生頻度を求める（ステップＳ２５）。
【０１０５】
例えば、値ＩＤ３の「田中健太郎」は、ＴＩＤ１０、ＴＩＤ１４、ＴＩＤ１７の３つのＴＩＤについて発生しているので、発生頻度は３となる。
【０１０６】
その後、発生頻度の高い値を選別する（ステップＳ２６）。
【０１０７】
選別基準として例えば「発生頻度がパスの種類の半分以上」を考えると、値ＩＤ３、値ＩＤ４、値ＩＤ５の３つが得られる。
【０１０８】
そして、各ＴＩＤごとに、得られた値のうち前記フラグが設定されているものの割合を図２１に示すように求め（ステップＳ２７）、高い値をもつＴＩＤをマージ対象のパスとする（ステップＳ２８）。
【０１０９】
例えば、割合が５０％以上を高い値と考えると、３つのパス「文書／本文／章／＠名前」（ＴＩＤ１０）、「文書／本文／章／節／＠名前」（ＴＩＤ１４）、「文書／整形／＠名前」（ＴＩＤ１７）が獲得される。
【０１１０】
なお、値索引設定部３２にて得られた索引タイプをユーザに対して提示する場合には、前述と同様、図１６に示す特化値索引生成候補一覧画面（複数のパスを簡潔にまとめた表現で表示可能な画面）を表示するようにしてもよいし、単純に複数のパス群と索引タイプを表示するようにしてもよい。前述と同様に、ユーザは、例えば、一覧の中から所望の項目を選択し、生成ボタンを押すことで、特化した値索引を実際に必要なだけ設定、生成させることができる。
【０１１１】
ところで、上述した索引マージ処理は、索引タイプＡのように値の種類が少ない場合には計算コストはそれほど大きくならないが、索引タイプＢのように値の種類が多い場合にはかなり大きくなることが予想される。そこで、図１８の手順例において、ステップ２１の次に、ステップ２１で求めたパス群から、類似のテンポラリ辞書からなるパス群を求めて、パス群を絞り込む処理（ステップＳ２１１）を行っておくことで、後の処理を効率化することも可能である。類似のテンポラリ辞書の判断基準の例としては、例えば、「値の種類が同じ」などの基準がある。また、索引タイプ抽出部３１にて、データタイプ情報を求める際に、図１２に例示するように、値の長さの和や２乗和も求めておくことで、上記判断基準に値の長さの平均値や分散値を利用することも考えられる。
【０１１２】
次に、索引追加処理について説明する。
【０１１３】
格納される構造化文書がスキーマレスの場合、特化した値索引を設定、生成した後で、これまでの特徴とは異なった値が追加される可能性がある。
【０１１４】
図２２に、値の変化に対応し、これまで利用してきた特化値索引を流用するために、文書格納部１２により行われる索引追加処理の手順の一例を示す。
【０１１５】
ここでは、一例として、図１６に示したパス全てについて特化値索引を作成した後、１００件の構造化文書が追加された場合を想定する。このときの索引設定情報の一例を図２３に、特化値索引管理情報の一例を図２４にそれぞれ示す。
【０１１６】
ここで、Ｘt2，Ｙt2，Ｚt2はそれぞれ索引設定情報の「要素カウンタ」，「値の種類（新規）」、「要素カウンタ」／「値の種類（新規）」（“値の種類（新規）”の値を“要素カウンタ”の値で除して得た値）と比較するための予め定められた基準値とする。
【０１１７】
図２２において、格納される値の構造要素について特化値索引が作成されている場合、索引設定情報の要素カウンタの値を１つインクリメントする（ステップＳ３１）。
【０１１８】
次に、格納される値が特化値索引の辞書情報に存在しない場合（ステップＳ３２のＹｅｓ）、索引設定情報の「値の種類（新規）」を１つインクリメントする（ステップＳ３３）。なお、存在する場合（ステップＳ３２のＮｏ）には、ステップＳ３３はスキップする。
【０１１９】
次に、要素カウンタがパラメータＸt2で割り切れる場合（ステップＳ３４のＹｅｓ）、次の条件を満たすかどうかをチェックし（ステップＳ３５〜Ｓ３８）、全ての条件を満たすときに、索引タイプＢの追加を行う。  
（条件１）索引タイプが索引タイプＡであり（ステップＳ３５のＹｅｓ）、かつ、値の種類（新規）が急激に増えている（ステップＳ３６のＹｅｓ）条件  
上記条件のうち後者の一例は、「値の種類（新規）がパラメータＹt2以上」という条件である。  
（条件２）索引タイプが索引タイプＣであり（ステップＳ３５のＮｏ  Ａｎｄ  ステップＳ３７のＹｅｓ）、かつ、値の種類（新規）がほとんど増えていない（ステップＳ３８のＹｅｓ）条件  
上記条件のうち後者の一例は、「値の種類（新規）／要素カウンタがＺt2以下」という条件である。
【０１２０】
なお、要素カウンタがパラメータＸt2で割り切れない場合（ステップＳ３４のＮｏ）、または割り切れる場合（ステップＳ３４のＹｅｓ）であっても全ての条件を満たさないときは、索引タイプの追加を行わないことになる。
【０１２１】
ここで、具体例として、図２３について、Ｘt2＝１００、Ｙt2＝１０、Ｚt2＝０．２として考える。まず、Ｘt2＝１００で割り切れるパスは、ＴＩＤ５、ＴＩＤ３、ＴＩＤ１８、ＴＩＤ８、ＴＩＤ１０である。
【０１２２】
ＴＩＤ５は、索引タイプＡの特化値索引を作成しているが、作成後に値の種類が多く増えていることが分かる。（条件１）により、値の特徴に変化があると考えられるので、パス「／文書／会社名」（ＴＩＤ５）について、索引タイプＢの特化値索引を追加する。
【０１２３】
一方、ＴＩＤ３は、索引タイプＡの特化値索引を作成しており、作成後にも値の種類がほとんど増えてなく、値の特徴に変化がないといえるため、索引を追加する必要はない。
【０１２４】
ＴＩＤ１８は、索引タイプＣの特化値索引を作成しているが、作成後に値の種類がほとんど増えていないので、重複数が高い値が発生していると考えられる。（条件２）により、値の特徴に変化があると考えられるので、パス「／文書／キーワード」（ＴＩＤ１８）について、索引タイプＢの特化値索引を追加する。
【０１２５】
一方、ＴＩＤ８は、索引タイプＣの特化値索引を作成しており、作成後にも値の種類が多く増えているので、値の特徴に変化がないといえるため、索引を追加する必要はない。
【０１２６】
最後に、ＴＩＤ１０は、他のＴＩＤ１４、ＴＩＤ１７とマージした索引タイプＡの特化値索引を作成している。しかし、作成後に値の種類が多く増えているため、他のＴＩＤ１４，ＴＩＤ１７との共通性は低くなっていると考えられる。（条件１）を満たすので、ＴＩＤ１０だけ索引タイプＢの特化値索引を追加する。
【０１２７】
索引追加後の索引設定情報の一例を図２５に、特化値索引管理情報の一例を図２６にそれぞれ示す。索引ＩＤが１１、１２、１３の３つの特化値索引が追加され、索引設定情報の「追加索引ＩＤ」部分のＴＩＤ５、ＴＩＤ１８、ＴＩＤ１０にそれぞれ割り当てられていることが分かる。
【０１２８】
次に、検索処理について説明する。
【０１２９】
図２７に、問合せデータの一例を示す。
【０１３０】
ＸＭＬでは、ＸＱｕｅｒｙ（ＸＭＬ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）という問合せ言語がある。図２７の例は、ＸＱｕｅｒｙに基づいた問合せ記述方法に則したものである。
【０１３１】
図２７の問合せデータは、『「ｄｂ１」という名前の構造化文書データベースの階層木の中に「文書群」という構造要素がある。その「文書群」の直下に存在し、構造化文書内のどこかに存在する「名前」属性の値が「田中健太郎」と等しい「文書」の一覧を求めよ。』という条件になっている。
【０１３２】
まず、検索処理部４の問合せ構文解析部４１により、与えられた問合せデータに対して構文解析を行い、次いで、構造抽出部４２により、該構文解析結果と構造情報記憶部２１に記憶された構造情報をもとに、問合せに必要な構造を抽出する。これらの処理は、従来の技術を利用して構わない。
【０１３３】
本具体例の場合、「名前」属性に該当するパス一覧であるＴＩＤ１０、ＴＩＤ１４、ＴＩＤ１７、ＴＩＤ２０が抽出される。
【０１３４】
次に、実行部４３により、問合せを実行する。
【０１３５】
図２８に、問合せ実行部４３により行われる索引サーチ処理の手順の一例を示す。
【０１３６】
図２８において、問合せ実行部４３は、ターゲットパスに対応する特化値索引群を取得する（ステップＳ４１）。
【０１３７】
特化値索引群が適用可能であり（ステップＳ４２のＹｅｓ）、かつ、特化索引群を限定可能であれば（ステップＳ４３のＹｅｓ）、特化値索引群から一部の索引を選択し（ステップＳ４４）、選択した索引群を適用してサーチする（ステップＳ４５）。
【０１３８】
特化値索引群が適用可能であり（ステップＳ４２のＹｅｓ）、かつ、特化索引群を限定可能でなければ（ステップＳ４３のＮｏ）、特化値索引群すべてを適用してサーチする（ステップＳ４６）。
【０１３９】
特化値索引群が適用可能でなく（ステップＳ４２のＮｏ）、かつ、汎用値索引が適用可能であれば（ステップＳ４７のＹｅｓ）、汎用値索引群を適用してサーチする（ステップＳ４８）。
【０１４０】
特化値索引群が適用可能でなく（ステップＳ４２のＮｏ）、かつ、汎用値索引が適用可能でなければ（ステップＳ４８のＮｏ）、索引群を適用せずにサーチする（ステップＳ４９）。
【０１４１】
本具体例において、ＴＩＤ１０については、索引ＩＤ６で索引タイプＡの特化値索引と索引ＩＤ１３で索引タイプＣの特化値索引が、ＴＩＤ１４とＴＩＤ１７については索引ＩＤ６で索引タイプＡの特化値索引が、ＴＩＤ２０については索引ＩＤ７で索引タイプＡの特化値索引が、適用できることが分かり、各パスについて特化した特化値索引を用いて問合せを実行する。
【０１４２】
なお、上記例では、ＴＩＤ１０についてＩＤ６とＩＤ３の２つの索引をサーチする必要があるが、「数値→英数字」のようにデータタイプレベルの値の特徴の変化に伴う索引追加の場合には、問合せデータ中の検索条件で利用されている値のデータタイプでもって、サーチする索引を絞り込むことができる場合がある。例えば、検索条件に数値が利用されているならば、数値に該当する索引だけをサーチすればよい。
【０１４３】
本実施形態によれば、以下の各点のような効果を得ることができる。
【０１４４】
まず、１点目として、タグや属性の値に特化した索引が存在する場合、その特化した索引を用いることで、汎用的な索引を用いるより高速に条件を満たす構造要素を特定できる点である。
【０１４５】
次に、２点目として、末端要素の名前が「名前」のように同じパスの値について、共通の特徴をもったパスをまとめて索引管理することで、まとめない場合と比べ、索引アクセス数が減少する点である。その結果、高速な検索処理を実現することができる。例えば、上記した例の場合、まとめない場合にはＴＩＤ１０、ＴＩＤ１４、ＴＩＤ１７の各辞書にアクセスする必要があるが、まとめると１つの辞書にアクセスすればよい。
【０１４６】
さらに、３点目として、索引タイプＡから索引タイプＢへ、もしくは索引タイプＣから索引タイプＢへ、という方向で索引を追加することで、一度特化値索引を作成した後、値の特徴が変化したとしても、特化値索引を作り直すことなく、これまで存在していた特化値索引を利用することが可能な点である。
【０１４７】
なお、以上の各機能は、ソフトウェアとして記述し適当な機構をもったコンピュータに処理させても実現可能である。  
また、本実施形態は、コンピュータに所定の手順を実行させるための、あるいはコンピュータを所定の手段として機能させるための、あるいはコンピュータに所定の機能を実現させるためのプログラムとして実施することもできる。加えて該プログラムを記録したコンピュータ読取り可能な記録媒体として実施することもできる。
【０１４８】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【０１４９】
【図１】本発明の一実施形態に係る構造化文書管理システムの（一部分の）構成例を示す図。
【図２】同構造化文書管理システムの他の検索処理手段の（他の部分の）構成例を示す図。
【図３】XMLで記述された構造化文書の一例を示す図。
【図４】構造情報の一例を示す図。
【図５】特化値索引の一例を示す図。
【図６】特化値索引の他の例を示す図。
【図７】特化値索引のさらに他の例を示す図。
【図８】値の種類と重複数に基づく分類の例を示す図。
【図９】データタイプに関する分類の例を示す図。
【図１０】データタイプ情報とテンポラリ辞書を作成する処理の手順の一例を示すフローチャート。
【図１１】索引タイプ割り当ての処理の手順の一例を示すフローチャート。
【図１２】データタイプ情報の一例を示す図。
【図１３】テンポラリ辞書の一例を示す図。
【図１４】索引タイプ分類基準の一例を示す図。
【図１５】索引タイプ分類基準の他の例を示す図。
【図１６】特化値索引生成候補一覧画面の一例を示す図。
【図１７】マージされた特化値索引の一例を示す図。
【図１８】索引マージ処理の手順の一例を示すフローチャート。
【図１９】パスの末端要素の名前が「名前」である構造要素について索引マージ処理で使うテンポラリ辞書の一例を示す図。
【図２０】パスの末端要素の名前が「名前」である構造要素について索引マージ処理で使うマージ判定用情報の一例を示す図。
【図２１】図２０のマージ判定用情報の具体例に対する割合算出結果の一例を示す図。
【図２２】索引追加処理の手順の一例を示すフローチャート。
【図２３】値索引設定情報の一例を示す図。
【図２４】特化値索引管理情報の一例を示す図。
【図２５】索引追加後の値索引設定情報の一例を示す図。
【図２６】索引追加後の特化値索引管理情報の一例を示す図。
【図２７】索引サーチ処理の手順の一例を示すフローチャート。
【図２８】問合せデータの一例を示す図。
【符号の説明】
【０１５０】
１…格納処理部、１１…構造抽出部、１２…文書格納部、１２１…索引追加部、２…構造化文書データベース、２１…構造情報記憶部、２２…構造化文書記憶部、２３…値索引設定記憶部、２４…値索引記憶部、２４１…特化値索引記憶部、２４２…汎用値索引記憶部、３…値索引生成処理部、３１…索引タイプ抽出部、３１１…索引マージ部、３２…値索引設定部、４…検索処理部、４１…問合せ構文解析部、４２…問合せ構造抽出部、４３…問合せ実行部。
【図１】
2006018584.tif 000003
【図２】
2006018584.tif 000004
【図３】
2006018584.tif 000005
【図４】
2006018584.tif 000006
【図５】
2006018584.tif 000007
【図６】
2006018584.tif 000008
【図７】
2006018584.tif 000009
【図８】
2006018584.tif 000010
【図９】
2006018584.tif 000011
【図１０】
2006018584.tif 000012
【図１１】
2006018584.tif 000013
【図１２】
2006018584.tif 000014
【図１３】
2006018584.tif 000015
【図１４】
2006018584.tif 000016
【図１５】
2006018584.tif 000017
【図１６】
2006018584.tif 000018
【図１７】
2006018584.tif 000019
【図１８】
2006018584.tif 000020
【図１９】
2006018584.tif 000021
【図２０】
2006018584.tif 000022
【図２１】
2006018584.tif 000023
【図２２】
2006018584.tif 000024
【図２３】
2006018584.tif 000025
【図２４】
2006018584.tif 000026
【図２５】
2006018584.tif 000027
【図２６】
2006018584.tif 000028
【図２７】
2006018584.tif 000029
【図２８】
2006018584.tif 000030