(57)【要約】【課題】少ないメモリリソースで、大容量なファイルのインデクス生成、及び、検索を可能にする。【解決手段】大容量ファイルを任意のサイズで複数のチャンクファイルに分割する機能と、前記チャンクファイルに分割する際に利用する分割サイズを自動で決定する機能と、前記チャンクファイルを使ってインデクス生成を行う機能と、大容量ファイルを分割せずにインデクス生成した場合と同じ検索結果が得られるように検索クエリを加工／生成する機能と、を持つことを特徴とする。【選択図】図１
2014194692.tif 000002
【特許請求の範囲】
【請求項１】
大容量ファイルを検索処理の対象とし、当該大容量ファイルを処理するファイル処理システムであって、
検索処理で用いるデータを格納するためのデータメモリと、
所定ファイルサイズを示す分割閾値で前記大容量ファイルを分割して複数の分割ファイルを生成する分割ファイル生成処理と、生成された分割ファイルを用いて検索用インデクスを生成するインデクス生成処理と、生成されたインデクスを用いた検索処理と、を実行するプロセッサと、を有し、
前記プロセッサは、
前記分割ファイル処理において、前記データメモリで処理可能な最大限のファイルサイズで前記大容量ファイルを分割して前記複数の分割ファイルを生成し、
前記インデクス生成処理において、前記複数の分割ファイルのそれぞれについてインデクスを生成することを特徴とするファイル処理システム。
【請求項２】
請求項１において、
前記プロセッサは、前記分割ファイル処理において、予め用意されたリソース診断用サンプルファイルを用いてインデクス作成処理を試行し、前記データメモリを用いてインデクス作成が可能であった場合に所定サイズの付加データを順次前記サンプルファイルに追加して前記インデクス処理を再試行し、前記データメモリを用いてインデクス作成が不可能であった場合に前回の追加データを追加した際のファイルサイズを前記分割閾値として算出することを特徴とするファイル処理システム。
【請求項３】
請求項２において、
前記プロセッサは、前記検索処理において、ユーザによる入力クエリを当該入力クエリに含まれるキーワード毎に分割して複数の分割クエリを生成し、当該複数の分割クエリのそれぞれを用いて複数の大容量ファイルに対して検索を実行し、それぞれの検索結果を統合して検索結果を取得することを特徴とするファイル処理システム。
【請求項４】
請求項３において、
前記プロセッサは、
前記複数の分割クエリを用いて、前記複数の大容量ファイルを前記分割閾値で分割して生成された複数の分割ファイルのみを対象として検索処理を実行して分割クエリによる第１の検索結果を取得し、
前記入力クエリに、分割されていない大容量ファイルのみを検索対象とすることを意味する付加情報を添付して非分割クエリを生成し、当該非分割クエリを用いて前記複数の大容量ファイルに対して検索を実行して、非分割クエリによる第２の検索結果を取得し、
前記第１及び第２の検索結果を統合して、最終検索結果とすることを特徴とするファイル処理システム。
【請求項５】
ファイル処理システムを用いて、大容量ファイルを検索処理の対象とし、当該大容量ファイルを処理するファイル処理方法であって、
前記ファイル処理システムは、検索処理で用いるデータを格納するためのデータメモリと、所定ファイルサイズを示す分割閾値で前記大容量ファイルを分割して複数の分割ファイルを生成する分割ファイル生成処理と、生成された分割ファイルを用いて検索用インデクスを生成するインデクス生成処理と、生成されたインデクスを用いた検索処理と、を実行するプロセッサと、を有し、
前記ファイル処理方法は、
前記プロセッサが、前記分割ファイル処理において、前記データメモリで処理可能な最大限のファイルサイズで前記大容量ファイルを分割して前記複数の分割ファイルを生成ステップと、
前記プロセッサが、前記インデクス生成処理において、前記複数の分割ファイルのそれぞれについてインデクスを生成するステップと、
を有することを特徴とするファイル処理方法。
【請求項６】
請求項５において、
前記分割ファイルを生成するステップは、
前記プロセッサが、予め用意されたリソース診断用サンプルファイルを用いてインデクス作成処理を試行するステップと、
前記プロセッサが、前記データメモリを用いてインデクス作成が可能であった場合に所定サイズの付加データを順次前記サンプルファイルに追加して前記インデクス処理を再試行するステップと、
前記プロセッサが、前記データメモリを用いてインデクス作成が不可能であった場合に前回の追加データを追加した際のファイルサイズを前記分割閾値として算出するステップと、を含むことを特徴とするファイル処理方法。
【請求項７】
請求項６において、
さらに、前記プロセッサが、前記検索処理において、ユーザによる入力クエリを当該入力クエリに含まれるキーワード毎に分割して複数の分割クエリを生成するステップと、
前記プロセッサが、前記複数の分割クエリのそれぞれを用いて複数の大容量ファイルに対して検索を実行するステップと、
前記プロセッサが、それぞれの検索結果を統合して検索結果を取得するステップと、
を含むことを特徴とするファイル処理方法。
【請求項８】
請求項７において、
さらに、前記プロセッサが、前記複数の分割クエリを用いて、前記複数の大容量ファイルを前記分割閾値で分割して生成された複数の分割ファイルのみを対象として検索処理を実行して分割クエリによる第１の検索結果を取得するステップと、
前記プロセッサが、前記入力クエリに、分割されていない大容量ファイルのみを検索対象とすることを意味する付加情報を添付して非分割クエリを生成するステップと、
前記プロセッサが、前記非分割クエリを用いて、前記複数の大容量ファイルに対して検索を実行して、非分割クエリによる第２の検索結果を取得するステップと、
前記プロセッサが、前記第１及び第２の検索結果を統合して、最終検索結果とするステップと、
を含むことを特徴とするファイル処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファイル処理システム、及びファイル処理方法に関し、例えば、コンピュータ上の大容量ファイルを検索するための技術に関するものである。
【背景技術】
【０００２】
近年コンピュータ及び検索エンジンの発達により、ハードディスクなどの記憶装置上に格納された様々なファイルを検索可能となっている。
【０００３】
例えば、全文検索エンジンＳｏｌｒ（非特許文献１）では、ファイル内のテキストデータを検索可能である。Ｓｏｌｒは、ドキュメント毎にデータの種類を区別した検索（属性検索）を行うことが可能である。データの種類（属性）はＳｏｌｒではフィールドと呼ばれ、フィールド名で区別される。Ｓｏｌｒに対して、［フィールド名］：［検索式］のような検索クエリを与えると、フィールドを指定した検索が可能である。例えば、ファイル名のフィールド名が「ｆｉｌｅＮａｍｅ」、本文のフィールド名が「ｃｏｎｔｅｎｔｓ」である場合に、ｆｉｌｅＮａｍｅが「ｓａｍｐｌｅ．ｔｘｔ」、ｃｏｎｔｅｎｔｓ内に「サンプル」を含むドキュメントを検索する際には、「ｆｉｌｅＮａｍｅ：ｓａｍｐｌｅ．ｔｘｔ ＡＮＤ ｃｏｎｔｅｎｔｓ：サンプル」のような検索クエリをＳｏｌｒに与えることで検索可能である。なお、Ｓｏｌｒでは「ＡＮＤ」や「ＯＲ」のような論理演算子を使用することも可能である。ＡＮＤは論理積を表し、ＯＲは論理和を表す。また、Ｓｏｌｒを導入したサーバを複数連結させてスケーラビリティを向上させることも可能である。これにより、数億個のドキュメントを検索対象とすることも可能である。さらに、昨今、検索対象となるファイルの傾向として、ＸＭＬファイルやサーバログ等に対する検索ニーズも増加している。こうした検索対象のファイルでは、膨大な量のデータを１つのファイル（例えば、サーバログファイルの場合、２ＧＢ程度のサイズのファイルも多い）に格納したものが多く、検索対象となるファイルのサイズが大容量化しやすい傾向にある。そのため、現在では、こうした大容量ファイルを対象とした検索にも対応する必要がある。
【０００４】
なお、一般的によく利用されているメールデータや数ページ程度のドキュメント等は、数百ＫＢ以下のものが多いため、本明細書では、それらより大きいサイズのファイルを対象とし、大容量ファイルとは、少なくとも容量が１ＭＢを超えるファイルとする。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】関口宏司著，“Ａｐａｃｈｅ Ｓｏｌｒ入門”，技術評論社，２０１０
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、Ｓｏｌｒ等の全文検索エンジンを利用して、大容量ファイルのインデクス生成処理を行う場合、多くのハードウェアリソースを消費する。インデクス生成処理を行う場合、大容量ファイルが保存されているストレージからファイルをダウンロードした後、内部のテキストデータ（コンテンツデータ）の抽出、及び、テキストデータの解析処理、例えば、言語判定やトークナイズ処理等を行う必要があるが、既存の検索エンジンを利用して、こうした処理を行うには、特に、大量のメモリリソースが必要となる。そのため、現状の検索エンジンで大容量ファイルの完全なインデクスを生成するには、大容量ファイルのサイズに応じて、必要なメモリリソースの見積もりと増強を行わなければならないという課題がある。これは、非常にコストのかかる作業であり改善が必要である。よって、現在、少量のメモリリソースで、大容量ファイルの完全なインデクス生成、及び、検索が可能な装置が求められている。
【０００７】
本発明はこのような状況に鑑みてなされたものであり、メモリリソースの増強を行わずに大容量ファイルのインデクスを生成し、これを用いて検索を可能とするための技術を提供するものである。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明によるファイル処理システムは、大容量ファイルを任意のサイズで複数のチャンクファイルに分割する機能と、チャンクファイルに分割する際に利用する分割サイズを自動で決定する機能と、チャンクファイルを使ってインデクス生成を行う機能と、大容量ファイルを分割せずにインデクス生成した場合と同じ検索結果が得られるように検索クエリを加工／生成する機能と、を有している。
【０００９】
即ち、リソース解析プログラムにおいて、与えられたメモリリソース上で、インデクス生成が可能なファイルサイズの閾値を決定する。分割ファイル生成プログラムでは、リソース解析プログラムにより得られた処理可能なファイルサイズの閾値に従って、大容量ファイルを小さく分割する。インデクス生成プログラムでは、分割ファイル生成プログラムにより分割生成されたチャンクファイルを利用し、インデクスを生成する。検索プログラムでは、検索結果が分割を行わずに生成したインデクスに対する検索結果と、本システムでファイル分割して生成したインデクスに対する検索結果が同じになるように検索クエリを加工／生成し、大容量ファイルに対する検索を実現する。
【００１０】
本発明に関連する更なる特徴は、本明細書の記述、添付図面から明らかになるものである。なお、本発明の態様は、要素及び多様な要素の組み合わせ及び以降の詳細な記述と添付される特許請求の範囲の様態により達成され実現される。また、本発明の特許請求の範囲又は適用例は、如何なる意味に於いても本発明を限定するものではない。
【発明の効果】
【００１１】
本発明を用いれば、メモリリソースの増強を行わずに大容量ファイルのインデクスを生成し、これを用いて検索することができるようになる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態によるファイル処理システム（大容量ファイル検索システム）の概略構成を示す図である。
【図２】大容量ファイルの例を示す図である。
【図３】インデクススキーマを示す図である。
【図４】リソース解析データ（サンプルファイル）を示す図である。
【図５】大容量ファイルを分割して得られるチャンクファイルを示す図である。
【図６】インデクスデータの例を示す図である。
【図７】検索クエリの例を示す図である。
【図８】検索画面例を示す図である。
【図９】リソース解析プログラムによるリソース解析処理を説明するためのフローチャートである。
【図１０】インデクス生成プログラムによるインデクス生成処理を説明するためのフローチャートである。
【図１１】検索プログラムによる検索処理を説明するためのフローチャートである。
【発明を実施するための形態】
【００１３】
以下、添付図面を参照して本発明の実施形態について説明する。ただし、本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。また、各図において共通の構成については同一の参照番号が付されている。
【００１４】
なお、以後の説明では「テーブル」形式によって本発明の各情報について説明するが、これら情報は必ずしもテーブルによるデータ構造で表現されていなくても良く、リスト、ＤＢ、キュー等のデータ構造やそれ以外で表現されていても良い。そのため、データ構造に依存しないことを示すために「テーブル」、「リスト」、「ＤＢ」、「キュー」等について単に「情報」と呼ぶことがある。
【００１５】
また、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ＩＤ」という表現を用いることが可能であり、これらについてはお互いに置換が可能である。
【００１６】
以下では「プログラム」を主語（動作主体）として本発明の実施形態における各処理について説明を行うが、プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポート（通信制御装置）を用いながら行うため、プロセッサを主語とした説明としてもよい。プログラムの一部または全ては専用ハードウェアで実現してもよく、また、モジュール化されていても良い。各種プログラムはプログラム配布サーバや記憶メディアによって各計算機にインストールされてもよい。
【００１７】
＜大容量ファイル検索装置の構成＞
図１は、本発明の実施形態による大容量ファイル検索装置（ファイル処理システム）１０の概略構成を示す機能ブロック図である。
【００１８】
大容量ファイル検索装置１０は、必要な演算処理及び制御処理等を行う中央処理装置（プロセッサ）１００と、データの入出力を行うための入出力装置１１０と、中央処理装置１００での処理に必要なプログラムを格納するプログラムメモリ１２０と、中央処理装置１００での処理対象となるデータまたは処理後のデータを格納する記憶装置１３０と、プログラムが処理過程で生成する中間データを格納するデータメモリ１４０と、を有している。
【００１９】
入出力装置１１０は、データを表示するための表示装置１１１やプリンタ（図示せず）等で構成される出力デバイスと、表示されたデータに対してメニューを選択するなどの操作を行うためのキーボード１１２、マウスなどのポインティングデバイス１１３と、を有している。
【００２０】
プログラムメモリ１２０は、大容量ファイルを分割する際の分割サイズ（分割閾値）を決定するリソース解析プログラム１２１と、大容量ファイルを分割してチャンクファイルを生成する分割ファイル生成プログラム１２２と、分割ファイルを元に検索用インデクスを生成するインデクス生成プログラム１２３と、ユーザからの検索クエリから該当する大容量ファイルを検索する検索プログラム１２４と、を格納している。なお、各処理プログラムは、プログラムコードとしてプログラムメモリ１２０に格納されており、中央処理装置１００が各プログラムコードを実行することによって各処理が実現される。
【００２１】
記憶装置１３０は、検索対象となるファイルが格納された大容量ファイル１３１と、プログラムを実行する上での設定情報（図３には図示せず）、及びインデクス生成に必要な情報（ＰａｒｔＮｕｍがこれに相当する）を格納した設定データ１３２と、インデクスが格納されたインデクスデータ１３３と、大容量ファイルを分割して生成したファイルであるチャンクファイル１３４と、を格納している。なお、記憶装置１３０は、ネットワークを介して遠隔的に配置されていているストレージシステムであってもよい。大容量ファイル１３１やチャンクファイル１３４は内部に複数のファイルが存在するものである。また、元々、大容量ファイル１３１は、ネットワークを介して大容量ファイル検索装置１０と接続される図示しないＮＡＳ（Network Attached Storage）装置に格納されているものであり、そこから取得されたファイルである。そして、大容量ファイル１３１を分割して生成されたチャンクファイル１３４は、インデクス作成時に、データメモリ１４０に読み込まれる。インデクスを作成した後であれば、チャンクファイル１３４は消去しても構わない。なお、図１において、記憶装置１３０は、中央処理装置１００に直接接続される構成となっているが、ネットワークを介して接続されていても良い。
【００２２】
データメモリ１４０は、ファイルの分割サイズを決定する際に利用されるリソース解析データ１４１と、インデクス生成プログラム１２３がインデクスデータ１３３を生成する際にデータメモリ上に読み込むインデクス対象データ１４２と、ユーザクエリデータ１４３と、非分割クエリデータ１４４と、分割クエリリストデータ１４５と、非分割検索結果データ１４６と、分割クエリリスト検索結果データ１４７と、分割検索結果データ１４８と、最終検索結果データ１４９と、を格納している。また、プログラムを実行する際に一時的に使用されるデータ（図示せず）が格納される。
【００２３】
以上に述べた処理プログラム・データ・各プログラム等は、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ＭＯ、フロッピー（登録商標）ディスク、ＵＳＢメモリ等の種々の記録媒体に格納して提供することもできる。
【００２４】
＜大容量ファイル＞
図２は、ＮＡＳ装置から取得され、記憶装置１３０内に格納される大容量ファイル１３１の一例を示す図である。
本発明の実施形態では、大容量ファイル１３１は、インデクス対象となるテキストが大量に記述されているサイズの大きいファイルである。ファイルフォーマットに関しては、検索対象となるコンテンツが格納されたプレーンテキストやＸＭＬ、その他種々のドキュメント形式のファイルが混在しており、ファイル内に書かれているテキストの内容に特別な制限は無いものとする。なお、図２の例では、任意の文字列が書かれたプレーンテキストを示している。図２では、「ＡＡＡ」「ＢＢＢ」「ＣＣＣ」の３つの単語のみが示されているが、実際は、より多くの文字列（単語等）がファイル内には含まれている。
【００２５】
＜設定データ＞
図３は、設定データ１３２の構成を示す図である。設定データ１３２は、図３に示すインデクススキーマ３００と、ファイル分割処理時に利用される分割サイズ（図示せず）と、が格納されている。
【００２６】
インデクススキーマ３００は、インデクス生成プログラム１２３により読み込まれて、インデクスを生成する時に利用される。本実施形態におけるインデクススキーマ３００は、ＵＲＩ３０１、ＰａｒｔＮｕｍ３０２、及びＣｏｎｔｅｎｔｓ３０３の３つのフィールドを少なくとも含んでいる。
【００２７】
ＵＲＩ３０１のフィールドは、検索対象のファイルパスを格納するフィールドである。ＰａｒｔＮｕｍ３０２のフィールドは、大容量ファイル１３１が分割されてインデクシングされた場合の分割数を示す値が格納されるフィールドである。従って、初期状態では当該フィールドは空となっている。Ｃｏｎｔｅｎｔｓ３０３のフィールドは、ファイル内のテキストデータ、または、テキストデータに相当するコンテンツデータを格納するフィールドである。
【００２８】
また、設定データ１３２内には、ファイル分割に利用される分割サイズの閾値が格納されている（図示せず）。分割サイズの閾値は、リソース解析プログラム１２１により、動的に決定される値である（図９参照）。
【００２９】
＜リソース解析データ＞
リソース解析データ（「リソース診断データ」や「サンプルファイル」とも言う）１４１は、図４に示すように、任意なサイズ、かつ、ユニークなｋｅｙｗｏｒｄ（「Ｔｅｓｔ１」、「Ｔｅｓｔ２」、「Ｔｅｓｔ３」、・・・をｋｅｙｗｏｒｄとする）が複数格納されたファイル（サンプルファイル：データメモリ１４０に一番負荷を与えるようなデータ）であり、分割サイズを決定するためにリソース解析プログラム（「リソース診断プログラム」とも言う）１２１により動的に（図９参照）データメモリ１４０上に生成されるデータである。
【００３０】
＜リソース解析プログラム＞
リソース解析プログラム１２１は、リソース解析データ１４１を自動生成し、インデクス生成プログラム１２３と連携して、インデクス生成処理を試験的に実行することで、ファイルサイズがいくつまでならインデクス生成が可能かを検査するプログラムである。具体的な動作としては、リソース解析プログラム１２１は、リソース解析データ１４１を生成後、インデクス生成処理を開始し、インデクス生成が成功した場合は、前回のファイルサイズより任意サイズ分だけファイルサイズを大きくしたファイルを生成し、再度インデクス生成を実行する。そして、失敗するまでインデクス生成処理を繰り返すことで、当該装置上でインデクス生成可能なファイルサイズを決定する。リソース解析プログラムにより決定された分割サイズの閾値は設定ファイル（設定データ）１３２内に格納される。
リソース解析プログラム１２１の更なる動作の詳細については、図９を参照して後述する。
【００３１】
＜チャンクファイル＞
図５は、大容量ファイル１３１とそれから生成されるチャンクファイル１３４の例を示す図である。図５において、５０１〜５０３は、分割ファイル生成プログラム１２２により生成される、チャンクファイル１３４を示している。
【００３２】
チャンクファイル１３４は、大容量ファイル１３１を分割して生成されるファイルである。例えば、大容量ファイル１３１が１２０ＭＢのサイズで、かつ、任意のＫｅｙｗｏｒｄが記述されたテキストであったとする。また、事前にリソース解析プログラム１２１により、当該装置上でインデクス生成可能なファイルサイズが、例えば５０ＭＢ（図９によって得られた閾値）であったとする。その場合、大容量ファイルは、１２０ＭＢの大容量ファイル１３１を３つのチャンクファイル５０１、５０２、５０３に分割される。このとき、各チャンクファイルのサイズは、５０１のチャンクファイルが５０ＭＢ、５０２のチャンクファイルが５０ＭＢ、５０３のチャンクファイルが２０ＭＢといったように分割される。
【００３３】
なお、図５の例では、大容量ファイル１３１内に「ＡＡＡ」、「ＢＢＢ」、「ＣＣＣ」というＫｅｙｗｏｒｄが含まれていたものとし、分割後に５０１のチャンクファイルに「ＡＡＡ」、５０２のチャンクファイルに「ＢＢＢ」、５０３のチャンクファイルに「ＣＣＣ」という単語が含まれている場合を示した図である。
【００３４】
＜インデクスデータ＞
図６は、記憶装置１３０内のインデクスデータ１３３を表す一例を示す図である。インデクスデータ１３３は、分割ファイル生成プログラム１２２とインデクス生成プログラム１２３が連携して、大容量ファイル１３１およびチャンクファイル１３４から生成するデータ（転置インデクス）である。
【００３５】
図６Ａ及びＢは、設定データ１３２に含まれるインデクススキーマ３００（図３参照）に従って、分割ファイル生成プログラム１２２、及び、インデクス生成プログラム１２３により生成されたインデクスデータの例を示している。インデクスデータ１３３のうち、図６Ａは、ＤｏｃＩＤ６０１を主キーとして、インデクススキーマ３００に記述されているＵＲＩ６０２、ＰａｒｔＮｕｍ６０３、Ｃｏｎｔｅｎｔｓ６０４の各フィールドのデータを格納・管理している。また、図６Ｂに示すように、Ｋｅｙｗｏｒｄ６０６を主キーとしてＤｏｃＩＤ６０７が管理されている。これらの２つのテーブルデータはインデクス生成プログラム１２３により生成される。詳細は後述する。
【００３６】
＜分割ファイル生成プログラム＞
分割ファイル生成プログラム１２２は、設定データ１３２から分割サイズ（例えば、５０ＭＢ）を取得する機能と、記憶装置１３０上にある大容量ファイル１３１をデータメモリ１４０上にシーケンシャルに読み込む機能と、読み込んだ大容量ファイルが分割サイズを超えた場合、大容量ファイル１３１を分割し、チャンクファイル１３４を生成する機能と、を実行する。
【００３７】
また、大容量ファイル１３１がプレーンテキストではない場合（例えば、任意のフォーマットを持つドキュメントファイルであった場合）、分割ファイル生成プログラム１２２は、コンテンツ部分を抽出する機能も実行する。チャンクファイル１３４に分割された後、これらのファイルをインデクス生成プログラム１２３に送ってインデクス生成を行う。
【００３８】
＜インデクス対象データ＞
インデクス対象データ１４２は、インデクス生成プログラム１２３がインデクスデータ１３３を生成する際にチャンクファイル１３４をデータメモリ１４０上に読み込んできたデータのことを意味する。
【００３９】
＜インデクス生成プログラム＞
インデクス生成プログラム１２３は、記憶装置１３０上から設定データ１３２のインデクススキーマ３００とチャンクファイル１３４を読み込み、インデクスデータ１３３（図６参照）の生成を行うプログラムである。
【００４０】
インデクス生成プログラム１２３は、インデクス生成が開始されると、インデクス対象の各チャンクファイル１３４を一意に識別できるようにするＤｏｃＩＤ６０１を生成する。そして、インデクス生成プログラム１２３は、ＤｏｃＩＤ６０１を主キーとして、ＵＲＩ（Universal Resource Identifier）６０２、ＰａｒｔＮｕｍ６０３、Ｃｏｎｔｅｎｔｓ６０４に各チャンクファイル内の情報を格納する。なお、ＵＲＩ６０２のフィールドは、チャンク化する前の大容量ファイルのファイルパスを保持する。ＰａｒｔＮｕｍ６０３のフィールドは、大容量ファイル１３１が分割されてインデクシングされた場合の分割数を示す値を保持する。Ｃｏｎｔｅｎｔｓ６０４のフィールドは、チャンクファイル内のテキストデータ、または、テキストデータに相当するコンテンツデータを保持する。
【００４１】
本装置では、対象となる大容量ファイルが、複数のチャンクファイルに分割されているため、ＵＲＩ６０２のフィールドには、重複したファイルパス（大容量ファイルのファイルパス）が格納されることとなる。また、（本装置ではＣｏｎｔｅｎｔｓフィールドのみ検索対象とするが）Ｃｏｎｔｅｎｔｓ６０４は、入力されたテキストデータを保存する前段階として、Ｔｏｋｅｎｉｚｅｒによりｋｅｙｗｏｒｄ単位に分割され、図６Ｂに示すようなＫｅｙｗｏｒｄとＤｏｃＩＤをセットにしたテーブルデータが生成される。なお、本装置では、検索対象となるのはＣｏｎｔｅｎｔｓフィールドのみとするが、仮に、他のフィールド（例えば、ファイルのアクセス日時や変更日時等のメタデータを他のフィールドとすることが可能）が存在し、そのフィールドに対する検索が必要な場合は、フィールド数分だけ図６Ｂにあたるテーブルを作成・管理することで、そのフィールドに対する検索が可能になる。
【００４２】
以上のように、図６Ａ及びＢのデータ構造に従ってインデクスデータを生成し、ユーザが検索キーワードを入力して、図６ＢのテーブルでヒットするキーワードのＤｏｃＩＤ６０７を取得した後、図６Ａのテーブルに問い合わせることで、検索キーワードにヒットするドキュメントのファイルパス（ＵＲＩ）６０２を取得することが可能になる。
【００４３】
＜検索プログラム＞
大容量ファイル１３１に対して検索処理を実行して得られる結果と、分割ファイル（チャンクファイル）のそれぞれに対して検索処理を実行して得られる結果とは、必ずしも一致しない。例えば、複数の大容量ファイルが検索対象となっている場合、分割閾値に容量が達せずに分割されない場合もある。このような場合に、分割ファイルのみを検索対象とすると、本来検索対象とすべき分割されないファイルに対して検索が実行されないことになる。
【００４４】
そこで、検索プログラム１２４は、分割ファイルを使わずにインデクスした場合と同じ検索結果が得られるように、ユーザからの入力クエリ７０１を加工・生成する機能を有している。以下、具体例を用いて、当該機能の概要について説明する。
【００４５】
図７Ａは、ユーザから入力された入力クエリ７０１を示す。また、検索プログラム１２４が入力クエリ７０１を加工することにより、図７Ｂの非分割クエリ７０２と図７Ｃの分割クエリリスト７０３〜７０５を生成する。図７は、例えば、ユーザにより「（Ｃｏｎｔｅｎｔｓ：ＡＡＡ  ＡＮＤ  Ｃｏｎｔｅｎｔｓ：ＢＢＢ）  ＯＲ  Ｃｏｎｔｅｎｔｓ：ＣＣＣ」７０１というクエリが入力された場合を示している。
【００４６】
このクエリは、Ｃｏｎｔｅｎｔｓフィールドに「ＡＡＡ」が含まれるファイル、かつ、Ｃｏｎｔｅｎｔｓフィールドに「ＢＢＢ」が含まれるファイル、または、Ｃｏｎｔｅｎｔｓフィールドに「ＣＣＣ」が含まれるファイルを検索している。即ち、「ＡＡＡ」と「ＢＢＢ」という両方の単語を含むか、または、「ＣＣＣ」という単語を含むファイルを検索していることを示している。
【００４７】
検索プログラム１２４は、入力クエリ７０１から、非分割クエリ７０２と分割クエリ７０３、７０４、７０５を内部的に生成する。図７の例では、非分割クエリ７０１は「（（Ｃｏｎｔｅｎｔｓ：ＡＡＡ  ＡＮＤ  Ｃｏｎｔｅｎｔｓ：ＢＢＢ）  ＯＲ  Ｃｏｎｔｅｎｔｓ：ＣＣＣ）  ＡＮＤ  ＰａｒｔＮｕｍ：１」となり、ユーザクエリに「ＡＮＤ  ＰａｒｔＮｕｍ：１」、即ちユーザクエリの結果、かつＰａｒｔＮｕｍフィールドの値が１となる検索結果（分割閾値に達しないサイズを有するファイルであって、入力クエリを満足するファイル）を要求するクエリである。
【００４８】
分割クエリリスト７０３、７０４、及び７０５は、ユーザクエリのうち、ＡＮＤとＯＲで区切られた部分を切り離し、それぞれに「ＰａｒｔＮｕｍ：［２  ＴＯ  ＊］」をＡＮＤで付与したクエリである。「ＰａｒｔＮｕｍ：［２  ＴＯ  ＊］」の条件は、ＰａｒｔＮｕｍフィールドが２以上（＊は∞を意味する）となることを意味する。即ち、分割クエリ７０３であれば、Ｃｏｎｔｅｎｔｓフィールドに「ＡＡＡ」が含まれかつ、ＰａｒｔＮｕｍフィールドの値が２以上のファイルが検索結果として得られることとなる。さらに、検索プログラム１２４は、入力クエリから生成した非分割クエリ７０２と分割クエリリスト７０３〜７０５を使って、インデクスデータ１３３からそれぞれの検索結果を取得する。非分割クエリ７０２の結果は、非分割検索結果データ１４６としてデータメモリ１４０上に保持される。また、分割クエリリスト７０３〜７０５の検索結果は、分割検索結果データ１４８としてデータメモリ１４０上に保持される。さらに、これら非分割検索結果データ１４６と、分割検索結果データ１４８をマージし、データメモリ１４０上の最終検索結果データ１４９として保持する。
【００４９】
以上の処理をまとめると、検索プログラム１２４は、まず、入力クエリ７０１に対して、２つのクエリ、つまり、非分割クエリ７０２と分割クエリリスト（７０３〜７０５）を生成する。非分割クエリ７０２は、入力クエリ７０１に対して「ＰａｒｔＮｕｍ：１」の検索条件がＡＮＤ条件で付与されて生成される。分割クエリリスト（７０３〜７０５）は、各分割クエリリスト（７０３〜７０５）内のクエリに「ＰａｒｔＮｕｍ：［２  ＴＯ  ＊］」がＡＮＤ条件で付与される。
それらの各々の検索を実行して、検索結果をＯＲ条件でマージし、最終検索結果を取得する。
【００５０】
以上により、ファイル分割を行わずにインデクス生成した場合と同じ検索結果が得られるようになる。なお、全ての大容量ファイル１３１が分割の対象となる場合には、非分割クエリ７０２を生成する必要はない。
【００５１】
＜検索画面＞
図８は、大容量ファイルを検索する際に使用される検索画面（ＧＵＩ）の一例を示す図である。
図８に示されるように、ＧＵＩのウインドウでは、上側の領域に検索条件を入力する検索ボックス８０２と検索ボタン８０３が表示され、下側の領域には、８０２に入力した検索条件の検索結果８０４が表示される。図８では、大容量ファイル内の「ＡＡＡ」「ＢＢＢ」の両方の単語が含まれるか、または、「ＣＣＣ」の単語が含まれるファイルの検索結果が示されている。
【００５２】
＜大容量データ検索装置における処理概要＞
上述の構成を有する大容量ファイル検索装置において行われる処理の概要について簡単に説明する。
まず、中央処理装置１００は、リソース解析プログラム１２１を用いて、当該装置上でインデクス処理可能なファイルサイズの閾値を算出し、設定データ１３２に格納する。
【００５３】
次に、分割ファイル生成プログラム１２２は、設定データ１３２に格納されている大容量ファイル１３１の分割サイズと、記憶装置１３０上の大容量ファイル１３１を読み込み、大容量ファイル１３１を複数のチャンクファイル１３４に分割して、記憶装置１３０に保存する。
【００５４】
インデクス生成プログラム１２３は、記憶装置１３０から設定データ１３２の中のインデクススキーマ３００と、チャンクファイル１３４をデータメモリ１４０上に読み込み、インデクススキーマ３００に従ってインデクスを生成し、インデクスデータ１３３として記憶装置１３０に格納する。
【００５５】
最後に、検索プログラム１２４は、検索画面８０１において検索ボタン８０３が押下されると、検索条件を解析し、インデクスデータ１３３から検索条件に該当する大容量ファイル１３１を検索し、検索結果を検索画面に表示する。それぞれの処理について、以下詳細に説明する。
【００５６】
＜リソース解析処理＞
図９は、リソース解析プログラム１２１により、インデクス分割における分割サイズの閾値を決定する処理を説明するためのフローチャートである。なお、このリソース解析プログラム１２１は、当該装置がインストールされた初回のみ実行されるプロセスである。
【００５７】
ステップ９０１において、中央処理装置１００は、リソース解析プログラムを起動する。
ステップ９０２では、リソース解析プログラム１２１は、初期のリソース解析データ１４１（図４参照）をデータメモリ１４０上に生成する。なお、この時生成されるデータは、例えば、多数のユニークなＫｅｙｗｏｒｄ（メモリに最も負荷が掛かるユニークなＫｅｙｗｏｒｄが含まれるデータ）が記述され、かつ、１ＭＢ程度の小さなサイズのテキストデータであり、メモリリソースの少ない装置であってもインデクス生成が可能なファイルである。
【００５８】
ステップ９０３では、インデクス生成プログラム１２３が起動され、ステップ９０４で、前述の初期リソース解析データ１４１のインデクス生成処理が実行される。
【００５９】
リソース解析プログラム１２１は、リソース解析データ１４１に対してインデクス生成処理が成功したか否か判定する。インデクス生成が成功した場合（初回インデクスは必ず成功するように初期リソース解析データを生成しているので、初回の失敗は無いものとする。なお、失敗した場合は、初期リソース解析データのサイズを更に小さくして、図９に示すフローを再度実行する）、処理はステップ９０６に移行する。
【００６０】
ステップ９０６では、リソース解析プログラム１２１は、設定データ１３２に、初期リソース解析データのデータサイズを分割サイズの閾値として保存する。
【００６１】
その後、ステップ９０７で、リソース解析プログラム１２１は、前回のリソース解析データに対して任意サイズ分のデータ（追加されるデータもすべてがユニークなＫｅｙｗｏｒｄを含むデータとなっている）を追加し、新規リソース解析データ１４１を生成する。そして、処理は、再度ステップ９０３に戻る。
【００６２】
ステップ９０３では、インデクス生成プログラム１２３が起動されインデクス生成処理が新規リソース解析データに対して実行される。これらステップ９０３〜ステップ９０７の処理は、インデクス処理が失敗するまで繰り返し実行される。これにより、当該装置における、インデクス生成可能なファイルサイズの閾値を得ることが可能になる。つまり、この当該装置のインデクス生成可能なファイルサイズの閾値（分割閾値）に従って、大容量ファイルを分割してインデクス生成処理を行えば既存メモリリソース内で、大容量ファイルのインデクス生成が可能になる。このように動的に、分割閾値が生成される。
【００６３】
＜インデクス生成処理＞
図１０は、インデクス生成処理の内容を説明するためのフローチャートである。インデクス生成処理では、図２の大容量ファイルから、図６に示すインデクスデータが生成される。
【００６４】
ステップ１００１において、インデクス生成プログラム１２３は、記憶装置１３０から、設定データ１３２とインデクスデータ１３３を読み込む。なお、複数の大容量ファイル１３１が存在し、最初の大容量ファイルに対してインデクス処理を実行する場合には、インデクスデータ１３３はまだ生成されていないので読み込まれない。既にインデクスデータ１３３が存在する場合に、当該ステップにおいて、インデクスデータ１３３が読み込まれ、今回対象のファイルに対して生成された新規のインデクスが読み込まれたインデクスデータ１３３に追加されることになる（ステップ１００７参照）。
【００６５】
ステップ１００２において、インデクス生成プログラム１２３は、インデクス生成対象のファイルのファイルパスを取得し、インデクス生成対象を特定する。ＮＡＳ装置にアクセスするためにはファイルパスが必要だからである。なお、複数の対象ファイルを記述した対象ファイルリストを取得するようにしても良い。この対象ファイルリストとは、記憶装置１３０上に配置されている大容量ファイル１３１の内、検索対象となるファイルパスのリストが記述されたものである。対象ファイルリストを取得した場合には、個々の大容量ファイル１３１に対して順次インデクス生成処理が実行されることになる。図１０では繰り返し処理として記述されていないが、対象ファイルリストを取得した場合には、ステップ１００８の後に、最終ファイルか否かの判断ステップ（ステップ１００９）が追加され、最終ファイルではない場合には、次のファイルに対してステップ１００３乃至１００８の処理が実行されることになる。
【００６６】
次に、ステップ１００３において、分割ファイル生成プログラム１２２は、インデクス生成プログラム１２３の生成した対象ファイルパスを取得して、記憶装置１３０から設定データ１３２内の分割サイズと、大容量ファイル１３１を読み込む。
【００６７】
ステップ１００４では、分割ファイル生成プログラム１２２は、読み込んだ大容量ファイル１３１のサイズと分割サイズとを比較する。この時、ファイルサイズが分割サイズ以上だった場合、分割ファイル生成プログラム１２２は、ステップ１００５で、ファイル分割を行い、記憶装置１３０上にチャンクファイル１３４（複数のチャンクファイルが生成される）として格納する。例えば、大容量ファイルが、図２で示すようなファイルで、そのファイルサイズが１２０ＭＢであり、かつ、設定データに設定されている分割サイズの閾値が５０ＭＢであった場合、ファイルは、５０ＭＢ、５０ＭＢ、２０ＭＢという３つのファイルに分割される。なお、図２の例では、分割された３つのチャンクファイルにそれぞれ、「ＡＡＡ」、「ＢＢＢ」、「ＣＣＣ」という単語が含まれていた場合を示している。
【００６８】
ステップ１００６では、インデクス生成プログラム１２３は、チャンクファイル１３４をデータメモリ１４０上に読み込み、ステップ１００７でインデクスデータ１３３を生成する。なお、インデクス生成に関する処理としては、インデクス生成プログラム１２３は、チャンクファイル１３４を、一つずつデータメモリ１４０上のインデクス対象データ１４２として読み込み、一意のＤｏｃＩＤ６０１及び６０７を生成する（図６参照）。次に、インデクス生成プログラム１２３は、読み込んだチャンクファイル１３４から、インデクススキーマ３００に従って３つのフィールドデータを生成する。当該装置では、インデクスフィールドは、ＵＲＩ３０１、ＰａｒｔＮｕｍ３０２、Ｃｏｎｔｅｎｔｓ３０３であるため（図３参照）、例えば、チャンクファイル５０１の場合、「ＵＲＩ＝／Ｄａｔａ／Ｆｉｌｅ１．ｔｘｔ」、「ＰａｒｔＮｕｍ＝３」、「Ｃｏｎｔｅｎｔｓ＝ＡＡＡ  …」となる。さらに、インデクス生成プログラム１２３は、Ｃｏｎｔｅｎｔｓフィールドのトークナイズを行い、Ｋｅｙｗｏｒｄ６０６とＤｏｃＩＤ６０７の関連を示すテーブル（図６Ｂ）を生成する。ここで、トークナイズ処理とは、テキストデータをＫｅｙｗｏｒｄ単位に分割する処理である。以上のデータをデータメモリ１４０上で生成して、記憶装置１３０上のインデクスデータ１３３に格納する。なお、図６Ｂには、チャンクファイル５０１のＫｅｙｗｏｒｄとして「ＡＡＡ」しか記述していないが、実際には、トークナイズ処理により得られたｋｅｙｗｏｒｄ分だけレコードが存在することとなる。
【００６９】
ステップ１００７でインデクス生成が終了した後、ステップ１００８において、インデクス生成プログラム１２３は、チャンクファイル１３４が残っているか否かをチェックする。残りのチャンクファイル１３４がある場合、処理はステップ１００６に戻ってチャンクファイル１３４が無くなるまで、インデクス生成処理が繰り返される。なお、図５のチャンクファイルのインデクシングを行う場合、５０１のチャンクファイルは、ＵＲＩ＝／Ｄａｔａ／Ｆｉｌｅ１．ｔｘｔ、ＰａｒｔＮｕｍ＝３、Ｃｏｎｔｅｎｔｓ＝ＡＡＡ…となる。また、５０２のチャンクファイルは、ＵＲＩ＝／Ｄａｔａ／Ｆｉｌｅ１．ｔｘｔ、ＰａｒｔＮｕｍ＝３、Ｃｏｎｔｅｎｔｓ＝ＢＢＢ…となる。さらに、５０３のチャンクファイルは、ＵＲＩ＝／Ｄａｔａ／Ｆｉｌｅ１．ｔｘｔ、ＰａｒｔＮｕｍ＝３、Ｃｏｎｔｅｎｔｓ＝ＣＣＣ…となる。
【００７０】
また、図６Ｂにおいては、ｋｅｙｗｏｒｄ＝「ＡＡＡ」について、ＤｏｃＩＤ＝１、ｋｅｒｙｗｏｒｄ＝「ＢＢＢ」についてはＤｏｃＩＤ＝２、ｋｅｙｗｏｒｄ＝「ＣＣＣ」についてはＤｏｃＩＤ＝３がそれぞれ格納される。
【００７１】
＜検索処理＞
図１１は、検索プログラム１２４が実行する検索処理を説明するためのフローチャートである。検索処理では、図５の大容量ファイル１３１から生成したインデクスデータ１３３を対象に、図８のような検索画面８０１で入力された検索クエリ８０２に該当する検索対象ファイルを検索結果８０４として表示する。
【００７２】
検索画面８０１に置いて入力クエリが入力され検索ボタン８０３が押下されると、検索処理が開始される。以下、入力クエリが「（Ｃｏｎｔｅｎｔｓ：ＡＡＡ  ＡＮＤ  Ｃｏｎｔｅｎｔｓ：ＢＢＢ）  ＯＲ  Ｃｏｎｔｅｎｔｓ：ＣＣＣ」であった場合で説明する（図７参照）。
【００７３】
ステップ１１０１において、検索プログラム１２４は、記憶装置１３０から、設定データ１３２、及びインデクスデータ１３３を読み込む。
【００７４】
ステップ１１０２において、検索プログラム１２４は、入力クエリを解析し、非分割クエリデータ１４４と、分割クエリリストデータ１４５を生成する。非分割クエリデータ１４４は図７Ｂに相当するデータである。また、分割クエリリストデータ１４５は、図７Ｃの７０３〜７０５に相当するデータである。
【００７５】
ステップ１１０３において、検索プログラム１２４は、非分割クエリデータ１４４（７０２）に対して、検索を実行して非分割検索結果データ１４６を取得する。なお、図６で示される例のインデクスデータ１３３に対して、図７Ｂで示される非分割クエリ７０２による検索をかけた結果はＰａｒｔＮｕｍのフィールドに合致しないため、ヒット件数は０件となる。
【００７６】
ステップ１１０４において、検索プログラム１２４は、分割クエリリストデータ１４５（７０３〜７０５）に対して検索を実行して分割クエリリスト検索結果データ１４７（７０３〜７０５の各クエリに対するそれぞれの結果）を取得する。なお、図６で示される例のインデクスデータ１３３に対して、図７Ｃで示される分割クエリリスト（７０３〜７０５）による検索を実行して得られる分割クエリリスト検索結果データ１４７は次のようになる。つまり、分割クエリリスト７０３の検索に対する結果としてＤｏｃＩＤ＝１がヒットし、分割クエリリスト７０４の検索結果としてＤｏｃＩＤ＝２がヒットし、分割クエリリスト７０５の検索結果としてＤｏｃＩＤ＝３がヒットする。
【００７７】
そして、ステップ１１０５において、検索プログラム１２４は、得られた分割クエリリスト検索結果の内重複しているＵＲＩをカウントし、ＵＲＩ３０１の個数がＰａｒｔＮｕｍの数と合致しているかをチェックした後、ＰａｒｔＮｕｍの個数と合致しているＵＲＩ３０１を分割検索結果データ１４８とする。
【００７８】
ステップ１１０６では、検索プログラム１２４は、非分割検索結果データ１４６と分割検索結果データ１４８をＯＲ条件で合わせて最終検索結果１４９として、検索画面８０１に表示する。即ち、図６のインデクスデータ１３３に対して、図７Ａの入力クエリを与えた場合であれば、ＵＲＩ＝／Ｄａｔａ／Ｆｉｌｅ１．ｔｘｔが表示される。
【００７９】
＜まとめ＞
以上説明したように、本実施形態によれば、大容量ファイルのインデクシング時に少量のメモリリソースで大容量ファイルのインデクス生成が可能になる。また、検索機能に置いても、通常の全文検索エンジンの持っている検索結果と同じものを得ることが可能である。
【００８０】
（i）本発明の実施形態によるファイル処理システムでは、プロセッサが、各種プログラムに従って、所定ファイルサイズを示す分割閾値で前記大容量ファイルを分割して複数の分割ファイルを生成する分割ファイル生成処理と、生成された分割ファイルを用いて検索用インデクスを生成するインデクス生成処理と、生成されたインデクスを用いた検索処理を、実行することが可能となっている。さらに、プロセッサは、分割ファイル処理において、データメモリで処理可能な最大限のファイルサイズで大容量ファイルを分割して複数の分割ファイルを生成する。また、プロセッサは、インデクス生成処理において、複数の分割ファイルのそれぞれについてインデクスを生成する。このようにすることにより、メモリリソースを増強することなく、大容量ファイルのインデクス生成を行うことが可能となる。
【００８１】
具体的に、分割ファイル処理において、予め用意されたリソース診断用サンプルファイルを用いてインデクス作成処理を試行し、データメモリを用いてインデクス作成が可能であった場合に所定サイズの付加データを順次サンプルファイルに追加してインデクス処理を再試行する。そして、データメモリを用いてインデクス作成が不可能であった場合に前回の追加データを追加した際のファイルサイズを分割閾値として算出する。このようにすることにより、システムによって動的に分割処理で用いる分割閾値（大容量ファイルを分割する際に用いるファイルサイズ）を決定することが可能となる。
【００８２】
また、検索処理において、ユーザによる入力クエリを当該入力クエリに含まれるキーワード毎に分割して複数の分割クエリを生成し、当該複数の分割クエリのそれぞれを用いて複数の大容量ファイルに対して検索を実行する。そして、それぞれの検索結果を統合して検索結果を取得する。より具体的には、複数の分割クエリを用いて、複数の大容量ファイルを分割閾値で分割して生成された複数の分割ファイルのみを対象として検索処理を実行して分割クエリによる第１の検索結果を取得する。さらに、入力クエリに、分割されていない大容量ファイルを検索対象とすることを意味する付加情報を添付して非分割クエリを生成し、当該非分割クエリを用いて複数の大容量ファイルに対して検索を実行して、非分割クエリによる第２の検索結果を取得する。そして、第１及び第２の検索結果を統合して、最終検索結果とする。このようにすることにより、通常のインデクス生成処理によって生成されたインデクスの検索結果と同じ検索結果を得ることが可能となる。また、Ｈａｄｏｏｐ等のソフトウェアを使ってメモリリソースの乏しいノードで分散処理クラスタを構築した場合でも、メモリリソースの制限を受けることなくインデクシング、及び、検索が可能になる。
【００８３】
（ii）本発明は、実施形態の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をシステム或は装置に提供し、そのシステム或は装置のコンピュータ（又はＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどが用いられる。
【００８４】
また、プログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータ上のメモリに書きこまれた後、そのプログラムコードの指示に基づき、コンピュータのＣＰＵなどが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。
【００８５】
さらに、実施の形態の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することにより、それをシステム又は装置のハードディスクやメモリ等の記憶手段又はＣＤ−ＲＷ、ＣＤ−Ｒ等の記憶媒体に格納し、使用時にそのシステム又は装置のコンピュータ（又はＣＰＵやＭＰＵ）が当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしても良い。
【００８６】
最後に、ここで述べたプロセス及び技術は本質的に如何なる特定の装置に関連することはなく、コンポーネントの如何なる相応しい組み合わせによってでも実装できることを理解する必要がある。更に、汎用目的の多様なタイプのデバイスがここで記述した教授に従って使用可能である。ここで述べた方法のステップを実行するのに、専用の装置を構築するのが有益であることが判るかもしれない。また、実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。本発明は、具体例に関連して記述したが、これらは、すべての観点に於いて限定の為ではなく説明の為である。本分野にスキルのある者には、本発明を実施するのに相応しいハードウェア、ソフトウェア、及びファームウエアの多数の組み合わせがあることが解るであろう。例えば、記述したソフトウェアは、アセンブラ、Ｃ／Ｃ＋＋、ｐｅｒｌ、Ｓｈｅｌｌ、ＰＨＰ、Ｊａｖａ（登録商標）等の広範囲のプログラム又はスクリプト言語で実装できる。
【００８７】
さらに、上述の実施形態において、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていても良い。
【００８８】
加えて、本技術分野の通常の知識を有する者には、本発明のその他の実装がここに開示された本発明の明細書及び実施形態の考察から明らかになる。記述された実施形態の多様な態様及び／又はコンポーネントは、データを管理する機能を有するコンピュータ化ストレージシステムに於いて、単独又は如何なる組み合わせでも使用することが出来る。明細書と具体例は典型的なものに過ぎず、本発明の範囲と精神は後続する請求範囲で示される。
【符号の説明】
【００８９】
１００…中央処理装置（プロセッサ）
１１０…入出力装置
１１１…表示装置
１１２…キーボード
１１３…マウス
１２０…プログラムメモリ
１２１…リソース解析プログラム
１２２…分割ファイル生成プログラム
１２３…インデクス生成プログラム
１２４…検索プログラム
１３０…記憶装置
１３１…大容量ファイル
１３２…設定データ
１３３…インデクスデータ
１３４…チャンクファイル
１４０…データメモリ
１４１…リソース解析データ
１４２…インデクス対象データ
１４３…ユーザクエリデータ
１４４…非分割クエリデータ
１４５…分割クエリリストデータ
１４６…非分割検索結果データ
１４７…分割クエリリスト検索結果データ
１４８…分割検索結果データ
１４９…最終検索結果データ
【図１】
2014194692.tif 000003
【図２】
2014194692.tif 000004
【図３】
2014194692.tif 000005
【図４】
2014194692.tif 000006
【図５】
2014194692.tif 000007
【図６】
2014194692.tif 000008
【図７】
2014194692.tif 000009
【図８】
2014194692.tif 000010
【図９】
2014194692.tif 000011
【図１０】
2014194692.tif 000012
【図１１】
2014194692.tif 000013