(57)【要約】【課題】  複数の項目を持つ大量の構造化データ群に対し、複数の検索条件を指定した検索を安定的に高速化する。【解決手段】  本発明は、構造化データの（検索条件とされ得る）各項目に対し、インデクスを構築すると同時に、各項目において頻出する値をその項目名とペアで１つの要素として集合インデクスを構築する。検索時に複数の検索条件を指定された場合に、各検索条件に合致する推定数から、各項目毎の値インデクス群を用いて処理を行うか、集合インデクスを用いて処理を行うか、適切な処理手順を選択することで、安定的に高速に検索を行う。【選択図】  図１
2010267080.tif 000002
【特許請求の範囲】
【請求項１】
複数の項目を持つ大量の構造化データ群に対して、蓄積・検索する情報処理システムにおけるインデクス構築方法であって、
入力された構造化データを抽出し、フィールド記憶手段から該構造化データのフィールド名に対応するフィールドＩＤを取得し、
値インデクス記憶手段の前記フィールドＩＤに対応するデータ構造に前記構造化データの値を登録する第１のインデクス作成ステップと、
前記フィールド記憶手段からフィールド名及びフィールドＩＤを取得し、該フィールドＩＤに基づいて前記値インデクス記憶手段から値を取得し、
取得した前記値から統計情報を算出し、該統計情報のうち集合インデクスの対象とする閾値を超えているフィールド名と値の組であるペアを抽出し、統計情報記憶手段に格納し、
前記統計情報記憶手段から集合インデクスの対象とする前記ペアを取得し、該ペアに基づいて前記値インデクス記憶手段から該ペアが出現するデータＩＤ群を取得し、
前記データＩＤ群のデータＩＤ毎のペアに対し、数値を割り当てて集合インデクス記憶手段に格納する第２のインデクス作成ステップと、
を行うことを特徴とするインデクス構築方法。
【請求項２】
前記第２のインデクス作成ステップにおいて、
前記数値として、順序性のある数値、または、ハッシュ値を用いる
請求項１記載のインデクス構築方法。
【請求項３】
複数の項目を持つ大量の構造化データ群に対して、蓄積・検索する情報処理システムにおける情報検索方法であって、
入力された構造化データを抽出し、フィールド記憶手段から該構造化データのフィールド名に対応するフィールドＩＤを取得し、
値インデクス記憶手段の前記フィールドＩＤに対応するデータ構造に前記構造化データの値を登録し、
前記フィールド記憶手段からフィールド名及びフィールドＩＤを取得し、該フィールドＩＤに基づいて前記値インデクス記憶手段から値を取得し、
取得した前記値から統計情報を算出し、該統計情報のうち集合インデクスの対象とする閾値を超えているフィールド名と値の組であるペアを抽出し、統計情報記憶手段に格納し、
前記統計情報記憶手段から集合インデクスの対象とする前記ペアを取得し、該ペアに基づいて前記値インデクス記憶手段から該ペアが出現するデータＩＤ群を取得し、
前記データＩＤ群のデータＩＤ毎のペアに対し、順序性のある数値、または、ハッシュ値を割り当てて集合インデクス記憶手段に格納しておき、
複数の検索条件が入力された場合に、各検索条件に合致する推定数を取得し、
前記推定数に基づいて、前記値インデクス記憶手段に格納されている各項目毎の値のインデクス群、または、前記集合インデクス記憶手段に格納されている集合インデクスのいずれかを用いて検索する
ことを特徴とする情報検索方法。
【請求項４】
複数の項目を持つ大量の構造化データ群に対して、蓄積・検索する情報処理システムにおけるインデクス構築装置であって、
構造化データに出現する全てのフィールドのフィールド名及びフィールドＩＤを格納したフィールド記憶手段と、
前記フィールドＩＤに対応するデータ構造に前記構造化データの値を保持する値インデクス記憶手段と、
フィールド毎に統計情報を格納する統計情報記憶手段と、
全てのフィールドに頻出する値を格納する集合インデクス記憶手段と、
入力された構造化データを抽出し、前記フィールド記憶手段から該構造化データのフィールド名に対応するフィールドＩＤを取得する手段と、
前記値インデクス記憶手段の前記フィールドＩＤに対応するデータ構造に前記構造化データの値を登録する手段と、
前記フィールド記憶手段からフィールド名及びフィールドＩＤを取得し、該フィールドＩＤに基づいて前記値インデクス記憶手段から値を取得する手段と、
取得した前記値から統計情報を算出し、該統計情報のうち集合インデクスの対象とする閾値を超えているフィールド名と値の組であるペアを抽出し、統計情報記憶手段に格納する手段と、
前記統計情報記憶手段から集合インデクスの対象とする前記ペアを取得し、該ペアに基づいて前記値インデクス記憶手段から該ペアが出現するデータＩＤ群を取得する手段と、
前記データＩＤ群のデータＩＤ毎のペアに対し、数値を割り当てて集合インデクス記憶手段に格納する手段と、
を有することを特徴とするインデクス構築装置。
【請求項５】
前記データＩＤ群のデータＩＤ毎のペアに対して割り当てる前記数値として、順序性のある数値、または、ハッシュ値を用いる
請求項４記載のインデクス構築装置。
【請求項６】
複数の項目を持つ大量の構造化データ群に対して、蓄積・検索する情報処理システムにおける情報検索装置であって、
構造化データに出現する全てのフィールドのフィールド名及びフィールドＩＤを格納したフィールド記憶手段と、
前記フィールドＩＤに対応するデータ構造に前記構造化データの値を保持する値インデクス記憶手段と、
フィールド毎に統計情報を格納する統計情報記憶手段と、
全てのフィールドに頻出する値を格納する集合インデクス記憶手段と、
入力された構造化データを抽出し、前記フィールド記憶手段から該構造化データのフィールド名に対応するフィールドＩＤを取得する手段と、
前記値インデクス記憶手段の前記フィールドＩＤに対応するデータ構造に前記構造化データの値を登録する手段と、
前記フィールド記憶手段からフィールド名及びフィールドＩＤを取得し、該フィールドＩＤに基づいて前記値インデクス記憶手段から値を取得する手段と、
取得した前記値から統計情報を算出し、該統計情報のうち集合インデクスの対象とする閾値を超えているフィールド名と値の組であるペアを抽出し、統計情報記憶手段に格納する手段と、
前記統計情報記憶手段から集合インデクスの対象とする前記ペアを取得し、該ペアに基づいて前記値インデクス記憶手段から該ペアが出現するデータＩＤ群を取得する手段と、
前記データＩＤ群のデータＩＤ毎のペアに対し、数値を割り当てて集合インデクス記憶手段に格納する手段と、
複数の検索条件が入力された場合に、各検索条件に合致する推定数を取得する手段と、
前記推定数に基づいて、前記値インデクス記憶手段に格納されている各項目毎の値のインデクス群または、前記集合インデクス記憶手段に格納されている集合インデクスのいずれかを用いて検索する手段と、
を有することを特徴とする情報検索装置。
【請求項７】
請求項４または５記載のインデクス構築装置を構成する各手段としてコンピュータを機能させるためのインデクス構築プログラム。
【請求項８】
請求項６記載の情報検索装置を構成する各手段としてコンピュータを機能させるための情報検索プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インデクス構築方法及び装置及び情報検索方法及び装置及びプログラムに係り、特に、複数の項目を持つ構造化データを蓄積・検索するデータベース及びインデクスの分野で、複数の条件を持つ検索を高速に行うためのインデクス構築方法及び装置及び情報検索方法及び装置及びプログラムに関する。
【背景技術】
【０００２】
一般的な関係データベース（ＲＤＢ：Relational Data Base）技術において、特に大規模なデータに対し、検索処理を高速化するための代表的な技術として、インデクスと実行プランの最適化がある。
【０００３】
「インデクス」とは、値に合致したデータを素早く取り出すための索引であり、いくつかのデータ構造が存在する。代表的なデータ構造として、Ｂ＋Treeがあり、数値、日付、文字列、等の多くのデータ型に対応でき、広く利用されている。
【０００４】
また、複雑なデータ型には、それ専用のデータ構造が提案されており、その一つに集合を対象としたものがある。例えば、RD-Treeは、集合向けのインデクスである（例えば、非特許文献１参照）。RD-Treeは、図１０に示すような木構造のインデクスで、子ノード群のＵＮＩＯＮ集合を親ノードで保持するように構築する。検索時は、ルートから検索条件である集合を部分集合としてもつノードを順次辿っていく。この例では、集合の要素が数値となっているが、文字列であってもハッシュ値など有限範囲の数値に置き換えることで、適用可能である。
【０００５】
「実行プラン」とは、例えば、複数の検索条件が指定されている場合、どちらの検索条件から検索処理を実行すればよいかといった処理順序の計画である。この計画が適切でない場合、最適な手順と比較して１桁以上低速になってしまう場合が多く、特に大量のデータの場合は致命的である。
【０００６】
実行プランを最適化する手法として、ルールベースの手法とコストベースの手法が存在する。ルールベースの手法は予め決められたルールで検索処理の実行プランを構築する方法で、コストベースの手法は蓄積したデータに対し予め取得した統計情報を用いることである。一般には、コストベース手法の方が、最適な実行プランを構築する確率が高いといえる。
【０００７】
コストベースの手法の例を示す。例えば、図１１の左に示すような日付の値群があった場合、最も基本的な統計情報として、
・全体数
・値の種類（カーディナリティ）
・頻出する値と出現数（コモン値）
を事前に取得しておく。コモン値について補足すると、事前に定めた閾値を超えて出現する値であり、「全体数の１％以上」といった相対数で定めることも多い。
【０００８】
そして検索時には、検索条件毎に合致する割合・数を推定する。例えば、「"2008.01.31"に一致する」という検索条件であれば、コモン値に含まれているため、５００件に合致することがわかるし、"2008.02.01"に一致する、という検索条件であれば、コモン値には含まれていないため、残りの値群に平均的に存在しているという仮定から、コモン値でないものの総数をカーディナリティで割り、
【０００９】
【数１】
2010267080.tif 000003
が合致すると推定する。
【００１０】
検索条件が複数ある場合、推定数が小さいものから処理していくよう実行プランを構築すると、高速な検索が実現できる可能性が高い。
【００１１】
複数の項目を持つような構造化データ群に対しては、検索においても複数の検索条件を指定した検索が要求されるケースがある。例えば、図１２に示すようなレストランの情報があるとする（ＸＭＬ形式での構造化データ例である）。このようなデータに対し、以下のような検索要求が考えられる。
【００１２】
検索例Ａ：「グループの懇親会を行うために新宿の焼鳥屋を探したい」という要求があった場合、検索条件としては、
【００１３】
【表１】
2010267080.tif 000004
といった指定がなされることが考えられる。
【００１４】
検索例Ｂ：「恋人と珍しい外国料理を新宿で食べたい」という要求があった場合、検索条件としては、
【００１５】
【表２】
2010267080.tif 000005
といった指定がなされるかもしれない。
【００１６】
このようなデータが大量に存在した場合、このような複数の検索条件を持つ検索を高速に処理する手法としては、一般的に以下の方法が考えられる。
【００１７】
（１）検索条件となりうる各項目毎にインデクス（Ｂ＋Tree等）の構築と、統計情報を取得しておき、コストベースの手法により最適な実行プランを決定し、実行する。
【００１８】
（２）複数の項目の値をつなげて一つの値とし、それに対しインデクス（Ｂ＋Tree等）を作成しておき、検索要求時にも検索条件をつなげて検索する。
【００１９】
例えば、検索例Ａでは、
"／レストラン／ジャンル／小分類"、"／レストラン／場所／駅"、"／レストラン／サービス"、"／レストラン／雰囲気"
をこの順でつなげた値をインデクスしておく。図１２のデータの場合、
データ０００１："焼き鳥＿新宿＿飲み放題あり＿パーティ向け"
データ０００２："レバノン料理＿新宿＿デート向け"
という値がインデクスされる。このインデクスに対し、検索要求も
"焼き鳥＿新宿＿飲み放題あり＿パーティ向け"
というつなげた値で行われ、データ００１を含めた該当するデータ群を得る。
【００２０】
（３）データ毎に各項目を要素とした集合と解釈し、集合向けインデクスを作成し、利用する。例えば、
"／レストラン／ジャンル／小分類"
"／レストラン／場所／駅"
…
といった「項目名＋値」をハッシュ値に変換して格納することで適用する（但し、ハッシュ値を使用した場合、異なる値が同一のハッシュ値に重複する場合があるため、再チェックが必要である）。
【先行技術文献】
【非特許文献】
【００２１】
【非特許文献１】Hellerstein J. M., Pfeffer A.: "The RD-Tree: An Index Structure for Sets.," Technical Report #1252, University of Wisconsin at Madison, Oct. 1994.
【発明の概要】
【発明が解決しようとする課題】
【００２２】
しかしながら、上記の方法では、以下のような問題がある。
【００２３】
・前述の（１）の方法では、最終的な検索結果数が少なくなる場合でも、どの検索条件も単独では合致するデータ数が大きい場合、中間結果の増大により低速になってしまう。
【００２４】
・前述の（２）の方法では、高速な検索が実現できるが、検索結果の自由な組み合わせには対応できない。具体的には、例示したインデクスでは前述の検索例Ｂに対して、項目"レストラン／設備"が含まれていないため、完全には利用できない。
【００２５】
・前述の（３）の方法では、項目と値のバリエーションが多量になった場合、同一の数値に重複して割り当てられる確率が高くなり、インデクスからの結果に不適合のデータが多く含まれ、再チェックの処理増大により低速になってしまう。
【００２６】
本発明は、上記の点に鑑みなされたもので、複数の項目を持つ大量の構造化データ群に対し、複数の検索条件を指定した検索を安定的に高速化可能なインデクス構築方法及び装置及び情報検索方法及び装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００２７】
図１は、本発明の原理を説明するための図である。
【００２８】
本発明（請求項１）は、複数の項目を持つ大量の構造化データ群に対して、蓄積・検索する情報処理システムにおけるインデクス構築方法であって、
入力された構造化データを抽出し、フィールド記憶手段から該構造化データのフィールド名に対応するフィールドＩＤを取得し、
値インデクス記憶手段のフィールドＩＤに対応するデータ構造に構造化データの値を登録する第１のインデクス作成ステップ（ステップ１）と、
フィールド記憶手段からフィールド名及びフィールドＩＤを取得し、該フィールドＩＤに基づいて値インデクス記憶手段から値を取得し、
取得した値から統計情報を算出し、該統計情報のうち集合インデクスの対象とする閾値を超えているフィールド名と値の組であるペアを抽出し、統計情報記憶手段に格納し、
統計情報記憶手段から集合インデクスの対象とするペアを取得し、該ペアに基づいて値インデクス記憶手段から該ペアが出現するデータＩＤ群を取得し、
データＩＤ群のデータＩＤ毎のペアに対し、数値を割り当てて集合インデクス記憶手段に格納する第２のインデクス作成ステップ（ステップ２）と、を行う。
【００２９】
また、本発明（請求項２）は、第２のインデクス作成ステップにおいて、
数値として、順序性のある数値、または、ハッシュ値を用いる。
【００３０】
本発明（請求項３）は、複数の項目を持つ大量の構造化データ群に対して、蓄積・検索する情報処理システムにおける情報検索方法であって、
入力された構造化データを抽出し、フィールド記憶手段から該構造化データのフィールド名に対応するフィールドＩＤを取得し、
値インデクス記憶手段の前記フィールドＩＤに対応するデータ構造に構造化データの値を登録し、
フィールド記憶手段からフィールド名及びフィールドＩＤを取得し、該フィールドＩＤに基づいて前記値インデクス記憶手段から値を取得し、
取得した前記値から統計情報を算出し、該統計情報のうち集合インデクスの対象とする閾値を超えているフィールド名と値の組であるペアを抽出し、統計情報記憶手段に格納し、
統計情報記憶手段から集合インデクスの対象とする前記ペアを取得し、該ペアに基づいて値インデクス記憶手段から該ペアが出現するデータＩＤ群を取得し、
データＩＤ群のデータＩＤ毎のペアに対し、順序性のある数値、または、ハッシュ値を割り当てて集合インデクス記憶手段に格納しておき、
複数の検索条件が入力された場合に、各検索条件に合致する推定数を取得し（ステップ３）、
推定数に基づいて、値インデクス記憶手段に格納されている各項目毎の値のインデクス群または、集合インデクス記憶手段に格納されている集合インデクスのいずれかを用いて検索する（ステップ４）。
【００３１】
図２は、本発明の原理構成図である。
【００３２】
本発明（請求項４）は、複数の項目を持つ大量の構造化データ群に対して、蓄積・検索する情報処理システムにおけるインデクス構築装置５であって、
構造化データに出現する全てのフィールドのフィールド名及びフィールドＩＤを格納したフィールド記憶手段１と、
フィールドＩＤに対応するデータ構造に構造化データの値を保持する値インデクス記憶手段２と、
フィールド毎に統計情報を格納する統計情報記憶手段３と、
全てのフィールドに頻出する値を格納する集合インデクス記憶手段４と、
入力された構造化データを抽出し、フィールド記憶手段１から該構造化データのフィールド名に対応するフィールドＩＤを取得する手段と、
値インデクス記憶手段２のフィールドＩＤに対応するデータ構造に構造化データの値を登録する手段と、
フィールド記憶手段１からフィールド名及びフィールドＩＤを取得し、該フィールドＩＤに基づいて値インデクス記憶手２段から値を取得する手段と、
取得した値から統計情報を算出し、該統計情報のうち集合インデクスの対象とする閾値を超えているフィールド名と値の組であるペアを抽出し、統計情報記憶手段３に格納する手段と、
統計情報記憶手段３から集合インデクスの対象とするペアを取得し、該ペアに基づいて値インデクス記憶手段２から該ペアが出現するデータＩＤ群を取得する手段と、
データＩＤ群のデータＩＤ毎のペアに対し、数値を割り当てて集合インデクス記憶手段４に格納する手段と、を有する。
【００３３】
また、本発明（請求項５）は、データＩＤ群のデータＩＤ毎のペアに対して割り当てる数値として、順序性のある数値、または、ハッシュ値を用いる。
【００３４】
本発明（請求項６）は、複数の項目を持つ大量の構造化データ群に対して、蓄積・検索する情報処理システムにおける情報検索装置６であって、
構造化データに出現する全てのフィールドのフィールド名及びフィールドＩＤを格納したフィールド記憶手段１と、
フィールドＩＤに対応するデータ構造に構造化データの値を保持する値インデクス記憶手段２と、
フィールド毎に統計情報を格納する統計情報記憶手段３と、
全てのフィールドに頻出する値を格納する集合インデクス記憶手段４と、
入力された構造化データを抽出し、フィールド記憶手段１から該構造化データのフィールド名に対応するフィールドＩＤを取得する手段と、
値インデクス記憶手段２のフィールドＩＤに対応するデータ構造に構造化データの値を登録する手段と、
フィールド記憶手段１からフィールド名及びフィールドＩＤを取得し、該フィールドＩＤに基づいて値インデクス記憶手段２から値を取得する手段と、
取得した前記値から統計情報を算出し、該統計情報のうち集合インデクスの対象とする閾値を超えているフィールド名と値の組であるペアを抽出し、統計情報記憶手段３に格納する手段と、
統計情報記憶手段３から集合インデクスの対象とするペアを取得し、該ペアに基づいて値インデクス記憶手段２から該ペアが出現するデータＩＤ群を取得する手段と、
データＩＤ群のデータＩＤ毎のペアに対し、数値を割り当てて集合インデクス記憶手段４に格納する手段と、
複数の検索条件が入力された場合に、各検索条件に合致する推定数を取得する手段と、
推定数に基づいて、値インデクス記憶手段２に格納されている各項目毎の値のインデクス群または、集合インデクス記憶手段４に格納されている集合インデクスのいずれかを用いて検索する手段と、を有する。
【００３５】
本発明（請求項７）は、請求項４または５記載のインデクス構築装置を構成する各手段としてコンピュータを機能させるためのインデクス構築プログラムである。
【００３６】
本発明（請求項８）は、請求項６記載の情報検索装置を構成する各手段としてコンピュータを機能させるための情報検索プログラムである。
【発明の効果】
【００３７】
上記のように本発明によれば、インデクス構築時に全てのフィールドに対するインデクス（値インデクス）と頻度が高いものに限定したインデクス（集合インデクス）を作成しておき、ユーザから入力された検索条件で複数の項目が指定されたとき、所定の閾値より高い頻度の場合は、集合インデクスを利用して検索し、１つでも低い頻度がある場合は、値インデクスを利用して検索することにより、複数の項目を持つ大量の構造化データ群に対し、複数の検索条件を指定した検索を安定的に高速化できる。
【図面の簡単な説明】
【００３８】
【図１】本発明の原理を説明するための図である。
【図２】本発明の原理構成図である。
【図３】本発明の一実施の形態における情報処理装置の構成図である。
【図４】本発明の一実施の形態におけるフィールド管理・記録部と値インデクス部のデータの格納例である。
【図５】本発明の一実施の形態におけるインデクス構築部のフィールド情報及び値インデクス作成のフローチャートである。
【図６】本発明の一実施の形態における統計情報の取得と集合インデクス作成のフローチャートである。
【図７】本発明の一実施の形態におけるインデクス構築部が取得した統計情報の例である。
【図８】本発明の一実施の形態における頻出ペアの例である。
【図９】本発明の一実施の形態における検索部の検索フローチャートである。
【図１０】RD-Treeインデクスの例である。
【図１１】統計情報の例である。
【図１２】データ例（ＸＭＬ形式）である。
【発明を実施するための形態】
【００３９】
以下、図面と共に本発明の実施の形態を説明する。
【００４０】
以下では、Ｂ＋Tree及びRD-Treeの手法をベースにした例を説明する。
【００４１】
図３は、本発明の一実施の形態における情報処理装置の構成を示す。
【００４２】
同図に示す情報処理装置は、フィールド管理・記憶部１、値インデクス部２、統計情報管理部３、集合インデクス部４、インデクス構築部５、検索部６から構成される。
【００４３】
同図に示すフィールド管理・記憶部１、値インデクス部２、統計情報管理部３、集合インデクス部４は、主に記憶手段として機能する。
【００４４】
フィールド管理・記憶部１は、構造化データに出現する全ての項目（フィールド）を内部の記憶手段で格納・管理する機能を有し、各項目とそれに対応する値インデクスの関係の保持も含まれる。フィールド管理・記憶部１のデータの格納例を図４（Ａ）に示す。同図では、図１２に示すデータの格納例である。
【００４５】
値インデクス部２は、フィールド毎に値に対するＢ＋Treeを構築し、内部の記憶手段で管理する。図１２を代表するデータ群の例を図４（Ｂ）に示す。フィールドＩＤによりフィールド情報と関係付けて格納する。
【００４６】
統計情報管理部３は、フィールド毎に統計情報（全体数、値の種類（カーディナリティ）、頻出する値と出現数（コモン値））を取得し、内部の記憶手段で格納・管理する。また、集合インデクスの対象となるフィールドＩＤと値（頻出ペア）も格納・管理する。
【００４７】
集合インデクス部４は、全てのフィールドを対象に、統計情報管理部３の頻出ペアを利用して特定した、頻出する値のみに限定したRD-Treeを構築し、内部の記憶手段で管理する。
【００４８】
インデクス構築部５は、前述のフィールド管理・記憶部１、値インデクス部２、統計情報管理部３、集合インデクス部４を利用し、検索の事前準備を行う。事前準備として、入力された構造化データを字句解析し、項目名とその値のペアを全て取り出し、フィールド管理・記憶部１、値インデクス部２に格納する。その後で統計情報を取得し、統計情報管理部３に格納すると共に、出現数が閾値を超えている値も同時に格納する。更に閾値を超えた値については、項目名と組み合わせて集合インデクス部４に格納する。
【００４９】
まず、フィールド情報及び値インデクスの作成を行う。当該処理のフローチャートを図５に示す。
【００５０】
ステップ１０１）  インデクス構築部５は、入力されたデータ群から構造化データを取得し、字句解析する。
【００５１】
ステップ１０２）  フィールド名をフィールド管理・記憶部１に渡す。
【００５２】
ステップ１０３）  フィールド管理・記憶部１は、フィールド名が存在するか否かを判断し、存在する場合はステップ１０５に移行し、存在しない場合はステップ１０４に移行する。
【００５３】
ステップ１０４）  フィールド管理・記憶部１は、内部の記憶手段に新しいフィールドＩＤを付与し、フィールド名を追加格納する。
【００５４】
ステップ１０５）  フィールド管理・記憶部１は、フィールドＩＤをインデクス構築部５に返却する。
【００５５】
ステップ１０６）  インデクス構築部５は、フィールドＩＤと値を値インデクス部２に渡す。
【００５６】
ステップ１０７）  値インデクス部２は、内部の記憶手段のフィールドＩＤに対応するB＋Treeへ値を登録する。
【００５７】
ステップ１０８）  全フィールドについて上記のステップ１０２〜１０７を繰り返し、全フィールドについて処理が終了した場合はステップ１０９に移行する。
【００５８】
ステップ１０９）  全構造化データについて上記のステップ１０１〜１０８を繰り返し、全データについての処理が終了した場合は、当該処理を終了する。
【００５９】
次に、上記の図５に示す処理が終了したら、統計情報の取得と、集合インデクスの作成を行う。
【００６０】
図６は、本発明の一実施の形態における統計情報の取得と、集合インデクスの作成のフローチャートである。
【００６１】
ステップ２０１）  インデクス構築部５は、フィールド管理部１からフィールド名とＩＤを取得する。
【００６２】
ステップ２０２）  インデクス構築部５は、フィールドＩＤを統計情報管理部３に渡す。
【００６３】
ステップ２０３）  統計情報管理部３は、値インデックス部２からB-Treeを読み込んで、統計情報（全体数、カーディナリティ、コモン値）を算出し、抽出する。同時に集合インデクスの対象とする閾値を越えている統計情報を内部の記憶手段に保持する。ここで、「集合インデクスの対象とする閾値を超えているもの」とは、例えば、値の出現する総数が一定数を超えているものや、全データ総数のＮ％以上出現するもの、といった取り決めが考えられる。
【００６４】
ステップ２０４）  統計情報管理部３は、統計情報を内部の記憶手段に保持する。
【００６５】
ステップ２０５）  上記のステップ２０１〜２０４の処理を全フィールドについて繰り返す。
【００６６】
ステップ２０６）  インデクス構築部５は、統計情報管理部３から集合インデクスの対象とするペア（フィールド名＋値）群を取得し、メモリ（図示せず）に格納する。
【００６７】
ステップ２０７）  インデクス構築部５は、値インデクス部２から各ペアが出現するデータＩＤ群を取得し、メモリ（図示せず）に格納する。
【００６８】
ステップ２０８）  インデクス構築部５は、データＩＤ毎に、ペアをまとめ、集合インデクス部４に渡す。
【００６９】
ステップ２０９）  集合インデクス部４は、各ペアに対し、数値（ハッシュ値等）を割り当てる。
【００７０】
ステップ２１０）  集合インデクス部４は、データＩＤ毎に、各ペアに割り当てた数値を要素とした集合を作成し、内部の記憶手段のRD−Treeに登録する。
【００７１】
上記の図６のステップ２０６〜２１１の処理に関する具体例を示す。
【００７２】
例えば、インデクス構築部５が統計情報管理部３から取得し、内部のメモリ（図示せず）に格納した統計情報の例を図７に示す。頻出ペア（ステップ２０３で得られた「集合インデクスの対象とする閾値を超えているもの」のフィールド名＋値）と割り当てられた数値が図８であった場合、データ毎に纏められたペアは以下となる。なお、ペアのフィールド名はフィールドＩＤでもよい。また、頻出ペアに割り当てられた数値はハッシュ値とするのが一般的であるが、説明をわかりやすくするため、順序性のある数値を割り当てている。
【００７３】
【表３】
2010267080.tif 000006
【００７４】
【表４】
2010267080.tif 000007
したがって、集合
データ００１：｛１，１３，２１，３１，４１，４２，６１，７２｝
データ００２：｛２，２１，３１，４２，５１，７１｝
が集合インデクス部４のRD-Treeに登録される。
【００７５】
検索部６は、検索要求（検索クエリ）をユーザの端末から受け付け、必要に応じて各モジュールを利用して検索を実行する。
【００７６】
検索部６の処理を図９に示す。
【００７７】
ステップ３０１）  検索部６は、入力された検索クエリを字句解析し、検索条件を抽出する。
【００７８】
ステップ３０２）  統計情報管理部３から、各検索条件に対する推定数を取得する。当該推定数の取得方法は、従来の技術で述べた式（１）の手法を用いるものとする。
【００７９】
ステップ３０３）  推定数が閾値以下のであるかを判定し、閾値以下である場合はステップ３０４に移行し、閾値よりも大きい場合はステップ３０６に移行する。
【００８０】
ステップ３０４）各検索条件に対する処理の実行プランを作る。
【００８１】
ステップ３０５）  実行プランに従って、値インデクス部２を利用して処理を実行し、当該検索処理を終了する。
【００８２】
ステップ３０６）  ステップ３０３において、推定数が閾値以下のものがなかった場合は、集合インデクス部４へ検索条件群を渡す。
【００８３】
ステップ３０７）  集合インデクス部４が各検索条件を対応する数値に変換した集合を作成する。
【００８４】
ステップ３０８）  集合インデクス部４が、集合をキーにRD-Treeを探索し、該当するデータ群を取得する。
【００８５】
ステップ３０９）  該当したデータ群に対し、検索条件を満たしているか再チェックする。
【００８６】
上記の図９の処理の具体例として、従来の技術の項で示した図１２のデータを用いた検索例を示す。
【００８７】
・検索例Ａ
【００８８】
【表５】
2010267080.tif 000008
・検索例Ｂ
【００８９】
【表６】
2010267080.tif 000009
検索例Ａは全て頻出ペアのため、検索条件を数値集合に変換し、
｛１３，３１，６１，７２｝
をキーに集合インデクス部４のRD-Treeを探索し、検索結果を取得し、再チェックを行う。
【００９０】
一方、検索例Ｂは、「"／レストラン／ジャンル／小分類"＝"レバノン料理"」が頻出ペアではないため、値インデクスを利用した実行プランを立てる。例えば、以下のような実行プランが立てられる。
【００９１】
（１）フィールド管理・記憶部１のフィールド"／レストラン／ジャンル／小分類"に対応する値インデクス部２のB+Treeを探索し、"レバノン料理"と一致するデータＩＤ群を取得する。
【００９２】
（２）この時点で８３．３３件に候補が絞り込まれているため、該当するデータ群を走査して、他の検索条件に合致しているデータを特定する。
【００９３】
上記のように、インデクス構築部５により、図４に示す全てのフィールドに対するインデクスを値インデクス部２に、集合インデクス部４の頻度が高いものに限定したインデクスを集合インデクス部４に作成しておき、検索条件で複数の項目が指定された場合に、全てが高い頻度の場合は、集合インデクス部４の高頻度インデクスを利用して検索し、１つでも低い頻度がある場合は、従来の技術と同様に、値インデクス部２の通常のインデクスを利用し、実行プランを立てて検索する。
【００９４】
なお、図３に示す情報処理装置のインデクス構築部５と検索部６の動作をプログラムとして構築し、情報処理装置として利用されるコンピュータにインストールして実行させる、または、ネットワークを介して流通させることが可能である。
【００９５】
また、構築されたプログラムをハードディスクや、フレキシブルディスク・ＣＤ−ＲＯＭ等の可搬記憶媒体に格納し、コンピュータにインストールする、または、配布することが可能である。
【００９６】
なお、本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において種々変更・応用が可能である。
【産業上の利用可能性】
【００９７】
本発明は、データベース検索に適用可能である。
【符号の説明】
【００９８】
１  フィールド記憶手段、フィールド管理部
２  値インデクス記憶手段、値インデクス部
３  統計情報記憶手段、統計情報管理部
４  集合インデクス記憶手段、集合インデクス部
５  インデクス構築手段、インデクス構築部
６  検索手段、検索部
【図１】
2010267080.tif 000010
【図２】
2010267080.tif 000011
【図３】
2010267080.tif 000012
【図４】
2010267080.tif 000013
【図５】
2010267080.tif 000014
【図６】
2010267080.tif 000015
【図７】
2010267080.tif 000016
【図８】
2010267080.tif 000017
【図９】
2010267080.tif 000018
【図１０】
2010267080.tif 000019
【図１１】
2010267080.tif 000020
【図１２】
2010267080.tif 000021