(57)【要約】【課題】サイズ肥大を抑えながら、実体参照することなく、数値検索が可能なインデックス情報を生成する。【解決手段】インデックス生成装置１００は、対象のテキストデータに出現する数値から、数値が持つ複数の属性に対応するそれぞれの値を取得する。インデックス生成装置１００は、複数の属性に対応するそれぞれの値を複数の属性それぞれの値域に対応付ける。インデックス生成装置１００は、該対応付けたそれぞれの値域を含む複数の値域それぞれについて、数値が出現する出現位置に対応付けたビットマップデータのビットマップ型インデックス１２１を生成する。【選択図】図６
2018060425.tif 000002
【特許請求の範囲】
【請求項１】
対象のテキストデータに出現する数値から前記数値が持つ複数の属性に対応するそれぞれの値を取得し、
前記複数の属性に対応するそれぞれの値を前記複数の属性それぞれの値域に対応付け、
該対応付けたそれぞれの値域を含む複数の値域それぞれについて、前記数値が出現する出現位置に対応付けたビットマップデータのインデックス情報を生成する
処理をコンピュータに実行させるインデックス生成プログラム。
【請求項２】
前記複数の値域の範囲は、前記対象のテキストデータに対する過去の数値検索の条件に利用された数値検索履歴の、前記複数の属性に対応するそれぞれの値に基づき設定される
ことを特徴とする請求項１に記載のインデックス生成プログラム。
【請求項３】
前記複数の属性は、有効桁数や各位の数字である
ことを特徴とする請求項１に記載のインデックス生成プログラム。
【請求項４】
対象のテキストデータに出現する数値から前記数値が持つ複数の属性に対応するそれぞれの値を取得する取得部と、
前記取得部によって取得された、前記複数の属性に対応するそれぞれの値を前記複数の属性それぞれの値域に対応付ける対応付け部と、
前記対応付け部によって対応付けられたそれぞれの値域を含む複数の値域それぞれについて、前記数値が出現する出現位置に対応付けたビットマップデータのインデックス情報を生成する生成部と、
を有することを特徴とするインデックス生成装置。
【請求項５】
コンピュータが、
対象のテキストデータに出現する数値から前記数値が持つ複数の属性に対応するそれぞれの値を取得し、
前記複数の属性に対応するそれぞれの値を前記複数の属性それぞれの値域に対応付け、
該対応付けたそれぞれの値域を含む複数の値域それぞれについて、前記数値が出現する出現位置に対応付けたビットマップデータのインデックス情報を生成する
処理を実行することを特徴とするインデックス生成方法。
【請求項６】
所定の数値検索の条件を受け付け、
該受け付けた数値検索の条件を、数値が持つ複数の属性それぞれの値域に対応した条件に変換し、
該変換した条件を、前記複数の属性それぞれの値域について、数値が出現する出現位置に対応付けたビットマップデータのインデックス情報を用いて検索する
処理をコンピュータに実行させることを特徴とする検索プログラム。
【請求項７】
前記所定の数値検索の条件が数値の範囲を示す条件である場合には、前記数値の範囲を示す条件を、有効桁数ごとの条件に分割し、
該変換する処理および該検索する処理は、該分割したそれぞれの条件に対して実行する
ことを特徴とする請求項６に記載の検索プログラム。
【請求項８】
該検索する処理は、前記インデックス情報のみを参照して、前記数値検索の結果を返答する
ことを特徴とする請求項６または請求項７に記載の検索プログラム。
【請求項９】
前記複数の属性は、有効桁数や各位の数字である
ことを特徴とする請求項６に記載の検索プログラム。
【請求項１０】
所定の数値検索の条件を受け付ける受付部と、
前記受付部によって受け付けられた数値検索の条件を、数値が持つ複数の属性それぞれの値域に対応した条件に変換する変換部と、
前記変換部によって変換された条件を、前記複数の属性それぞれの値域について、数値が出現する出現位置に対応付けたビットマップデータのインデックス情報を用いて検索する検索部と、
を有することを特徴とする検索装置。
【請求項１１】
コンピュータが、
所定の数値検索の条件を受け付け、
該受け付けた数値検索の条件を、数値が持つ複数の属性それぞれの値域に対応した条件に変換し、
該変換した条件を、前記複数の属性それぞれの値域について、数値が出現する出現位置に対応付けたビットマップデータのインデックス情報を用いて検索する
処理を実行することを特徴とする検索方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インデックス生成プログラムなどに関する。
【背景技術】
【０００２】
数値の有効桁数および先頭数字を満たす数値群内の数値の存否を検索対象ファイルごとにあらわしたビット列の集合を示すビットマップ型インデックスを用いて、検索対象の数値を検索する技術が知られている（例えば、特許文献１参照）。
【０００３】
かかる技術では、情報処理装置が、検索対象の数値の有効桁数および先頭数字を検出し、ビットマップ型インデックスを用いて、検出された有効桁数および先頭数字を満たす数値群内の数値の存否を検索対象ファイルごとにあらわしたビット列を抽出する。そして、情報処理装置は、抽出したビット列の中の、数値の存在を示すビットに対応する検索対象ファイルを、複数の検索対象ファイルの中から特定する。そして、情報処理装置は、特定された検索対象ファイルを参照し、検索対象の数値が存在するか否かを判定する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２００８／０４７４３２号
【特許文献２】国際公開第２０１２／１７６３７４号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の技術では、サイズ肥大を抑えながら、実体参照することなく、数値検索が可能なインデックス情報を生成することができないという問題がある。すなわち、従来の技術のビットマップ型インデックスは、数値の有効桁数および先頭数字を満たす数値群内の数値の存否を検索対象ファイルごとにあらわしたビット列の集合を示すインデックス情報である。したがって、情報処理装置は、数値検索を行う際に、有効桁数および先頭数字を満たす数値群内の数値が含まれている検索対象ファイルの絞り込みを行うことができる。ところが、情報処理装置は、絞り込みを行った実際の検索対象ファイルを参照し、検索対象の数値との照合が必要である。すなわち、情報処理装置は、実体参照することなく、数値検索が可能なインデックス情報を生成することができない。
【０００６】
また、実体参照することなく数値検索が可能となるように、情報処理装置は、数値に対してインデックス情報をとるように、例えば、１０進数の仮数と指数とで数値を表記してインデックス情報を生成することが考えられる。ところが、情報処理装置は、仮数部の桁数が少ないと、数値検索のために実際のデータを参照する必要があるし、仮数部の桁数が多いと、インデック情報のサイズが肥大するという問題が生じる。
【０００７】
なお、上記課題は、数値の検索だけではなく、数値の範囲検索や数値の大小比較にも同様に生じる課題である。
【０００８】
１つの側面では、サイズ肥大を抑えながら、実体参照することなく、数値検索が可能なインデックス情報を生成することを目的とする。
【課題を解決するための手段】
【０００９】
第１の案では、インデックス生成プログラムは、コンピュータに、対象のテキストデータに出現する数値から前記数値が持つ複数の属性に対応するそれぞれの値を取得し、前記複数の属性に対応するそれぞれの値を前記複数の属性それぞれの値域に対応付け、該対応付けたそれぞれの値域を含む複数の値域それぞれについて、前記数値が出現する出現位置に対応付けたビットマップデータのインデックス情報を生成する、処理を実行させる。
【発明の効果】
【００１０】
１つの態様によれば、サイズ肥大を抑えながら、実体参照することなく、数値検索が可能なインデックス情報を生成できる。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施例１に係るビットマップ型インデックスの生成処理の流れの一例を示す図である。
【図２】図２は、実施例１に係るビットマップ型インデックスの一例を示す図である。
【図３】図３は、実施例１に係る数値検索処理の流れの一例を示す図である。
【図４】図４は、実施例１に係る範囲検索処理の一例を示す図である。
【図５Ａ】図５Ａは、実施例１に係る範囲検索処理の流れの一例を示す図（１）である。
【図５Ｂ】図５Ｂは、実施例１に係る範囲検索処理の流れの一例を示す図（２）である。
【図５Ｃ】図５Ｃは、実施例１に係る範囲検索処理の流れの一例を示す図（３）である。
【図５Ｄ】図５Ｄは、実施例１に係る範囲検索処理の流れの一例を示す図（４）である。
【図５Ｅ】図５Ｅは、実施例１に係る範囲検索処理の流れの一例を示す図（５）である。
【図６】図６は、実施例１に係るインデックス生成装置の構成の一例を示す機能ブロック図である。
【図７】図７は、実施例１に係るインデックス生成処理のフローチャートの一例を示す図である。
【図８】図８は、実施例１に係る検索装置の構成の一例を示す機能ブロック図である。
【図９】図９は、実施例１に係る検索処理のフローチャートの一例を示す図である。
【図１０】図１０は、実施例１に係る数値検索処理のフローチャートの一例を示す図である。
【図１１】図１１は、実施例１に係る範囲検索処理のフローチャートの一例を示す図である。
【図１２】図１２は、実施例２に係るビットマップ型インデックスの生成処理の流れの一例を示す図である。
【図１３】図１３は、実施例２に係るビットマップ型インデックスの一例を示す図である。
【図１４】図１４は、実施例２に係る数値検索処理の流れの一例を示す図である。
【図１５】図１５は、実施例２に係る範囲検索処理の一例を示す図である。
【図１６Ａ】図１６Ａは、実施例２に係る範囲検索処理の流れの一例を示す図（１）である。
【図１６Ｂ】図１６Ｂは、実施例２に係る範囲検索処理の流れの一例を示す図（２）である。
【図１６Ｃ】図１６Ｃは、実施例２に係る範囲検索処理の流れの一例を示す図（３）である。
【図１７】図１７は、コンピュータのハードウェア構成例を示す図である。
【図１８】図１８は、コンピュータで動作するプログラムの構成例を示す図である。
【図１９】図１９は、実施形態のシステムにおける装置の構成例を示す図である。
【発明を実施するための形態】
【００１２】
以下に、本願の開示するインデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００１３】
［実施例１に係るビットマップ型インデックス生成処理の一例］
図１は、実施例１に係るビットマップ型インデックスの生成処理の流れの一例を示す図である。図１に示すように、テキストデータＦ１は、１０進数の数値を含む文書である。ビットマップ型インデックス生成処理は、数値が持つ有効桁数、位の数字などの複数の属性について、それぞれの値域を一纏めにして、テキストデータＦ１に出現する数値の出現位置に対応付けたビットマップ型インデックスＢＩを生成する。なお、以降では、ビットマップ型インデックス生成処理を「インデックス生成処理」というものとする。
【００１４】
このビットマップ型インデックスＢＩは、数値の有効桁数および数値の位などの複数の属性について、それぞれの値域を一纏めにしたビットマップ群である。すなわち、ビットマップ型インデックスＢＩは、対象のテキストデータＦ１に出現する数値がいずれかに割り当てられる複数の値域それぞれについて、数値が出現する出現位置に対応付けたビットマップのインデックス情報のことをいう。そして、出現位置に出現する数値は、出現位置に対応する複数の値域それぞれのビットを纏めたビットマップで表すことができる。
【００１５】
例えば、インデックス生成装置は、テキストデータＦ１を記憶領域から読み出し、読み出したテキストデータＦ１に対して字句解析を行う。ここでいう字句解析とは、テキストデータＦ１を単語、文字および数値に分割することをいう。
【００１６】
インデックス生成装置は、字句解析された数値を順次取得する。
【００１７】
インデックス生成装置は、取得した数値について、有効桁数および位ごとの数字を取得する。インデックス生成装置は、有効桁数の値域を一纏めにしたビットマップ群のうち、数値の有効桁数に対応するビットマップを選択する。インデックス生成装置は、選択したビットマップが数値の出現位置に対応するビットマップと重なるビットに出現ビットを設定する。出現ビットは、例えば、２進数の「１」で表わされる。インデックス生成装置は、ｎ位の値域を一纏めにしたビットマップ群のうち、数値の第ｎ位の数字に対応するビットマップを選択する。インデックス生成装置は、選択したビットマップが数値の出現位置に対応するビットマップと重なるビットに出現ビットを設定する。
【００１８】
図１に示すように、数値が「ｄ１ｄ２」であるとする。なお、ｄ１ｄ２は、有効桁数が２である１０進数である。インデックス生成装置は、数値の有桁桁数として「２」を取得する。インデックス生成装置は、第１位の数字として「ｄ１」、第２位の数字として「ｄ２」を取得する。
【００１９】
インデックス生成装置は、有効桁数の値域を一纏めにしたビットマップ群のうち数値の有効桁数「２」に対応するビットマップを選択する。そして、インデックス生成装置は、選択したビットマップが数値の出現位置に対応するビットマップと重なるビットに「１」を設定する。また、インデックス生成装置は、第１位の値域を一纏めにしたビットマップ群のうち数値の第１位の数字「ｄ１」に対応するビットマップを選択する。そして、インデックス生成装置は、選択したビットマップが数値の出現位置に対応するビットマップと重なるビットに「１」を設定する。また、インデックス生成装置は、第２位の値域を一纏めにしたビットマップ群のうち数値の第２位の数字「ｄ２」に対応するビットマップを選択する。そして、インデックス生成装置は、選択したビットマップが数値の出現位置に対応するビットマップと重なるビットに「１」を設定する。
【００２０】
［ビットマップ型インデックスの一例］
次に、実施例１に係るビットマップ型インデックスＢＩの一例を、図２を参照して説明する。図２は、実施例１に係るビットマップ型インデックスの一例を示す図である。図２に示すように、ビットマップ型インデックスＢＩは、Ｘ軸をオフセット（出現位置）として、Ｙ軸を数値とする。ビットマップ型インデックスＢＩは、数値の有効桁数の値域、数値の第ｎ位の値域ごとにビットマップ群を対応付ける。ｎは、有効桁数の最大値と同じ数値である。ここでは、ｎは、一例として、５以上の自然数である。
【００２１】
Ｘ軸のオフセット（出現位置）は、テキストデータＦ１内の出現位置を示す。テキストデータＦ１は、単一のファイルのデータであっても良いし、複数のファイルのデータであっても良い。テキストデータＦ１は、単一のブロックのデータであっても良いし、複数のブロックのデータであっても良い。そして、オフセットごとにビットマップが割り当てられる。
【００２２】
Ｙ軸の数値は、有効桁数と第ｎ位の数字とから表わすことができる。有効桁数とは、数値に対応する有効桁数を示す。有効桁数の値域は、１〜ｎである。第１位とは、数値の最上位の値域を示す。第１位の値域は、０〜９である。第２位とは、数値の２番目の値域を示す。第２位の値域は、０〜９である。第３位とは、数値の３番目の値域を示す。第３位の値域は、０〜９である。第４位とは、数値の４番目の値域を示す。第４位の値域は、０〜９である。第ｎ位とは、数値のｎ番目の値域を示す。第ｎ位の値域は、０〜９である。
【００２３】
そして、有効桁数の値域に含まれる値ごとにビットマップが割り当てられる。第１位の値域に含まれる値（数字）ごとにビットマップが割り当てられる。第２位の値域に含まれる値（数字）ごとにビットマップが割り当てられる。第３位の値域に含まれる値（数字）ごとにビットマップが割り当てられる。第４位の値域に含まれる値（数字）ごとにビットマップが割り当てられる。第ｎ位の値域に含まれる値（数字）ごとにビットマップが割り当てられる。
【００２４】
例えば、ビットマップ型インデックスＢＩの６列目は、数値「８３」のオフセット「６」のビットマップである。有効桁数として「２」のビット位置に「１」が設定されている。第１位の数字として「８」のビット位置に「１」が設定されている。第２位の数字として「３」のビット位置に「１」が設定されている。
【００２５】
また、ビットマップ型インデックスＢＩの９０列目は、数値「２１６７」のオフセット「９０」のビットマップである。有効桁数として「４」のビット位置に「１」が設定されている。第１位の数字として「２」のビット位置に「１」が設定されている。第２位の数字として「１」のビット位置に「１」が設定されている。第３位の数字として「６」のビット位置に「１」が設定されている。第４位の数字として「７」のビット位置に「１」が設定されている。
【００２６】
このようにして、インデックス生成装置は、有効桁数および複数の値域それぞれについて、数値が出現する出現位置に対応付けたビットマップのインデックス情報であるビットマップ型インデックスＢＩを生成する。
【００２７】
［数値検索処理の一例］
図３は、実施例１に係る数値検索処理の流れの一例を示す図である。図３に示すように、数値検索処理は、数値検索や数値の範囲検索の検索クエリである条件に応じて数値の属性に対応した値域を分割し、それぞれの属性のビットマップを組合せて絞り込みを行う。すなわち、数値検索処理は、数値検索の条件を受け付け、受け付けた数値検索の条件を、数値が持つ複数の属性に対応付けた複数の値域を用いた条件に変換する。そして、数値検索処理は、変換した条件を、ビットマップ型インデックスＢＩの複数の値域それぞれを用いて検索する。
【００２８】
例えば、検索装置は、数値検索の条件を受け付ける。検索装置は、受け付けた条件の数値について、有効桁数および位ごとの数字を取得する。そして、検索装置は、受け付けた数値検索の条件を、取得した有効桁数および取得した位ごとの数字を用いた条件に変換する。
【００２９】
検索装置は、変換した条件に含まれる有効桁数に対応するビットマップにより、検索する数値の出現位置を絞り込む。一例として、検索装置は、有効桁数の値域から、変換した条件に含まれる有効桁数を特定する。検索装置は、ビットマップ型インデックスＢＩから、特定した有効桁数に対応するビットマップを取得する。この結果、検索装置は、有効桁数に合致する出現位置を絞り込むことができる。
【００３０】
次に、検索装置は、さらに、変換した条件に含まれる第１位の数字に対応するビットマップにより、検索する数値の出現位置を絞り込む。一例として、検索装置は、第１位の値域から、変換した条件に含まれる第１位の数字を特定する。検索装置は、ビットマップ型インデックスＢＩから、特定した第１位の数字に対応するビットマップを取得する。そして、検索装置は、直前の有効桁数の絞り込み結果と今回の第１位の数字の絞り込み結果とをＡＮＤ演算する。この結果、検索装置は、有効桁数と第１位の数字とに合致する出現位置を絞り込むことができる。
【００３１】
次に、検索装置は、さらに、変換した条件に未処理の位が存在する場合には、未処理の位が存在しなくなるまで、未処理の位の数字に対応するビットマップにより、検索する数値の出現位置を絞り込む。一例として、検索装置は、変換した条件から未処理の位を選択する。検索装置は、選択した位の値域から、選択した位の数字を特定する。検索装置は、ビットマップ型インデックスＢＩから、特定した位の数字に対応するビットマップを取得する。そして、検索装置は、直前の位の数字の絞り込み結果と今回の位の数字の絞り込み結果とをＡＮＤ演算する。この結果、検索装置は、有効桁数と複数の位の数字とに合致する出現位置を絞り込むことができる。
【００３２】
図３に示すように、数値検索の条件が示す検索対象が「２１６７」であるとする。なお、「２１６７」は、有効桁数が４である１０進数である。検索装置は、検索対象の数値について、有効桁数として「４」を取得する。検索装置は、検索対象の数値について、第１位の数字として「２」、第２位の数字として「１」、第３位の数字として「６」、第４位の数字として「７」を取得する。そして、検索装置は、検索対象の条件を、有効桁数「４」、第１位の数字「２」、第２位の数字「１」、第３位の数字「６」および第４位の数字「７」を用いた条件に変換する。
【００３３】
検索装置は、有効桁数の値域から、変換した条件に含まれる有効桁数「４」を特定する。検索装置は、ビットマップ型インデックスＢＩから、特定した有効桁数「４」に対応するビットマップを取得する。この結果、検索装置は、有効桁数「４」に合致する出現位置を絞り込むことができる。
【００３４】
検索装置は、第１位の値域から、変換した条件に含まれる第１位の数字「２」を特定する。検索装置は、ビットマップ型インデックスＢＩから、特定した第１位の数字「２」に対応するビットマップを取得する。そして、検索装置は、直前の有効桁数「４」の絞り込み結果と今回の第１位の数字「２」の絞り込み結果とをＡＮＤ演算する。この結果、検索装置は、有効桁数「４」と第１位の数字「２」とに合致する出現位置を絞り込むことができる。
【００３５】
検索装置は、第２位の値域から、変換した条件に含まれる第２位の数字「１」を特定する。検索装置は、ビットマップ型インデックスＢＩから、特定した第２位の数字「１」に対応するビットマップを取得する。そして、検索装置は、直前の第１位の数字「２」の絞り込み結果と今回の第２位の数字「１」の絞り込み結果とをＡＮＤ演算する。この結果、検索装置は、有効桁数「４」と第１位の数字「２」と第２位の数字「１」とに合致する出現位置を絞り込むことができる。
【００３６】
検索装置は、第３位の値域から、変換した条件に含まれる第３位の数字「６」を特定する。検索装置は、ビットマップ型インデックスＢＩから、特定した第３位の数字「６」に対応するビットマップを取得する。そして、検索装置は、直前の第２位の数字「１」の絞り込み結果と今回の第３位の数字「６」の絞り込み結果とをＡＮＤ演算する。この結果、検索装置は、有効桁数「４」と第１位の数字「２」と第２位の数字「１」と第３位の数字「６」とに合致する出現位置を絞り込むことができる。
【００３７】
検索装置は、第４位の値域から、変換した条件に含まれる第４位の数字「７」を特定する。検索装置は、ビットマップ型インデックスＢＩから、特定した第４位の数字「７」に対応するビットマップを取得する。そして、検索装置は、直前の第３位の数字「６」の絞り込み結果と今回の第４位の数字「７」の絞り込み結果とをＡＮＤ演算する。この結果、検索装置は、有効桁数「４」と第１位の数字「２」と第２位の数字「１」と第３位の数字「６」と第４位の数字「７」とに合致する出現位置を絞り込むことができる。
【００３８】
この結果、検索装置は、有効桁数「４」と第１位の数字「２」と第２位の数字「１」と第３位の数字「６」と第４位の数字「７」とに合致する出現位置ｘを絞り込むことができる。すなわち、検索装置は、数値検索の条件が示す検索対象が「２１６７」の出現位置を「ｘ」として検索する。
【００３９】
このようにして、検索装置は、検索対象の数値の各位の数字に対応するビットマップを用いて、検索対象の数値の出現位置を検索する。この結果、数値検索処理は、実データであるテキストデータＦ１を参照しないで、数値を検索することで、数値検索を高速化することができる。
【００４０】
［範囲検索処理の一例］
図４は、実施例１に係る範囲検索処理の一例を示す図である。図４に示すように、範囲検索処理は、数値の範囲検索の条件を受け付け、受け付けた範囲検索の条件を有効桁数ごとの条件に分割する。
【００４１】
例えば、数値の範囲検索の条件が示す検索対象が「８３〜２１６７」であるとする。なお、下限の「８３」は、有効桁数が２である１０進数である。上限の「２１６７」は、有効桁数が４である１０進数である。範囲検索処理は、検索対象の条件を、有効桁数が２である場合の検索範囲の条件「８３〜９９」と、有効桁数が３である場合の検索範囲の条件「１００〜９９９」と、有効桁数が４である場合の検索範囲の条件「１０００〜２１６７」とに分割する。
【００４２】
図５Ａ〜図５Ｅは、実施例１に係る範囲検索処理の流れの一例を示す図である。図５Ａ〜図５Ｅでは、数値の範囲検索の条件が示す検索対象が「８３〜２１６７」であるとする。図５Ａでは、有効桁数が２である場合の条件「８３〜９９」の範囲検索処理を説明する図である。図５Ｂでは、有効桁数が３である場合の条件「１００〜９９９」の範囲検索処理を説明する図である。図５Ｃ〜図５Ｅでは、有効桁数が４である場合の条件「１０００〜２１６７」の範囲検索処理を説明する図である。図５Ａ〜図５Ｅに示すように、範囲検索処理は、下限の数値の有効桁数における検索範囲の条件を、検索範囲内の数値を用いて、数値が持つ複数の属性それぞれの値域に対応した条件に変換する。そして、数値検索処理は、変換した条件を、ビットマップ型インデックスＢＩの複数の値域それぞれを用いて検索する。加えて、範囲検索処理は、範囲検索の条件に含まれる上限の数値と下限の数値とを用いて、下限の数値の有効桁数と上限の数値の有効桁数との間の中間の有効桁数があれば、有効桁数の値域に対応した条件を追加する。そして、数値検索処理は、追加した条件を、ビットマップ型インデックスＢＩの有効桁数の値域を用いて検索する。加えて、範囲検索処理は、上限の数値の有効桁数における検索範囲の条件を、検索範囲内の数値を用いて、数値が持つ複数の属性それぞれの複数の値域に対応した条件に変換する。そして、数値検索処理は、変換した条件を、ビットマップ型インデックスＢＩの複数の値域それぞれを用いて検索する。
【００４３】
図５Ａに示すように、有効桁数が２である場合の条件「８３〜９９」の範囲検索処理は、「８３〜８９」および「９０〜９９」により行われる。
【００４４】
有効桁数が２である場合の検索範囲「８３〜８９」の範囲検索処理は、以下のように行われる。範囲検索処理を行う検索装置は、検索範囲の下限の数値「８３」について、有効桁数として「２」を取得する。検索装置は、検索範囲の数値について、第１位の数字として「８」を取得する。検索装置は、検索範囲の数値について、第２位の数字として、「３〜９」を取得する。
【００４５】
検索装置は、有効桁数の値域から、有効桁数「２」を特定する。検索装置は、ビットマップ型インデックスＢＩから、特定した有効桁数「２」に対応するビットマップを取得する。この結果、検索装置は、有効桁数「２」に合致する出現位置を絞り込むことができる。
【００４６】
検索装置は、第１位の値域から、第１位の数字「８」を特定する。検索装置は、ビットマップ型インデックスＢＩから、特定した第１位の数字「８」に対応するビットマップを取得する。そして、検索装置は、直前の有効桁数「２」の絞り込み結果と今回の第１位の数字「８」の絞り込み結果とをＡＮＤ演算する。この結果、検索装置は、有効桁数「２」と第１位の数字「８」とに合致する出現位置を絞り込むことができる。
【００４７】
検索装置は、第２位の値域から、第２位の数字「３」〜「９」を特定する。検索装置は、ビットマップ型インデックスＢＩから、特定した第２位の数字「３」〜「９」に対応するビットマップを取得する。そして、検索装置は、取得した数字「３」〜「９」に対応するそれぞれのビットマップをＯＲ演算する。そして、検索装置は、直前の第１位の数字「８」の絞り込み結果と今回の第２位の数字「３」〜「９」の演算結果とをＡＮＤ演算する。この結果、検索装置は、有効桁数「２」と第１位の数字「８」と第２位の数字「３」〜「９」とに合致する出現位置を絞り込むことができる。この絞り込み結果が検索範囲「８３〜８９」の絞り込み結果であり、ここでは、Ａ１とする。
【００４８】
次に、有効桁数が２である場合の検索範囲「９０〜９９」の範囲検索処理は、以下のように行われる。検索装置は、検索範囲の数値について、第１位の数字として「９」を取得する。
【００４９】
検索装置は、第１位の値域から、第１位の数字「９」を特定する。検索装置は、ビットマップ型インデックスＢＩから、特定した第１位の数字「９」に対応するビットマップを取得する。そして、検索装置は、既に取得された有効桁数「２」のビットマップと今回取得された第１位の数字「９」のビットマップとをＡＮＤ演算する。この結果、検索装置は、有効桁数「２」と第１位の数字「９」とに合致する出現位置を絞り込むことができる。この絞り込み結果が検索範囲「９０〜９９」の絞り込み結果であり、ここでは、Ａ２とする。
【００５０】
図５Ｂに示すように、有効桁数が３である場合の条件「１００〜９９９」の範囲検索処理は、以下のように行われる。検索装置は、検索範囲の数値について、有効桁数として「３」を取得する。検索装置は、有効桁数の値域から、有効桁数「３」を特定する。検索装置は、ビットマップ型インデックスＢＩから、特定した有効桁数「３」に対応するビットマップを取得する。この結果、検索装置は、有効桁数「３」に合致する出現位置を絞り込むことができる。この絞り込み結果が検索範囲「１００〜９９９」の絞り込み結果であり、ここでは、Ａ３とする。
【００５１】
図５Ｃ〜図５Ｅに示すように、有効桁数が４である場合の条件「１０００〜２１６７」の範囲検索処理は、「１０００〜１９９９」、「２０００〜２０９９」、「２１００〜２１５９」および「２１６０〜２１６７」により行われる。
【００５２】
図５Ｃに示すように、有効桁数が４である場合の検索範囲「１０００〜１９９９」の範囲検索処理は、以下のように行われる。検索装置は、検索範囲の数値について、有効桁数として「４」を取得する。検索装置は、検索範囲の数値について、第１位の数字として「１」を取得する。
【００５３】
検索装置は、有効桁数の値域から、有効桁数「４」を特定する。検索装置は、ビットマップ型インデックスＢＩから、特定した有効桁数「４」に対応するビットマップを取得する。この結果、検索装置は、有効桁数「４」に合致する出現位置を絞り込むことができる。
【００５４】
検索装置は、第１位の値域から、第１位の数字「１」を特定する。検索装置は、ビットマップ型インデックスＢＩから、特定した第１位の数字「１」に対応するビットマップを取得する。そして、検索装置は、直前の有効桁数「４」の絞り込み結果と今回の第１位の数字「１」の絞り込み結果とをＡＮＤ演算する。この結果、検索装置は、有効桁数「４」と第１位の数字「１」とに合致する出現位置を絞り込むことができる。この絞り込み結果が検索範囲「１０００〜１９９９」の絞り込み結果であり、ここでは、Ａ４とする。
【００５５】
次に、有効桁数が４である場合の検索範囲「２０００〜２０９９」の範囲検索処理は、以下のように行われる。検索装置は、検索範囲の数値について、第１の数字として「２」を取得する。検索装置は、検索範囲の数値について、第２位の数字として「０」を取得する。
【００５６】
検索装置は、第１位の値域から、第１位の数字「２」を特定する。検索装置は、ビットマップ型インデックスＢＩから、特定した第１位の数字「２」に対応するビットマップを取得する。そして、検索装置は、既に取得された有効桁数「４」のビットマップと今回取得された第１位の数字「２」のビットマップとをＡＮＤ演算する。この結果、検索装置は、有効桁数「４」と第１位の数字「２」とに合致する出現位置を絞り込むことができる。
【００５７】
検索装置は、第２位の値域から、第２位の数字「０」を特定する。検索装置は、ビットマップ型インデックスＢＩから、特定した第２位の数字「０」に対応するビットマップを取得する。そして、検索装置は、直前の第１位の数字「２」の絞り込み結果と今回の第２位の数字「０」の絞り込み結果とをＡＮＤ演算する。この結果、検索装置は、有効桁数「４」と第１位の数字「２」と第２位の数字「０」とに合致する出現位置を絞り込むことができる。この絞り込み結果が検索範囲「２０００〜２０９９」の絞り込み結果であり、ここでは、Ａ５とする。
【００５８】
図５Ｄに示すように、有効桁数が４である場合の検索範囲「２１００〜２１５９」の範囲検索処理は、以下のように行われる。検索装置は、検索範囲の数値について、第２位の数字として「１」を取得する。検索装置は、検索範囲の数値について、第３位の数字として、「０〜５」を取得する。
【００５９】
検索装置は、第２位の値域から、第２位の数字「１」を特定する。検索装置は、ビットマップ型インデックスＢＩから、特定した第２位の数字「１」に対応するビットマップを取得する。そして、検索装置は、既に絞り込まれた有効桁数「４」と第１位の数字「２」との絞り込み結果と今回取得された第２位の数字「１」のビットマップとをＡＮＤ演算する。この結果、検索装置は、有効桁数「４」と第１位の数字「２」と第２位の数字「１」とに合致する出現位置を絞り込むことができる。
【００６０】
検索装置は、第３位の値域から、第３位の数字「０」〜「５」を特定する。検索装置は、ビットマップ型インデックスＢＩから、特定した第３位の数字「０」〜「５」に対応するビットマップを取得する。そして、検索装置は、取得した数字「０」〜「５」に対応するそれぞれのビットマップをＯＲ演算する。そして、検索装置は、直前の第２位の数字「１」の絞り込み結果と今回の第３位の数字「０」〜「５」の演算結果とをＡＮＤ演算する。この結果、検索装置は、有効桁数「４」と第１位の数字「２」と第２位の数字「１」と第３位の数字「０」〜「５」とに合致する出現位置を絞り込むことができる。この絞り込み結果が検索範囲「２１００〜２１５９」の絞り込み結果であり、ここでは、Ａ６とする。
【００６１】
図５Ｅに示すように、有効桁数が４である場合の検索範囲「２１６０〜２１６７」の範囲検索処理は、以下のように行われる。検索装置は、検索範囲の数値について、第３位の数字として「６」を取得する。検索装置は、検索範囲の数値について、第４位の数字として、「０〜７」を取得する。
【００６２】
検索装置は、第３位の値域から、第３位の数字「６」を特定する。検索装置は、ビットマップ型インデックスＢＩから、特定した第３位の数字「６」に対応するビットマップを取得する。そして、検索装置は、既に絞り込まれた有効桁数「４」と第１位の数字「２」と第２位の数字「１」との絞り込み結果と今回取得された第３位の数字「６」のビットマップとをＡＮＤ演算する。この結果、検索装置は、有効桁数「４」と第１位の数字「２」と第２位の数字「１」と第３位の数字「６」とに合致する出現位置を絞り込むことができる。
【００６３】
検索装置は、第４位の値域から、第４位の数字「０」〜「７」を特定する。検索装置は、ビットマップ型インデックスＢＩから、特定した第４位の数字「０」〜「７」に対応するビットマップを取得する。そして、検索装置は、取得した数字「０」〜「７」に対応するそれぞれのビットマップをＯＲ演算する。そして、検索装置は、直前の第３位の数字「６」の絞り込み結果と今回の第４位の数字「０」〜「７」の演算結果とをＡＮＤ演算する。この結果、検索装置は、有効桁数「４」と第１位の数字「２」と第２位の数字「１」と第３位の数字「６」と第４位の数字「０」〜「７」とに合致する出現位置を絞り込むことができる。この絞り込み結果が検索範囲「２１６０〜２１６７」の絞り込み結果であり、ここでは、Ａ７とする。
【００６４】
そして、検索装置は、全ての絞り込み結果の論理和を演算する。すなわち、検索装置は、Ａ１〜Ａ７のそれぞれの絞り込み結果をＯＲ演算する。この演算結果が、検索対象が「８３〜２１６７」である場合の検索結果である。
【００６５】
このようにして、検索装置は、検索対象の数値の各位の数字に対応するビットマップを用いて、範囲検索における数値の出現位置を検索する。この結果、検索装置は、実データであるテキストデータＦ１を参照しないで、数値の範囲検索をすることで、数値の範囲検索を高速化することができる。
【００６６】
［インデックス生成装置の構成］
図６は、実施例１に係るインデックス生成装置の構成の一例を示す機能ブロック図である。図６に示すように、インデックス生成装置１００は、制御部１１０および記憶部１２０を有する。
【００６７】
制御部１１０は、図１に示したビットマップ型インデックスＢＩの生成処理を実行する処理部である。制御部１１０は、ファイルリード部１１１、数値取得部１１２、有効桁数／位数字取得部１１３およびインデックス生成部１１４を有する。
【００６８】
記憶部１２０は、例えばフラッシュメモリ（Flash  Memory）やＦＲＡＭ（登録商標）（Ferroelectric  Random  Access  Memory）などの不揮発性の半導体メモリ素子などの記憶装置に対応する。記憶部１２０は、ビットマップ型インデックス１２１を有する。
【００６９】
ビットマップ型インデックス１２１は、対象のテキストデータＦ１に出現する数値がいずれかに割り当てられる複数の値域それぞれについて、数値が出現する出現位置に対応付けたビットマップの集合である。なお、ビットマップ型インデックス１２１は、ビットマップ型インデックスＢＩに対応する。ビットマップ型インデックス１２１は、図２と同様であるので、その説明を省略する。
【００７０】
ファイルリード部１１１は、対象のファイルを記憶領域に読み出す。
【００７１】
数値取得部１１２は、記憶領域からテキストデータＦ１を読み出し、読み出したテキストデータＦ１に対して字句解析を行う。数値取得部１１２は、字句解析した結果の数値をテキストデータＦ１の先頭から順番に取得する。数値取得部１１２は、取得した数値と、テキストデータＦ１内の出現位置とを対応付けて有効桁数／位数字取得部１１３に出力する。
【００７２】
有効桁数／位数字取得部１１３は、数値取得部１１２によって出力された数値について、有効桁数および位ごとの数字を取得する。有効桁数／位数字取得部１１３は、数値、出現位置、有効桁数および位ごとの数字を対応付けてインデックス生成部１１４に出力する。
【００７３】
インデックス生成部１１４は、ビットマップ型インデックス１２１を生成する。例えば、インデックス生成部１１４は、有効桁数／位数字取得部１１３から数値、出現位置、有効桁数および位ごとの数字に対応付けられた情報を入力する。インデックス生成部１１４は、有効桁数の値域を一纏めにしたビットマップ群のうち、入力された情報に含まれる数値の有効桁数に対応するビットマップを選択する。インデックス生成部１１４は、選択したビットマップが数値の出現位置に対応するビットマップと重なるビットに出現ビットを書き込む。インデックス生成部１１４は、第ｎ位の値域を一纏めにしたビットマップ群のうち、入力された情報に含まれる数値の第ｎ位の数字に対応するビットマップを選択する。インデックス生成部１１４は、選択したビットマップが数値の出現位置に対応するビットマップと重なるビットに出現ビットを書き込む。ここでいう「ｎ」は、入力された情報の位に対応するものとする。入力された情報の位が複数存在する場合には、存在する複数の位ごと、選択処理、書き込み処理が行われる。
【００７４】
［インデックス生成処理のフローチャート］
図７は、実施例１に係るインデックス生成処理のフローチャートの一例を示す図である。
【００７５】
図７に示すように、制御部１１０は、前処理を実行する（ステップＳ１１）。例えば、制御部１１０は、各種記憶領域を記憶部１２０に確保する。そして、制御部１１０は、対象のファイルを読出し、読出用の記憶領域にテキストデータＦ１を格納する（ステップＳ１２）。
【００７６】
そして、制御部１１０は、読出用の記憶領域の先頭から順番に数値を読み出す（ステップＳ１３）。例えば、制御部１１０は、読出用の記憶領域に記憶されたテキストデータＦ１に対して字句解析を行って、先頭から順番に数値を読み出す。
【００７７】
そして、制御部１１０は、読み出した数値の有効桁数を取得する（ステップＳ１４）。制御部１１０は、読み出した数値の位ごとの数字を取得する（ステップＳ１５）。
【００７８】
そして、制御部１１０は、取得した有効桁数に対するビットマップの、数値の出現位置に対するビットに「１」を書き込む（ステップＳ１６）。例えば、制御部１１０は、有効桁数の値域を一纏めにしたビットマップ群のうち、取得した有効桁数に対応するビットマップを選択する。制御部１１０は、選択したビットマップが数値の出現位置に対応するビットマップと重なるビットに出現ビットを示す「１」を書き込む。
【００７９】
そして、制御部１１０は、取得した位ごとの数字に対するビットマップの、数値の出現位置に対するビットに「１」を書き込む（ステップＳ１７）。例えば、数字が２桁の場合には、制御部１１０は、第１位の値域を一纏めにしたビットマップ群のうち、第１位の数字に対応するビットマップを選択する。インデックス生成部１１４は、選択したビットマップが数値の出現位置に対応するビットマップと重なるビットに出現ビットを示す「１」を書き込む。制御部１１０は、第２位の値域を一纏めにしたビットマップ群のうち、第２位の数字に対応するビットマップを選択する。インデックス生成部１１４は、選択したビットマップが数値の出現位置に対応するビットマップと重なるビットに出現ビットを示す「１」を書き込む。
【００８０】
そして、制御部１１０は、ファイルの終点か否かを判定する（ステップＳ１８）。ファイルの終点でないと判定した場合には（ステップＳ１８；Ｎｏ）、制御部１１０は、次の数値を読み出すべく、ステップＳ１３に移行する。
【００８１】
一方、ファイルの終点であると判定した場合には（ステップＳ１８；Ｙｅｓ）、制御部１１０は、ビットマップ型インデックス１２１を記憶部１２０に格納する（ステップＳ１９）。そして、制御部１１０は、インデックス生成処理を終了する。
【００８２】
［検索装置の構成］
図８は、実施例１に係る検索装置の構成の一例を示す機能ブロック図である。図８に示すように、検索装置２００は、制御部２１０および記憶部２２０を有する。
【００８３】
制御部２１０は、図３〜図５Ｅに示した検索処理を実行する処理部である。制御部２１０は、検索条件受付部２１１、数値検索部２１２、範囲検索部２１３および検索結果出力部２１４を有する。
【００８４】
記憶部２２０は、例えばフラッシュメモリ（Flash  Memory）やＦＲＡＭ（登録商標）（Ferroelectric  Random  Access  Memory）などの不揮発性の半導体メモリ素子などの記憶装置に対応する。記憶部２２０は、ビットマップ型インデックス２２１を有する。
【００８５】
ビットマップ型インデックス２２１は、図２と同様であるので、その説明を省略する。
【００８６】
検索条件受付部２１１は、検索条件を受け付ける。例えば、検索条件受付部２１１は、検索条件として数値を受け付け、受け付けた数値を数値検索部２１２に出力する。また、検索条件受付部２１１は、検索条件として数値範囲を受け付け、受け付けた数値範囲を範囲検索部２１３に出力する。検索条件が数値範囲の場合には、下限の数値と上限の数値とが含まれる。
【００８７】
数値検索部２１２は、検索条件が数値である場合には、ビットマップ型インデックス２２１を用いて、数値を検索する。
【００８８】
例えば、数値検索部２１２は、検索条件受付部２１１によって出力された検索条件を、検索条件が示す数値の有効桁数および位ごとの数字それぞれの値域に対応した条件に変換する。一例として、数値検索部２１２は、検索条件受付部２１１によって出力された数値について、有効桁数および位ごとの数字を取得する。そして、数値検索部２１２は、検索条件を、取得した有効桁数および位ごとの数字それぞれの値域に対応した条件に変換する。
【００８９】
そして、数値検索部２１２は、変換した条件を、ビットマップ型インデックス２２１の複数の値域それぞれを用いて検索する。例えば、数値検索部２１２は、有効桁数の値域から、取得した有効桁数を特定する。数値検索部２１２は、ビットマップ型インデックス２２１から、特定した有効桁数に対応するビットマップを取得する。そして、数値検索部２１２は、位ごとの値域から、取得した位の数字を特定し、特定した位の数字に対応するビットマップをビットマップ型インデックス２２１から取得する。そして、数値検索部２１２は、取得した有効桁数に対応するビットマップと、数値に該当する位の数字に対応するそれぞれのビットマップとをＡＮＤ演算する。数値検索部２１２は、演算結果のビットマップ（絞り込み結果）を検索結果出力部２１４に出力する。すなわち、数値検索部２１２は、検索条件が示す数値の出現位置を検索する。
【００９０】
範囲検索部２１３は、検索条件が数値範囲である場合には、ビットマップ型インデックス２２１を用いて、数値範囲を検索する。
【００９１】
例えば、範囲検索部２１３は、検索条件受付部２１１によって出力された検索条件を、有効桁数ごとの検索範囲の条件に場合分けする。すなわち、範囲検索部２１３は、下限の数値の有効桁数における検索範囲の条件、上限の数値の有効桁数における検索範囲の条件と、下限の数値の有効桁数と上限の数値の有効桁数との間の中間の有効桁数における検索範囲の条件に場合分けする。
【００９２】
そして、範囲検索部２１３は、下限の数値の有効桁数における検索範囲の条件を、検索範囲内の数値を用いて、数値の有効桁数および位ごとの数字それぞれの値域に対応した条件に変換する。そして、範囲検索部２１３は、変換した条件を、ビットマップ型インデックス２２１の複数の値域それぞれを用いて検索する。
【００９３】
そして、範囲検索部２１３は、上限の数値の有効桁数における検索範囲の条件を、検索範囲内の数値を用いて、数値の有効桁数および位ごとの数字それぞれの値域に対応した条件に変換する。そして、範囲検索部２１３は、変換した条件を、ビットマップ型インデックス２２１の複数の値域それぞれを用いて検索する。
【００９４】
そして、範囲検索部２１３は、中間の有効桁数があれば、中間の有効桁数における検索範囲の条件を、有効桁数の値域に対応した条件に変換する。そして、範囲検索部２１３は、変換した条件を、ビットマップ型インデックス２２１の有効桁数の値域を用いて検索する。
【００９５】
そして、範囲検索部２１３は、有効桁数ごとに検索された結果の論理和（ＯＲ）を演算する。範囲検索部２１３は、演算結果のビットマップ（絞り込み結果）を検索結果出力部２１４に出力する。すなわち、範囲検索部２１３は、検索条件が示す数値範囲の出現位置を検索する。
【００９６】
検索結果出力部２１４は、検索結果を出力する。例えば、検索結果出力部２１４は、数値検索部２１２によって出力された検索結果のビットマップに出現ビットを示す「１」が存在するか否かを判定する。検索結果出力部２１４は、出現ビットを示す「１」が存在している場合には、「１」が存在している出現位置を検索結果として出力する。検索結果出力部２１４は、出現ビットを示す「１」が存在しない場合には、検索対象が存在しない旨を検索結果として出力する。
【００９７】
［検索処理のフローチャート］
図９は、実施例１に係る検索処理のフローチャートの一例を示す図である。
【００９８】
図９に示すように、制御部２１０は、検索条件を受け付けたか否かを判定する（ステップＳ２１）。検索条件を受け付けていないと判定した場合には（ステップＳ２１；Ｎｏ）、制御部２１０は、検索条件を受け付けるまで、判定処理を繰り返す。
【００９９】
一方、検索条件を受け付けたと判定した場合には（ステップＳ２１；Ｙｅｓ）、制御部２１０は、検索条件が数値であるか否かを判定する（ステップＳ２２）。検索条件が数値であると判定した場合には（ステップＳ２２；Ｙｅｓ）、制御部２１０は、数値検索処理を実行する（ステップＳ２３）。そして、制御部２１０は、ステップＳ２５に移行する。なお、数値検索処理のフローチャートは、後述する。
【０１００】
一方、検索条件が数値でないと判定した場合には（ステップＳ２２；Ｎｏ）、制御部２１０は、範囲検索処理を実行する（ステップＳ２４）。そして、制御部２１０は、ステップＳ２５に移行する。なお、範囲検索処理のフローチャートは、後述する。
【０１０１】
ステップＳ２５において、制御部２１０は、戻りのビットマップに「１」が存在するか否かを判定する（ステップＳ２５）。戻りのビットマップに「１」が存在すると判定した場合には（ステップＳ２５；Ｙｅｓ）、制御部２１０は、「１」が存在する出現位置を検索結果として出力する（ステップＳ２６）。そして、制御部２１０は、検索処理を終了する。
【０１０２】
一方、戻りのビットマップに「１」が存在しないと判定した場合には（ステップＳ２５；Ｎｏ）、制御部２１０は、検索対象が存在しない旨を検索結果として出力する（ステップＳ２７）。そして、制御部２１０は、検索処理を終了する。
【０１０３】
［数値検索処理のフローチャート］
図１０は、実施例１に係る数値検索処理のフローチャートの一例を示す図である。
【０１０４】
図１０に示すように、制御部２１０は、検索対象の数値について、有効桁数および位ごとの数字を取得する（ステップＳ３１）。制御部２１０は、取得した有効桁数に対応するビットマップで絞り込む（ステップＳ３２）。例えば、制御部２１０は、有効桁数の値域から、取得した有効桁数を特定する。制御部２１０は、ビットマップ型インデックス２２１から、特定した有効桁数に対応するビットマップを取得する。すなわち、制御部２１０は、有効桁数に合致する出現位置を絞り込む。
【０１０５】
そして、制御部２１０は、１つの位を選択する（ステップＳ３３）。制御部２１０は、選択した位の数字に対応するビットマップで絞り込む（ステップＳ３４）。例えば、制御部２１０は、選択した位の値域から、選択した位の数字に対応するビットマップを取得する。すなわち、制御部２１０は、選択した位の数字に合致する出現位置を絞り込む。そして、制御部２１０は、直前の属性の絞り込み結果と選択した位の絞り込み結果とをＡＮＤ演算する。すなわち、制御部２１０は、直前の属性と選択した属性とに合致する出現位置を絞り込む。
【０１０６】
そして、制御部２１０は、未選択の位があるか否かを判定する(ステップＳ３５)。未選択の位があると判定した場合には（ステップＳ３５；Ｙｅｓ）、制御部２１０は、次の位を選択すべく、ステップＳ３３に移行する。
【０１０７】
一方、未選択の位がないと判定した場合には（ステップＳ３５；Ｎｏ）、制御部２１０は、絞り込んだ結果のビットマップを検索処理に戻す（ステップＳ３６）。そして、制御部２１０は、数値検索処理を終了する。
【０１０８】
［範囲検索処理のフローチャート］
図１１は、実施例１に係る範囲検索処理のフローチャートの一例を示す図である。
【０１０９】
図１１に示すように、制御部２１０は、検索対象の下限の数値について、有効桁数および位ごとの数字を取得する（ステップＳ４１）。制御部２１０は、検索対象の上限の数値について、有効桁数および位ごとの数字を取得する（ステップＳ４２）。
【０１１０】
そして、制御部２１０は、有効桁数により検索範囲を分割する（ステップＳ４３）。すなわち、制御部２１０は、検索対象を、下限の数値の有効桁数における検索範囲、上限の数値の有効桁数における検索範囲と、下限の数値の有効桁数と上限の数値の有効桁数との間の中間の有効桁数における検索範囲とに分割する。
【０１１１】
そして、制御部２１０は、下限の数値の有効桁数における検索範囲について、有効桁数および位ごとの数字に対応するビットマップで絞り込む（ステップＳ４４）。
【０１１２】
そして、制御部２１０は、下限の有効桁数と上限の有効桁数との間の中間の有効桁数に対応するビットマップで絞り込む（ステップＳ４５）。
【０１１３】
そして、制御部２１０は、上限の数値の有効桁数における検索範囲について、有効桁数および位ごとの数字に対応するビットマップで絞り込む（ステップＳ４６）。
【０１１４】
そして、制御部２１０は、有効桁数ごとに得られたビットマップの論理和（ＯＲ）を演算する（ステップＳ４７）。制御部２１０は、演算結果のビットマップ（絞り込み結果）を検索処理に戻す（ステップＳ４８）。そして、制御部２１０は、範囲検索処理を終了する。
【０１１５】
［実施例１の効果］
上記実施例１によれば、インデックス生成装置１００は、対象のテキストデータＦ１に出現する数値から、数値が持つ複数の属性に対応するそれぞれの値を取得する。インデックス生成装置１００は、複数の属性に対応するそれぞれの値を複数の属性それぞれの値域に対応付ける。そして、インデックス生成装置１００は、対応付けたそれぞれの値域を含む複数の値域それぞれについて、数値の出現する出現位置に対応付けたビットマップのビットマップ型インデックス１２１を生成する。かかる構成によれば、インデックス生成装置１００は、サイズ肥大を抑えながら、実体参照することなく、数値検索が可能なビットマップ型インデックス１２１を生成することができる。
【０１１６】
また、上記実施例１によれば、それぞれの値域の範囲は、テキストデータＦ１に対する過去の数値検索の条件に利用された数値検索履歴の有効桁数や各位の数字に基づき設定される。かかる構成によれば、インデックス生成装置１００は、インデックスを生成する際に、さらにサイズ肥大を抑えながら、数値検索が可能なビットマップ型インデックス１２１を生成することができる。
【０１１７】
また、上記実施例１によれば、検索装置２００は、所定の数値検索の条件を受け付け、受け付けた数値検索の条件を、数値が持つ複数の属性それぞれの値域に対応した条件に変換する。検索装置２００は、変換した条件を、ビットマップ型インデックス１２１を用いて検索する。かかる構成によれば、検索装置２００は、ビットマップ型インデックス１２１を用いて数値を検索することで、実体参照することなく、数値検索を高速化できる。
【０１１８】
また、上記実施例１によれば、検索装置２００は、所定の数値検索の条件が数値の範囲を示す条件である場合には、数値の範囲を示す条件を、有効桁数ごとの条件に分割する。そして、検索装置２００は、変換する処理および検索する処理について、該分割したそれぞれの条件に対して実行する。かかる構成によれば、検索装置２００は、複数の属性に含まれる属性である有効桁数を用いて条件を分割することで、ビットマップ型インデックス１２１を用いた数値の範囲検索を高速化できる。
【０１１９】
また、上記実施例１によれば、検索装置２００は、ビットマップ型インデックス１２１のみを参照して、数値検索の結果を返答する。かかる構成によれば、検索装置２００は、実体参照することなく、数値を検索することができ、数値検索を高速化できる。
【実施例２】
【０１２０】
ところで、実施例１では、インデックス生成装置１００は、１０進数の数値を対象として、ビットマップ型インデックスＢＩを生成する場合を説明した。検索装置２００は、１０進数の数値を対象として、ビットマップ型インデックスＢＩを参照して数値を検索する場合を説明した。しかしながら、インデックス生成装置１００は、これに限定されず、２進数の数値を対象として、ビットマップ型インデックスＢＩ２を生成しても良い。検索装置２００は、これに限定されず、２進数の数値を対象として、ビットマップ型インデックスＢＩ２を参照して数値を検索しても良い。
【０１２１】
そこで、実施例２では、インデックス生成装置１００は、２進数の数値を対象として、ビットマップ型インデックスＢＩ２を生成する場合を説明する。検索装置２００は、２進数の数値を対象として、ビットマップ型インデックスＢＩ２を参照して数値を検索する場合を説明する。
【０１２２】
［実施例２に係るビットマップ型インデックス生成処理の一例］
図１２は、実施例２に係るビットマップ型インデックスの生成処理の流れの一例を示す図である。図１２に示すように、テキストデータＦ２は、２進数の数値を含む文書である。インデックス生成装置１００は、数値が持つ有効桁数、位の数字などの複数の属性について、それぞれの値域を一纏めにして、テキストデータＦ２に出現する数値の出現位置に対応付けたビットマップ型インデックスＢＩ２を生成する。
【０１２３】
このビットマップ型インデックスＢＩ２は、数値の有効桁数および数値の位などの複数の属性について、それぞれの値域を一纏めにしたビットマップ群である。すなわち、ビットマップ型インデックスＢＩ２は、対象のテキストデータＦ２に出現する数値がいずれかに割り当てられる複数の値域それぞれについて、数値が出現する出現位置に対応付けたビットマップのインデックス情報のことをいう。数値の位の値域は、０と１のみである。そして、出現位置に存在する数値は、出現位置に対応する複数の値域それぞれのビットを纏めたビットマップで表すことができる。
【０１２４】
図１２に示すように、数値が「ｂ１ｂ２ｂ３ｂ４ｂ５ｂ６ｂ７」であるとする。なお、ｂ１ｂ２ｂ３ｂ４ｂ５ｂ６ｂ７は、有効桁数が７である２進数である。インデックス生成装置１００は、数値の有桁桁数として「７」を取得する。インデックス生成装置１００は、第１位の数字として「ｂ１」、第２位の数字として「ｂ２」、第３位の数字として「ｂ３」、第４位の数字として「ｂ４」、第５位の数字として「ｂ５」、第６位の数字として「ｂ６」、第７位の数字として「ｂ７」を取得する。
【０１２５】
インデックス生成装置１００は、有効桁数の値域を一纏めにしたビットマップ群のうち数値の有効桁数「７」に対応するビットマップを選択する。そして、インデックス生成装置１００は、選択したビットマップが数値の出現位置に対応するビットマップと重なるビットに「１」を設定する。また、インデックス生成装置１００は、第１位の値域を一纏めにしたビットマップ群のうち数値の第１位の数字「ｂ１」に対応するビットマップを選択する。そして、インデックス生成装置１００は、選択したビットマップが数値の出現位置に対応するビットマップと重なるビットに「１」を設定する。また、インデックス生成装置１００は、第２位の値域を一纏めにしたビットマップ群のうち数値の第２位の数字「ｂ２」に対応するビットマップを選択する。そして、インデックス生成装置１００は、選択したビットマップが数値の出現位置に対応するビットマップと重なるビットに「１」を設定する。同様に、インデックス生成装置１００は、第３位の数字「ｂ３」、第４位の数字「ｂ４」、第５位の数字「ｂ５」、第６位の数字「ｂ６」、第７位の数字「ｂ７」についても、同様に、ビットマップ型インデックスＢＩ２に設定する。
【０１２６】
［ビットマップ型インデックスの一例］
次に、実施例２に係るビットマップ型インデックスＢＩ２の一例を、図１３を参照して説明する。図１３は、実施例２に係るビットマップ型インデックスの一例を示す図である。図１３に示すように、ビットマップ型インデックスＢＩ２は、Ｘ軸をオフセット（出現位置）として、Ｙ軸を数値とする。ビットマップ型インデックスＢＩ２は、数値の有効桁数の値域、数値の第ｎ位の値域ごとにビットマップ群を対応付ける。ｎは、有効桁数の最大値と同じ数値である。ここでは、ｎは、一例として、１２以上の自然数である。
【０１２７】
Ｘ軸のオフセット（出現位置）は、テキストデータＦ２内の出現位置を示す。テキストデータＦ２は、単一のファイルのデータであっても良いし、複数のファイルのデータであっても良い。テキストデータＦ２は、単一のブロックのデータであっても良いし、複数のブロックのデータであっても良い。そして、オフセットごとにビットマップが割り当てられる。
【０１２８】
Ｙ軸の数値は、有効桁数と第ｎ位の数字とから表わすことができる。有効桁数とは、数値に対応する有効桁数を示す。有効桁数の値域は、１〜ｎである。第１位とは、数値の最上位の値域を示す。第１位の値域は、０，１である。第２位とは、数値の２番目の値域を示す。第２位の値域は、０，１である。第３位とは、数値の３番目の値域を示す。第３位の値域は、０，１である。第４位とは、数値の４番目の値域を示す。第４位の値域は、０，１である。第ｎ位とは、数値のｎ番目の値域を示す。第ｎ位の値域は、０，１である。
【０１２９】
そして、有効桁数の値域に含まれる値ごとにビットマップが割り当てられる。第１位の値域に含まれる値（数字）ごとにビットマップが割り当てられる。第２位の値域に含まれる値（数字）ごとにビットマップが割り当てられる。第３位の値域に含まれる値（数字）ごとにビットマップが割り当てられる。第４位の値域に含まれる値（数字）ごとにビットマップが割り当てられる。第ｎ位の値域に含まれる値（数字）ごとにビットマップが割り当てられる。
【０１３０】
例えば、ビットマップ型インデックスＢＩ２の５列目は、数値「１０１００１１」（１０進数の８３）のオフセット「５」のビットマップである。有効桁数として「７」のビット位置に「１」が設定されている。第１位の数字として「１」のビット位置に「１」が設定されている。第２位の数字として「０」のビット位置に「１」が設定されている。第３位の数字として「１」のビット位置に「１」が設定されている。第４位の数字として「０」のビット位置に「１」が設定されている。
【０１３１】
また、ビットマップ型インデックスＢＩ２の２０列目は、数値「１００００１１１０１１１」（１０進数の２１６７）のオフセット「２０」のビットマップである。有効桁数として「１２」のビット位置に「１」が設定されている。第１位の数字として「１」のビット位置に「１」が設定されている。第２位の数字として「０」のビット位置に「１」が設定されている。第３位の数字として「０」のビット位置に「１」が設定されている。第４位の数字として「０」のビット位置に「１」が設定されている。
【０１３２】
このようにして、インデックス生成装置１００は、有効桁数および複数の値域それぞれについて、数値が出現する出現位置に対応付けたビットマップのインデックス情報であるビットマップ型インデックスＢＩ２を生成する。
【０１３３】
［数値検索処理の一例］
図１４は、実施例２に係る数値検索処理の流れの一例を示す図である。図１４に示すように、検索装置２００は、数値検索や数値の範囲検索の検索クエリである条件に応じて数値の属性に対応した値域を分割し、それぞれの属性のビットマップを組合せて絞り込みを行う。すなわち、検索装置２００は、数値検索の条件を受け付け、受け付けた数値検索の条件を、数値が持つ複数の属性に対応付けた複数の値域を用いた条件に変換する。そして、検索装置２００は、変換した条件を、ビットマップ型インデックスＢＩ２の複数の値域それぞれを用いて検索する。
【０１３４】
図１４に示すように、数値検索の条件が示す検索対象が「１００００１１１０１１１」であるとする。なお、「１００００１１１０１１１」（２１６７）は、有効桁数が１２である２進数である。検索装置２００は、検索対象の数値について、有効桁数として「１２」を取得する。検索装置２００は、検索対象の数値について、第１位の数字として「１」、第２位〜第５位の数字として「０」、第６位〜第８位の数字として「１」、第９位の数字として「０」、第１０位〜第１２位の数字として「１」を取得する。そして、検索装置２００は、検索対象の条件を、取得した有効桁数、取得した第１位〜第１２位の数字を用いた条件に変換する。
【０１３５】
検索装置２００は、有効桁数の値域から、変換した条件に含まれる有効桁数「１２」を特定する。検索装置２００は、ビットマップ型インデックスＢＩ２から、特定した有効桁数「１２」に対応するビットマップを取得する。この結果、検索装置２００は、有効桁数「１２」に合致する出現位置を絞り込むことができる。
【０１３６】
検索装置２００は、第１位の値域から、変換した条件に含まれる第１位の数字「１」を特定する。検索装置２００は、ビットマップ型インデックスＢＩ２から、特定した第１位の数字「１」に対応するビットマップを取得する。そして、検索装置２００は、直前の有効桁数「１２」の絞り込み結果と今回の第１位の数字「１」の絞り込み結果とをＡＮＤ演算する。この結果、検索装置２００は、有効桁数「１２」と第１位の数字「１」とに合致する出現位置を絞り込むことができる。
【０１３７】
検索装置２００は、第２位の値域から、変換した条件に含まれる第２位の数字「０」を特定する。検索装置２００は、ビットマップ型インデックスＢＩ２から、特定した第２位の数字「０」に対応するビットマップを取得する。そして、検索装置２００は、直前の第１位の数字「１」の絞り込み結果と今回の第２位の数字「０」の絞り込み結果とをＡＮＤ演算する。この結果、検索装置２００は、有効桁数「１２」と第１位の数字「１」と第２位の数字「０」とに合致する出現位置を絞り込むことができる。
【０１３８】
検索装置２００は、同様に、第３位〜第１１位のそれぞれの値域を用いて、直前の位の数字の絞り込み結果と今回の位の数字の絞り込み結果とをＡＮＤ演算する。
【０１３９】
そして、検索装置２００は、第１２位の値域から、変換した条件に含まれる第１２位の数字「１」を特定する。検索装置２００は、ビットマップ型インデックスＢＩ２から、特定した第１２位の数字「１」に対応するビットマップを取得する。そして、検索装置２００は、直前の第１１位の数字「１」の絞り込み結果と今回の第１２位の数字「１」の絞り込み結果とをＡＮＤ演算する。この結果、検索装置２００は、検索対象の数値の有効桁数と第１位〜第１２位のそれぞれの数字とに合致する出現位置を絞り込むことができる。
【０１４０】
この結果、検索装置２００は、有効桁数「４」と第１位の数字「２」と第２位の数字「１」と第３位の数字「６」と第４の数字「７」とに合致する出現位置ｘを絞り込むことができる。すなわち、検索装置２００は、数値検索の条件が示す検索対象が「１００００１１１０１１１」の出現位置を「ｙ」として検索する。
【０１４１】
このようにして、検索装置２００は、検索対象の数値の各位の数字に対応するビットマップを用いて、検索対象の数値の出現位置を検索する。この結果、検索装置２００は、実データであるテキストデータＦ２を参照しないで、数値を検索することで、数値検索を高速化することができる。
【０１４２】
［範囲検索処理の一例］
図１５は、実施例２に係る範囲検索処理の一例を示す図である。図１５に示すように、検索装置２００は、数値の範囲検索の条件を受け付け、受け付けた範囲検索の条件を有効桁数ごとの条件に分割する。
【０１４３】
例えば、数値の範囲検索の条件が示す検索対象が「１０１００１１〜１００００１１１０１１１」であるとする。なお、下限の「１０１００１１」は、有効桁数が７である２進数である。上限の「１００００１１１０１１１」は、有効桁数が１２である２進数である。検索装置２００は、検索対象の条件を、有効桁数が７である場合の検索範囲の条件と、有効桁数が８〜１１である場合の検索範囲の条件と、有効桁数が１２である場合の検索範囲の条件とに分割する。
【０１４４】
図１６Ａ〜図１６Ｃは、実施例２に係る範囲検索処理の流れの一例を示す図である。図１６Ａ〜図１６Ｃでは、数値の範囲検索の条件が示す検索対象が「１０１００１１〜１００００１１１０１１１」であるとする。図１６Ａでは、有効桁数が７である場合の条件のうち「１０＊＊＊＊＊」の条件の範囲検索処理を説明する図である。図１６Ｂでは、有効桁数が８〜１１である場合の範囲検索処理を説明する図である。図１６Ｃでは、有効桁数が１２である場合の条件のうち「１＊＊＊＊＊＊＊＊＊＊＊」の条件の範囲検索処理を説明する図である。
【０１４５】
図１６Ａに示すように、有効桁数が７である場合の条件「１０＊＊＊＊＊」の範囲検索処理は、例えば、以下のように行われる。検索装置２００は、条件の有効桁数として「７」を取得する。検索装置２００は、下限の数値について、第１位の数字として「１」、第２位の数字として「０」、第３位の数字として「１」、第４位および第５位の数字として「０」を取得する。検索装置２００は、下限の数値について、第６位および第７位の数字として「１」を取得する。
【０１４６】
検索装置２００は、有効桁数の値域から、有効桁数「７」を特定する。検索装置２００は、ビットマップ型インデックスＢＩ２から、特定した有効桁数「７」に対応するビットマップを取得する。この結果、検索装置２００は、有効桁数「７」に合致する出現位置を絞り込むことができる。
【０１４７】
検索装置２００は、第１位の値域から、第１位の数字「１」を特定する。検索装置２００は、ビットマップ型インデックスＢＩ２から、特定した第１位の数字「１」に対応するビットマップを取得する。そして、検索装置は、直前の有効桁数「７」の絞り込み結果と今回の第１位の数字「１」の絞り込み結果とをＡＮＤ演算する。この結果、検索装置２００は、有効桁数「７」と第１位の数字「１」とに合致する出現位置を絞り込むことができる。
【０１４８】
検索装置２００は、第２位の値域から、第２位の数字「０」を特定する。検索装置２００は、ビットマップ型インデックスＢＩ２から、特定した第２位の数字「０」に対応するビットマップを取得する。そして、検索装置２００は、直前の第１位の数字「１」の絞り込み結果と今回の第２位の数字「０」の絞り込み結果とをＡＮＤ演算する。この結果、検索装置２００は、有効桁数「７」と第１位の数字「１」と第２位の数字「０」とに合致する出現位置を絞り込むことができる。
【０１４９】
検索装置２００は、第３位の値域から、第３位の数字「１」を特定する。検索装置２００は、特定した数字が「１」であるので、ビットマップ型インデックスＢＩ２から、第３位の数字「０」に対応するビットマップを取得する。そして、検索装置２００は、直前の第２位の絞り込み結果から、第３位の数字「０」に対応するビットマップの出現ビットの出現位置を除外する。これは、範囲検索の下限の数値のうち「１」の数字を持つ第３位について、「１」より小さい数字「０」を除外するためである。
【０１５０】
検索装置２００は、第６位の値域から、第６位の数字「１」を特定する。検索装置２００は、特定した数字が「１」であるので、ビットマップ型インデックスＢＩ２から、第６位の数字「０」に対応するビットマップを取得する。そして、検索装置２００は、直前の絞り込み結果から、第６位の数字「０」に対応するビットマップの出現ビットの出現位置を除外する。これは、範囲検索の下限の数値のうち「１」の数字を持つ第６位について、「１」より小さい数字「０」を除外するためである。
【０１５１】
検索装置２００は、第７位の値域から、第７位の数字「１」を特定する。検索装置２００は、特定した数字が「１」であるので、ビットマップ型インデックスＢＩ２から、第７位の数字「０」に対応するビットマップを取得する。そして、検索装置２００は、直前の絞り込み結果から、第７位の数字「０」に対応するビットマップの出現ビットの出現位置を除外する。これは、範囲検索の下限の数値のうち「１」の数字を持つ第７位について、「１」より小さい数字「０」を除外するためである。この結果、検索装置２００は、有効桁数が７である場合の条件「１０＊＊＊＊＊」に合致する出現位置を絞り込むことができる。ここでは、絞り込み結果をＢ１とする。
【０１５２】
図１６Ｂに示すように、有効桁数が８〜１１である場合の条件の範囲検索処理は、例えば、以下のように行われる。検索装置２００は、検索範囲の数値について、有効桁数として「８」〜「１１」を取得する。検索装置２００は、有効桁数の値域から、有効桁数「８」〜「１１」を特定する。検索装置２００は、ビットマップ型インデックスＢＩ２から、特定した有効桁数「８」〜「１１」に対応するビットマップを取得する。検索装置２００は、取得した有効桁数「８」〜「１１」に対応するそれぞれのビットマップをＯＲ演算する。この結果、検索装置２００は、有効桁数「８」〜「１１」に合致する出現位置を絞り込むことができる。ここでは、絞り込み結果をＢ２とする。
【０１５３】
図１６Ｃに示すように、有効桁数が１２である場合の条件「１＊＊＊＊＊＊＊＊＊＊＊」の範囲検索処理は、例えば、以下のように行われる。検索装置２００は、条件の有効桁数として「１２」を取得する。検索装置２００は、上限の数値について、第１位の数字として「１」、第２位〜第５位の数字として「０」、第６位〜第８位の数字として「１」、第９位の数字として「０」を取得する。検索装置２００は、上限の数値について、第１０位〜第１２位の数字として「１」を取得する。
【０１５４】
検索装置２００は、有効桁数の値域から、有効桁数「１２」を特定する。検索装置２００は、ビットマップ型インデックスＢＩ２から、特定した有効桁数「１２」に対応するビットマップを取得する。この結果、検索装置２００は、有効桁数「１２」に合致する出現位置を絞り込むことができる。
【０１５５】
検索装置２００は、第１位の値域から、第１位の数字「１」を特定する。検索装置２００は、ビットマップ型インデックスＢＩ２から、特定した第１位の数字「１」に対応するビットマップを取得する。そして、検索装置は、直前の有効桁数「１２」の絞り込み結果と今回の第１位の数字「１」の絞り込み結果とをＡＮＤ演算する。この結果、検索装置２００は、有効桁数「１２」と第１位の数字「１」とに合致する出現位置を絞り込むことができる。
【０１５６】
検索装置２００は、第２位の値域から、第２位の数字「０」を特定する。検索装置２００は、特定した数字が「０」であるので、ビットマップ型インデックスＢＩ２から、特定した第２位の数字「１」に対応するビットマップを取得する。そして、検索装置２００は、直前の第１位の絞り込み結果から、第２位の数字「１」に対応するビットマップの出現ビットの出現位置を除外する。これは、範囲検索の上限の数値のうち「０」の数字を持つ第２位について、「０」より大きい数字「１」を除外するためである。
【０１５７】
検索装置２００は、第３位の値域から、第３位の数字「０」を特定する。検索装置２００は、特定した数字が「０」であるので、ビットマップ型インデックスＢＩ２から、特定した第３位の数字「１」に対応するビットマップを取得する。そして、検索装置２００は、直前の絞り込み結果から、第３位の数字「１」に対応するビットマップの出現ビットの出現位置を除外する。これは、範囲検索の上限の数値のうち「０」の数字を持つ第３位について、「０」より大きい数字「１」を除外するためである。
【０１５８】
検索装置２００は、第４位の値域から、第４位の数字「０」を特定する。検索装置２００は、特定した数字が「０」であるので、ビットマップ型インデックスＢＩ２から、特定した第４位の数字「１」に対応するビットマップを取得する。そして、検索装置２００は、直前の絞り込み結果から、第４位の数字「１」に対応するビットマップの出現ビットの出現位置を除外する。これは、範囲検索の上限の数値のうち「０」の数字を持つ第４位について、「０」より大きい数字「１」を除外するためである。
【０１５９】
検索装置２００は、第５位の値域から、第５位の数字「０」を特定する。検索装置２００は、特定した数字が「０」であるので、ビットマップ型インデックスＢＩ２から、特定した第５位の数字「１」に対応するビットマップを取得する。そして、検索装置２００は、直前の絞り込み結果から、第５位の数字「１」に対応するビットマップの出現ビットの出現位置を除外する。これは、範囲検索の上限の数値のうち「０」の数字を持つ第５位について、「０」より大きい数字「１」を除外するためである。
【０１６０】
検索装置２００は、第９位の値域から、第９位の数字「０」を特定する。検索装置２００は、特定した数字が「０」であるので、ビットマップ型インデックスＢＩ２から、特定した第９位の数字「１」に対応するビットマップを取得する。そして、検索装置２００は、直前の絞り込み結果から、第９位の数字「１」に対応するビットマップの出現ビットの出現位置を除外する。これは、範囲検索の上限の数値のうち「０」の数字を持つ第９位について、「０」より大きい数字「１」を除外するためである。この結果、検索装置２００は、有効桁数が１２である場合の条件「１＊＊＊＊＊＊＊＊＊＊＊」に合致する出現位置を絞り込むことができる。ここでは、絞り込み結果をＢ３とする。
【０１６１】
そして、検索装置２００は、全ての絞り込み結果の論理和を演算する。すなわち、検索装置２００は、有効桁数が７である場合の条件の絞り込み結果、有効桁数が８〜１１である場合の条件の絞り込み結果および有効桁数が１２である場合の条件の絞り込み結果をＯＲ演算する。この演算結果が、検索対象が「１０１００１１〜１００００１１１０１１１」である場合の検索結果となる。
【０１６２】
このようにして、検索装置２００は、検索対象の数値の各位の数字に対応するビットマップを用いて、範囲検索における数値の出現位置を検索する。この結果、検索装置２００は、実データであるテキストデータＦ２を参照しないで、数値の範囲検索をすることで、数値の範囲検索を高速化することができる。
【０１６３】
［実施例２の効果］
上記実施例２によれば、インデックス生成装置１００は、対象のテキストデータＦ１に出現する数値から、数値が持つ複数の属性に対応するそれぞれの値を取得する。インデックス生成装置１００は、複数の属性に対応するそれぞれの値を複数の属性それぞれの値域に対応付ける。そして、インデックス生成装置１００は、対応付けたそれぞれの値域を含む複数の値域それぞれについて、数値の出現する出現位置に対応付けたビットマップのビットマップ型インデックス１２１を生成する。かかる構成によれば、インデックス生成装置１００は、数値が２進数であっても、サイズ肥大を抑えながら、実体参照することなく、数値検索が可能なビットマップ型インデックス１２１を生成することができる。
【０１６４】
また、上記実施例２によれば、検索装置２００は、所定の数値検索の条件を受け付け、受け付けた数値検索の条件を、数値が持つ複数の属性それぞれの値域に対応した条件に変換する。検索装置２００は、変換した条件を、ビットマップ型インデックス２２１を用いて検索する。かかる構成によれば、検索装置２００は、数値が２進数であっても、ビットマップ型インデックス２２１を用いて数値を検索することで、実体参照することなく、数値検索を高速化できる。
【０１６５】
［実施例に関連する他の態様］
以下、上述の実施形態における変形例の一部を説明する。下記の変形例のみでなく、本発明の本旨を逸脱しない範囲の設計変更は適宜行われうる。
【０１６６】
また、実施例１，２では、インデックス生成装置１００は、数値が持つ複数の属性について、それぞれの値域を一纏めにして、テキストデータＦ１，Ｆ２に出現する数値の出現位置に対応付けたビットマップ型インデックスＢＩ，ＢＩ２を生成すると説明した。ここでいう数値が持つ複数の属性は、例えば、有効桁数、位の数字であるとして説明した。しかしながら、数値が持つ複数の属性は、これに限定されず、さらに、−や＋を示す符号を追加しても良い。また、数値が小数点数である場合には、数値が持つ複数の属性は、小数点数を表す複数の属性であっても良い。例えば、数値が浮動小数点数である場合には、数値が持つ複数の属性は、符号、仮数、基数、指数とすれば良い。
【０１６７】
また、実施例では、ビットマップ型インデックスＢＩ，ＢＩ２では、複数の属性それぞれの値域は、均一であるとして説明した。しかしながら、複数の属性それぞれの値域は、均一に限定されず、不均一であっても良い。例えば、複数の属性それぞれの値域は、テキストデータＦ１，Ｆ２に対する過去の数値検索の条件に利用された数値検索履歴の、複数の属性に対応するそれぞれの値に基づき設定されれば良い。一例として、数値が１０進数である場合には、各位それぞれの値域は、０，１，２，ｍ（３〜７），８，９であっても良いし、０，ｍ（１〜８），９であっても良い。
【０１６８】
また、実施例に示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０１６９】
［ハードウェア構成］
下記に、上述の実施形態に用いられるハードウェア及びソフトウェアについて説明する。図１７は、コンピュータ１のハードウェア構成例を示す図である。コンピュータ１は、例えば、プロセッサ３０１、ＲＡＭ（Random  Access  Memory）３０２、ＲＯＭ（Read  Only  Memory）３０３、ドライブ装置３０４、記憶媒体３０５、入力インターフェース（Ｉ／Ｆ）３０６、入力デバイス３０７、出力インターフェース（Ｉ／Ｆ）３０８、出力デバイス３０９、通信インターフェース（Ｉ／Ｆ）３１０、ＳＡＮ（Storage  Area  Network）インターフェース（Ｉ／Ｆ）３１１およびバス３１２などを含む。それぞれのハードウェアはバス３１２を介して接続されている。
【０１７０】
ＲＡＭ３０２は読み書き可能なメモリ装置であって、例えば、ＳＲＡＭ（Static  RAM）やＤＲＡＭ（Dynamic  RAM）などの半導体メモリ、またはＲＡＭでなくてもフラッシュメモリなどが用いられる。ＲＯＭ３０３は、ＰＲＯＭ（Programmable  ROM）なども含む。ドライブ装置３０４は、記憶媒体３０５に記録された情報の読み出しか書き込みかの少なくともいずれか一方を行なう装置である。記憶媒体３０５は、ドライブ装置３０４によって書き込まれた情報を記憶する。記憶媒体３０５は、例えば、ハードディスク、ＳＳＤ（Solid  State  Drive）などのフラッシュメモリ、ＣＤ（Compact  Disk）、ＤＶＤ（Digital  Versatile  Disc）、ブルーレイディスクなどの記憶媒体である。また、例えば、コンピュータ１は、複数種類の記憶媒体それぞれについて、ドライブ装置３０４及び記憶媒体３０５を設ける。
【０１７１】
入力インターフェース３０６は、入力デバイス３０７と接続されており、入力デバイス３０７から受信した入力信号をプロセッサ３０１に伝達する回路である。出力インターフェース３０８は、出力デバイス３０９と接続されており、出力デバイス３０９に、プロセッサ３０１の指示に応じた出力を実行させる回路である。通信インターフェース３１０はネットワーク３を介した通信の制御を行なう回路である。通信インターフェース３１０は、例えばネットワークインターフェースカード（ＮＩＣ）などである。ＳＡＮインターフェース３１１は、ストレージエリアネットワークによりコンピュータ１と接続された記憶装置との通信の制御を行なう回路である。ＳＡＮインターフェース３１１は、例えばホストバスアダプタ（ＨＢＡ）などである。
【０１７２】
入力デバイス３０７は、操作に応じて入力信号を送信する装置である。入力信号は、例えば、キーボードやコンピュータ１の本体に取り付けられたボタンなどのキー装置や、マウスやタッチパネルなどのポインティングデバイスである。出力デバイス３０９は、コンピュータ１の制御に応じて情報を出力する装置である。出力デバイス３０９は、例えば、ディスプレイなどの画像出力装置（表示デバイス）や、スピーカーなどの音声出力装置などである。また、例えば、タッチスクリーンなどの入出力装置が、入力デバイス３０７及び出力デバイス３０９として用いられる。また、入力デバイス３０７及び出力デバイス３０９は、コンピュータ１と一体になっていても良いし、コンピュータ１に含まれず、例えば、コンピュータ１に外部から接続する装置であっても良い。
【０１７３】
例えば、プロセッサ３０１は、ＲＯＭ３０３や記憶媒体３０５に記憶されたプログラムをＲＡＭ３０２に読み出し、読み出されたプログラムの手順に従って制御部１１０，２１０の処理を行なう。その際にＲＡＭ３０２はプロセッサ３０１のワークエリアとして用いられる。記憶部１２０，２２０の機能は、ＲＯＭ３０３および記憶媒体３０５がプログラムファイル（後述のアプリケーションプログラム２４、ミドルウェア２３およびＯＳ２２など）やデータファイル（例えば、ビットマップ型インデックス１２１，２２１など）を記憶し、ＲＡＭ３０２がプロセッサ３０１のワークエリアとして用いられることによって実現される。プロセッサ３０１が読み出すプログラムについては、図１８を用いて説明する。
【０１７４】
図１８は、コンピュータで動作するプログラムの構成例を示す図である。コンピュータ１において、図１８に示すハードウェア群（ＨＷ）２１（３０１〜３１１）の制御を行なうＯＳ（オペレーティング・システム）２２が動作する。ＯＳ２２に従った手順でプロセッサ３０１が動作して、ＨＷ２１の制御・管理が行なわれることにより、アプリケーションプログラム（ＡＰ）２４やミドルウェア（ＭＷ）２３に従った処理がＨＷ２１で実行される。さらに、コンピュータ１において、ＭＷ２３またはＡＰ２４が、ＲＡＭ３０２に読み出されてプロセッサ３０１により実行される。
【０１７５】
プロセッサ３０１ｈｑ、インデックス生成機能が呼び出された場合に、ＭＷ２３またはＡＰ２４の少なくとも一部に基づく処理を行なうことにより、（それらの処理をＯＳ２２に基づいてＨＷ２１を制御して）制御部１１０の機能が実現される。プロセッサ３０１は、検索機能が呼び出された場合に、ＭＷ２３またはＡＰ２４の少なくとも一部に基づく処理を行なうことにより、（それらの処理をＯＳ２２に基づいてＨＷ２１を制御して）制御部２１０の機能が実現される。インデックス生成機能および検索機能は、ＡＰ２４自体に含まれても良いし、ＡＰ２４に従って呼び出されることで実行されるＭＷ２３の一部であっても良い。
【０１７６】
図１９は、実施形態のシステムにおける装置の構成例を示す図である。図１９のシステムは、コンピュータ１ａ、コンピュータ１ｂ、基地局２およびネットワーク３を含む。コンピュータ１ａは、無線または有線の少なくとも一方により、コンピュータ１ｂと接続されたネットワーク３に接続している。
【０１７７】
インデックス生成装置１００と検索装置２００とは、図１９に示すコンピュータ１ａとコンピュータ１ｂとのいずれに含まれても良い。コンピュータ１ｂがインデックス生成装置１００の機能を含み、コンピュータ１ａが検索装置２００の機能を含んでも良いし、コンピュータ１ａがインデックス生成装置１００の機能を含み、コンピュータ１ｂが検索装置２００の機能を含んでも良い。また、コンピュータ１ａとコンピュータ１ｂとの双方が、インデックス生成装置１００の機能および検索装置２００の機能を備えても良い。
【符号の説明】
【０１７８】
１００  インデックス生成装置
１１０  制御部
１１１  ファイルリード部
１１２  数値取得部
１１３  有効桁数／位数字取得部
１１４  インデックス生成部
１２０  記憶部
１２１  ビットマップ型インデックス
２００  検索装置
２１０  制御部
２１１  検索条件受付部
２１２  数値検索部
２１３  範囲検索部
２１４  検索結果出力部
２２０  記憶部
２２１  ビットマップ型インデックス
【図１】
2018060425.tif 000003
【図２】
2018060425.tif 000004
【図３】
2018060425.tif 000005
【図４】
2018060425.tif 000006
【図５Ａ】
2018060425.tif 000007
【図５Ｂ】
2018060425.tif 000008
【図５Ｃ】
2018060425.tif 000009
【図５Ｄ】
2018060425.tif 000010
【図５Ｅ】
2018060425.tif 000011
【図６】
2018060425.tif 000012
【図７】
2018060425.tif 000013
【図８】
2018060425.tif 000014
【図９】
2018060425.tif 000015
【図１０】
2018060425.tif 000016
【図１１】
2018060425.tif 000017
【図１２】
2018060425.tif 000018
【図１３】
2018060425.tif 000019
【図１４】
2018060425.tif 000020
【図１５】
2018060425.tif 000021
【図１６Ａ】
2018060425.tif 000022
【図１６Ｂ】
2018060425.tif 000023
【図１６Ｃ】
2018060425.tif 000024
【図１７】
2018060425.tif 000025
【図１８】
2018060425.tif 000026
【図１９】
2018060425.tif 000027