(57)【特許請求の範囲】
【請求項１】
データ群に対して作成された検索インデクスのインデクス作成範囲を示す情報を含むインデクス定義を格納する記憶部と、
前記データ群に対する検索要求に含まれる検索対象範囲と、前記インデクス定義とから前記検索対象範囲と前記インデクス作成範囲との間における、少なくとも一部の包含関係を検出し、
前記包含関係の検出により、前記検索要求に対して、前記検索インデクスを用いたインデクス検索を実行し、
その後、前記検索要求に対して、前記インデクス検索で検索要求の成否が確定したデータを除く文書データについて、前記検索対象範囲に実データ検索を実行し、
前記検索要求に対する検索結果を出力する制御部と、
を有する計算機。
【請求項２】
請求項１に記載の計算機であって、
前記制御部が、
前記検索対象範囲が前記インデクス作成範囲より大である包含関係の検出により、前記前記検索インデクスを用いたインデクス検索を実行し、
その後、前記検索要求に対して、前記インデクス検索で検索要求の成立が確定したデータを除く文書データについて、前記インデクス作成範囲が除かれた前記検索対象範囲に実データ検索を実行する計算機。
【請求項３】
請求項１に記載の計算機であって、
前記制御部が、
前記検索対象範囲が前記インデクス作成範囲より小である包含関係の検出により、前記前記検索インデクスを用いたインデクス検索を実行し、
その後、前記検索要求に対して、前記インデクス検索で検索要求の不成立が確定したデータを除く文書データについて、前記検索対象範囲に実データ検索を実行する計算機。
【請求項４】
請求項１に記載の計算機であって、
前記制御部が、
前記検索対象範囲が前記インデクス作成範囲に含まれる割合と、前記インデクス作成範囲が前記検索対象範囲に含まれる割合とを算出することで、前記包含関係を検出する計算機。
【請求項５】
請求項４に記載の計算機であって、
前記制御部が、
前記検索対象範囲が前記インデクス作成範囲に含まれる割合が１００％である検索インデクスのうちで、前記インデクス作成範囲が前記検索対象範囲に含まれる割合が、最も高い検索インデクスを用いて前記インデクス検索を実行する計算機。
【請求項６】
請求項４に記載の計算機であって、
前記制御部が、
前記インデクス作成範囲が前記検索対象範囲に含まれる割合が１００％である検索インデクスのうちで、前記検索対象範囲が前記インデクス作成範囲に含まれる割合が最も高い検索インデクスを用いて前記インデクス検索を実行する計算機。
【請求項７】
請求項４に記載の計算機であって、
前記制御部は、
前記インデクス作成範囲が前記検索対象範囲に含まれる割合及び前記検索対象範囲が前記インデクス作成範囲に含まれる割合がいずれも１００％でなく且つ前記検索対象範囲が前記インデクス作成範囲に含まれる割合が０％でないとき、前記検索対象範囲が前記インデクス作成範囲に含まれる割合が最も高い検索インデクスについて、該割合が１００％になるように前記検索対象範囲に含まれないインデクス作成範囲の検索インデクスを生成し、前記インデクス検索を実行する計算機。
【請求項８】
請求項１に記載の計算機であって、
前記制御部が、前記包含関係を検出しないとき、前記検索要求に対して、前記検索対象範囲に実データ検索を実行する計算機。
【請求項９】
請求項１に記載の計算機であって、
前記制御部が、前記インデクス検索を実行する前に、該インデクス検索に用いる検索インデクスに対応するインデクス定義から、該検索インデクスのインデクス作成範囲の長さを取得し、よりインデクス作成範囲の長さが小である検索インデクスを用いたインデクス検索から順に実行する計算機。
【請求項１０】
請求項１に記載の計算機であって、
前記インデクス定義は、更に、前記検索インデクスの形式を示す情報を含み、
前記制御部が、前記インデクス検索を実行する前に、該インデクス検索に用いる検索インデクスに対応するインデクス定義から、該検索インデクスのインデクス形式を取得し、
前記検索要求に含まれる検索文字列が、キー検索インデクスの登録文字列に含まれる場合、該キー検索インデクス形式を有する検索インデクスを用いた前記インデクス検索を優先実行し、
前記キー検索インデクス形式の検索インデクスが無い或いは前記検索要求に含まれる検索文字列がキー検索インデクスの登録文字列に含まれないとき、フィルタリングインデクス形式の検索インデクスを用いた前記インデクス検索を優先実行し、
前記キー検索インデクス形式を有する検索インデクスを用いた前記インデクス検索或いはフィルタリングインデクス形式の検索インデクスを用いた前記インデクス検索を実行した後、
その後、文字列インデクス形式の検索インデクスを用いた前記インデクス検索を優先実行する計算機。
【請求項１１】
記憶装置から、データ群に対して作成された検索インデクスのインデクス作成範囲を示す情報を含むインデクス定義を読み出し、前記データ群に対する検索要求に含まれる検索対象範囲と、前記インデクス定義とから前記検索対象範囲と前記インデクス作成範囲との間における、少なくとも一部の包含関係を検出する手順と、
前記包含関係の検出により、前記検索要求に対して、前記検索インデクスを用いたインデクス検索を実行する手順と、
その後、前記検索要求に対して、前記インデクス検索で検索要求の成否が確定したデータを除く文書データについて、前記検索対象範囲に実データ検索を実行する手順と、
前記検索要求に対する検索結果を出力する手順と、
をコンピュータに実行させるプログラムを格納するコンピュータ読み取り可能な非一時的な記録媒体。
【請求項１２】
請求項１１に記載の記録媒体であって、
前記プログラムが、
前記検索対象範囲が前記インデクス作成範囲より大である包含関係の検出することにより、前記前記検索インデクスを用いたインデクス検索を実行する手順と、
その後、前記検索要求に対して、前記インデクス検索で検索要求の成立が確定したデータを除く文書データについて、前記インデクス作成範囲が除かれた前記検索対象範囲に実データ検索を実行する手順と、を実行させるプログラムである記録媒体。
【請求項１３】
請求項１１に記載の記録媒体であって、
前記プログラムが、
前記検索対象範囲が前記インデクス作成範囲より小である包含関係の検出することにより、前記前記検索インデクスを用いたインデクス検索を実行する手順と、
その後、前記検索要求に対して、前記インデクス検索で検索要求の不成立が確定したデータを除く文書データについて、前記検索対象範囲に実データ検索を実行する手順と、を実行させるプログラムである記録媒体。
【請求項１４】
データ検索方法であって、
計算機が、
記憶装置から、データ群に対して作成された検索インデクスのインデクス作成範囲を示す情報を含むインデクス定義を読み出し、
前記データ群に対する検索要求に含まれる検索対象範囲と、前記インデクス定義とから前記検索対象範囲と前記インデクス作成範囲との間における、少なくとも一部の包含関係を検出し、
前記包含関係の検出により、前記検索要求に対して、前記検索インデクスを用いたインデクス検索を実行し、
その後、前記検索要求に対して、前記インデクス検索で検索要求の成否が確定したデータを除く文書データについて、前記検索対象範囲に実データ検索を実行し、
前記検索要求に対する検索結果を出力するデータ検索方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機、記録媒体及びデータ検索方法に係り、特に、データ群から所望のデータを抽出する計算機、該処理を実行させるプログラムを格納する非一時的な記録媒体及びデータ検索方法に関する。
【背景技術】
【０００２】
ＨＤＤを始めとする記憶デバイスの汎用化や大容量化は、今まで破棄してきた大量データの保持を可能とするようになってきた。近年では、保持した大量データを分析に用い、ビジネスに利用・活用することも行われている。例えば、構造化されたログデータの分析、ログデータ中の非構造部分の分析並びにショートメッセージのようなテキストデータの分析など多様な分析が試行錯誤されている。【０００３】
同様に、記憶デバイスの汎用化や大容量化は、ＤＢインデクス容量の大幅な増加を許容する。ＤＢインデクスの増加は、多種多様な分析の対象となる大量データを適切且つ高速に処理するために、同一データに特性が異なる複数のインデクスを作成したり、複数の範囲にインデクスを作成したりすることの実現を可能とした。【０００４】
インデクス形式として、「文字列検索インデクス」や「Ｂ−ｔｒｅｅインデクス」を始めとして種々のインデクスが知られている。
「文字列検索インデクス」は、キーとなる部分文字列と、その部分文字列のデータにおける出現位置とを対応付けて格納する形式である。部分文字列は、単語、ｎ−ｇｒａｍ、又はサフィクスアレイ（接尾辞配列）といった文字列検索用の単位で、テキストから抽出される。テキストから単語を抽出するには、形態素解析などの手法がとられる。また、テキストからｎ−ｇｒａｍを抽出する方法として、例えば、特許文献２には、機械的にｎ文字の連続する文字列を抽出する技術が開示されている。また、例えば非特許文献２には、テキストからサフィクスアレイを抽出する技術が開示されている。【０００５】
「Ｂ−ｔｒｅｅインデクス」は、例えば、木構造のインデクスツリー（索引木）により検索を高速化するアルゴリズムである。例えば、非特許文献１には、上位ページの最上位のルートページから検索していき、最下位のリーフページで、検索対象データの出現データ情報を取得する技術が開示されている。【０００６】
このように、テキストデータを始め、データに複数のインデクスを作成するようになると、処理するインデクスや処理順序を選択する必要がある。即ち検索手順の最適化である。従来から、処理インデクスの選択技術としてＲＤＢＭＳの最適化技術が知られている。図２０に、ＲＤＢＭＳの処理例を示す。図２０は、従業員のＩＤ、氏名、入社年月日及び所属等を管理する従業員テーブル４００の例を示す。従業員テーブルに対し、社員番号カラム４０１、氏名カラム４０２といったカラム単位に夫々インデクス４５１、４５２・・・が作成される。検索時には、検索要求に含まれる検索条件５００によって、検索対象範囲として指定されたカラムと一致する範囲のインデクスが使用される。ここで、検索対象範囲として指定されたカラムと一致する範囲のインデクスが存在しなければ、そのカラムの実データが照合されるようになっている。【０００７】
例えば、検索条件が「入社年月日が２０００年３月３１日より前のＢＢＢ課所属」の社員データであるとすると、まず入社年月日カラム４０３のインデクス４５３を用いて、２０００年３月３１日より前の入社年月日データが検索される。そしてヒットした行を対象として、所属カラム４０４の実データを照合し、ＢＢＢ課である行を特定する。
また、要求が複数条件の組合せによる検索である場合、キー選択率や照合コストを指針として処理順序が決定される等の方式が用いられることもある。【０００８】
特許文献１には、最適化技術として「検索条件式に係わる複数のインデクスの読込コストをキー選択率に従って評価することで、それらのインデクスの中から最適なものを選択して、その選択したインデクスを使ってデータベースからレコードを読み込んで検索処理を実行するデータベース検索処理方式に関し、最適なインデクスを選択できるようにすることを目的とし、キー選択率の算出対象となるインデクスの管理するレコードの散らばりを示す稠密度を検出する検出手段と、検出手段の検出する稠密度を使ってキー選択率を補正する補正手段と、を備え、補正手段の補正するキー選択率に従って、レコードの読み込みに使用するインデクスを決定する」ことが開示されている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平７−３１１６９９号公報
【特許文献２】特開平１−０３５６２７号公報。
【００１０】
【特許文献３】特開平４−２７４５５７号公報
【非特許文献】
【００１１】
【非特許文献１】Transaction Processing： Concepts and Techniques（Jim Gray ,Andreas Reuter）（日本語著、トランザクション処理〈下〉―概念と技法 日経BP社（2001/10））15.4.1 B-trees：The Basic Idea
【非特許文献２】Manber, U. and Myers, G.： Suffix arrays： A new method for on-line string searches, in 1st ACM-SIAM, Symposium on Discrete Algorithms, pp. 319-327（1990）
【発明の概要】
【発明が解決しようとする課題】
【００１２】
ところで、テキストデータは明確なスキーマが無いため、様々な範囲をインデクス作成対象や検索対象として指定可能である。特に、大量データの分析では、分析手法は試行錯誤で行われることから、要求される処理をインデクス作成時に予測することは困難である。このため作成したインデクスが検索要求に対して最適なものにならない虞がある。従来の最適化方式では使用できるインデクスが無いケースも十分に有り、この場合には、実データの照合が必要となってしまう（所謂、全文検索。）。処理対象とするデータが増加すればするほど、実データを照合する処理の負荷は性能面に大きな影響を及ぼす。
【課題を解決するための手段】
【００１３】
上記課題を解決するために、例えば、請求の範囲に記載の構成を採用する。即ちデータ群に対して作成された検索インデクスのインデクス作成範囲を示す情報を含むインデクス定義を格納する記憶部と、前記データ群に対する検索要求に含まれる検索対象範囲と、前記インデクス定義とから前記検索対象範囲と前記インデクス作成範囲の何れか一方の少なくとも一部の包含関係を検出し、前記包含関係の検により、前記検索要求に対して、前記検索インデクスを用いたインデクス検索を実行し、その後、前記検索要求に対して、前記インデクス検索で検索要求の成否が確定したデータを除く文書データについて、前記検索対象範囲に実データ検索を実行し、前記検索要求に対する検索結果を出力する制御部と、を有する計算機である。
【発明の効果】
【００１４】
本発明の一側面によれば、文書データ検索によって処理する範囲が削減された効率的な検索処理を実現することができる
上述した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【００１５】
【図１Ａ】本発明を適用した一例である第１実施形態における計算機システムの原理を説明する概念図である。
【図１Ｂ】本発明を適用した一例である第１実施形態における計算機システムの原理を説明する概念図である。
【図１Ｃ】本発明を適用した一例である第１実施形態における計算機システムの原理を説明する概念図である。
【図２】第１実施形態における計算機システムの構成を示す模式図である。
【図３】第１実施形態における計算機のインデクス定義ファイルの一例を示す模式図である。
【図４Ａ】第１実施形態における「漏れ補完型」の検索プランの一例を示す模式図である。
【図４Ｂ】第１実施形態における「ノイズ除去型」の検索プランの一例を示す模式図である。
【図４Ｃ】第１実施形態における「文書データ照合型」の検索プランの一例を示す模式図である。
【図５】第１実施形態におけるデータ登録部の処理の流れを示すフロー図である。
【図６】第１実施形態におけるインデクス作成部の処理の流れを示すフロー図である。
【図７】第１実施形態におけるデータ検索部の処理の流れを示すフロー図である。
【図８】第１実施形態における検索プラン決定部の処理の流れを示すフロー図である。
【図９】第１実施形態における検索部実行部の処理の流れを示すフロー図である。
【図１０】第１実施形態におけるインデクス検索部の処理の流れを示すフロー図である。
【図１１】第１実施形態における文書データ照合部の処理の流れを示すフロー図である。
【図１２】本発明を適用した一例である第２実施形態における計算機システムの原理を説明する概念図である
【図１３】第２実施形態における計算機システムの構成を示す模式図である。
【図１４】第２実施形態における検索プラン決定部の処理の流れを示すフロー図である。
【図１５】第１実施形態における検索プラン最適化部の処理の流れを示すフロー図である。
【図１６】第３実施形態における計算機システムの構成を示す模式図である。
【図１７Ａ】第３実施形態における「フィルタリングインデクス」を利用した検索プランの一例を示す模式図である。
【図１７Ｂ】第３実施形態における「キーインデクス」を利用した検索プランの一例を示す模式図である。
【図１８】第３実施形態における検索プラン決定部の処理の流れを示すフロー図である。
【図１９】第３実施形態における複数インデクスプランニング部の処理の流れを示すフロー図である。
【図２０】従来のＲＤＢＭＳの処理の概要を示す模式図である。
【発明を実施するための形態】
【００１６】
以下、図面を用いて、本発明を実施するための形態について説明する。
〔第１実施形態〕
先ず、本実施形態の原理概要について、図１に示す模式図を用いて説明する。
本実施形態の計算機システム１００は、先ずインデクス作成範囲から検索処理を実行し、その結果を利用して検索対象範囲の検索処理を実行することを特徴の1つとする。また、図1Ａ及び図１Ｂに示すように、インデクス作成範囲と検索対象範囲の包含関係が異なる場合に、検索処理の手順が異なる点が特徴の１つである。
【００１７】
また、本実施形態において、インデクス作成範囲の中に検索対象範囲が含まれる割合をそのインデクスの検索対象範囲に対する適合率、検索対象範囲の中にインデクス作成範囲が含まれる割合をそのインデクスの検索対象範囲に対する再現率と定義するものとする。  なお、図１Ａ及び図１Ｂにおいて、実線の矩形は計算機システム１００が保持する全データ範囲、その内側の点線で示す楕円部分の内側は、クライアント等からの検索要求が要求するデータ検索範囲、更に内側の実線で示す楕円部分の内側はインデクスが貼られた範囲を示すものとする。
【００１８】
図１Ａは、検索要求の検索対象範囲がインデクス作成範囲よりも広いという包含関係にある場合の例である。この場合の処理手順は以下となる。なお、図中の矢印は、検索を行う範囲の順番を示す。
先ず、計算機は、インデクスを利用してインデクス作成範囲のデータを検索する（ステップＡ１）。この検索で条件に合致した文書データは正解文書と決まる。
次いで、計算機は、ステップＡ１で条件に合致しなかった文書データに対して、検索対象範囲を実データで検索する（ステップＡ２）。即ち検索対象範囲からインデクス作成範囲が除かれた文書データについて、実データ検索（文書データ検索）を行う。
最後に、計算機は、ステップＡ１とステップＡ２の検索処理において、検索条件に合致した文書データをマージして検索結果とする。
【００１９】
より具体的には、複数行からなるテキストデータの「先頭１行」にインデクスが作成されており、「先頭１段落」が検索対象として指定された場合が考えられる。まず「先頭１行」がインデクスで検索される。しかし、この結果には検索漏れが存在する場合もある。そのため条件に合致しなかった文書（インデクス検索で、条件に合致しなかった段落の文書データ）に対して、「先頭１段落」が実データで検索される。最後に、インデクス検索と実データ検索で合致した文書データがマージされ、検索結果となる。
【００２０】
これに対し、図１Ｂは、検索要求の検索対象範囲がインデクス作成範囲よりも狭いという包含関係にある場合の例である。この場合の処理手順は以下となる。
まず、計算機は、インデクスを利用して、インデクス作成範囲を検索する（ステップＢ１）。この検索処理によって条件に合致した文書データには、検索ノイズが存在することになる。
次いで、計算機は、ステップＢ１で条件に合致した文書データに対し、検索対象範囲を実データで検索する（ステップＢ２）。即ち検索対象範囲から検索インデクスの作成範囲が除かれた範囲に文書データ検索を実行する。
そして、計算機は、ステップＢ２で合致した文書を検索結果とする。
【００２１】
より具体的には、「先頭１段落」にインデクスが作成されており、「先頭１行」が検索対象として指定された場合が考えられる。まず「先頭１段落」をインデクスで検索する。しかしこの結果には検索ノイズが存在する。そのため合致した文書データに対して、「先頭１行」を実データで検索する。ここで合致した文書データを検索結果とするようになっている。
【００２２】
図１Ａ及び図１Ｂの包含関係は、上述の定義に照らすと、図１Ａは、インデクス検索で合致した文書データは全て正解文書となる適合率１００％のインデクスとなり、図１Ｂは、インデクス検索で全ての正解文書を含んだ再現率１００％のインデクスであると言える。即ち適合率１００％のインデクスとは、検索対象に対して検索ノイズの無いインデクスであり、再現率１００％のインデクスとは、検索対象に対して検索漏れの無いインデクスである。
【００２３】
また、検索対象範囲とインデクス作成範囲が一部重なる関係となる場合もある。
図１Ｃに、両者の一部が重なる場合の例を示す。この場合の処理は以下の手順となる。  先ず、計算機は、インデクス作成範囲のうち検索対処範囲に包含される範囲（検索対象範囲１）と、検索対処範囲のうち、インデクス作成範囲との重複部分を除いた範囲（検索対象範囲２）とに対象を分割し処理する(ステップＣ１)。
計算機は、包含関係を満たす範囲（検索対象範囲１／点線の内側）に対しては、上述の図１Ｂの処理を行い、それ以外の範囲（検索対象範囲２）に対しては、別のインデクスとの関係を調べ、再帰的に処理を繰り返す（ステップＣ２）。
【００２４】
計算機は、最終的にどのインデクスとも重ならない検索対象範囲が残った場合に、実データを検索する（ステップＣ３）。
【００２５】
この方法によれば、作成されているインデクスを最大限に利用して、実データを検索する範囲を削減することができる。
以上が、本実施形態の原理である。
【００２６】
以下に、本実施形態の詳細な説明をする。
図２に、第１実施形態における計算機システム１００の構成を模式的に示す。計算機システム１００は、１以上のクライアント７０と、検索サーバ１０と、外部記憶装置とが通信線８０（有線及び／又は無線のネットワーク網等を含む。）を介して通信可能に接続されてなる。
【００２７】
クライアント７０には、ＣＰＵ７１、主記憶７２、補助記憶７３及び入出力部７４を有する汎用のサーバ、ＰＣ又は通信端末を適用するものとする。ＣＰＵ７１とプログラムとの協働によって、主記憶部７５に検索要求機能を有するアプリケーションプログラム（ＡＰ）７５が実現され、検索サーバ１０に対して所定のデータ検索要求を送信し、その結果を受信するようになっている。
【００２８】
検索サーバ１０には、ＣＰＵ１１、主記憶１２、補助記憶１３及び種々の外部通信装置（不図示）を有する汎用のサーバマシンを適用するものとする。ＣＰＵ１１とプログラムとの協働によって、主記憶部１２にデータ検索実行部１５が実現され、クライアント７０からのデータ検索処理を実行する様になっている。詳細は後述する。
【００２９】
外部記憶装置５０には、ＨＤＤ、ＳＳＤ及び／又は磁気テープといった記憶デバイスを有するストレージマシンを適用するものとする。外部記憶装置５０には、データ検索に使用する補助情報であるインデクス定義ファイル６３、実データである文書データ６２及びインデクスデータ６１が格納されており、検索サーバ１０からのデータ取得要求に従い、所定のデータを応答するようになっている。インデクスデータ６１内の個々のインデクス１、２、３・・・は、インデクス定義ファイル６３の定義情報と１対１で対応付けられている。
【００３０】
図３に、インデクス定義ファイル６３の定義情報の例を模式的に示す。定義情報には、作成するインデクスの名称を示すインデクス名称６５（”ＣＲＥＡＴＥ ＩＮＤＥＸ”）、インデクス形式６６（”ＵＳＩＮＧ ＴＹＰＥ”）及びインデクス作成範囲６７（“ＯＮ”）が含まれる。本実施形態では、インデクス名称６５として、「ＩＮＤＥＸ１」、インデクス形式６６として「ＮＧＲＡＭ」、インデクス作成範囲６７として「先頭１行」が定義された例を示している。
また、インデクス形式６６としては、Ｂ−ｔｒｅｅや各種文字列検索インデクスの指定も可能である。
【００３１】
インデクス作成範囲６７は、例えば、登録データに付与されている属性情報、「先頭１行」又は「先頭１段落」といった構造範囲や、数値やアルファベットの連続する文字列といった文字種範囲や、正規表現に適合する文字列等である。図３では、「先頭１行」が定義されている例を示す。
【００３２】
図２に戻り、検索サーバ１０について詳細に説明する。
検索サーバ１０のデータ検索実行部１５には、更に,データ検索部２０及びデータ登録部３０が実現されると共に検索結果４１、インデクス検索結果４２、文書データ照合結果４３及びデータ検索プラン４４を格納する記憶領域が確保される。
【００３３】
データ登録部３０では、クライアント７０から送信された処理要求がデータの登録要求（更新要求）である場合に、データ登録及びインデクス生成処理が実行されるようになっている。より具体的には、登録要求に含まれる登録データに対応する識別子が生成され、インデクス作成部３１で、この識別子と登録データに基づいてインデクスが作成されるようになっている。インデクス作成の処理が完了すると、データ登録部３０では、登録データが文書データ６２にとして外部記憶装置５０に送信され、対応する識別子がクライアントのＡＰ７５に送信されるようになっている。
【００３４】
データ検索部２０では、クライアント７０からの検索要求に対し、検索プラン決定部２２Ａで決定された検索プランに応じてデータの検索処理が実行される。検索処理は、インデクスデータ６１を用いた検索を実行するインデクス検索部２３と、文書データ６２の実データ検索を行う文書データ照合部２４とによって実行される。
【００３５】
検索プラン決定部２２Ａでは、データ検索部２０から送信された検索要求とインデクス定義とから、データ検索部２０が実行する検索手順を定めた検索プランが決定される。具体的には、検索要求の解析によって検索対象範囲と検索条件が抽出され、インデクス作成範囲の検索対象範囲に対する適合率と、再現率とが算出される。例えば、検索要求が、「先頭１段落{“データマイニング” AND “分析”}」である場合、「先頭１段落」が検索対象範囲であり、「“データマイニング” AND “分析”」が検索条件である。これらとインデクス定義ファイルの定義情報とから、各インデクス作成範囲の検索対象範囲に対する適合率と再現率が算出される。適合率と再現率は、データ検索部２０から送信されたインデクス定義の全てについて算出される。
【００３６】
その後、検索プラン決定部２２Ａでは、算出された再現率と適合率の関係に応じて、「検索プラン」が作成されるようになっている。「検索プラン」とは、データ検索部２０における検索手順を示す情報である。例えば、ＲＤＢＭＳであれば実行計画に相当するものである。作成された「検索プラン」は、データ検索プラン４４に格納される。「検索プラン」としては、『ノイズ除去型検索プラン』、『漏れ補完型検索プラン』及び『文書データ照合型検索プラン』がある。実行計画を確認する手段は実装によって異なるが、多くのＲＤＢＭＳがコマンドラインのインタフェースから確認するためのコマンドを用意している。
【００３７】
図４Ａ〜Ｃに、夫々の検索プランの例を示す。検索プランには、検索要求とその処理手順が格納されている。処理手順は複数の操作からなり、１つの操作は操作ＩＤ、操作、検索対象および使用インデクス名称（使用しない場合は空欄）を含む。
図４Ａは、『ノイズ除去型検索プラン』の例である。本プランは、検索プラン決定部２２Ａで算出された再現率と適合率の結果から、再現率が１００％のインデクス（図１Ｂの状態）について、その中で最も適合率が高いインデクスを用いた検索処理の手順である。  また、再現率と適合率のいずれもで、１００％のインデクスが存在しないが、再現率が０％より大きいインデクスが存在する場合（図１Ｃの状態）にも、検索対象範囲と、インデクス作成範囲の重複部分（図１Ｃの「検索対象範囲１」について、同様な検索プランが作成される。より具体的には、最も再現率が高いインデクスが選択され、そのインデクスの再現率が１００％となる検索対象範囲（図１Ｃの「検索対象範囲１」）が切り出される。そして、切り出された範囲に対して、選択されたインデクスを用いた検索処理が行われる事になる。
【００３８】
図４Ａでは、操作１でＩＮＤＥＸ＿１を用いてインデクス検索を行い、操作２において操作１で合致した文書を対象に実データの検索を行い、操作３で操作２の結果を返却する例が示されている。
【００３９】
図４Ｂは、『漏れ補完型検索プラン』の例である。本プランは、検索プラン決定部２２Ａで算出された再現率と適合率結果から、再現率１００％のインデクスが存在せず、適合率が１００％のインデクス（図１Ａの状態）について、その内で最も再現率が高いインデクスを用いた検索処理の手順である。
図４Ｂでは、操作１でＩＮＤＥＸ＿２を用いてインデクス検索を行い、操作２で、操作１で合致しなかった文書データを対象に実データの検索を行い、操作３で、操作１と操作２の結果を返却する例が示されている。
【００４０】
図４Ｃは、『文書データ照合型検索プラン』の例である。本プランは、検索プラン決定部２２Ａで算出された再現率と適合率の結果から、再現率と適合率のいずれもで、１００％のインデクスが存在せず且つ再現率が０％のインデクスしかない場合（重複範囲が無い場合）の検索処理の手順を示す。
図４Ｃでは、操作１で実データの検索を行い、操作２で操作１の結果を返却する例が示されている。
【００４１】
図２に戻り、検索結果４１は、データ検索部２０によって、検索処理された検索結果が格納される小域であり、本領域に格納された結果がクライアント７０からの検索要求に対する応答となる。
【００４２】
インデクス検索結果４２は、インデクス検索部２３による検索結果が一時的に格納される格納領域である。本領域に格納された検索結果は、後述する各種の「検索プラン」に応じて、データ検索部２０によって、その一部又は全部が最終的な検索結果として検索結果４１に格納されることとなる。
【００４３】
文書データ照合結果４３は、文書データ照合部２４による実データ検索処理の検索結果が一時的に格納される格納領域である。本領域に格納された検索結果は、後述する各種の「検索プラン」に応じて、データ検索部２０によって、その一部又は全部が最終的な検索結果として検索結果４１に格納されることとなる。
【００４４】
以上が、計算機システム１００の構成である。
次に、計算機システム１００の各機能部の処理の流れについて、図５〜図１１に示すフロー図を用いて説明する。
図５に、データ登録部３０の処理の流れを示す。
まず、Ｓ１００で、データ登録部３０は、クライアント７０から登録要求を受信する。  Ｓ１０１で、データ登録部３０は、登録要求から登録データを取得する。なお、登録データを外部記憶装置５０に格納し、登録要求にその格納先を記載するようにしても、登録要求の中に登録データを直接記載するようにしてもかまわない。また登録データは１件ずつ登録しても、複数件まとめて処理するようにしてもよい。
【００４５】
Ｓ１０２で、データ登録部３０は、取得した登録データに識別子を付与する。識別子はデータ毎に固有の情報であり、データ識別子を指定すると対応するデータが一意に決まるものである。
Ｓ１０３で、データ登録部３０は、インデクス定義ファイル６３を取得する。そしてインデクス定義ファイル６３に記載されている定義数分、以下のＳ１０４からＳ１０７の一連の処理を繰り返す。
【００４６】
繰り返し処理の中では、Ｓ１０５で、データ登録部３０は、インデクス作成部３１に登録データとインデクスの定義を送信し、インデクス作成を指示する。インデクス作成部の詳細な処理については、図６を用いて後述する。
インデクス作成部３１によるインデクス作成処理が終わると、Ｓ１０６で、データ登録部３０は、インデクス作成部３１から完了通知を受信する。
【００４７】
Ｓ１０４からＳ１０７の繰り返し処理が終了すると、Ｓ１０８で、データ登録部３０は、登録データを外部記憶装置５０上に、文書データ６２として格納する。
最後に、Ｓ１０９で、データ登録部３０は、クライアント７０に、Ｓ１０２で生成したデータ識別子を送信し、本処理を終了する。
【００４８】
図６に、インデクス作成部３１の処理の流れを示す。
Ｓ２００で、インデクス作成部３１は、データ登録部３０から登録データとインデクス定義６３を受信する。
Ｓ２０１で、インデクス作成部３１は、インデクス定義６３からインデクス作成範囲とインデクス形式を抽出する（例えば、図３のインデクス作成範囲６７とインデクス形式６６）。
【００４９】
Ｓ２０２で、インデクス作成部３１は、登録データからインデクス作成範囲で指定される文字列を抽出する。
Ｓ２０３で、抽出した文字列を対象に指定されたインデクス形式でインデクスを作成する。
Ｓ２０４で、作成したインデクスを外部記憶装置５０上の対応するインデクスデータに追加する。最後にＳ２０５で、データ登録部３０に完了通知を送信して本処理を終了する。
【００５０】
図７に、データ検索部２０の処理の流れを示す。
Ｓ３００で、データ検索部２０は、クライアント７０から検索要求を受信する。
Ｓ３０１で、データ検索部２０は、外部記憶装置５０からインデクス定義ファイル６３を取得する。
Ｓ３０２で、データ検索部２０は、検索プラン決定部２２Ａに検索要求とインデクス定義ファイルの定義情報を送信し、検索プランの決定を指示する。検索プランの決定処理の詳細は後述する。
【００５１】
検索プラン決定部２２Ａによる検索プラン決定処理が終わると、Ｓ３０３で、データ検索部２０は、検索プラン決定部２２Ａから完了通知を受信する。
Ｓ３０４で、データ検索部２０は、検索実行部２１にデータ検索指示を送信する。
検索実行部２１によるデータ検索処理が終わると、Ｓ３０５で、データ検索部２０は、検索実行部２１からデータ識別子の集合を受信する。この集合は検索要求に合致した文書データの識別子の集合である。
最後に、Ｓ３０６で、受信したデータ識別子の集合をクライアント７０に送信し、本処理を終了する。
【００５２】
図８に、検索プラン決定部２２Ａの処理の流れを示す。
Ｓ４００で、検索プラン決定部２２Ａは、データ検索部２０から検索要求とインデクス定義ファイル６３の定義情報を受信する。
Ｓ４０１で、検索プラン決定部２２Ａは、検索要求を解析し、検索対象範囲と検索条件を抽出する。例えば、検索要求が「先頭１段落{“データマイニング” AND “分析”}」であるとすると、検索対象範囲が「先頭１段落」であり、検索条件が「“データマイニング” AND “分析”」である。次にインデクス定義数分、Ｓ４０２〜Ｓ４０４の一連の処理を繰り返す。
【００５３】
繰り返し処理において、Ｓ４０３で、検索プラン決定部２２Ａは、インデクス作成範囲の検索対象範囲に対する適合率と再現率を算出する。
Ｓ４０２〜Ｓ４０４の繰り返し処理が終了すると、Ｓ４０５で、検索プラン決定部２２Ａは、再現率が１００％のインデクスが存在するか否かをチェックする。再現率が１００％のインデクスがあると判断した場合（S405：Yes）、Ｓ４０７に進み、無いと判断する場合（S405：No）、Ｓ４０６に進む。
【００５４】
Ｓ４０７で、検索プラン決定部２２Ａは、再現率１００％のインデクスの中から最も適合率が高いインデクスを選択する。
Ｓ４０８で、検索プラン決定部２２Ａは、選択したインデクスを用いた「ノイズ除去型の検索プラン」を作成する。その後、Ｓ４１１で、検索プラン決定部２２Ａは、作成した検索プランをデータ検索プラン４４の格納領域に追加し、Ｓ４１２でデータ検索部２１に完了通知を送信して本フローを抜ける。
【００５５】
他方、Ｓ４０６で、検索プラン決定部２２Ａは、適合率１００％のインデクスがあるか否かをチェックする。適合率が１００％のインデクスがあると判断した場合（S406：Yes）、Ｓ４０９に進み、無いと判断した場合（S406：No）、Ｓ４１３に進む。
Ｓ４０９で、検索プラン決定部２２Ａは、適合率が１００％のインデクスの中で、最も再現率が高いインデクスを選択する。
Ｓ４１０で、検索プラン決定部２２Ａは、選択したインデクスを用いた「漏れ補完型の検索プラン」を作成する。その後、Ｓ４１１、Ｓ４１２の処理に進み。本フローを抜ける。
【００５６】
他方、Ｓ４１３で、検索プラン決定部２２Ａは、全インデクスの再現率が０％であるか否かをチェックする。検索プラン決定部２２Ａは、全インデクスの再現率が０％であると判断する場合（S413：Yes）、Ｓ４１４に進み、「文書データ照合型の検索プラン」を作成する。その後、Ｓ４１１、Ｓ４１２の処理に進み、本フローを抜ける。
【００５７】
Ｓ４１５で、検索プラン決定部２２Ａは、Ｓ４１３でチェックした再現率のうち０％より大きい再現率であって、最大の再現率を持つインデクスを選択する。
Ｓ４１６で、選択したインデクスの再現率が１００％となるように、インデクスの検索対象範囲を切り出す処理を行う。例えば、図１Ｃの検索対象範囲１の範囲になるように切り出す。
【００５８】
Ｓ４１７で、検索プラン決定部２２Ａは、切り出した範囲（図1Ｃの右上側図の検索対象範囲１）に対して選択したインデクスを用いた「ノイズ除去型の検索プラン」を作成し、その後、Ｓ４１８で、作成した検索プランをデータ検索プラン４４の格納領域に格納する。
【００５９】
その後、Ｓ４１９で、検索プラン決定部２２Ａは、残った検索対象範囲（図１Ｃにおける検索対象範囲２）を新たな検索対象範囲に設定し、Ｓ４０２の繰り返し処理に戻る。
【００６０】
次に、作成された検索プランに基づいて検索を実行する検索実行部２１の処理の流れを説明する。
図９に、検索実行部２１の処理の流れを示す。検索実行部２１は、まずデータ検索プラン４４に格納されている操作数分、操作ＩＤに従ってＳ５００からＳ５０６の一連の処理を繰り返す。
Ｓ５０１で、データ検索プラン４４の操作がインデクス検索操作であるか否かをチェックする。ここでインデクス検索操作であると判断する場合（S501：Yes）、Ｓ５０２に進み、インデクス検索部２３を呼び出す。データ検索部２２は、インデクス操作でないと判断する場合（S501：No）、Ｓ５０３に進む。
【００６１】
Ｓ５０３で、検索実行部２１は、操作が文書データ照合操作であるか否かをチェックする。文書データ照合操作であると判断する場合（S503：Yes）、Ｓ５０４に進み、文書データ照合部２４を呼び出す。データ検索部２２は、文書データ照合操作でないと判断する場合（S503：No）、Ｓ５０５に進み、指定の結果のデータ識別子を検索結果４１の格納領域に追加する。
【００６２】
Ｓ５０７で、検索実行部２１は、検索結果４１の格納領域に格納されているデータ識別子の集合を送信し、全格納領域をリセットして終了する。
【００６３】
図１０に、インデクス検索部２３の処理の流れを示す。
Ｓ６００で、インデクス検索部２３は、検索プランの操作に指定されたインデクスを用いて検索要求を処理する。
Ｓ６０１で、操作に“ＷＩＴＨ”指定があるか否かをチェックする。インデクス検索部２３は、Ｓ６０１で操作に“ＷＩＴＨ”指定が有ると判断する場合（S601：Yes）、Ｓ６０２に進み、合致しなかった文書の識別子をインデクス検索結果４２の格納領域から削除し、本処理を終了する。
【００６４】
最後に、文書データ照合部２４の処理を説明する。
図１１に、文書データ照合処理の流れを示す。
Ｓ７００で、文書データ照合部２４は、検索プランの操作に“ＷＩＴＨ”指定があるか否かをチェックする。ここで“ＷＩＴＨ”指定があると判断する場合（S700：Yes）、Ｓ７０１に進み、指定が無いと判断する場合（S700：No）、Ｓ７０２に進む。
【００６５】
Ｓ７０１で、文書データ照合部２４は、インデクス検索結果４２の格納領域に格納されているデータ識別子を、文書データ照合結果４３の格納領域にコピーする。本ステップは「ノイズ除去型の検索プラン」を実行するための処理である。
【００６６】
Ｓ７０２で、文書データ照合部２４は。全文書のデータ識別子を文書データ照合結果４３の格納領域に格納する。
Ｓ７０３で、文書データ照合部２４は、操作に“ＷＩＴＨＯＵＴ“指定があるか否かをチェックする。ここで”ＷＩＴＨＯＵＴ“指定があると判断する場合（S703：Yes）、Ｓ７０４に進み、指定が無いと判断する場合（S703：No）、インデクス検索結果４４の格納領域に格納されているデータ識別子と同じ識別子を、文書データ照合結果４４から削除する。本ステップは「漏れ補完型の検索プラン」を実行するための処理である。
【００６７】
Ｓ７０５で、文書データ照合部２４は、検索結果４１の格納領域に格納されているデータ識別子と同じ識別子を、文書データ照合結果４４の格納領域から削除する。本ステップは、既に正解文書であると決定した文書に関する処理を省くために実行する。
【００６８】
次いで、文書データ照合部２４は、文書データ照合結果４３の格納領域に格納されているデータ識別子数分、Ｓ７０６からＳ７１１の一連の処理を繰り返す。
Ｓ７０７で、文書データ照合部２４は、当該文書データから指定された検索対象範囲の文字列を抽出する。
Ｓ７０８で、文書データ照合部２４は、抽出した範囲を対象として検索要求で照合し、Ｓ７０９で、検索要求に合致するか否かをチェックする。ここで検索要求に合致しないと判断した場合（S709：No）、Ｓ７１０に進み、検索要求に合致すると判断する場合（S709：Yes）、Ｓ７１１に進む。
Ｓ７１０で、文書データ照合部２４は、データ識別子を文書データ照合結果４３の格納領域から削除する。Ｓ７０６からＳ７１１の繰り返し処理が終了すると、本フローを抜ける。
【００６９】
以上説明したように、第１実施形態の計算機システム１００によれば、検索対象範囲と、インデクス作成範囲とが異なる場合に、インデクス作成範囲から検索を行い、その結果を利用して検索対象範囲を検索することにより、大規模な文書データベースを対象とした場合でも、作成されているインデクスを最大限に利用して、高速な検索処理を実現するデータ検索装置を提供することが可能となる。
【００７０】
〔第２実施例〕
次に、本発明を適用した第２実施形態である計算機システム２００について説明する。  図１２を用いて、計算機システム２００の原理について説明する。図に示すように、計算機システム２００は、検索対象範囲（図中、点線で示す楕円部分）が、複数のインデクス作成範囲ＸとＹ（図中、実線で囲まれハッチングされた半楕円部分）に分割されている構成を前提とする。更に、インデクス作成範囲Ｘは、インデクス作成範囲Ｙよりもインデクスの作成範囲が狭い。第２実施計形態の計算機システム２００では、インデクス作成範囲がより狭い範囲であるインデクスを用いた検索処理から優先して処理することを特徴の１つとする。即ちインデクス作成範囲が狭い方が処理に要する時間が短くなる可能性が高い為、狭い範囲のインデクスを用いた検索処理から開始する方が、結果として全体の検索処理が高速になる確率が高くなるといえる。
【００７１】
例えば、Ｂ−ｔｒｅｅインデクスの場合、インデクスを作成する範囲がより狭い方が、キー値の数が少なく又ツリー階層が浅くなる。このため検索処理が早くなる可能性が高くなると言える。ｎ−ｇｒａｍインデクスの場合、狭い範囲に作成する方が個々のインデクスに格納されている位置情報が少なくなる。このため検索処理が早くなる可能性が高くなると言える。
【００７２】
以下に、計算機システム２００について詳細に説明する。なお、第１実施形態の計算機システム１００（図２）と同様の構成を有する要素・機能部は同一の符号を用いて、その詳細な説明は省略する。
【００７３】
図１３に、計算機システム２００における構成を部分的に示す（検索サーバ１０）。検索サーバ１０の検索プラン決定部２２Ｂに、検索プラン最適化部２０１を有する点が主な相違点となる。
【００７４】
検索プラン最適化部２０１では、検索プラン決定部２２が、第１実施形態と同様に作成した「検索プラン」の操作順序を並び変える処理が実行されるようになっている。具体的には、検索プラン決定部２２が作成した「検索プラン」を、インデクス定義中のインデクス作成範囲の長さがより小である検索インデクスを用いた検索から優先して実行するように並び変えるようになっている。
【００７５】
図１４に、第２実施形態における検索プラン決定部２２Ｂの処理の流れを示す。なお、本処理は、第１実施形態における検索プラン決定部２２Ａの処理（図８）のＳ４１１とＳ４１２の間に処理ステップが追加されるものであり、他の処理は第１実施形態と同様である。追加部分について説明する（なお、便宜上、図１４には図８のＳ４１１及びＳ４１２の処理も記載するものとする）。
【００７６】
Ｓ４１１で、検索プラン決定部２２Ｂは、作成した検索プランをデータ検索プラン４４の格納領域に追加する。
【００７７】
次いで、Ｓ８００で、検索プラン決定部２２Ｂは、検索プラン最適化部２０１にインデクス定義ファイル４３の定義情報を送信し、検索プランの最適化を指示する。
Ｓ８０１で、検索プラン最適化部２０１による最適化処理が実行され、処理完了後、Ｓ８０２で、検索プラン決定部２２Ｂは、処理完了通知を受信する。
その後、Ｓ９１２で、検索プラン決定部２２Ｂは、データ検索部２０に処理完了通知を送信して、処理を終了する。
【００７８】
図１５に、検索プラン最適化部２０１の処理の流れを示す。
検索プラン最適化部２０１は、検索プラン決定部２２Ｂからの検索プランの最適化指示を契機に処理を開始する。この時点ではデータ検索プラン４４の格納領域に、複数の検索プランが格納されている。
Ｓ９００で、検索プラン最適化部２０１は、検索プラン決定部２２Ｂからインデクス定義ファイル６３を受信する。そして、検索プラン最適化部２０１は、データ検索プラン４４の格納領域に格納されている検索プランの数分、Ｓ９０１からＳ９０４の一連の処理を繰り返す。
Ｓ９０２で、検索プラン最適化部２０１は、インデクス定義ファイルの定義情報から当該検索プランに格納されている使用インデクスの作成範囲（例えば、図３の作成範囲６７）を取得する。
Ｓ９０３で、検索プラン最適化部２０１は、インデクス作成範囲の長さを取得する。ここで、「インデクス作成範囲の長さ」とは、文書データ上でインデクスを作成する範囲として指定された部分のテキスト長を示すものである。複数のインデクス作成範囲の広狭を比較するために、文書データからバイト長や文字数などの値で取得する。文書データからランダムに選択したサンプルデータから取得した長さでもよいし、全ての文書データにおける平均的な長さでもよい。
検索プラン数分について処理が完了すると、Ｓ９０５に進む。
【００７９】
Ｓ９０５で、検索プラン最適化部２０１は、データ検索プラン４４の格納領域に格納されている検索プランを、インデクス作成範囲の長さに応じて昇順にソートする。
最後に、Ｓ９０６で、検索プラン最適化部２０１は、検索プラン決定部２２Ｂに完了通知を送信して終了する。
【００８０】
検索プラン決定部２２Ｂの処理終了後には、データ検索部２０が検索実行部２１を呼び出し、検索プラン最適化部２０１がソートした順に、検索プランを処理する。そして、検索実行部２１は、先に実行した検索プランで正解文書であると決定した文書に対する処理について、それ以降の検索プランでは実行しないようになっている。
【００８１】
以上説明したように、検索対象範囲が複数のインデクス作成範囲に分割できる場合、より狭い範囲に作成されたインデクスから検索処理を開始し、その結果を利用して以降のインデクスでの検索を行う。より狭い範囲に作成したインデクスの方が検索に掛かる時間が短い可能性が高いため、そのインデクスから確認をすることで、高速に検索が終了する可能性が高まることになる。
【００８２】
〔第３の実施例〕
次に、本発明を適用した第３実施形態である計算機システム３００について説明する。本実施形態では、特性の異なる複数のインデクスが同じ範囲に作成されている場合、検索要求の要件やインデクスの特性に応じて使用するインデクスやその順序を決定することを特徴の１つとする。
【００８３】
インデクスの特性には以下のような種類がある。先に述べたｎ−ｇｒａｍ、サフィックスアレイなどを利用した「文字列検索インデクス」、特定のキー文字列（数値が連続する文字列や正規表現に合致する文字列、化学式・英単語など）を抽出して登録したＢ−ｔｒｅｅなどの「キー検索インデクス」、文字成分表のようにビットマップの“１”“０”で文字列の有無を表現する「フィルタリングインデクス」等である（例えば、特許文献３）。
【００８４】
「フィルタリングインデクス」は、検索ノイズはあるものの高速に検索ができる。そこで、フィルタリングインデクスで検索した結果に対して文字列検索インデクス又は実データでノイズを除去するようにする。これにより、フィルタリングインデクスで絞り込んだ文書に対してのみ詳細検索の処理を集中させることができ、高速な検索が実現できることとなる。
【００８５】
「キー検索インデクス」は、登録したキーを高精度で検索できるため、登録したキー文字列と同種の文字列が検索要求に含まれる場合には、その文字列部分をキー検索インデクスで検索し、それ以外の文字列を文字列検索インデクス又は実データで検索するようにする。具体的には、計算機システム３００には、ｎ−ｇｒａｍインデクスと、数値が連続する文字列を登録したＢ−ｔｒｅｅとが作成されており、検索要求として“１０ｃｍ”が指定された場合には、検索要求の“１０”の部分をＢ−ｔｒｅｅで検索し、“ｃｍ”の部分をｎ−ｇｒａｍインデクスで検索し、それらの部分文字列が連続する文書を探し出す。ｎ−ｇｒａｍインデクスだけで“１０ｃｍ”を検索すると、“１１０ｃｍ”や“１００１０ｃｍ”なども正解文書となってしまうが、本実施形態を用いることにより、これらキーを内包する文書を除外し、高精度な検索結果を得ることが可能となる。またＢ−ｔｒｅｅの特性を生かしてキー文字列部分の範囲検索も可能となる。
【００８６】
計算機システム３００の構成は、基本的に第１及び第２実施形態と同様の構成をとるが、検索プラン決定部２２Ｃが主な相違点である。
図１６に、データ検索サーバ１０の構成を模式的に示す。検索プラン決定部２２Ｃは、複数インデクスプランニング部３０１を有する。
【００８７】
複数インデクスプランニング部３０１では、インデクスの特性と、検索要求に含まれる検索文字列との関係からより効率的な処理を可能とするインデクスを用いた検索から優先して実行するように「検索プラン」を並び変える様になっている。
【００８８】
第３実施形態において、検索プラン決定部２２Ｃが作成するデータ検索プランの例を図１７に示す。検索プランには、検索要求とその処理手順が格納されている。処理手順は複数の操作からなり、１つの操作は操作ＩＤ、操作、検索対象、使用インデクス名称（使用しない場合は空欄）およびインデクス種別を含む。
図１７Ａは、「フィルタリングインデクス」を利用した検索プランの例を示す。操作１でフィルタリングインデクスであるビットマップのINDEX1を用いて検索し、操作２で、操作１で合致した文書を対象に文字列検索インデクスであるサフィックスアレイのINDEX2を用いて検索し、その結果を返却することが表されている。
【００８９】
図１７Ｂは、「キーインデクス」を利用した検索プランの例を示す。操作１でキー検索インデクスであるＢ−ｔｒｅｅのINDEX3を用いて“１０”を検索し、操作２で、操作１で合致した文書を対象に文字列検索インデクスであるサフィックスアレイのINDEX2を用いて“ｃｍ”を検索し、それらの出現位置が隣接する結果を返却することが表されている。
以上が、計算機システム３００の構成である。
【００９０】
以下、検索プラン決定部２２Ｃの処理の流れを示す。
図１８に、検索プラン決定部２２Ｃの処理の流れを示す。検索プラン決定部２３の処理は、第１実施形態の検索プラン決定部２２Ａの処理（図８）を基調とし、それと異なる部分は、Ｓ１０００〜Ｓ１００２と、Ｓ１００３〜Ｓ１００５とのステップが追加されている点である。追加ステップでは、選択されたインデクスが複数存在する時に、検索要求の要件やインデクスの特性に応じて使用するインデクスやその順序を決定するようになっている。特に、追加部分について説明し、重複部分は詳細な説明を省略する。
【００９１】
Ｓ４０５において、検索プラン決定部２２Ｃは、Ｓ４００〜Ｓ４０４の処理において算出した、インデクス作成範囲の検索対象範囲に対する適合率と再現率から、再現率が１００％のインデクスがあるかをチェックする。再現率が１００％のインデクスがある場合（S405：Yes）、Ｓ４０７に進み、無い場合（S405：No）、Ｓ４０６に進む。
【００９２】
Ｓ４０７で、検索プラン決定部２２Ｃは、再現率が１００％のインデクスの内、適合率が最高のインデクスを選択する。
Ｓ１０００で、検索プラン決定部２２Ｃは、適合率が最高の値であるインデクスが複数あるか否かをチェックし、複数ある場合（S1000：Yes）、Ｓ１００１に進み、１つである場合（S1000：No）、Ｓ４０８に進み「ノイズ除去型」の検索プランを作成する。
【００９３】
Ｓ１００１で、検索プラン決定部２２Ｃは、複数インデクスプランニング部３０１に、選択したインデクス定義と検索要求を送信し、その後、Ｓ１００２で、複数インデクスプランニング部３０１に検索プラン作成処理を実行させる。複数インデクスプランニング部３０１の詳細な処理は、後述する。
【００９４】
次いで、Ｓ１００３〜Ｓ１００５の処理の流れについて説明する。
Ｓ４０５で、検索プラン決定部２２Ｃは、再現率が１００％のインデクスが無い場合（S405：No）、Ｓ４０６で、適合率が１００％のインデクスがあるか否かをチェックする。適合率が１００％のインデクスが無い場合（S406：No）、Ｓ４１３に進み、有る場合（S406：Yes）、Ｓ１００３に進む。
Ｓ１００３で、検索プラン決定部２２Ｃは、適合率が最高の値であるインデクスが複数あるか否かをチェックし、複数ある場合（S1003：Yes）、Ｓ１００４に進み、１つである場合（S1003：No）、Ｓ４１０に進み「漏れ補完型」の検索プランを作成する。
【００９５】
Ｓ１００４で、検索プラン決定部２２Ｃは、複数インデクスプランニング部３０１に、選択したインデクス定義と検索要求を送信し、その後、Ｓ１００５で、複数インデクスプランニング部３０１に検索プラン作成処理を実行させる。複数インデクスプランニング部３０１の詳細な処理は、後述する。
【００９６】
図１９に、複数インデクスプランニング部３０１の処理の流れを示す。
Ｓ１１００で、複数インデクスプランニング部３０１は、検索プラン決定部２２Ｃから複数のインデクスのインデクス定義と検索要求を受信する。
Ｓ１１０１で、複数インデクスプランニング部３０１は、受信したインデクス定義の中にキー検索インデクスが存在するか否かをチェックする。キー検索インデクスが存在すると判断する場合（S1101：Yes）、Ｓ１１０２に進み、無いと判断する場合（S1101：No）、Ｓ１１０８に進む。
【００９７】
Ｓ１１０２で、複数インデクスプランニング部３０１は、「キー検索インデクス」に登録されているキー文字列と同種の文字列（Ａ）が検索要求に含まれるか否かをチェックする。含まれていないと判断する場合（S1102：No）、Ｓ１１０８に進み、含まれていると判断する場合（S1102：Yes）、Ｓ１１０３に進む。
Ｓ１１０３で、複数インデクスプランニング部３０１は、文字列（Ａ）を、「キー検索インデクス」を用いて検索する操作を生成する。
【００９８】
Ｓ１１０４で、複数インデクスプランニング部３０１は、文字列（Ａ）以外の文字列（Ｂ）が検索要求に含まれるか否かをチェックする。含まれていないと判断する場合（S1104：No）、Ｓ１１１４に進み、含まれていると判断する場合（S1104：Yes）、Ｓ１１０５に進む。
Ｓ１１０５で、複数インデクスプランニング部３０１は、「文字列検索インデクス」が存在するか否かをチェックする。「文字列検索インデクス」が存在すると判断する場合（S1105：Yes）、Ｓ１１０６に進み、存在しないと判断する場合（S1105：No）、Ｓ１１０７に進む。
【００９９】
Ｓ１１０６で、複数インデクスプランニング部３０１は、文字列（Ｂ）を、「文字列検索インデクス」を用いて検索する操作を生成する。
Ｓ１１０７で、複数インデクスプランニング部３０１は、文字列全体を、文書データを用いて検索する操作を生成し、Ｓ１１１４に進む。本操作は文字列（Ａ）と文字列（Ｂ）が隣接する位置を抽出する操作となる。
【０１００】
他方、Ｓ１１０８で、複数インデクスプランニング部３０１は、「フィルタリングインデクス」が存在するか否かをチェックする。「フィルタリングインデクス」が存在しないと判断する場合（S1108：No）、Ｓ１１０９に進み、存在すると判断する場合（S1108：Yes）、Ｓ１１１０に進む。
Ｓ１１０９で、複数インデクスプランニング部３０１は、所定の基準で選択した「文字列検索インデクス」を用いて検索する操作を生成する。所定の基準としては、処理コストの少ないインデクスを選択するようにしてもよいし、ランダムに選択するようにしてもよい。その後、Ｓ１１１４に進む。
【０１０１】
Ｓ１１１０で、複数インデクスプランニング部３０１は、「フィルタリングインデクス」を用いて検索する操作を生成する。
Ｓ１１１１で、複数インデクスプランニング部３０１は、「文字列検索インデクス」が存在するか否かをチェックする。「文字列検索インデクス」が存在すると判断する場合（S1111：Yes）、Ｓ１１１２に進み、「文字列検索インデクス」を用いて検索する操作を生成する。Ｓ１１１１で「文字列検索インデクス」が存在しないと判断する場合（S1111：No）、Ｓ１１１３に進み、文書データを用いて検索する操作を生成し、その後、Ｓ１１１４に進む。
【０１０２】
最後に、Ｓ１１１４で、複数インデクスプランニング部３０１は、検索プラン決定部２２Ｃに検索プランを送信して、本フローを抜ける。
【０１０３】
このように、計算機システム３００によれば、特性の異なる複数のインデクスが同じ範囲に作成されている場合、検索要求の要件やインデクスの特性に応じて使用するインデクスやその順序を決定し、検索を行う。本実施形態に示すように、特定のキー文字列に適合する「キー検索インデクス」や、高速な「フィルタリングインデクス」を優先的に用いるように最適化することにより、高精度で高速な検索処理を実現することが可能となる。
以上が、第３実施形態の計算機システム３００である。
【０１０４】
なお、本発明は上記した種々の実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施形態は、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、趣旨を逸脱しない範囲で、ある実施形態の構成の一部を他の実施形態の構成に置換・追加することも可能である。
【０１０５】
また、上記の各構成、機能、処理部及び処理等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよいし又ソフトウェアとＣＰＵの協働によってそれぞれの機能を実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Solid State Drive）等の記録装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。
【０１０６】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【０１０７】
１０・・・検索サーバ、１５・・・データ検索実行部、２２Ａ・２２Ｂ・２２Ｃ・・・検索プラン決定部、２３・・・インデクス検索部、２４・・・文書データ照合部、３０・・・データ登録部、４１・・・検索結果、４２・・・インデクス検索結果、４３・・・文書データ照合結果、４４・・・データ検索プラン、６１・・・インデクスデータ、６２・・・文書データ、６３・・・インデクス定義ファイル、２０１・・・検索プラン最適化部、３０１・・・複数インデクスプランニング部
【図１Ａ】
0005978393.tif 000002
【図１Ｂ】
0005978393.tif 000003
【図１Ｃ】
0005978393.tif 000004
【図２】
0005978393.tif 000005
【図３】
0005978393.tif 000006
【図４Ａ】
0005978393.tif 000007
【図４Ｂ】
0005978393.tif 000008
【図４Ｃ】
0005978393.tif 000009
【図５】
0005978393.tif 000010
【図６】
0005978393.tif 000011
【図７】
0005978393.tif 000012
【図８】
0005978393.tif 000013
【図９】
0005978393.tif 000014
【図１０】
0005978393.tif 000015
【図１１】
0005978393.tif 000016
【図１２】
0005978393.tif 000017
【図１３】
0005978393.tif 000018
【図１４】
0005978393.tif 000019
【図１５】
0005978393.tif 000020
【図１６】
0005978393.tif 000021
【図１７Ａ】
0005978393.tif 000022
【図１７Ｂ】
0005978393.tif 000023
【図１８】
0005978393.tif 000024
【図１９】
0005978393.tif 000025
【図２０】
0005978393.tif 000026