(57)【特許請求の範囲】
【請求項１】
被検索ファイルを検索するファイル検索装置であって、
前記被検索ファイルのレコードの第一フィールドを最上位階層とし、以下のフィールドは前のフィールドの下位階層をなすデータ構造を有するレコードを有し、前記各階層のフィールドにはカテゴリを表すキー文字列が含まれ、最上位階層のフィールドのキー文字列が同じレコードは連続し、以下の階層のフィールドのキー文字列は、前のフィールドのキー文字列が同じキー文字列である範囲内で、その階層のフィールドのキー文字列が同じレコードが連続するようにレコードが並んでいる被検索ファイルに基づいて予め作成され、最上位から最下位の階層まで、各階層の同じキー文字列毎に、キー文字列を示すレコードと、そのキー文字列の開始レコード位置を示すレコードと、そのキー文字列の行数を示すレコードと、次の階層の情報の始まり位置を示すレコードとを含むインデックスファイルと、
前記被検索ファイルから、指定されたキー文字列に関するデータを抽出する条件を入力するための入力手段と、
該入力手段からの指示に基づいて、前記インデックスファイルから当該キー文字列に関する前記被検索ファイル上での開始レコード位置及び行数を抽出し、前記被検索ファイルから該開始レコード位置で特定されるレコードから前記行数で特定されるレコード数のレコードを抽出する手段と、
該抽出されたレコードの情報を出力する出力手段と、を有することを特徴とするファイル検索装置。
【請求項２】
被検索ファイルを検索するファイル検索装置であって、
前記被検索ファイルのレコードの第一フィールドを最上位階層とし、以下のフィールドは前のフィールドの下位階層をなすデータ構造を有するレコードを有し、前記各階層のフィールドにはカテゴリを表すキー文字列が含まれ、最上位階層のフィールドのキー文字列が同じレコードは連続し、以下の階層のフィールドのキー文字列は、前のフィールドのキー文字列が同じキー文字列である範囲内で、その階層のフィールドのキー文字列が同じレコードが連続するようにレコードが並んでいる被検索ファイルに基づいて予め作成され、最上位から最下位の階層まで、各階層の同じキー文字列毎に、キー文字列を示すレコードと、そのキー文字列の開始レコード位置を示すレコードと、そのキー文字列の行数を示すレコードと、次の階層の情報の始まり位置を示すレコードとを含むインデックスファイルと、
前記被検索ファイルから、指定されたキー文字列に関するデータを抽出する条件を入力するための入力手段と、
該入力手段からの指示に基づいて、前記インデックスファイルから前記指定されたキー文字列を含む階層の下位の階層の開始レコード位置及び行数を、前記インデックスファイルから前記次の階層の情報の始まり位置を取得することにより認識して、該開始レコード位置及び行数に基づいて前記被検索ファイルのレコードの情報を抽出する手段と、
該抽出されたレコードの情報を出力する出力手段と、を有することを特徴とするファイル検索装置。
【請求項３】
更に、前記インデックスファイルを検索前に作成するインデックスファイル作成処理手段を備え、
該インデックスファイル作成処理手段は、
利用者から階層数を入力する手段と、
前記被検索ファイルから被検索ファイル上で同一の階層のフィールドのキー文字列が同じレコードの開始レコード位置を取得し、該開始レコードに続くレコードを読み込んで該開始レコードのキー文字列と一致する行数を検出し、該開始レコード位置の情報と、該行数の情報と、前記キー文字列に関する下位の階層の情報のインデックスファイル上での始まり位置を示すポインタとを含むノード管理情報を書き込む管理情報作成処理を、前記入力手段から入力された前記階層数の全ての階層のノードに対して実行する管理情報作成手段と、を有する請求項１に記載のファイル検索装置。
【請求項４】
被検索ファイルのレコードの第一フィールドを最上位階層とし、以下のフィールドは前のフィールドの下位階層をなすデータ構造を有するレコードを有し、前記各階層のフィールドにはカテゴリを表すキー文字列が含まれ、最上位階層のフィールドのキー文字列が同じレコードは連続し、以下の階層のフィールドのキー文字列は、前のフィールドのキー文字列が同じキー文字列である範囲内で、その階層のフィールドのキー文字列が同じレコードが連続するようにレコードが並んでいる被検索ファイルに対する検索を、被検索ファイルの検索を最上位から最下位の階層まで、各階層の同じキー文字列毎に、キー文字列を示すレコードと、そのキー文字列の開始レコード位置を示すレコードと、そのキー文字列の行数を示すレコードと、次の階層の情報の始まり位置を示すレコードとを含むインデックスファイルを用いて行うファイル検索装置に実行させるファイル検索プログラムであって、
前記被検索ファイルから、指定されたキー文字列に関するデータの検索を指示する手順と、
前記指定されたキー文字列に関するデータの検索が指示されると、前記インデックスファイルから当該キー文字列に関する前記被検索ファイル上での開始レコード位置及び行数を抽出し、前記被検索ファイルから該開始レコード位置で特定されるレコードから前記行数で特定されるレコード数のレコードを抽出する手順と、
該抽出されたレコードの情報を出力する手順と、をコンピュータに実行させるためのファイル検索プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はファイルサイズが大規模なＣＳＶファイル等の被検索ファイルからデータの検索、抽出を素早く行うための装置及びプログラムに関する。
【０００２】
【従来の技術】
データベースから検索したデータをＣＳＶファイルとして出力することは一般的に用いられているが、従来はＣＳＶファイルとして利用する際には，大きくても数百ＫＢ程度のものを扱うのが一般的であった。
【０００３】
【発明が解決しようとする課題】
このように従来は、ＣＳＶファイルのデータを使用する場合，そのデータの中身は，データベースから予め集計を行った結果を使用するため，ファイルのサイズが数ＫＢ程度のものであるということが前提であった。
【０００４】
しかし，昨今の数ＧＢ単位のデータを扱うような，大規模ＤＷＨの場合，集計したＣＳＶファイル自体が数百ＭＢの巨大なファイルとなってしまい，データの検索，抽出に時間がかかっていた。
【０００５】
本発明はこのような課題に鑑みなされたものであって、ＣＳＶファイルが数百MB単位の大規模なものとなった場合でも，効率的かつ高速にデータ抽出を行うファイル検索装置及びプログラムと、ＣＳＶファイルを効率よく検索するためのインデックスファイルを作成する装置及びプログラムの提供を目的とする。
【０００６】
【課題を解決するための手段】
本発明の一観点によれば、被検索ファイルを検索するファイル検索装置であって、前記被検索ファイルのレコードの第一フィールドを最上位階層とし、以下のフィールドは前のフィールドの下位階層をなすデータ構造を有するレコードを有し、前記各階層のフィールドにはカテゴリを表すキー文字列が含まれ、最上位階層のフィールドのキー文字列が同じレコードは連続し、以下の階層のフィールドのキー文字列は、前のフィールドのキー文字列が同じキー文字列である範囲内で、その階層のフィールドのキー文字列が同じレコードが連続するようにレコードが並んでいる被検索ファイルに基づいて予め作成され、最上位から最下位の階層まで、各階層の同じキー文字列毎に、キー文字列を示すレコードと、そのキー文字列の開始レコード位置を示すレコードと、そのキー文字列の行数を示すレコードと、次の階層の情報の始まり位置を示すレコードとを含むインデックスファイルと、前記被検索ファイルから、指定されたキー文字列に関するデータを抽出する条件を入力するための入力手段と、該入力手段からの指示に基づいて、前記インデックスファイルから当該キー文字列に関する前記被検索ファイル上での開始レコード位置及び行数を抽出し、前記被検索ファイルから該開始レコード位置で特定されるレコードから前記行数で特定されるレコード数のレコードを抽出する手段と、該抽出されたレコードの情報を出力する出力手段と、を有することを特徴とするファイル検索装置が提供される。
【００１０】
【発明の実施の形態】
１）本実施態様の全体的な構成及び処理の概要
本発明の一実施態様の全体的な構成及び処理の概要について、図１及び図２のフローチャートを用いて説明する。
【００１１】
図１は、本実施態様の構成を示すブロック図である。
【００１２】
本実施態様では、まず数ギガバイトから数テラバイトにも及ぶ大規模なデータベース１から、与えられた条件に基づいて抽出処理部２が行われ、ＣＳＶファイル等の被検索ファイル３が作成される。この被検索ファイルは、数百メガバイトから数ギガバイトとなる。
【００１３】
なお、データベースからデータを抽出してＣＳＶファイル等を作成することは周知慣用技術であるので、上記の抽出処理部２についての詳細な説明は省略する。  次に、この被検索ファイル３のデータを効率よくデータの検索、抽出ができるように、インデックス作成処理部４によって、インデックスファイル５の作成がなされる。
【００１４】
このインデックス作成処理部４では、階層認識処理部４１により被検索ファイル３の階層を認識して、インデックスファイル５をなすノード管理情報の作成処理部４２を実行する。
【００１５】
このインデックスファイル５を用いて、ファイル検索処理部６は被検索ファイル３からデータの検索、抽出を行い、得られたデータの出力を行う。このために入力処理部６１が検索処理依頼を受けると、抽出処理部６２によりデータの抽出がなされ、出力処理部６３により出力結果７が出力される。この出力処理部６３はディスプレイを用い、さらに入力処理部６１は該ディスプレイの表示画面上をポインティングデバイスによる指示（例えばマウスカーソルによる指示）で実現することにより、後述する図８のような抽出態様の変更が行えるようにするのが望ましい。（印刷物として出力する実施形態を排除するものでは無い）。
【００１６】
なお、抽出処理部２、インデックス作成処理部４、ファイル検索処理部６は、それぞれ別のハードウェア（処理装置、コンピュータ）にそれぞれの処理を行うプログラムを実装して実現しても良いが、それぞれのうち２つ、もしくは全ての処理を、同一のハードウェアで実現するように構成しても良い（それぞれの処理を実行するプログラムを同一のハードウェアに実装すれば良い）。
【００１７】
また、それぞれの処理機能をハードウェアに実行させる（処理部として機能させる）ためのプログラムは、記録媒体もしくは通信媒体からハードウェアに対してプログラムをダウンロードすることにより実装すればよい。
【００１８】
このような構成においてなされる、本実施態様の処理の全体的な流れを、図１に加えて図２のフローチャートを用いて説明する。
【００１９】
まず，抽出処理部２がデータベース上の明細データを集計する（図２- １、以下、図の番号の後ろに付与した符号は、図面では丸文字で表記したものである）。集計した結果は，通常のＣＳＶファイル３として作成される（図２−２）。
【００２０】
次にこのＣＳＶファイル３を元に解析を行い、該ＣＳＶファイル３を検索するために用いられるインデックスファイル５を作成する（図２−３）。このインデックスファイル作成処理部４については、後に図５を用いてより詳細に説明する。
【００２１】
以上の処理によりＣＳＶファイルとインデックスファイルの作成がなされた状態で、ユーザにより抽出条件が指定されると、ファイル検索処理部６がインデックスファイルに基づいてＣＳＶファイル３からデータの抽出を行い、表示を行う（図２−４乃至７）。このデータの抽出処理についても、後により詳細に説明する。
２）ＣＳＶファイルとインデックスファイルの構成例
図３に、本実施態様にて抽出された（図２−１、２の処理）ＣＳＶファイルの例と、このＣＳＶファイルを解析して作成がなされる (図２−３）インデックスファイルの例を示す。また、図４にインデックスファイルの（再帰）構造の例を示す。
【００２２】
本実施態様での被検索ファイルであるＣＳＶファイルは、図３に示すように１行目に、以下の行( レコード）の各フィールドの属性が記述され、 2行目以以降に処理対象のデータが記述されるものである。また、各行( レコード）のフィールドは第一フィールドが最上位階層であり、以下のフィールドは、前のフィールドに包含される( 下位階層をなす）データ構造となっている。即ち、木構造となっている。
【００２３】
また、作成されるインデックスファイルは、カテゴリ（キー文字列）毎に下位のノードの情報を再帰的に保持している。それぞれの管理情報は、以下の情報よりなる  。
・そのノードに含まれるカテゴリ（図３の例では”冷暖房" ”家事”）
・上記カテゴリを含む行( レコード）のＣＳＶファイル上での開始レコード位  置及び行数
・上記カテゴリに関するノード管理情報（下位の階層の情報）の、インデックスファイル上での始まり位置を示すポインタ
図３の例では、ＣＳＶファイルの表側に商品大分類−商品中分類−機種名といった階層が存在するので、図７における表側１が商品大分類、表側２は商品中分類、表側３は機種名となる。従って、表側１の管理情報は図３- １、表側２の管理情報は図３- ２、表側３の管理情報は図３−３の部分が、それぞれ相当する。
【００２４】
更に図３の例で言えば、商品大分類の管理情報（図３−１）には、カテゴリ”冷暖房”と" 家事”があることが示されると共に、カテゴリ" 冷暖房””家事”に関する行のＣＳＶファイル上での開始レコード位置と行数、カテゴリ" 冷暖房””家事”の次の階層の、インデックスファイルにおける始まり位置を示すポインタが保持される。
【００２５】
同様にカテゴリ”冷暖房”に関する管理情報 (図３−２）として、下位階層に”エアコン””扇風機”があることが示され、またカテゴリ”エアコン””扇風機”に関する行のＣＳＶファイル上での開始レコード位置と行数、カテゴリ”冷暖房””家事”の次の階層の、インデックスファイルにおける始まり位置を示すポインタが保持される。
【００２６】
更にカテゴリ" エアコン" についても（図３−３），下位階層に”AIR １””AIR ２" があることが示され、また下位階層のカテゴリのＣＳＶファイル上での開始レコード位置と行数、下位階層のインデックスファイルにおける始まり位置を示すポインタが保持される。
【００２７】
このようにインデックスファイルは，表側数分だけ，再帰的に開始レコードの位置，対象行数等を保持している。(DBMS ではインデックスでの検索のためにデータ管理域内にデータ行情報を持っているが，今回の手法では、CSV ファイルの中身のデータに対して，カテゴリごとに解析を行い，データの開始位置，対象行数等をあらかじめ取り出したものを外部ファイルにしている。)
３）インデックスファイルの作成処理
インデックスファイルは、ＣＳＶファイルの表側にあるカテゴリを元に、ＣＳＶファイル上での、開始レコード位置、行数の情報をインデックスファイルに格納していくことにより作成がなされる。
【００２８】
この作成処理について、図５のフローチャート、図６の管理構造の説明図、及び図７のブレイク判定処理の説明図を用いて説明する。
【００２９】
まず、最初に入力となる被検索ファイルの表側数を取得する (図５−１）。この表側数は、インデックス作成に際して、利用者から入力パラメタとして、被検索ファイルと共に処理プログラムに与えられる。図４の例では、商品大分類−商品中分類−機種名であり、表側数は３となる。
【００３０】
次に，CSV １行読込みを行う（図５−２）。この際，カテゴリ毎に開始レコード位置(CSVファイル先頭からの変位) は取得済みである。１行目の読込みでは，横方向に冷暖房−エアコン−AIR01 とチェーンされた管理構造が生成される（図６）。
【００３１】
２行目からは，順次，被検索ファイルを読み込み，カテゴリのラベルの比較を行う（図５−３）。比較方法は，上位の表側から順次カテゴリがブレイク( カテゴリが変わること) したかどうかを判定していく（図５−４）。
【００３２】
ブレイクしていない場合，該当のノードは，前回の行と同じであるので，行数を１追加する（図５−５）。
【００３３】
ブレイクした場合は，縦方向にチェーンを追加していく，またこの際，該当のノードより，上位のノードがブレイクしている場合は，ブレイクしたものとして，下方向のカテゴリを追加していく。（図５−６）。
【００３４】
処理終了後は表側の終わりかどうか、即ち入力された表側数のノード数だけ繰り返したか( 例の場合は，３ノード分繰り返したかどうか) を判定し（図５−７），表側数分くりかえされていない場合は，下位のノードのカテゴリラベル比較を行うように処理を繰り返す（図５−８）。
【００３５】
表側のノード分の比較を行った後，被検索ファイルが終了しているかどうかを判定し（図５−９），終了していなければ，次の行を読み込む処理を，被検索ファイルの行数分だけ繰り返す（図５−10），例えば，図７に示すように、前回読み込んだ被検索ファイルの表側カテゴリが，" 冷暖房" −" エアコン" −" 中計で" ，今回読み込んだ行が" 冷暖房" −" 扇風機" −"SENP01"だった場合，各カテゴリを順に表側数分比較する。
【００３６】
この結果，商品大分類はブレイクなしなので，行数を１追加，商品中分類はブレイクしたので，エアコンから，縦方向に扇風機のチェーンを追加する。さらに，扇風機でブレイクしたので，扇風機の横方向に，SENP01をチェーンする( 上位のノードがブレイクした場合は，下位もブレイクする) 。（図６の★の箇所）  この処理を繰り返していくことで，表側カテゴリのノードの関係，行数などが全てメモリ上に展開される。最後にこれらの管理情報をインデックスファイルとして，ファイルに書き出しを行う。（図５−８）
具体的には、まず最上位階層を基点として、当該階層として認識されたカテゴリ”冷暖房””家事”を表側１の管理情報に含まれるカテゴリの名称を記録し、続いて”冷暖房””家事”のＣＳＶファイル上での開始レコード位置と行数とを記録し、最後にカテゴリ”冷暖房””家事”の夫々に含まれる下位階層の管理情報について、そのインデックスファイル上での始まり位置のポインタを記録する（図３−１）。
【００３７】
以下、同様に階層ごとにカテゴリの名称と、当該カテゴリのＣＳＶファイル上での開始レコード位置と行数、当該カテゴリに含まれる下位階層の管理情報のインデックスファイル上での始まり位置のポインタを順次記録し、管理情報を作成していく。
４）インデックスファイルを用いたＣＳＶファイルからのデータの抽出処理
インデックスファイルを用いたＣＳＶファイルからのデータの抽出処理について、図２のフローチャートを用いて説明する。
【００３８】
まずエンドユーザは表示方法を選択する（図２−４）。これは図８上段に示すデータ抽出表示 (図２−５乃至８）と図８下段に示すドリルダウン帳票の表示( 図２−１０乃至１４）を選択するものである。
【００３９】
データ抽出処理が選択された場合（図２−５）、続いて抽出条件を指定する。例えば，商品大分類＝" 冷暖房" ，商品中分類="エアコンいった条件である（図２−６）。これらの抽出条件と一致するCSV ファイル上でのレコード開始位置と，対象行数をインデックスファイルより取得する。インデックスファイルは再帰的な構造であるため，抽出条件から，ダイレクトに，レコード開始位置と，対象行数を取り出すことができる（図２−７）。このレコード開始位置と，対象行数を元に，CSV ファイルから，表示データを抽出する（図２−８）。抽出そのものは，通常のファイルのopen,read,close で行う。抽出されたデータは，数行のものであり，エンドユーザが情報活用を行う画面に表示される。データの抽出，表示は，エンドユーザによって繰り返されるが，本発明のインデックスファイルにより，表示したいデータは，ＣＳＶファイルから，即座に抽出することがが可能である。このようにして表示された出力結果の例を図８の上段に示す。
【００４０】
一方ドリルダウン帳票の出力が指定された場合（図２−１１）は、ドリルダウンの条件が入力により指示されると（図２−１２) 、ドリルダウン条件と一致するカテゴリの下位ノードの開始位置を当カテゴリのインデックスファイルより認識し、予め定められた条件のレコード位置を取得して、被検索ファイルからデータを抽出する。これを、指定されたカテゴリの分だけ繰り返す（図２−１３）。
【００４１】
例えば、例えばカテゴリ”冷暖房”がクリックされると、図３に示すように最上位の階層”商品大分類”にカテゴリ（キー文字列）”冷暖房”は存在するので、そのカテゴリ”冷暖房”の下位の階層の情報の開始位置を認識して、”冷暖房”に関するノードの管理情報を読み出し、該管理情報には”エアコン””扇風機”が存在するので、これらのカテゴリに関するＣＳＶファイル上の開始レコード位置を取り出して該開始レコード位置に基づいて情報を取り出す。この例では、中計となるカテゴリのレコードを抽出するよう設定がなされているので、" 冷暖房”の下位階層の”エアコン””扇風機”と”中計”の情報を表示する（図８下段）。
【００４２】
本発明に関して更に以下の項（付記）を開示する。
（付記１) 複数の階層毎に割り当てられたフィールドを有するレコードからなり、かつ同一階層におけるフィールドのキー文字列が一致するレコードは連続するように構成された被検索ファイルを検索するファイル検索装置であって、
前記被検索ファイルのレコードを複数の階層を用いて分類することにより得られる木構造のノード毎に、当該ノードに含まれるキー文字列名と、前記被検索ファイル上で該キー文字列のフィールドを有するレコードの開始位置情報及びレコード数情報とを含む管理情報を設けるインデックスファイルと、
前記被検索ファイルから、指定されたキー文字列に関するデータの検索を指示するための入力手段と、
該入力手段からの指示に基づいて、前記インデックスファイルから当該キー文字列に関する前記被検索ファイル上でのレコードの開始位置情報及びレコード数情報を抽出し、前記被検索ファイルから該レコードの開始位置情報で特定されるレコードから前記レコード数情報で特定されるレコード数のレコードを抽出する手段と、
該抽出されたレコードの情報を出力する出力手段と、
を有することを特徴とするファイル検索装置。
（付記２）複数の階層毎に割り当てられたフィールドを有するレコードからなり、かつ同一階層におけるフィールドのキー文字列が一致するレコードは連続するように構成された被検索ファイルを検索するファイル検索装置であって、
前記被検索ファイルのレコードを複数の階層を用いて分類することにより得られる木構造のノード毎に、当該ノードに含まれるキー文字列名と、前記被検索ファイル上で該キー文字列のフィールドを有するレコードの開始位置情報及びレコード数情報と、該キー文字列毎に設けられる下位階層のノード管理情報の位置を示すポインタとを含む管理情報を設けるインデックスファイルと、
前記被検索ファイルから、指定されたキー文字列に関するデータの検索を指示するための入力手段と、
該入力手段からの指示に基づいて、前記インデックスファイルから当該キー文字列に関する下位階層のノード管理情報のポインタに基づいて該下位階層のノード管理情報のレコードの開始位置を認識して、該レコードの開始位置に基づいて前記被検索ファイルのレコードの情報を抽出する手段と、
該抽出されたレコードの情報を出力する出力手段と、
を有することを特徴とするファイル検索装置。
（付記３）複数の階層毎に割り当てられたキー文字列を有するレコードからなり、かつ同一階層におけるフィールドのキー文字列が一致するレコードは連続するように構成された被検索ファイルを検索するために、前記被検索ファイルのレコードを複数の階層を用いて分類することにより得られる木構造のノード毎に、当該ノードに含まれるキー文字列名と、前記被検索ファイル上で該キー文字列を有するレコードの開始位置情報及びレコード数情報とを含む管理情報を設けるインデックスファイルを作成するインデックスファイル作成装置であって、
階層数を認識する手段と、
前記ノード毎に設けられるノード管理情報を作成するために、被検索ファイル上で当該ノードの階層に含まれるキー文字列を含むレコードの開始レコード位置を取得し、該開始レコードに続くレコードを読み込んで該開始レコードのキー文字列と一致するレコード数を検出し、該開始レコード位置の情報と該レコード数の情報とを該ノード管理情報に書き込むノード管理情報作成処理を、前記階層数認識手段で認識した全ての階層のノードに対して実行するノード管理情報作成手段とを有することを特徴とするインデックスファイル作成装置。
（付記４）上記ノード管理情報作成処理は、更に下位階層のノード管理情報の記録位置を示すポインタをノード管理情報に記録することを特徴とする付記３に記載のインデックスファイル作成装置。
（付記５）複数の階層毎に割り当てられたフィールドを有するレコードからなり、かつ同一階層におけるフィールドのキー文字列が一致するレコードは連続するように構成された被検索ファイルに対する検索を、前記被検索ファイルのレコードを複数の階層を用いて分類することにより得られる木構造のノード毎に、当該ノードに含まれるキー文字列名と、前記被検索ファイル上で該キー文字列を有するレコードの開始位置情報及びレコード数情報とを含む管理情報を設けたインデックスファイルを用いて行うファイル検索装置により実行されるファイル検索プログラムであって、
前記被検索ファイルから、指定されたキー文字列に関するデータの検索を指示するステップと、
該入力手段からデータ検索の指示がなされると、前記インデックスファイルから当該キー文字列に関する前記被検索ファイル上でのレコードの開始位置情報及びレコード数情報を抽出し、前記被検索ファイルから該レコードの開始位置情報で特定されるレコードから前記レコード数情報で特定されるレコード数のレコードを抽出するステップと、
該抽出されたレコードの情報を出力するステップと、
を有することを特徴とするファイル検索プログラム。
（付記６）複数の階層毎に割り当てられたフィールドを有するレコードからなり、かつ同一階層におけるフィールドのキー文字列が一致するレコードは連続するように構成された被検索ファイルを検索を、前記被検索ファイルのレコードを複数の階層を用いて分類することにより得られる木構造のノード毎に、当該ノードに含まれるキー文字列名と、前記被検索ファイル上で該キー文字列のフィールドを有するレコードの開始位置情報及びレコード数情報と、該キー文字列毎に設けられる下位階層のノード管理情報の位置を示すポインタとを含む管理情報を設けるインデックスファイルを用いて行うファイル検索装置により実行されるファイル検索プログラムであって、
前記被検索ファイルから、指定されたキー文字列に関するデータの検索を指示するためのステップと、
該入力手段からの指示に基づいて、前記インデックスファイルから当該キー文字列に関する下位階層のノード管理情報のポインタに基づいて該下位階層のノード管理情報のレコードの開始位置を認識して、該レコードの開始位置に基づいて前記被検索ファイルのレコードの情報を抽出するステップと、
該抽出されたレコードの情報を出力するステップと、
を有することを特徴とするファイル検索プログラム。
（付記７）複数の階層毎に割り当てられたキー文字列を有するレコードからなり、かつ同一階層におけるフィールドのキー文字列が一致するレコードは連続するように構成された被検索ファイルを検索するために用いられる、前記被検索ファイルのレコードを複数の階層を用いて分類することにより得られる木構造のノード毎に、当該ノードに含まれるキー文字列名と、前記被検索ファイル上で該キー文字列を有するレコードの開始位置情報及びレコード数情報とを含む管理情報を設けるインデックスファイルを作成するインデックスファイル作成装置により実行されるインデックスファイル作成プログラムであって、
階層数を認識するステップと、
前記ノード毎に設けられるノード管理情報を作成するために、被検索ファイル上で当該ノードの階層に含まれるキー文字列を含むレコードの開始レコード位置を取得し、該開始レコードに続くレコードを読み込んで該開始レコードのキー文字列と一致するレコード数を検出し、該開始レコード位置の情報と該レコード数の情報とを該ノード管理情報に書き込むノード管理情報作成処理を、前記階層数認識手段で認識した全ての階層のノードに対して実行するステップとを有することを特徴とするインデックスファイル作成プログラム。
（付記８）上記ノード管理情報作成処理ステップは、更に下位階層のノード管理情報の記録位置を示すポインタをノード管理情報に記録することを特徴とする付記３に記載のインデックスファイル作成プログラム。
【００４３】
【発明の効果】
−以上説明したように、本発明のファイル検索装置およびインデックスファイル作成装置によれば、インデックスファイルを採用することで，大規模なCSV ファイルからのデータ抽出が飛躍的に高速化される。この効果の例を図９に示す。
【００４４】
また，このインデックスファイルを応用し，データ抽出の他にも，ドリリング機能としても使用することが可能となる。
【００４５】
また、インデックスファイルは，CSV ファイルとは独立した，別ファイルとなっており，元のＣＳＶファイルには影響を与えていない。従来のデータベースのように、データとインデックスが一体化されたものとは異なり，入力元となるCSV ファイルがオープン的である。
【００４６】
更にインデックスファイルを外付けにすることで，入力データとなるＣＳＶファイルはオープン性が高まるが，営業情報支援システムなど、更新頻度が高く，かつ，表示データも即時性が求められるようなシステムについても，自システムにデータをとり込まずに済む分だけ，即時的なデータ活用が可能となる。
【図面の簡単な説明】
【図１】  本発明の一実施形態の構成を示すブロック図である。
【図２】  本発明の一実施形態の全体的な処理を説明するフローチャートである。
【図３】  本発明の一実施形態におけるＣＳＶファイルおよびインデックスファイルの例を示す図である。
【図４】  本発明の一実施形態のインデックスファイルの再帰構造を示す図である。
【図５】  本発明の一実施形態におけるインデックスファイルの作成処理を示すフローチャートである。
【図６】  本発明の一実施形態における、インデックスファイルによる管理構造を示す図である。
【図７】  本発明の一実施形態における、ブレイクの判定の例を示す図である。
【図８】  本発明の一実施形態における出力表示の例を示す図である。
【図９】  本発明の効果を示す図である。
【符号の説明】
１      データベース
２      抽出処理
３      被検索ファイル
４      インデックスファイル作成処理
４１  階層認識処理
４２  ノード管理情報作成処理
５      インデックスファイル
６      ファイル検索処理
６１  入力処理
６２  抽出処理
６３  出力処理
７      出力結果
【図１】
0004490012.tif 000002
【図２】
0004490012.tif 000003
【図３】
0004490012.tif 000004
【図４】
0004490012.tif 000005
【図５】
0004490012.tif 000006
【図６】
0004490012.tif 000007
【図７】
0004490012.tif 000008
【図８】
0004490012.tif 000009
【図９】
0004490012.tif 000010