(57)【要約】  下限数値群の出現マップとなる４桁・先頭数字３マップ（Ｍ４３）と上限数値群の出現マップとなる４桁・先頭数字６マップ（Ｍ４６）との間の４桁・先頭数字４マップ（Ｍ４４）および４桁・先頭数字５マップ（Ｍ４５）を、中間数値群の出現マップとして抽出する。４桁・先頭数字３マップ（Ｍ４３）および４桁・先頭数字６マップ（Ｍ４６）は、大小比較に用いる出現マップである。また、４桁・先頭数字４マップ（Ｍ４４）および４桁・先頭数字５マップ（Ｍ４５）は、論理和をとって中間結果マップ（Ｍ０１）とする。中間結果マップ（Ｍ０１）は、数値４０００〜５９９９が存在する帳票ファイルｆｉの存否をあらわしている。そして、この中間結果マップ（Ｍ０１）内のビットを反転させることで、省略マップ（Ｍ０２）を得る。
2008047432.tif 000002
【特許請求の範囲】
【請求項１】
任意の数値範囲の境界を規定する数値を取得させる取得工程と、
前記取得工程によって取得された境界を規定する数値の桁数および先頭数字を検出させる検出工程と、
桁数および先頭数字を満たす数値群内の数値の存否を検索対象ファイルごとにあらわしたビット列の集合の中から、前記検出工程によって検出された桁数および先頭数字を満たす数値群内の数値の存否を前記検索対象ファイルごとにあらわしたビット列を抽出させるビット列抽出工程と、
前記ビット列抽出工程によって抽出されたビット列の中の前記検出工程によって検出された桁数および先頭数字を満たす数値群内の数値の存在を示すビットに対応する検索対象ファイルを、前記複数の検索対象ファイルの中から特定させる特定工程と、
前記特定工程によって特定された検索対象ファイルに含まれているファイル内数値が、前記境界を規定する数値との境界条件を充足しているか否かを判断させる境界条件判断工程と、
前記境界条件判断工程によって判断された判断結果に基づいて、前記特定工程によって特定された検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定させる決定工程と、
をコンピュータに実行させることを特徴とする情報検索プログラム。
【請求項２】
前記境界を規定する一方の数値の桁数および先頭数字を満たす一方の数値群と、前記境界を規定する他方の数値の桁数および先頭数字を満たす他方の数値群との間に、中間の数値群が存在するか否かを判断させる中間数値群判断工程を、前記コンピュータに実行させ、
前記特定工程は、
さらに、前記一方の数値群内の数値が存在する検索対象ファイルのうち前記中間数値群内の数値が存在しない検索対象ファイル（以下、「一方の検索対象ファイル」という）を特定させるとともに、前記他方の数値群内の数値が存在する検索対象ファイルのうち前記中間数値群内の数値が存在しない検索対象ファイル（以下、「他方の検索対象ファイル」という）を特定させ、
前記境界条件判断工程は、
前記特定工程によって特定された一方の検索対象ファイルに含まれているファイル内数値が前記境界を規定する一方の数値との境界条件を充足しているか否か、および前記特定工程によって特定された他方の検索対象ファイルに含まれているファイル内数値が前記境界を規定する他方の数値との境界条件を充足しているか否かを判断させ、
前記決定工程は、
前記境界条件判断工程によって判断された判断結果に基づいて、前記一方の検索対象ファイル、前記他方の検索対象ファイル、または前記中間数値群内の数値が存在する検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定させることを特徴とする請求項１に記載の情報検索プログラム。
【請求項３】
任意の数値範囲の境界を規定する数値を取得させる取得工程と、
前記取得工程によって取得された境界を規定する数値を所定の圧縮形式で圧縮させる数値圧縮工程と、
前記数値圧縮工程によって得られた前記境界を規定する数値に関する圧縮情報と、検索対象ファイルを前記所定の形式で圧縮した圧縮化検索対象ファイルに含まれているファイル内数値に関する圧縮情報とを照合することにより、前記ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断させる境界条件判断工程と、
前記境界条件判断工程によって判断された判断結果に基づいて、前記圧縮化検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定させる決定工程と、
をコンピュータに実行させることを特徴とする情報検索プログラム。
【請求項４】
前記数値圧縮工程は、
前記境界を規定する数値を、前記境界を規定する数値の桁数を示す数字に関する圧縮符号および前記境界を規定する数値の桁数ごとの数字に関する圧縮符号を含む圧縮情報に圧縮させ、
前記境界条件判断工程は、
前記数値圧縮工程によって圧縮された圧縮情報と、前記ファイル内数値の桁数を示す数字に関する圧縮符号および前記ファイル内数値の桁ごとの数字に関する圧縮符号とを含む前記ファイル内数値に関する圧縮情報とを照合することにより、前記ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断させることを特徴とする請求項３に記載の情報検索プログラム。
【請求項５】
前記境界を規定する一方の数値の桁数および先頭数字を満たす一方の数値群と、前記境界を規定する他方の数値の桁数および先頭数字を満たす他方の数値群との間に、中間の数値群が存在するか否かを判断させる中間数値群判断工程と、
前記一方の数値群内の数値が存在する圧縮化検索対象ファイルのうち前記中間数値群内の数値が存在しない圧縮化検索対象ファイル（以下、「一方の圧縮化検索対象ファイル」という）を特定させるとともに、
前記他方の数値群内の数値が存在する圧縮化検索対象ファイルのうち前記中間数値群内の数値が存在しない圧縮化検索対象ファイル（以下、「他方の圧縮化検索対象ファイル」という）を特定させる特定工程とを、前記コンピュータに実行させ、
前記数値圧縮工程は、
前記境界を規定する一方の数値を、前記境界を規定する数値の桁数を示す数字に関する圧縮符号および前記境界を規定する数値の桁数ごとの数字に関する圧縮符号を含む一方の圧縮情報に圧縮させるとともに、
前記境界を規定する他方の数値を、前記境界を規定する数値の桁数を示す数字に関する圧縮符号および前記境界を規定する数値の桁数ごとの数字に関する圧縮符号を含む他方の圧縮情報に圧縮させ、
前記境界条件判断工程は、
前記数値圧縮工程によって得られた前記一方の圧縮情報と前記一方の圧縮化検索対象ファイルに含まれているファイル内数値に関する圧縮情報とを照合することにより、当該ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断させるとともに、
前記数値圧縮工程によって得られた前記他方の圧縮情報と前記他方の圧縮化検索対象ファイルに含まれているファイル内数値に関する圧縮情報とを照合することにより、当該ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断させ、
前記決定工程は、
前記境界条件判断工程によって判断された判断結果に基づいて、前記一方の圧縮化検索対象ファイル、前記他方の圧縮化検索対象ファイル、または前記中間数値群内の数値が存在する圧縮化検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定させることを特徴とする請求項３または４に記載の情報検索プログラム。
【請求項６】
前記検索対象ファイル内に存在する数字の出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正させる補正工程と、
前記補正工程によって補正された出現頻度に基づいて、前記検索対象ファイルを圧縮させるファイル圧縮工程と、を前記コンピュータに実行させ、
前記境界条件判断工程は、
前記数値圧縮工程によって得られた前記境界を規定する数値に関する圧縮情報と、前記ファイル圧縮工程によって圧縮された前記圧縮化検索対象ファイルに含まれているファイル内数値に関する圧縮情報とを照合することにより、前記ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断させることを特徴とする請求項３に記載の情報検索プログラム。
【請求項７】
前記補正工程は、
さらに、前記検索対象ファイル内に存在するカンマの出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正させることを特徴とする請求項６に記載の情報検索プログラム。
【請求項８】
前記補正工程は、
さらに、前記検索対象ファイル内に存在する小数点の出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正させることを特徴とする請求項６または７に記載の情報検索プログラム。
【請求項９】
数字と文字とが混在する検索対象ファイルの中から数値の存在を示すフィーダを検出させるフィーダ検出工程と、
前記フィーダ検出工程によって検出されたフィーダに関連付けられている数値の桁数を検出させる桁数検出工程と、
前記検索対象ファイル内に含まれている数字の出現頻度に基づいて、前記数値を前記フィーダに関連付けて、前記桁数検出工程によって検出された桁数を示す数字に関する圧縮符号と前記数値の桁数ごとの数字に関する圧縮符号とを含む圧縮情報に圧縮させる圧縮工程と、
をコンピュータに実行させることを特徴とする情報検索プログラム。
【請求項１０】
前記フィーダは、前記数値の種類を特定する情報であることを特徴とする請求項９に記載の情報検索プログラム。
【請求項１１】
前記数値が全角または半角であることを検出させる全角／半角検出工程を前記コンピュータに実行させ、
前記圧縮工程は、
さらに、前記数値を、前記全角／半角検出工程によって検出された検出結果に関する圧縮符号を含む圧縮情報に圧縮させることを特徴とする請求項９また１０に記載の情報検索プログラム。
【請求項１２】
前記数値の中からカンマを検出させるカンマ検出工程を前記コンピュータに実行させ、
前記圧縮工程は、
さらに、前記数値を、前記カンマ検出工程によって検出された検出結果に関する圧縮符号を含む圧縮情報に圧縮させることを特徴とする請求項９または１０に記載の情報検索プログラム。
【請求項１３】
前記検索対象ファイル内に存在する数字の出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正させる補正工程を前記コンピュータに実行させ、
前記圧縮工程は、
前記補正工程によって補正された出現頻度に基づいて、前記数値を圧縮させることを特徴とする請求項９に記載の情報検索プログラム。
【請求項１４】
前記補正工程は、
さらに、前記検索対象ファイル内に存在するカンマの出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正させることを特徴とする請求項９に記載の情報検索プログラム。
【請求項１５】
前記補正工程は、
さらに、前記検索対象ファイル内に存在する小数点の出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正させることを特徴とする請求項９に記載の情報検索プログラム。
【請求項１６】
請求項１、３または９のいずれか一つに記載の情報検索プログラムを記録した前記コンピュータに読み取り可能な記録媒体。
【請求項１７】
任意の数値範囲の境界を規定する数値を取得する取得工程と、
前記取得工程によって取得された境界を規定する数値の桁数および先頭数字を検出する検出工程と、
桁数および先頭数字を満たす数値群内の数値の存否を検索対象ファイルごとにあらわしたビット列の集合の中から、前記検出工程によって検出された桁数および先頭数字を満たす数値群内の数値の存否を前記検索対象ファイルごとにあらわしたビット列を抽出するビット列抽出工程と、
前記ビット列抽出工程によって抽出されたビット列の中の前記検出工程によって検出された桁数および先頭数字を満たす数値群内の数値の存在を示すビットに対応する検索対象ファイルを、前記複数の検索対象ファイルの中から特定する特定工程と、
前記特定工程によって特定された検索対象ファイルに含まれているファイル内数値が、前記境界を規定する数値との境界条件を充足しているか否かを判断する境界条件判断工程と、
前記境界条件判断工程によって判断された判断結果に基づいて、前記特定工程によって特定された検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定する決定工程と、
を含んだことを特徴とする情報検索方法。
【請求項１８】
任意の数値範囲の境界を規定する数値を取得する取得工程と、
前記取得工程によって取得された境界を規定する数値を所定の圧縮形式で圧縮する数値圧縮工程と、
前記数値圧縮工程によって得られた前記境界を規定する数値に関する圧縮情報と、検索対象ファイルを前記所定の形式で圧縮した圧縮化検索対象ファイルに含まれているファイル内数値に関する圧縮情報とを照合することにより、前記ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断する境界条件判断工程と、
前記境界条件判断工程によって判断された判断結果に基づいて、前記圧縮化検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定する決定工程と、
を含んだことを特徴とする情報検索方法。
【請求項１９】
数字と文字とが混在する検索対象ファイルの中から数値の存在を示すフィーダを検出するフィーダ検出工程と、
前記フィーダ検出工程によって検出されたフィーダに関連付けられている数値の桁数を検出する桁数検出工程と、
前記検索対象ファイル内に含まれている数字の出現頻度に基づいて、前記数値を前記フィーダに関連付けて、前記桁数検出工程によって検出された桁数を示す数字に関する圧縮符号と前記数値の桁数ごとの数字に関する圧縮符号とを含む圧縮情報に圧縮する圧縮工程と、
を含んだことを特徴とする情報検索方法。
【請求項２０】
任意の数値範囲の境界を規定する数値を取得する取得手段と、
前記取得手段によって取得された境界を規定する数値の桁数および先頭数字を検出する検出手段と、
桁数および先頭数字を満たす数値群内の数値の存否を検索対象ファイルごとにあらわしたビット列の集合の中から、前記検出手段によって検出された桁数および先頭数字を満たす数値群内の数値の存否を前記検索対象ファイルごとにあらわしたビット列を抽出するビット列抽出手段と、
前記ビット列抽出手段によって抽出されたビット列の中の前記検出手段によって検出された桁数および先頭数字を満たす数値群内の数値の存在を示すビットに対応する検索対象ファイルを、前記複数の検索対象ファイルの中から特定する特定手段と、
前記特定手段によって特定された検索対象ファイルに含まれているファイル内数値が、前記境界を規定する数値との境界条件を充足しているか否かを判断する境界条件判断手段と、
前記境界条件判断手段によって判断された判断結果に基づいて、前記特定手段によって特定された検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定する決定手段と、
を備えることを特徴とする情報検索装置。
【請求項２１】
任意の数値範囲の境界を規定する数値を取得する取得手段と、
前記取得手段によって取得された境界を規定する数値を所定の圧縮形式で圧縮する数値圧縮手段と、
前記数値圧縮手段によって得られた前記境界を規定する数値に関する圧縮情報と、検索対象ファイルを前記所定の形式で圧縮した圧縮化検索対象ファイルに含まれているファイル内数値に関する圧縮情報とを照合することにより、前記ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断する境界条件判断手段と、
前記境界条件判断手段によって判断された判断結果に基づいて、前記圧縮化検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定する決定手段と、
を備えることを特徴とする情報検索装置。
【請求項２２】
数字と文字とが混在する検索対象ファイルの中から数値の存在を示すフィーダを検出するフィーダ検出手段と、
前記フィーダ検出手段によって検出されたフィーダに関連付けられている数値の桁数を検出する桁数検出手段と、
前記検索対象ファイル内に含まれている数字の出現頻度に基づいて、前記数値を前記フィーダに関連付けて、前記桁数検出手段によって検出された桁数を示す数字に関する圧縮符号と前記数値の桁数ごとの数字に関する圧縮符号とを含む圧縮情報に圧縮する圧縮手段と、
を備えることを特徴とする情報検索装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、帳票や治験データベースなどの数値データに対する、数値の一致検索や範囲検索、および数値抽象化検索の高速化技術に関する情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置である。
【背景技術】
【０００２】
従来の全文検索では、文字列に対してはインデックスを作成し、検索の高速化が図られているが、数値は未対応である。さらに、数字文字列の一致比較は行われているが、数値としての一致比較が行われていない。たとえば、全角数字の「６８５０円」や半角数字の「￥６，８５０．−」などの異なる数値表現に対しては、同じ数値に関わらず、数字文字列の比較では「不一致」と判断される。【０００３】
従来より、帳票システムでは、電子帳簿保存法で数値の範囲指定に適合した数値の検索機能（たとえば、下記特許文献１を参照。）の実装が義務付けられている。また、電子帳簿はデータ容量の削減とセキュリティのため、圧縮・暗号化され保管されている。【０００４】
したがって、保管されている電子帳簿の数値検索には、各帳簿のファイルの伸長と復号化を行い、各数値データと大小比較を行っており、多大なハードウェア資源と処理時間が必要となっている。なお、関連する全文検索の方式については以下の３種に大別できるが、いずれも数値検索の高速化が図られていない。【０００５】
・高度インデックス全文検索：インターネットの全文検索では高度なインデックスを利用することで高速化が図られているが、数値の検索にはさらに膨大なインデックスが必要となるため、高速化の対象外となっている。【０００６】
・簡易インデックス全文検索：漢字に関する文字構成表などの簡易インデックスにより全文検索の高速化を行うものであるが、数値に関する高速化は図られていない。【０００７】
・インデックスレス全文検索：全データに対し、高速な検索エンジンにより文字列照合を行うものであり、数値の検索の高速化は行われていない。【０００８】
【特許文献１】特開平３−１９０８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、上述した従来技術における数値の一致検索の場合、非圧縮・非暗号化の数値の一致検索では、インデックスによる高速化などは図られておらず、数値の一致照合に多大な時間を費やしている。また、「６８５０円」や「￥６，８５０．−」などの異なる数値表現に対して、「一致」と判定することができない。したがって、簡易インデックスを利用した一致検索の高速化、および「一致」の判定方法の改善が課題である。【００１０】
また、従来技術における数値の一致検索の場合、圧縮・暗号化された数値の一致検索では、電子帳簿データなどは保管やセキュリティのため、圧縮・暗号化されているが、伸長と復号化の後に大小比較をおこなっており、多大な処理時間を費やしている。したがって、伸長と復号化の見直しによる速度の改善が課題である。【００１１】
また、従来技術における数値の範囲検索の場合、非圧縮・非暗号化の数値の一致検索では、上述した「数値の一致検索の場合」と同様、簡易インデックスを利用した高速化が課題である。【００１２】
また、従来技術における数値の範囲検索の場合、圧縮・暗号化された数値の範囲検索では、上述した「数値の一致検索の場合」と同様、伸長と復号化の見直しによる速度の改善が課題である。【００１３】
さらに、治験データなどに関する数値の抽象化検索の場合、従来技術には無く、数値の範囲検索を工夫し、かつ、人間の判断を交え、さらに各検索を組み合わせて対応している。抽象化の技術の確立と高速化が課題である。【００１４】
本発明は、上記に鑑みてなされたものであって、数値範囲内の数値が存在するファイルを圧縮したまま特定することにより、数値範囲検索の高速化および高精度化を図ることができる情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置を提供することを目的とする。
【課題を解決するための手段】
【００１５】
上述した課題を解決し、目的を達成するために、第１の発明の情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置は、任意の数値範囲の境界を規定する数値を取得し、取得された境界を規定する数値の桁数および先頭数字を検出し、桁数および先頭数字を満たす数値群内の数値の存否を検索対象ファイルごとにあらわしたビット列の集合の中から、検出された桁数および先頭数字を満たす数値群内の数値の存否を前記検索対象ファイルごとにあらわしたビット列を抽出し、抽出されたビット列の中の、検出された桁数および先頭数字を満たす数値群内の数値の存在を示すビットに対応する検索対象ファイルを、前記複数の検索対象ファイルの中から特定し、特定された検索対象ファイルに含まれているファイル内数値が、前記境界を規定する数値との境界条件を充足しているか否かを判断し、判断された判断結果に基づいて、特定された検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定することを特徴とする。【００１６】
この発明によれば、数値範囲検索に先立って、桁数および先頭数字を満たす数値群内の数値が含まれている検索対象ファイルの絞込みをおこなうことができる。【００１７】
また、上記発明において、前記境界を規定する一方の数値の桁数および先頭数字を満たす一方の数値群と、前記境界を規定する他方の数値の桁数および先頭数字を満たす他方の数値群との間に、中間の数値群が存在するか否かを判断し、前記一方の数値群内の数値が存在する検索対象ファイルのうち前記中間数値群内の数値が存在しない検索対象ファイル（以下、「一方の検索対象ファイル」という）を特定するとともに、前記他方の数値群内の数値が存在する検索対象ファイルのうち前記中間数値群内の数値が存在しない検索対象ファイル（以下、「他方の検索対象ファイル」という）を特定し、特定された一方の検索対象ファイルに含まれているファイル内数値が前記境界を規定する一方の数値との境界条件を充足しているか否か、および、特定された他方の検索対象ファイルに含まれているファイル内数値が前記境界を規定する他方の数値との境界条件を充足しているか否かを判断し、判断された判断結果に基づいて、前記一方の検索対象ファイル、前記他方の検索対象ファイル、または前記中間数値群内の数値が存在する検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定することとしてもよい。【００１８】
この発明によれば、桁数および先頭数字を満たす数値群内の数値が含まれている検索対象ファイルの絞込みの高速化を図ることができる。【００１９】
また、第２の発明の情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置は、任意の数値範囲の境界を規定する数値を取得し、取得された境界を規定する数値を所定の圧縮形式で圧縮し、前記境界を規定する数値に関する圧縮情報と、検索対象ファイルを前記所定の形式で圧縮した圧縮化検索対象ファイルに含まれているファイル内数値に関する圧縮情報とを照合することにより、前記ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断し、判断された判断結果に基づいて、前記圧縮化検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定することを特徴とする。【００２０】
この発明によれば、圧縮状態のまま数値の大小を比較することができる。【００２１】
また、上記発明において、前記境界を規定する数値を、前記境界を規定する数値の桁数を示す数字に関する圧縮符号および前記境界を規定する数値の桁数ごとの数字に関する圧縮符号を含む圧縮情報に圧縮し、圧縮された圧縮情報と、前記ファイル内数値の桁数を示す数字に関する圧縮符号および前記ファイル内数値の桁ごとの数字に関する圧縮符号とを含む前記ファイル内数値に関する圧縮情報とを照合することにより、前記ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断することとしてもよい。【００２２】
この発明によれば、桁数や先頭桁の数字、２番目の桁の数字、・・・といった順に照合することで、数値の大小比較を段階的に圧縮した状態でおこなうことができる。【００２３】
また、上記発明において、前記境界を規定する一方の数値の桁数および先頭数字を満たす一方の数値群と、前記境界を規定する他方の数値の桁数および先頭数字を満たす他方の数値群との間に、中間の数値群が存在するか否かを判断し、前記一方の数値群内の数値が存在する圧縮化検索対象ファイルのうち前記中間数値群内の数値が存在しない圧縮化検索対象ファイル（以下、「一方の圧縮化検索対象ファイル」という）を特定するとともに、前記他方の数値群内の数値が存在する圧縮化検索対象ファイルのうち前記中間数値群内の数値が存在しない圧縮化検索対象ファイル（以下、「他方の圧縮化検索対象ファイル」という）を特定し、前記境界を規定する一方の数値を、前記境界を規定する数値の桁数を示す数字に関する圧縮符号および前記境界を規定する数値の桁数ごとの数字に関する圧縮符号を含む一方の圧縮情報に圧縮するとともに、前記境界を規定する他方の数値を、前記境界を規定する数値の桁数を示す数字に関する圧縮符号および前記境界を規定する数値の桁数ごとの数字に関する圧縮符号を含む他方の圧縮情報に圧縮し、前記一方の圧縮情報と前記一方の圧縮化検索対象ファイルに含まれているファイル内数値に関する圧縮情報とを照合することにより、当該ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断するとともに、前記他方の圧縮情報と前記他方の圧縮化検索対象ファイルに含まれているファイル内数値に関する圧縮情報とを照合することにより、当該ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断し、判断された判断結果に基づいて、前記一方の圧縮化検索対象ファイル、前記他方の圧縮化検索対象ファイル、または前記中間数値群内の数値が存在する圧縮化検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定することとしてもよい。【００２４】
この発明によれば、桁数や先頭桁の数字、２番目の桁の数字、・・・といった順に照合することで、数値範囲検索を段階的に圧縮した状態でおこなうことができる。【００２５】
また、上記発明において、前記検索対象ファイル内に存在する数字の出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正し、補正された出現頻度に基づいて、前記検索対象ファイルを圧縮し、前記境界を規定する数値に関する圧縮情報と、前記ファイル圧縮工程によって圧縮された前記圧縮化検索対象ファイルに含まれているファイル内数値に関する圧縮情報とを照合することにより、前記ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断することとしてもよい。【００２６】
この発明によれば、数値の圧縮効率を文字データよりも優先的に高くすることができる。【００２７】
また、上記発明において、さらに、前記検索対象ファイル内に存在するカンマの出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正することとしてもよい。【００２８】
この発明によれば、カンマを含む数値の圧縮効率を文字データよりも優先的に高くすることができる。【００２９】
また、上記発明において、さらに、前記検索対象ファイル内に存在する小数点の出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正することとしてもよい。【００３０】
この発明によれば、小数点を含む数値の圧縮効率を文字データよりも優先的に高くすることができる。【００３１】
また、第３の発明の情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置は、数字と文字とが混在する検索対象ファイルの中から数値の存在を示すフィーダを検出し、検出されたフィーダに関連付けられている数値の桁数を検出し、前記検索対象ファイル内に含まれている数字の出現頻度に基づいて、前記数値を前記フィーダに関連付けて、検出された桁数を示す数字に関する圧縮符号と前記数値の桁数ごとの数字に関する圧縮符号とを含む圧縮情報に圧縮することを特徴とする。【００３２】
この発明によれば、文字列の中に数字が混在しているファイルからも高速に数値を抽出することができる。【００３３】
また、上記発明において、前記フィーダは、前記数値の種類を特定する情報としてもよい。【００３４】
この発明によれば、圧縮された数値を分類することができ、同種の数値どうしについて数値の大小比較や数値範囲検索をおこなうことができる。【００３５】
また、上記発明において、前記数値が全角または半角であることを検出し、さらに、前記数値を、検出された検出結果に関する圧縮符号を含む圧縮情報に圧縮することとしてもよい。【００３６】
この発明によれば、数値の全角・半角の区別についても圧縮しておくことにより、全角・半角の区別を示す圧縮符号を無視することで、全角・半角の相違を除外して数値の大小比較や数値範囲検索をおこなうことができる。【００３７】
また、上記発明において、前記数値の中からカンマを検出し、さらに、前記数値を、検出された検出結果に関する圧縮符号を含む圧縮情報に圧縮することとしてもよい。【００３８】
この発明によれば、数値のカンマの有無についても圧縮しておくことにより、カンマの有無を示す圧縮符号を無視することで、カンマの相違を除外して数値の大小比較や数値範囲検索をおこなうことができる。【００３９】
また、上記発明において、前記検索対象ファイル内に存在する数字の出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正し、補正された出現頻度に基づいて、前記数値を圧縮することとしてもよい。【００４０】
この発明によれば、数値の圧縮効率を文字データよりも優先的に高くすることができる。【００４１】
また、上記発明において、さらに、前記検索対象ファイル内に存在するカンマの出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正することとしてもよい。【００４２】
この発明によれば、カンマを含む数値の圧縮効率を文字データよりも優先的に高くすることができる。【００４３】
また、上記発明において、さらに、前記検索対象ファイル内に存在する小数点の出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正することとしてもよい。【００４４】
この発明によれば、小数点を含む数値の圧縮効率を文字データよりも優先的に高くすることができる。
【発明の効果】
【００４５】
この発明によれば、中間数値群内の数値に対して数値検索をおこなうことなく、数値範囲内の数値が存在するか否かを判断することができ、数値検索の高速化を図ることができる。【００４６】
本発明にかかる情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置は、数値範囲内の数値が存在するファイルを圧縮したまま特定することにより、数値範囲検索の高速化および高精度化を図ることができるという効果を奏する。
【図面の簡単な説明】
【００４７】
【図１】図１は、この発明の実施の形態にかかる情報検索装置のハードウェア構成を示すブロック図である。
【図２】図２は、電子帳票のデータ構成を示す説明図である。
【図３】図３は、図２に示したファイル構成データ３００を示す説明図である。
【図４】図４は、図２に示したページリストデータ４００を示す説明図である。
【図５】図５は、数値・文字出現頻度管理データ５００を示す説明図である。
【図６】図６は、この発明の実施の形態にかかる情報検索装置の機能的構成を示すブロック図である。
【図７】図７は、図６に示した数値・文字出現頻度管理データ生成部６１２の機能的構成を示すブロック図である。
【図８】図８は、数値・文字出現頻度管理データ５００の生成処理を示すデータ構成図である。
【図９】図９は、連字／外字置換処理を示すデータ構成図である。
【図１０】図１０は、最終的に生成された連字／外字置換テーブル６４０を示す説明図である。
【図１１】図１１は、図６に示した圧縮／暗号化部６１３の詳細な機能的構成を示すブロック図である。
【図１２】図１２は、数字等の出現頻度の補正の一例を示す説明図である。
【図１３】図１３は、数字等の出現頻度の補正の他の例を示す説明図である。
【図１４】図１４は、圧縮／暗号化部６１３による具体的なハフマン木生成処理を示す説明図である。
【図１５】図１５は、図１１に示したファイルファイル圧縮部１１０６の詳細な機能的構成を示すブロック図である。
【図１６−１】図１６−１は、数値圧縮処理の第１の例を示す説明図である。
【図１６−２】図１６−２は、数値圧縮処理の第２の例を示す説明図である。
【図１６−３】図１６−３は、数値圧縮処理の第３の例を示す説明図である。
【図１６−４】図１６−４は、数値抽象化データの圧縮処理例を示す説明図である。
【図１７−１】図１７−１は、ファイル圧縮部１１０６によって圧縮された圧縮化帳票ファイルのデータ構造を示す説明図である。
【図１７−２】図１７−２は、圧縮ブロックデータＣ１〜Ｃｍと、圧縮前の元のブロックデータとの比較を示す図表である。
【図１８】図１８は、図６に示した検索初期化部６２１の詳細な機能的構成を示すブロック図である。
【図１９】図１９は、第１の区点対応テーブルと出現マップとの対応関係を示す説明図である。
【図２０】図２０は、第２の区点対応テーブルと出現マップとの対応関係を示す説明図である。
【図２１】図２１は、検索実行部６２２内の全文検索実行部６２４の詳細な機能的構成を示すブロック図である。
【図２２】図２２は、圧縮化帳票ファイルＦｉの絞込みの一例を示す説明図である。
【図２３】図２３は、全文検索実行部６２４における不一致照合処理を示す説明図である。
【図２４】図２４は、図２３に示した圧縮ブロックデータのシフト操作を示す図表である。
【図２５】図２５は、照合予測テーブルの生成処理を示す説明図である。
【図２６】図２６は、全ビット不一致照合処理を示す説明図である。
【図２７】図２７は、検索実行部６２２内の数値検索実行部６２５の詳細な機能的構成を示すブロック図である。
【図２８−１】図２８−１は、数値範囲の大小比較例を示す説明図（その１）である。
【図２８−２】図２８−２は、数値範囲の大小比較例を示す説明図（その２）である。
【図２８−３】図２８−３は、数値範囲の大小比較例を示す説明図（その３）である。
【図２８−４】図２８−４は、数値範囲の大小比較例を示す説明図（その４）である。
【図２９】図２９は、図６に示した検索結果表示部６２３の詳細な機能的構成を示すブロック図である。
【図３０】図３０は、この発明の実施の形態にかかる情報検索装置６００の情報検索処理手順を示すフローチャートである。
【図３１】図３１は、図３０に示した数値・文字出現頻度管理データ生成処理（ステップＳ３００１）の詳細な処理手順を示すフローチャートである。
【図３２−１】図３２−１は、上述した数値・文字出現頻度集計処理（ステップＳ３１０２）の詳細な処理手順を示すフローチャート（前半）である。
【図３２−２】図３２−２は、数値・文字出現頻度集計処理（ステップＳ３１０２）の詳細な処理手順を示すフローチャート（後半）である。
【図３３】図３３は、図３０に示した圧縮／暗号化処理（ステップＳ３００２）の詳細な処理手順を示すフローチャートである。
【図３４】図３４は、図３３のステップＳ３３０８に示した圧縮処理の詳細な処理手順を示すフローチャートである。
【図３５】図３５は、図３０に示した検索初期化処理（ステップＳ３００３）の詳細な処理手順を示すフローチャートである。
【図３６】図３６は、図３０に示した検索処理（ステップＳ３００４）の詳細な処理手順を示すフローチャートである。
【図３７】図３７は、照合予測テーブル生成処理手順を示すフローチャートである。
【図３８】図３８は、圧縮ブロックデータと圧縮キーワードとの不一致判定処理手順を示すフローチャートである。
【図３９】図３９は、全ビット不一致照合処理（ステップＳ３８１２およびステップＳ３８１７）を示すフローチャートである。
【図４０】図４０は、この発明の実施の形態にかかる数値検索モードにおける数値検索実行処理手順を示すフローチャートである。
【図４１】図４１は、図４０に示した下限特定／比較処理手順を示すフローチャートである。
【図４２】図４２は、下限数値照合処理手順を示すフローチャートである。
【図４３】図４３は、図４０に示した上限特定／比較処理手順を示すフローチャートである。
【図４４】図４４は、上限数値照合処理手順を示すフローチャートである。
【符号の説明】
【００４８】
５００  数値・文字出現頻度管理データ
５１０  出現マップ
６００  情報検索装置
６０１  編集部
６０２  検索部
６２２  検索実行部
６２３  検索結果表示部
６２４  全文検索実行部
６２５  数値検索実行部
２７０１  取得部
２７０２  数値圧縮部
２７０３  検出部
２７０４  中間数値群判断部
２７０６  省略マップ設定部
２７０７  下限／上限マップ生成部
２７０８  特定部
２７０９  圧縮情報検索部
２７１０  境界条件判断部
２７１１  決定部
【発明を実施するための最良の形態】
【００４９】
（情報検索装置のハードウェア構成）
まず、この発明の実施の形態にかかる情報検索装置のハードウェア構成について説明する。図１は、この発明の実施の形態にかかる情報検索装置のハードウェア構成を示すブロック図である。【００５０】
図１において、情報検索装置は、ＣＰＵ１０１と、ＲＯＭ１０２と、ＲＡＭ１０３と、ＨＤＤ（ハードディスクドライブ）１０４と、ＨＤ（ハードディスク）１０５と、ＦＤＤ（フレキシブルディスクドライブ）１０６と、着脱可能な記録媒体の一例としてのＦＤ（フレキシブルディスク）１０７と、ディスプレイ１０８と、Ｉ／Ｆ（インターフェース）１０９と、キーボード１１０と、マウス１１１と、スキャナ１１２と、プリンタ１１３と、を備えている。また、各構成部はバス１００によってそれぞれ接続されている。【００５１】
ここで、ＣＰＵ１０１は、情報検索装置の全体の制御を司る。ＲＯＭ１０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ１０３は、ＣＰＵ１０１のワークエリアとして使用される。ＨＤＤ１０４は、ＣＰＵ１０１の制御にしたがってＨＤ１０５に対するデータのリード／ライトを制御する。ＨＤ１０５は、ＨＤＤ１０４の制御で書き込まれたデータを記憶する。【００５２】
ＦＤＤ１０６は、ＣＰＵ１０１の制御にしたがってＦＤ１０７に対するデータのリード／ライトを制御する。ＦＤ１０７は、ＦＤＤ１０６の制御で書き込まれたデータを記憶したり、ＦＤ１０７に記憶されたデータを情報検索装置に読み取らせたりする。【００５３】
また、着脱可能な記録媒体として、ＦＤ１０７のほか、ＣＤ−ＲＯＭ（ＣＤ−Ｒ、ＣＤ−ＲＷ）、ＭＯ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、メモリーカードなどであってもよい。ディスプレイ１０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ１０８は、たとえば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。【００５４】
Ｉ／Ｆ１０９は、通信回線を通じてインターネットなどのネットワーク１１４に接続され、このネットワーク１１４を介して他の装置に接続される。そして、Ｉ／Ｆ１０９は、ネットワーク１１４と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ１０９には、たとえばモデムやＬＡＮアダプタなどを採用することができる。【００５５】
キーボード１１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス１１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。【００５６】
スキャナ１１２は、画像を光学的に読み取り、情報検索装置内に画像データを取り込む。なお、スキャナ１１２は、ＯＣＲ機能を持たせてもよい。また、プリンタ１１３は、画像データや文書データを印刷する。プリンタ１１３には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。【００５７】
（電子帳票のデータ構成）
つぎに、電子帳票のデータ構成について説明する。図２は、電子帳票のデータ構成を示す説明図である。図２において、本明細書において電子帳票とは、帳簿や伝票といった帳票を電子化したデータである。電子帳票をあらわすコンテンツ２００は、上位フォルダ２０１に保存されている。さらに、上位フォルダ２０１には、管理フォルダ２０２と帳票フォルダ２０３という下位のフォルダが含まれている。【００５８】
管理フォルダ２０２には、ファイル構成データ３００（図３参照）、ページリストデータ４００（図４参照）、および数値・文字出現頻度管理データ５００（図５参照）が保存されている。また、帳票フォルダ２０３には、複数の帳票ファイルｆｉ（ｉ＝０〜ｎ）からなる帳票ファイル群ｆが保存されている。【００５９】
各帳票ファイルｆｉはそれぞれ帳票データｇｊ（ｊ＝１〜Ｐ）を有しており、全帳票ファイルｆ０〜ｆｎでＰページ分有している。各帳票データｇｊは、たとえば、ＨＴＭＬ形式またはＸＭＬ形式で構成され、アンカーや見出し語などを含むヘッダ部（宛先データ）、品名データ、数量データ、金額データ、小計部、合計部、トレーラ部などの各種項目データを有している。【００６０】
図３は、図２に示したファイル構成データ３００を示す説明図である。ファイル構成データ３００は、各帳票ファイルｆ０〜ｆｎのファイル番号ｉ（ｉ＝０〜ｎ）ごとにファイルパスを関連付けたデータである。図３では、ファイル番号ｉの帳票ファイルｆｉを「ｆｉｌｅ（ｉ）．ｈｔｍｌ」と表記している。【００６１】
図４は、図２に示したページリストデータ４００を示す説明図である。ページリストデータ４００とは、図２に示した帳票ファイルｆｉと帳票データｇｊとファイル構成データ３００とを関連付けるデータである。ページリストデータ４００は、帳票ファイルｆｉの全ファイル数（ｎ＋１個）、ブロックサイズ（ｍ  ｂｙｔｅ）、帳票データｇｊの全データ数（Ｐ個）、帳票ファイルｆｉのファイルパスデータＦＰ（０）〜ＦＰ（ｎ）、ページリストを有する。【００６２】
また、ページリストデータ４００は、ファイルパスデータＦＰ（ｉ）ごとに、ファイル番号ｉとブロック数と図３に示したファイルパスとを有する。また、ページリスト４０１は、ファイル番号ｉごとにオフセット、レングス、ページ番号ｊ、見出し語が記述されているリストである。【００６３】
図５は、数値・文字出現頻度管理データ５００を示す説明図である。図５において、数値・文字出現頻度管理データ５００は、数値・文字データの出現頻度を管理するデータである。ここで、数値・文字データは、数値データと文字データとに分けられる。数値データとは、０〜９の数字、００〜９９などの２以上の連続する数字からなる数字連字、桁数および先頭数字が共通する数値群、軽度高血圧など数値を抽象的な表現であらわした抽象化数値データを含むデータである。【００６４】
ここで、数値群とは、桁数および先頭数字により規定される数値範囲内の数値の集合である。たとえば、３桁でかつ先頭数字が２である数値群とは、数値範囲２００〜２９９内の数値の集合である。【００６５】
また、文字データとは、英字、かな、漢字、文字連字などを含むデータである。具体的には、８ビット系（ＡＳＣＩＩ）である英字、カタカナ、記号、１６ビット系（ＪＩＳ）の英字、カタカナ、記号、１６ビット系（ＪＩＳ）の仮名や漢字などが文字データに含まれる。これら英字や、仮名、カタカナなどの８ビットコードが中心である表音文字および漢字の文字データを、本明細書において「標準文字データ」と称す。【００６６】
また、文字データには、標準文字データのほか、外字および文字連字が含まれる。文字連字とは、２以上の文字列からなる文字データである。たとえば、１６ビットの２つの仮名の文字連字である場合、当該文字連字は、３２ビットコードの文字データからなる。また、非文字データではあるがアドレスポインタなどのバイナリデータも便宜的に上記「文字データ」に含めることとする。以下、特に断りがない限り、「文字データ」という用語には、バイナリデータも含まれる。【００６７】
また、数値・文字出現頻度管理データ５００は、数値・文字データの出現頻度、出現ファイル数（ブロック数でもよい）、出現順位、出現マップ５１０（５０１〜５０９）を有する。出現頻度とは、全帳票ファイルｆ０〜ｆｎにおいて当該数値・文字データが出現した頻度（回数）である。出現ファイル数とは、全帳票ファイルｆ０〜ｆｎにおいて当該数値・文字データが出現した帳票ファイルの数である。出現順位とは、出現頻度順のランクである。【００６８】
出現マップ５１０とは、帳票ファイルｆｉ順に配列されたｎ＋１ビットのビット列であり、数値・文字データの存否をあらわしている。図５では、左端のビットが帳票ファイルｆ０に対応するビットであり、右端のビットが帳票ファイルｆｎに対応するビットである。【００６９】
各ビットにおいて「１」がＯＮをあらわしており、「０」がＯＦＦをあらわしている。すなわち、ある数値・文字データにおいて、その出現マップ５１０中、帳票ファイルｆｉに対応するビットが「１」である場合、当該数値・文字データが帳票ファイルｆｉに存在することをあらわしている。また、帳票ファイルｆｉに対応するビットが「０」である場合、当該数値・文字データが帳票ファイルｆｉに存在しないことをあらわしている。【００７０】
（情報検索装置の機能的構成）
つぎに、この発明の実施の形態にかかる情報検索装置の機能的構成について説明する。図６は、この発明の実施の形態にかかる情報検索装置の機能的構成を示すブロック図である。図６において、情報検索装置６００は、編集部６０１と検索部６０２とから構成されている。【００７１】
まず、編集部６０１は、ファイル構成データ抽出部６１１と、数値・文字出現頻度管理データ生成部６１２と、圧縮／暗号化部６１３と、から構成されている。ここでは、検索対象として帳票ファイルを例に挙げているが、数値データが含まれているコンテンツであれば、帳票ファイル以外のデータでもよい。【００７２】
ファイル構成データ抽出部６１１は、図３に示したファイル構成データ３００を参照して、帳票ファイルｆ０〜ｆｎから図４に示したページリストデータ４００を抽出する。また、数値・文字出現頻度管理データ生成部６１２は、帳票ファイルｆ０〜ｆｎから数値・文字出現頻度管理データ５００を生成する。さらに、数値・文字出現頻度管理データ生成部６１２は、複数の帳票ファイルｆ０〜ｆｎに記述されている数字連字や文字連字を外字に置換する連字／外字置換テーブル６４０を生成する。以降、数字連字および文字連字をまとめて、「連字データ」と称す。【００７３】
また、圧縮／暗号化部６１３は、帳票ファイルｆ０〜ｆｎを圧縮して圧縮化帳票ファイル群Ｆを生成するとともに、数値・文字出現頻度管理データ５００および連字／外字置換テーブル６４０を暗号化して、暗号化数値・文字出現頻度管理データ６５０および暗号化連字／外字置換テーブル６６０を生成する。【００７４】
また、検索部６０２は、検索初期化部６２１と、検索実行部６２２と、検索結果表示部６２３とから構成されている。検索初期化部６２１は、暗号化数値・文字出現頻度管理データ６５０および暗号化連字／外字置換テーブル６６０を復号して、検索部６０２による検索の初期化を実行する。【００７５】
また、検索実行部６２２は、数値・文字出現頻度管理データ５００や連字／外字置換テーブル６４０を用いて、検索処理を実行することにより、検索候補一覧を生成する。具体的には、検索実行部６２２は、全文検索を実行する全文検索実行部６２４と、数値検索を実行する数値検索実行部６２５とを備える。【００７６】
全文検索実行部６２４は、検索キーワードの入力を受け付け、圧縮化帳票ファイルの全文検索を実行することにより、検索キーワードに該当する帳票ファイルｆｉを示す検索候補一覧を生成する。【００７７】
また、数値検索実行部６２５は、数値や数値範囲の入力を受け付け、圧縮化帳票ファイル群Ｆに対して数値検索を実行することにより、入力された数値や数値範囲に該当する帳票ファイルｆｉを示す検索候補一覧を生成する。【００７８】
また、検索結果表示部６２３は、検索実行部６２２による検索候補の中から、ユーザに選択された検索候補を伸長して、検索結果として表示する。なお、上述した帳票ファイル、数値・文字出現頻度管理データ５００、ファイル構成データ３００、ページリストデータ４００、連字／外字置換テーブル６４０、圧縮化帳票ファイル群Ｆ、暗号化数値・文字出現頻度管理データ６５０および暗号化連字／外字置換テーブル６６０は、具体的には、たとえば、図１に示したＲＯＭ１０２、ＲＡＭ１０３、ＨＤ１０５などの記録媒体によって、その機能を実現する。【００７９】
また、編集部６０１（内部の機能的構成含む）および検索部６０２（内部の機能的構成含む）は、具体的には、たとえば、図１に示したＲＯＭ１０２、ＲＡＭ１０３、ＨＤ１０５などの記録媒体に記録されたプログラムを、ＣＰＵ１０１が実行することによって、その機能を実現する。【００８０】
（数値・文字出現頻度管理データ生成部６１２の機能的構成）
つぎに、図６に示した数値・文字出現頻度管理データ生成部６１２の機能的構成について説明する。図７は、図６に示した数値・文字出現頻度管理データ生成部６１２の機能的構成を示すブロック図である。図７において、数値・文字出現頻度管理データ生成部６１２は、数値・文字データ抽出部７０１と、数値・文字出現頻度集計部７０２と、ソート部７０３と、生成処理部７０４とから構成されている。【００８１】
数値・文字データ抽出部７０１は、帳票ファイルから数値・文字データを順次抽出する。数値・文字出現頻度集計部７０２は、数値・文字データ抽出部７０１によって抽出された数値・文字データの帳票ファイルｆｉにおける出現頻度を集計する。また、数値・文字出現頻度集計部７０２は、数値・文字データの帳票ファイルｆ０〜ｆｎごとの存否も検出する。【００８２】
また、ソート部７０３は、出現頻度順に数値・文字データをソートする。生成処理部７０４は、ソートされた各数値・文字データの出現頻度と、存否検出結果である各数値・文字データの出現マップ５０１〜５０９とを用いて、数値・文字出現頻度管理データ５００を生成する。また、連字／外字置換テーブル６４０も生成する。ここで、数値・文字出現頻度管理データ生成部６１２による数値・文字出現頻度管理データ５００および連字／外字置換テーブル６４０の生成処理を具体的に説明する。【００８３】
図８は、数値・文字出現頻度管理データ５００の生成処理を示すデータ構成図である。図８において、（Ａ）は、数値・文字出現頻度集計部７０２によって数値・文字データが集計されたときの数値・文字出現頻度管理データ５００のデータ構成、（Ｂ）は、連字／外字置換処理後の数値・文字出現頻度管理データ５００のデータ構成、（Ｃ）は、標準文字データおよび外字データからなる混合データのソート後における数値・文字出現頻度管理データ５００のデータ構成、（Ｄ）は、低出現頻度の混合データのカット後における数値・文字出現頻度管理データ５００のデータ構成、（Ｅ）は、最終的に生成された数値・文字出現頻度管理データ５００のデータ構成を示している。【００８４】
（Ａ）において、符号８００は、文字出現頻度管理データ５００の管理領域である。また、符号８０１は、数値データ（数字連字を除く）の出現頻度、出現ファイル数、出現順位、出現マップを記憶する数値領域である。また符号８０２は、８ビット系（ＡＳＣＩＩ）である英字、カタカナ、記号、１６ビット系（ＪＩＳ）の英字、カタカナ、記号、１６ビット系（ＪＩＳ）のかなや漢字などの標準文字データの出現頻度、出現ファイル数、出現順位、出現マップを記憶する標準文字領域である。【００８５】
また、符号８０３は、外字の出現頻度、出現ファイル数、出現順位、出現マップを記憶する外字領域である。また、符号８０４は、連字データの出現頻度、出現ファイル数、出現順位、出現マップを記憶する連字領域である。また、符号８０５は、８ビットのバイナリデータの出現頻度、出現ファイル数、出現順位を記憶するバイナリ領域である。【００８６】
（Ａ）のデータ構造において、連字領域８０４の連字データは、その出現頻度順にソートされる。そして、所定の出現頻度以上の連字データを、外字データと重複しないように、他の外字データ（以下、「連字外字データ」）に置換する。このように、出現頻度の高い複数の文字列からなる連字データを、単一文字データである外字データに置換することにより、データ量の削減を図ることができ、圧縮効率の向上を図ることができる。なお、所定の出現頻度未満の連字データは、低出現頻度の連字データであるため、単一の文字データに分解されて、該当する領域に割り当てられる。この結果、（Ｂ）連字／外字置換処理後の数値・文字出現頻度管理データ５００のデータ構成となる。【００８７】
また、（Ｂ）のデータ構造において、数値領域８０１のデータ、標準文字領域８０２の標準文字データおよび外字領域８０３の外字データを混合して高出現頻度順にソートした結果が、（Ｃ）のデータ構造である。（Ｃ）のデータ構造において、（Ｂ）に示した連字外字領域８１４の連字外字データおよびバイナリ領域８０５のバイナリデータは、ソートの対象外である。【００８８】
（Ｃ）のデータ構造において、数値データと標準文字データと外字データとが混在する混合領域８１２において、低出現頻度、たとえば、出現回数０回のデータはカットされる。このカットされたときのデータ構造が、（Ｄ）のデータ構造である。（Ｄ）において、管理領域８００および混合領域８１２と、連字外字領域８１４と、バイナリ領域８０５とを結合することで、（Ｅ）のデータ構造で示したような、最終的な数値・文字出現頻度管理データ５００を生成することができる。【００８９】
この数値・文字出現頻度管理データ５００において、管理領域８００には、ファイル・ブロック数と、出現文字データの種類の数（出現文字数（種類））と、連字外字データの数（連字数（２５６種））と、バイナリデータ数（バイナリ（２５６種））とが記録される。【００９０】
そして、図５に示した数値・文字出現頻度管理データ５００は、バイナリデータを除く数値・文字データごとに、出現頻度と出現マップ５１０とが対応付けられている。数値・文字データは高出現頻度順にソートされている。なお、後述するが、図５に示した数値・文字出現頻度管理データ５００において、数値・文字データとその出現頻度は、所定のマスタキーを用い、暗号化アルゴリズムである排他的論理和（ＸＯＲ）などによって暗号化される。【００９１】
つぎに、連字／外字置換処理について具体的に説明する。図９は、連字／外字置換処理を示すデータ構成図である。図９において、（Ｆ）は、数値・文字出現頻度集計部７０２によって連字データが集計されたときの数値・文字出現頻度管理データ５００の連字領域８０４のデータ構成、（Ｇ）は、連字データのソート後における連字領域８０４のデータ構成、（Ｈ）は、置換後におけるデータ構成を示している。【００９２】
（Ｆ）のデータ構造において、連字領域８０４は、領域９０１〜９０７を有している。領域９０１には、８ビット系（ＡＳＣＩＩ）の数字列データ（「００」〜「９９」）の情報（当該数字列データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。【００９３】
領域９０２には、８ビット系（ＡＳＣＩＩ）の英字列データ（「ＡＡ」〜「ｚｚ」）の情報（当該英字列データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。また、領域９０３には、８ビット系（ＡＳＣＩＩ）のカタカナ列データ（「アア」〜「ンン」、濁音・半濁音）の情報（当該カタカナデータ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。【００９４】
領域９０４には、１６ビット系（ＪＩＳ）の数字列データ（「００」〜「９９」）の情報（当該数字列データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。また、領域９０５には、１６ビット系（ＪＩＳ）の英字列データ（「ＡＡ」〜「ｚｚ」）の情報（当該数字列データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。【００９５】
領域９０６には、１６ビット系（ＪＩＳ）のカタカナ列データ（「アア」〜「ンン」、濁音・半濁音）の情報（当該カタカナ列データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。また、領域９０７には、１６ビット系（ＪＩＳ）の仮名列データ（「ああ」〜「んん」、濁音・半濁音）の情報（当該仮名列データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。【００９６】
また、（Ｇ）のデータ構造は、（Ｆ）のデータ構造を、各連字データの高出現順にソートすることにより得られるデータ構造である。（Ｇ）のデータ構造において、領域９１１は、高出現頻度の連字データの情報であり、外字データへの置換対象となる。一方、領域９１２は、所定の出現頻度以下の連字データ（低出現頻度連字データ）の情報である。この低出現頻度連字データは、単一の文字データに分解される。これにより文字データの出現頻度と出現マップ５０５〜５０９とが補正される。【００９７】
また、（Ｈ）のデータ構造は、（Ｇ）のデータ構造のうち高出現頻度の連字データを外字に置換することによって得られるデータ構造である。連字外字領域８１４には、置換された連字外字データの情報（当該連字外字データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。【００９８】
また、図１０は、最終的に生成された連字／外字置換テーブル６４０を示す説明図である。連字／外字置換テーブル６４０は、（Ｇ）のデータ構造の領域９１１の連字データと、（Ｈ）のデータ構造の領域８１４の連字外字データとを対応させることによって生成される。【００９９】
（圧縮／暗号化部６１３の詳細な機能的構成）
つぎに、図６に示した圧縮／暗号化部６１３の詳細な機能的構成について説明する。図１１は、図６に示した圧縮／暗号化部６１３の詳細な機能的構成を示すブロック図である。図１１において、圧縮／暗号化部６１３は、出現頻度補正部１１０１と、低出現頻度数値・文字データ分解部１１０２と、暗号化部１１０３と、生起確率演算部１１０４と、ハフマン木生成部１１０５と、ファイル圧縮部１１０６と、から構成されている。【０１００】
まず、出現頻度補正部１１０１は、数値・文字出現頻度管理データ５００内の数字に関する出現頻度を補正する。具体的には、たとえば、０〜９の数字や小数点、フィーダ（以下、「数字等」という）に対する圧縮符号のビット幅を設定し、そのビット幅に応じた出現頻度を、０〜９の数字等に対して設定する。より具体的には、文字データの出現頻度よりも高くなるように強制的に数字等の出現頻度を補正する。【０１０１】
図１２は、数字等の出現頻度の補正の一例を示す説明図である。図１２では、数値・文字データの出現頻度を補正する符号化テーブルを示している。図１２では、圧縮符号のビット幅が４ビットであるため、数値等の各出現頻度を１／１６とする。そして、さらに出現順位に応じて出現頻度を加算している。図１２に示した補正例は、数値が多い帳票ファイルに有効である。なお、補正により出現頻度の総和が１を超過した場合、その他の文字データの出現頻度に応じて、その他の文字データの出現頻度が補正される。【０１０２】
図１３は、数字等の出現頻度の補正の他の例を示す説明図である。図１３でも、数値・文字データの出現頻度を補正する符号化テーブルを示している。図１３では、圧縮符号のビット幅が５ビットであるため、数値等の各出現頻度を１／３２とする。そして、さらに出現順位に応じて出現頻度を加算している。図１３に示した補正例は、文字データが多いホームページなどに有効である。なお、補正により出現頻度の総和が１を超過した場合、その他の文字データの出現頻度に応じて、その他の文字データの出現頻度が補正される。【０１０３】
また、図１１において、低出現頻度数値・文字データ分解部１１０２は、数値・文字出現頻度管理データ５００内における文字領域の数値・文字データを高出現頻度順にソートする。そして、所定の出現頻度以下の残余の低出現頻度の数値・文字データを８ビットコードに分解して、同じ８ビットコードであるバイナリデータが記憶されているバイナリ領域に記憶する。【０１０４】
暗号化部１１０３は、低出現頻度数値・文字データ分解部１１０２による分解によって得られた数値・文字出現頻度管理データ５００を、所定のマスタキーを用いてＸＯＲによる暗号化をおこない、暗号化数値・文字出現頻度管理データ６５０を生成する。連字／外字置換テーブル６４０も同様に、所定のマスタキーを用いてＸＯＲによる暗号化をおこない、暗号化連字／外字置換テーブル６６０を生成することとしてもよい。【０１０５】
また、生起確率演算部１１０４は、低出現頻度数値・文字データ分解部１１０２による分解によって得られた文字出現頻度管理データ５００における数値データ、標準文字データ、連字外字データおよびバイナリデータを高出現順にソートして、これらの生起確率を演算する。また、ハフマン木生成部１１０５は、生起確率演算部１１０４によって演算された生起確率からハフマン木を生成する。【０１０６】
また、ファイル圧縮部１１０６は、ハフマン木生成部１１０５によって生成されたハフマン木を用いて帳票ファイル群ｆを圧縮し、圧縮化帳票ファイル群Ｆを生成する。具体的には、各帳票ファイルｆ０〜ｆｎに記述されている数値・文字データに対して、補正後の出現頻度が高い順、すなわち生起確率が高い順に短いビットを割り当てて、帳票ファイル群ｆを圧縮する。ファイル圧縮部１１０６による帳票ファイル群ｆの圧縮は、数値と文字データとで圧縮法が異なる。この点については後述する。【０１０７】
つぎに、圧縮／暗号化部６１３による具体的なハフマン木生成処理について説明する。図１４は、圧縮／暗号化部６１３による具体的なハフマン木生成処理を示す説明図である。図１４の（Ｉ）に示した数値・文字出現頻度管理データ５００を、低出現頻度数値・文字データ分解部１１０２により、低出現頻度の文字データを分解して、バイナリデータが記憶されているバイナリ領域に記憶する（図１４中（Ｊ））。【０１０８】
つぎに、（Ｊ）のデータ構造において、混合領域、連字外字領域、およびバイナリ領域内のすべての数値・文字データを高出現頻度順にソートする（図１４中（Ｋ））。そして、（Ｋ）の領域１４００において、出現頻度をハフマンの圧縮パラメータとして各数値・文字データの生起確率を演算する（図１４中（Ｌ））。最後に（Ｌ）において、各数値・文字データの生起確率からハフマン木１４０１を生成する（図１４中（Ｍ））。【０１０９】
（ファイル圧縮部１１０６の詳細な機能的構成）
つぎに、図１１に示したファイル圧縮部１１０６の詳細な機能的構成について説明する。図１５は、図１１に示したファイル圧縮部１１０６の詳細な機能的構成を示すブロック図である。【０１１０】
図１５において、ファイル圧縮部１１０６は、フィーダ検出部と、文字データ抽出部と、数値抽出部と、数値詳細情報検出部と、圧縮処理部と、から構成されている。【０１１１】
まず、フィーダ検出部１５０１は、帳票ファイルｆｉの中からフィーダを検出する。フィーダは数値の先頭に位置するため、フィーダが検出されると、その後には数値が存在することとなり、フィーダが検出されないと、当該文字データと認識される。【０１１２】
また、文字データ抽出部１５０２は、フィーダ検出部１５０１によりフィーダにフィーダが検出されなかった場合、その位置のデータを文字データとして抽出する。抽出された文字データは圧縮処理部１５０５において圧縮処理される。【０１１３】
数値抽出部１５０３は、フィーダ検出部１５０１によりフィーダが検出された場合、当該フィーダに関連付けられている数値、たとえば、フィーダに続く数字列を数値として抽出する。この場合、数字列の中に、カンマや小数点が含まれている場合、そのカンマや小数点も抽出する。【０１１４】
また、数値詳細情報検出部１５０４は、数値抽出部１５０３によって抽出された数値の詳細な情報を抽出する。ここで、詳細な情報とは、たとえば、桁数はいくつか、数値が全角であるか半角であるか、カンマが含まれているか、小数点が含まれているか、含まれている場合の小数点の位置などを検出する。【０１１５】
また、圧縮処理部１５０５は、ハフマン木生成部１１０５によって生成されたハフマン木を用いて、文字データ抽出部１５０２によって抽出された文字データや、数値抽出部１５０３によって抽出された数値データを圧縮する。【０１１６】
数値を圧縮する場合、ハフマン木を用いて、桁数を示す数字や桁ごとの数字を、当該数字に応じた圧縮符号に変換する。このとき、桁ごとの数字の圧縮符号は、桁順に配列するものとする。また、数値に小数点が含まれている場合、小数点に応じた圧縮符号に変換する。カンマの有無や全角・半角については、１ビットであらわす。【０１１７】
（数値圧縮処理）
つぎに、上述した圧縮処理部１５０５における数値圧縮処理について説明する。数値圧縮処理では、まず、金額や血圧などの数値情報から数値のみを抽出する。そして、この抽出された数値を圧縮する。具体的には、図１２や図１３に示した符号化テーブルを参照して、フィーダの圧縮符号を読み出す。【０１１８】
つぎに、数値が半角か全角かを示すビット（全角・半角ビット）を設定する。この全角・半角ビットは全角の場合が「１」で半角の場合が「０」である。また、数値がカンマ「，」を用いた表記であるか否かを示すカンマ有無ビットを設定する。このカンマ有無ビットはカンマ有りの場合が「１」でカンマ無しの場合が「０」である。【０１１９】
つぎに、数値の桁数を検出する。検出された桁数は小数点以下の桁数は含まれないこととする。そして、検出された桁数が示す数字の圧縮符号を図１２に示した符号化テーブルから読み出す。また、数値を構成する先頭桁から末尾桁までの数字の圧縮符号を、図１２や図１３に示した符号化テーブルから読み出す。【０１２０】
つぎに、数値に小数点があれば小数点の圧縮符号を図１２や図１３に示した符号化テーブルから読み出す。このようにして、数値は、圧縮符号およびビットからなる数字列に圧縮される。以下、図１２の符号化テーブルを用いた圧縮処理例について説明する。なお、圧縮処理された数値を、圧縮数値と称す。【０１２１】
図１６−１は、数値圧縮処理の第１の例を示す説明図である。図１６−１においては、数値情報「￥６，８００．−」から先頭の「￥」および末尾の「−」を分離して、数値「６，８００．」を抽出する。そして、この数値「６，８００．」を圧縮する。【０１２２】
具体的には、数値の開始位置を示すフィーダ「ｘ’Ｂ’」の圧縮符号「１０１１」を図１２に示した符号化テーブルから読み出す。つぎに、数値「６，８００．」が半角であることを示す全角・半角ビット「０」を設定する。また、数値データ「６，８００．」がカンマ「，」を用いた表記であることを示すカンマ有無ビット「１」を設定する。つぎに、数値「６，８００．」の桁数「４」を検出し、検出された桁数「４」の圧縮符号「０１００」を図１２に示した符号化テーブルから読み出す。【０１２３】
つぎに、数値「６，８００．」の先頭数字「６」、第２数字「８」、第３数字「０」、および末尾数字「０」までの数字の圧縮符号「０１１０」，「１０００」，「００００」，「００００」を、図１２に示した符号化テーブルから読み出す。最後に、数値「６，８００．」の小数点「ｘ’Ａ’」の圧縮符号「１０１０」を、図１２に示した符号化テーブルから読み出す。このようにして、数値「６，８００．」は圧縮されることとなる。【０１２４】
図１６−２は、数値圧縮処理の第２の例を示す説明図である。図１６−２においては、数値情報「＄６８０．５０−」から先頭の「＄」および末尾の「−」を分離して、数値「６８０．５０」を抽出する。そして、この数値「６８０．５０」を圧縮する。【０１２５】
具体的には、数値の開始位置を示すフィーダ「ｘ’Ｂ’」の圧縮符号「１０１１」を図１２に示した符号化テーブルから読み出す。つぎに、数値「６８０．５０」が半角であることを示す全角・半角ビット「０」を設定する。また、数値「６８０．５０」がカンマ「，」を用いていない表記であることを示すカンマ有無ビット「０」を設定する。つぎに、数値「６８０．５０」の桁数「３」を検出し、検出された桁数「３」の圧縮符号「００１１」を図１２に示した符号化テーブルから読み出す。【０１２６】
つぎに、数値「６８０．５０」の先頭数字「６」、第２数字「８」、第３数字「０」、小数点「ｘ’Ａ’」、第４数字「５」、および末尾数字「０」までの数字の圧縮符号「０１１０」，「１０００」，「００００」，「１０１０」，「０１０１」，「００００」を、図１２に示した符号化テーブルから読み出す。このようにして、数値「６８０．５０」は圧縮されることとなる。【０１２７】
図１６−３は、数値圧縮処理の第３の例を示す説明図である。図１６−３においては、数値情報「６８００円」から末尾の「円」を分離して、数値「６８００」を抽出する。そして、この数値「６８００」を圧縮する。【０１２８】
具体的には、数値の開始位置を示すフィーダ「ｘ’Ｂ’」の圧縮符号「１０１１」を図１２に示した符号化テーブルから読み出す。つぎに、数値「６８００」が全角であることを示す全角・半角ビット「１」を設定する。また、数値「６８００」がカンマ「，」を用いていない表記であることを示すカンマ有無ビット「０」を設定する。つぎに、数値「６８００」の桁数「４」を検出し、検出された桁数「４」の圧縮符号「０１００」を図１２に示した符号化テーブルから読み出す。【０１２９】
つぎに、数値「６８００」の先頭数字「６」、第２数字「８」、第３数字「０」、および末尾数字「０」までの数字の圧縮符号「０１１０」，「１０００」，「００００」，「００００」を、図１２に示した符号化テーブルから読み出す。このようにして、数値「６８００」は圧縮されることとなる。【０１３０】
図１６−４は、数値抽象化データの圧縮処理例を示す説明図である。図１６−４においては、ＨＴＭＬデータ中、最小血圧の値を示す数値抽象化データ「＜最小血圧＞１０７＜最小血圧＞」から先頭および末尾の「＜／最小血圧＞」を分離して、数値「１０７」を抽出する。そして、この数値「１０７」を圧縮する。【０１３１】
具体的には、数値の開始位置を示すフィーダ「ｘ’０Ｂ’」の圧縮符号「００００１０１１」を図１２に示した符号化テーブルから読み出す。このフィーダ「ｘ’０Ｂ’」は、数値が最終血圧であることを識別するフィーダである。つぎに、数値「１０７」が半角であることを示す全角・半角ビット「０」を設定する。また、数値「１０７」がカンマ「，」を用いていない表記であることを示すカンマ有無ビット「０」を設定する。つぎに、数値「１０７」の桁数「３」を検出し、検出された桁数「３」の圧縮符号「００１１」を図１２に示した符号化テーブルから読み出す。【０１３２】
つぎに、数値「１０７」の先頭数字「１」、第２数字「０」、および第３数字「７」までの数字の圧縮符号「０００１」，「００００」，「０１１１」を、図１２に示した符号化テーブルから読み出す。このようにして、数値「１０７」は圧縮されることとなる。【０１３３】
（圧縮化帳票ファイルのデータ構造）
つぎに、ファイル圧縮部１１０６によって圧縮された圧縮化帳票ファイルのデータ構造について説明する。図１７−１は、ファイル圧縮部１１０６によって圧縮された圧縮化帳票ファイルのデータ構造を示す説明図である。図１７−１では、任意の圧縮化帳票ファイルＦｉに着目して説明する。この圧縮化帳票ファイルＦｉは、ブロック数情報（ｍ個）を格納する領域１７０１と、ｍ個の各ブロックのアドレス情報（＃１〜＃ｍ）を格納する領域１７０２と、各ブロックの圧縮ブロックデータＣ１〜Ｃｍを格納する領域１７０３から構成される。【０１３４】
また、図１７−２は、圧縮ブロックデータＣ１〜Ｃｍと、圧縮前の元のブロックデータとの比較を示す図表である。図１７−２を参照すると、圧縮ブロックデータＣ１〜Ｃｍのレングスが、対応する元のブロックデータのレングスの約半分に圧縮されていることがわかる。【０１３５】
（検索初期化部６２１の詳細な機能的構成）
つぎに、図６に示した検索初期化部６２１の詳細な機能的構成について説明する。図１８は、図６に示した検索初期化部６２１の詳細な機能的構成を示すブロック図である。図１８において、検索初期化部６２１は、復号部１８０１と、低出現頻度数値・文字データ分解部１８０２と、生起確率演算部１８０３と、ハフマン木生成部１８０４と、出現マップ設定部１８０５と、から構成されている。【０１３６】
まず、復号部１８０１は、暗号化数値・文字出現頻度管理データ６５０を復号する。具体的には、図１１で用いた暗号化のマスタキーを用いて排他的論理和（ＸＯＲ）による復号処理を実行する。同様に、暗号化連字／外字置換テーブル６６０も、元の連字／外字置換テーブル６４０に戻す。また、低出現頻度数値・文字データ分解部１８０２、生起確率演算部１８０３およびハフマン木生成部１８０４は、図１１に示した低出現頻度数値・文字データ分解部１１０２、生起確率演算部１１０４およびハフマン木生成部１１０５と同一の処理を実行し、ハフマン木１８１０を生成する。このハフマン木は、出現頻度補正部１１０１により補正されたハフマン木となる。【０１３７】
また、出現マップ設定部１８０５は、復号された数値・文字出現頻度管理データ５００の出現マップ５１０を読み込んでメモリ展開し、区点対応テーブルとリンクする。区点は、ＪＩＳによって制定された全角文字向けの文字コードであり、区点対応テーブルは、各区点のアドレスを記憶したテーブルである。【０１３８】
図１９は、文字の区点対応テーブルと出現マップとの対応関係を示す説明図である。文字の区点対応テーブル１９００は、数値・文字出現頻度管理データ５００の文字データと出現マップ５０５〜５０９とを対応づけるテーブルである。この文字の区点対応テーブル１９００により、区点に対応する文字データの存否をあらわすビット列の出現マップ５０５〜５０９を呼び出すことができる。【０１３９】
図２０は、数値の区点対応テーブルと出現マップとの対応関係を示す説明図である。数値の区点対応テーブル２０００は、数値・文字出現頻度管理データ５００の数値群と出現マップ５０３とを対応づけるテーブルである。この数値の区点対応テーブル２０００により、区点に対応する数値群内の数値の存否をあらわすビット列の出現マップ５０３を呼び出すことができる。【０１４０】
（全文検索実行部６２４の詳細な機能的構成）
つぎに、図６に示した検索実行部６２２内の全文検索実行部６２４の詳細な機能的構成について説明する。図２１は、検索実行部６２２内の全文検索実行部６２４の詳細な機能的構成を示すブロック図である。【０１４１】
図２１において、全文検索実行部６２４は、検索キーワード入力処理部２１０１と、検索キーワード圧縮部２１０２と、出現マップ読取部２１０３と、圧縮化帳票ファイル特定部２１０４と、圧縮化帳票ファイル抽出部２１０５と、判定部２１０６と、ブロック伸長部２１０７と、文字列比較部２１０８と、ファイル構成データ特定部２１０９と、検索候補一覧表示部２１１０と、検索候補選択部２１１１と、から構成されている。【０１４２】
まず、検索キーワード入力処理部２１０１は、ユーザからの検索キーワードの入力を受け付ける。また、検索キーワードが複数ある場合、各検索キーワードの文字列を連結する。さらに、検索キーワードの連字が所定の連字に該当する場合、連字／外字置換テーブル６４０を用いて、連字を外字に置換する。このあと、検索キーワード入力処理部２１０１は、検索キーワードを単一文字に分解する。【０１４３】
また、検索キーワード圧縮部２１０２は、検索キーワード入力処理部２１０１によって入力された検索キーワードを、検索初期化部６２１のハフマン木生成部１８０４によって生成されたハフマン木１８１０を用いて圧縮する。また、出現マップ読取部２１０３は、出現マップ設定部１８０５によって設定された出現マップ５１０を用いて、検索キーワードの各文字の各帳票ファイルｆ０〜ｆｎにおけるビット列を読み取る。具体的には、この出現マップ５１０における各文字データは、区点対応テーブルにより区点とリンクしているため、区点と一致する検索キーワードの各文字データのビット列を読み取ることができる。【０１４４】
圧縮化帳票ファイル特定部２１０４は、出現マップ５１０から読み取られた各文字の各帳票ファイルｆ０〜ｆｎにおけるビット列の論理積を算出することにより、検索キーワードの各文字データがすべて存在する圧縮化帳票ファイルを特定することで、圧縮化帳票ファイルの絞込みをおこなう。ここで、絞込みの一例について説明する。【０１４５】
図２２は、圧縮化帳票ファイルＦｉの絞込みの一例を示す説明図である。図２２においては、検索キーワードを『出金伝票』とし、帳票ファイルの数を４個、すなわち、ファイル番号ｉ＝０〜３までとする。図２２において、たとえば、文字『出』のビット列は［１１００］である。このビット列は、ファイル番号０、１の帳票ファイルｆ０、ｆ１には文字『出』が含まれており、ファイル番号２、３の帳票ファイルｆ２、ｆ３には文字『出』が含まれていないことを示している。【０１４６】
そして、図２２において、絞込み結果は、ファイル番号ｉごとのビットの論理積（ＡＮＤ）結果を示している。この絞込み結果によれば、ファイル番号１の帳票ファイルｆ１のみが、存在を示すビット「１」となっているため、検索キーワードを構成するすべての文字『出』、『金』、『伝』および『票』は、帳票ファイルｆ１にのみ存在し、他の帳票ファイルｆ０、ｆ２、ｆ３には存在しないことがわかる。これにより、検索対象としてオープンするファイルを、帳票ファイルｆ１を圧縮した圧縮化帳票ファイルＦ１のみに特定することができ、無駄なファイルのオープン／クローズ処理を防止して検索速度の向上を図ることができる。【０１４７】
また、図２１において、圧縮化帳票ファイル抽出部２１０５は、圧縮化帳票ファイル群Ｆの中から、圧縮化帳票ファイル特定部２１０４によって特定された帳票ファイルＦｉを抽出する。図２２の例では、ファイル番号１の圧縮化帳票ファイルＦ１を抽出する。【０１４８】
また、判定部２１０６は、圧縮化帳票ファイル抽出部２１０５によって抽出された圧縮化帳票ファイルＦｉに、検索キーワード圧縮部２１０２によって圧縮された検索キーワード（以下、「圧縮キーワード」）が含まれているか否かを判定する。具体的には、圧縮化帳票ファイルＦｉ内の圧縮ブロックデータごとに判定をおこなっている。【０１４９】
この判定結果が不一致である場合、圧縮化帳票ファイルＦｉには、検索キーワードが含まれていないことがわかる。一方、判定結果が一致である場合、圧縮化帳票ファイルＦｉには、検索キーワードが含まれていることがわかる。たとえば、図２２においては、圧縮化帳票ファイルＦ１に、検索キーワード『出金伝票』という文字列が含まれていることがわかる。【０１５０】
また、ブロック伸長部２１０７は、判定部２１０６により一致すると判定された圧縮化帳票ファイルＦｉの圧縮ブロックデータのみ伸長する。この判定部２１０６およびブロック伸長部２１０７により、圧縮化帳票ファイルＦｉのまま判定をおこなうことができ、不一致であれば、圧縮化帳票ファイルＦｉを伸長する前に検索候補から外し、一致した帳票ファイルのみ伸長することができる。また、ブロック伸長部２１０７において、伸長された帳票ファイルｆｉに連字外字データが含まれている場合、復号部１８０１によって復号された連字／外字置換テーブル６４０を用いて、連字外字データを元の連字データに置換する。【０１５１】
また、文字列比較部２１０８は、ブロック伸長部２１０７によって伸長されたブロックデータ内の文字列と、検索キーワード入力処理部２１０１によって入力された検索キーワードとを比較する。【０１５２】
ファイル構成データ特定部２１０９は、検索キーワードに一致する文字列の帳票データｇｊがあった場合、当該帳票データｇｊのページ番号ｊおよび当該帳票データｇｊが属する帳票ファイルｆｉのファイル番号ｉを特定する。【０１５３】
検索候補一覧表示部２１１０は、ページリストデータ４００を編集して、ファイル構成データ３００内のファイルリストのうち、文字列比較部２１０８により帳票データｇｊのページ番号ｊおよび当該帳票データｇｊが属する帳票ファイルｆｉのファイル番号ｉが特定されたファイルリストを、検索候補一覧（たとえば、見出し語の一覧）として図１に示したディスプレイ１０８に表示する。【０１５４】
また、検索候補選択部２１１１は、検索候補一覧表示部２１１０によって表示された検索候補一覧の中から、ユーザの操作によって選択された検索候補を受け付ける。【０１５５】
（全文検索機能における不一致照合処理）
つぎに、上述した全文検索実行部６２４における不一致照合処理について説明する。上述した全文検索の文字列の不一致照合方式は、圧縮・暗号化されたデータを伸長せず、検索キーワードを圧縮し不一致照合をおこなうこととしている。【０１５６】
非圧縮データの文字列の照合は１バイト毎、もしくは文字単位に比較されるが、圧縮データでは、文字の境界の識別が困難であり、１ビット毎にシフトを行い比較することが必要である。ここでは、この点に着目して、圧縮化帳票ファイルに対して、ＣＰＵ１０１が得意であるバイト毎の操作をもとにした不一致照合処理を全文検索実行部６２４において実行する。【０１５７】
図２３は、全文検索実行部６２４における不一致照合処理を示す説明図である。図２１に示した検索キーワード入力処理部２１０１により入力された検索キーワード２３０１は、検索キーワード圧縮部２１０２によりハフマン木１８１０を用いてｘビットの圧縮キーワード２３０２に圧縮され、レジスタＲａにセットされる。【０１５８】
一方、圧縮化帳票ファイル抽出部２１０５によって抽出された特定圧縮化帳票ファイル（圧縮化帳票ファイル）２３１１内の圧縮ブロックデータ２３１２をレジスタＲｂにセットして、レジスタＲａにセットされた圧縮キーワード２３０２と比較する。具体的には、レジスタＲｂには、所定バイトずつシフトされた圧縮ブロックデータ２３１２がセットされ、順次圧縮キーワード２３０２と比較される。【０１５９】
具体的には、圧縮キーワード２３０２と圧縮ブロックデータ２３１２とのＸＯＲ演算により比較結果２３２０を出力する。そして、比較結果２３２０における末尾８ビット（図２３中、網掛け表示）のビット列２３３０を抽出して、不一致照合をおこなう。【０１６０】
図２４は、図２３に示した圧縮ブロックデータのシフト操作を示す図表である。このシフト操作では、圧縮キーワード２３０２の圧縮サイズ（圧縮キーワード長）に応じた照合間隔分シフトする。なお、圧縮キーワード長が１６ビット以上である場合、照合判定のビット長は８ビットとなるが、１１ビット以上１５ビット以下の場合、３〜７ビットとして、末尾のビットを調整する。また、圧縮キーワード長が１〜１０ビットの場合、圧縮形式の不一致照合はおこなわず、伸長後に検索キーワード２３０１を照合する。【０１６１】
図２５は、照合予測テーブルの生成処理を示す説明図である。図２５において、レジスタＲａに圧縮キーワード２３０２をセットする。レジスタＲａ内の「＊」（末尾８ビット）は、圧縮キーワード２３０２が保持されていないビットである。図２５では、そして、レジスタＲａ内の圧縮キーワード２３０２を１ビットごとシフトして、シフトテーブル２５００を生成する。すなわち、圧縮キーワード２３０２はｎビットであるため、シフト数０ビットからｘ−８ビットまでのシフトビット列によりシフトテーブル２５００を生成する。【０１６２】
そして、レジスタＲａにセットされている圧縮キーワード２３０２とシフトテーブル２５００とを照合予測する。具体的には、ＸＯＲ演算を施すことにより、ＸＯＲテーブル２５０１を生成する。そして、ＸＯＲテーブル２５０１の各シフトビット列において、「＊」が含まれていない１７ビット目から２４ビット目までの８ビット分の部分ビット列（図中網掛け表示）と対応するシフトビット列のシフト数とを連結して部分判定テーブル２５０２を生成する。【０１６３】
つぎに、高速判定するための照合予測テーブル２５０３を生成する。照合予測テーブル２５０３は、部分判定テーブル２５０２を参照して、８ビットのアドレスに、シフト数を割り当てる。なお、シフト数が重複するビット列が出現した場合、当該ビット列には「６４」がセットされ、照合の際、部分判定テーブル２５０２を参照する。また、部分判定テーブル２５０２とは一致しないアドレスには、シフト数として「−１」を割り当てる。この照合予測テーブル２５０３と不一致照合用のビット列２３３０とを比較することで、不一致照合を実行する。【０１６４】
図２６は、全ビット不一致照合処理を示す説明図である。図２６において、現在のシフト数を８で除算することにより、その除数および余りを算出する。そして、特定圧縮化帳票ファイル２３１１の現在のポインタに除数を加算することで、加算後のポインタに応じた圧縮ブロックデータ２３１２を再取得してレジスタＲｂにセットする。そして、セットされた圧縮ブロックデータ２３１２を余りの値分シフトする。【０１６５】
また、圧縮キーワード２３０２をレジスタＲａにセットする。両レジスタＲａ、Ｒｂにおいて照合対象外となるビットのマスクをＯＦＦにし、両レジスタＲａ、Ｒｂを比較する。そして、全ビットが一致した場合に、その一致したアドレスを記録することとする。【０１６６】
（数値検索実行部の詳細な機能的構成）
図２７は、検索実行部６２２内の数値検索実行部６２５の詳細な機能的構成を示すブロック図である。なお、図２１に示した構成と同一構成については同一符号を付し、その説明を省略する。【０１６７】
図２７において、数値検索実行部６２５は、取得部２７０１と、数値圧縮部２７０２と、検出部２７０３と、中間数値群判断部２７０４と、出現マップ抽出部２７０５と、省略マップ設定部２７０６と、下限／上限マップ生成部２７０７と、特定部２７０８と、圧縮情報検索部２７０９と、境界条件判断部２７１０と、決定部２７１１と、を有している。【０１６８】
まず、取得部２７０１は、任意の数値範囲の境界を規定する数値を取得する。ここで、数値範囲とは、境界を規定する数値と境界を規定する演算子とにより特定される区間である。境界を規定する数値とは、数値範囲の下限を規定する数値（下限数値）Ｎｘや上限を規定する数値（上限数値）Ｎｙである。また、境界を規定する演算子とは、「≦」、「＜」、「≧」、「＞」といった不等号を示す演算子であり、下限数値や上限数値の境界条件となる。【０１６９】
これにより、任意の数値をＺとすると、取得部２７０１では、ユーザ入力や演算子の初期設定などにより、数値Ｎが取りうる以下の数値範囲を設定することができる。
・Ｎｘ＜Ｚ
・Ｎｘ≦Ｚ
・Ｎｙ＞Ｚ
・Ｎｙ≧Ｚ
・Ｎｘ＜Ｚ＜Ｎｙ
・Ｎｘ≦Ｚ＜Ｎｙ
・Ｎｘ＜Ｚ≦Ｎｙ
・Ｎｘ≦Ｚ≦Ｎｙ【０１７０】
また、数値圧縮部２７０２は、取得部２７０１によって取得された数値を圧縮する。具体的には、数値であることを識別するフィーダの圧縮符号、全角・半角ビットの圧縮符号、カンマ有無ビットの圧縮符号、桁数の圧縮符号、各桁の数字の圧縮符号、小数点を含む場合は小数点の圧縮符号などからなる圧縮情報に圧縮する。なお、各圧縮化帳票ファイルＦｉ内の数値も同様な規則で圧縮されている。また、全角・半角ビットおよび圧縮符号、カンマ有無ビットは一律「０」（ＯＦＦ）としておく。【０１７１】
また、検出部２７０３は、取得部２７０１によって取得された境界を規定する数値の桁数および先頭数字を検出する。たとえば、数値ＮがＮ＝１２，３４５である場合、桁数は「５」であり、先頭数字は「１」である。また、数値に小数が含まれている場合、小数点以下の桁数も計数する。たとえば、数値ＮがＮ＝１２，３４５．６７である場合、桁数は「７」であり、先頭数字は「１」である。また、先頭桁は最上位の１桁としたが、先頭からの連続する複数の上位桁としてもよい。たとえば、数値Ｎ（Ｎ＝１２，３４５）では、先頭数字は、「１２」としてもよい。【０１７２】
また、中間数値群判断部２７０４は、取得部２７０１によって取得された数値範囲に中間数値群が含まれているか否かを判断する。ここで、中間数値群とは、数値範囲の下限数値を含む数値群（以下、「下限数値群」と称す）と、数値範囲の上限数値を含む数値群（以下、「上限数値群」と称す）との間に存在する数値群である。下限数値群と上限数値群との桁数が相違していれば、中間数値群が存在すると判断する。また、桁数が同一であっても、先頭数字が相違していれば、中間数値群が存在すると判断する。【０１７３】
たとえば、数値範囲が『３，７００以上６，３００以下』である場合、下限数値群として４桁・先頭数字３の数値群と、上限数値群として４桁・先頭数字６の数値群とが検出される。この場合、中間数値群として、４桁・先頭数字４の数値群と４桁・先頭数字５の数値群とが数値範囲内に存在することとなる。【０１７４】
また、数値範囲が『３，７００以上１６，３００以下』である場合、下限数値群として４桁・先頭数字３の数値群と、上限数値群として５桁・先頭数字１の数値群とが検出される。この場合、中間数値群として、４桁・先頭数字４の数値群〜４桁・先頭数字９の数値群が数値範囲内に存在することとなる。【０１７５】
また、数値範囲が『３，７００以上４，３００以下』である場合、下限数値群として４桁・先頭数字３の数値群と、上限数値群として４桁・先頭数字４の数値群とが検出される。この場合、中間数値群は存在しない。【０１７６】
同様に、数値範囲が『３，７００以上３，９００以下』である場合、下限数値群として４桁・先頭数字３の数値群と、上限数値群として４桁・先頭数字３の数値群とが検出される。すなわち、下限数値群および上限数値群が同一の数値群となる。この場合も、中間数値群は存在しない。【０１７７】
また、出現マップ抽出部２７０５は、数値群の出現マップの中から、検出部２７０３によって検出された桁数および先頭数字に応じた出現マップを抽出する。たとえば、検出部２７０３により、桁数「５」で先頭数字「１」が検出された場合、５桁・先頭数字１の数値群に関する出現マップを抽出する。また、中間数値群が存在する場合、中間数値群に関する出現マップも抽出する。【０１７８】
省略マップ設定部２７０６は、中間数値群に関する出現マップに基づいて、省略マップを設定する。省略マップとは、下限数値群に関する出現マップや上限数値群に関する出現マップとの論理積を演算するためのマップである。省略マップ自体は、数値群に関する出現マップ５０３と同様、帳票ファイルｆｉにおける存否をビットのＯＮ／ＯＦＦであらわしている。したがって、ＯＮになっているビットに対応する帳票ファイルｆｉには、中間数値群内の数値が存在していることをあらわしており、ＯＦＦになっているビットに対応する帳票ファイルｆｉには、中間数値群内の数値が存在しないことをあらわしている。【０１７９】
省略マップは、具体的には、中間数値群に関する出現マップの論理和を演算することにより中間結果マップを算出し、この中間結果マップ内のビットを反転することにより、省略マップを設定する。なお、中間数値群に関する出現マップが１つしか存在しない場合、当該出現マップ内のビットを反転することにより省略マップを設定することができる。また、中間数値群に関する出現マップがない場合、全ビットＯＦＦの省略マップを設定する。【０１８０】
また、下限／上限マップ生成部２７０７は、下限マップおよび上限マップを生成する。ここで、下限マップとは、下限数値群に関する出現マップ（下限数値群マップ）と省略マップとの論理積により得られるマップであり、上限マップとは、上限数値群に関する出現マップ（上限数値群マップ）と省略マップとの論理積により得られるマップである。この論理積演算により、下限マップは下限数値群内数値のみの存否をあらわすマップとなり、上限マップは上限数値群内数値のみの存否をあらわすマップとなる。【０１８１】
また、特定部２７０８は、複数の圧縮化検索対象ファイルの中から、検出部２７０３によって検出された桁数および先頭数字を満たす数値群内の数値が存在する圧縮化検索対象ファイルを特定する。具体的には、下限マップ内のビットのうち、ＯＮになっているビットに対応する帳票ファイルｆｉを特定し、圧縮化帳票ファイル群Ｆの中から圧縮化帳票ファイルＦｉを抽出する。同様に、上限マップ内のビットのうち、ＯＮになっているビットに対応する帳票ファイルｆｉを特定し、圧縮化帳票ファイル群Ｆの中から圧縮化帳票ファイルＦｉを抽出する。【０１８２】
また、圧縮情報検索部２７０９は、特定部２７０８によって特定された圧縮化帳票ファイルＦｉの中から、ファイル内数値に関する圧縮情報を検索する。圧縮化帳票ファイルｆｉ内においては、ファイル内数値は、フィーダの圧縮符号、全角・半角フラグの圧縮符号、カンマフラグの圧縮符号、桁数の圧縮符号、各桁の数字の圧縮符号などからなる圧縮情報により圧縮されている。圧縮情報検索部２７０９は、ファイル内数値に関する圧縮情報（たとえば、フィーダの圧縮符号のみ）を検出することで、ファイル内数値に関する圧縮情報を抽出する。【０１８３】
また、境界条件判断部２７１０は、数値圧縮部２７０２によって圧縮された境界を規定する数値の圧縮情報と、圧縮情報検索部２７０９によって検索されたファイル内数値の圧縮情報とを比較することにより、ファイル内数値が境界を規定する数値との境界条件を充足しているか否かを判断する。境界条件とは、（境界を規定する数値）以上、以下、より大きい、より小さいといった境界を規定する数値との大小関係をあらわす条件である。【０１８４】
たとえば、まず、桁数の数字の圧縮符号どうしを比較することにより、圧縮元となる数値どうしの大小を比較する。また、同一桁数である場合、先頭数字の圧縮符号どうしを比較することにより、圧縮元となる数値どうしの大小を比較する。また、先頭数字が同一である場合、順次、つぎの桁の数字どうしを比較することにより、圧縮元となる数値どうしの大小を比較する。これにより、ファイル内数値が境界を規定する数値との境界条件を充足しているか否かを判断することができる。【０１８５】
また、全角・半角ビットおよび圧縮符号、カンマ有無ビットは一律「０」（ＯＦＦ）としてあるため、ファイル内数値の圧縮情報との比較の際、ファイル内数値の圧縮情報において、全角・半角ビットおよび圧縮符号、カンマ有無ビットを「０」（ＯＦＦ）に設定する。これにより、全角・半角の相違やカンマの有無を考慮することなく、数値検索をおこなうことができる。【０１８６】
また、決定部２７１１は、境界条件判断部２７１０によって判断された判断結果に基づいて、特定部２７０８によって特定された圧縮化検索対象ファイルＦｉを、数値範囲内の数値を含むファイルに決定する。具体的には、ファイル内数値が境界を規定する数値との境界条件を充足した場合、特定部２７０８によって特定された圧縮化検索対象ファイルＦｉを、数値範囲内の数値を含むファイルに決定する。この決定処理では、出現マップと同様、帳票ファイルに対応するビット列であらわされる下限比較結果マップおよび上限比較結果マップを用いる。初期設定として全ビットをＯＦＦにしておく。【０１８７】
そして、圧縮化帳票ファイルＦｉにおいて、ファイル内数値が下限数値との境界条件を充足した場合、下限比較結果マップ内の当該圧縮化帳票ファイルＦｉに対応するビットをＯＮにする。同様に、ファイル内数値が上限数値との境界条件を充足した場合、上限比較結果マップ内の当該圧縮化帳票ファイルＦｉに対応するビットをＯＮにする。【０１８８】
そして、決定部２７１１は、最終的に得られた下限比較結果マップと上限比較結果マップと中間結果マップが存在する場合には中間結果マップとの論理和を演算することにより、数値範囲内の数値が存在する圧縮化帳票ファイルＦｉを決定することができる。【０１８９】
なお、ファイル構成データ特定部２１０９は、決定部２７１１により数値範囲内の数値が存在する圧縮化帳票ファイルＦｉが決定された場合、境界を規定する数値との境界条件を満足したファイル内数値が存在する帳票データｇｊのページ番号ｊおよび当該帳票データｇｊが属する帳票ファイルｆｉのファイル番号ｉを特定する。【０１９０】
（数値範囲の大小比較例）
つぎに、数値範囲の第１の大小比較例について説明する。ここでは、数値範囲を特定する下限の数値と上限の数値とが同一桁数で、かつ、先頭桁の数字が異なる場合を例にして説明する。図２８−１〜図２８−４は、数値範囲の大小比較例を示す説明図である。ここでは、例として、数値範囲『３，７００円以上６，３００円以下』が与えられたとして、当該数値範囲で指定された範囲の金額（数値）を含む圧縮化帳票ファイルＦｉを検索する例である。なお、数値範囲の下限数値の数値情報「３，７００円」および上限数値の数値情報「６，３００円」は、ともに図１６−３に示した圧縮処理により圧縮される。【０１９１】
図２８−１において、まず、数値範囲『３，７００円以上６，３００円以下』について、中間数値群の出現マップを抽出する。具体的には、下限数値群の出現マップとなる４桁・先頭数字３マップＭ４３と上限数値群の出現マップとなる４桁・先頭数字６マップＭ４６との間の４桁・先頭数字４マップＭ４４および４桁・先頭数字５マップＭ４５を、中間数値群の出現マップとして抽出する。【０１９２】
４桁・先頭数字３マップＭ４３は、４桁・先頭数字３の数値を有する帳票ファイルｆｉの存否をあらわしている。４桁・先頭数字４マップＭ４４は、４桁・先頭数字４の数値を有する帳票ファイルｆｉの存否をあらわしている。４桁・先頭数字５マップＭ４５は、４桁・先頭数字５の数値を有する帳票ファイルｆｉの存否をあらわしている。４桁・先頭数字６マップＭ４６は、４桁・先頭数字６の数値を有する帳票ファイルｆｉの存否をあらわしている。【０１９３】
ここで、４桁・先頭数字３マップＭ４３および４桁・先頭数字６マップＭ４６は、大小比較に用いる出現マップである。また、４桁・先頭数字４マップＭ４４および４桁・先頭数字５マップＭ４５は、論理和をとって中間結果マップＭ０１とする。中間結果マップＭ０１は、数値４０００〜５９９９が存在する帳票ファイルｆｉの存否をあらわしている。そして、この中間結果マップＭ０１内のビットを反転させることで、省略マップＭ０２を得る。【０１９４】
図２８−２では、図２８−１で得られた４桁・先頭数字３マップＭ４３と省略マップＭ０２との論理積をとることで、下限マップＭ０３を得る。省略マップＭ０２との論理積をとることで、中間数値群内の数値を有する帳票ファイルを除外することができる。【０１９５】
この下限マップＭ０３において、ビットがＯＮである圧縮化帳票ファイルＦｉを抽出する。この圧縮化帳票ファイルＦｉを先頭からサーチしてフィーダ（図２８−２では「ｘ’Ｂ’」）の圧縮符号「１０１１」を探索する。フィーダの圧縮符号「１０１１」が探索されると、そのフィーダの圧縮符号「１０１１」を先頭とする圧縮情報２８０１を読み出す。この圧縮情報２８０１のうち、全角・半角ビットおよびカンマ有無ビットが「１」である場合、「０」に変換することでマスクする。この変換後の圧縮情報を比較対象圧縮情報２８１０と称す。【０１９６】
そして、圧縮化帳票ファイルＦｉ内の数値情報「３，３００円」を圧縮した比較対象圧縮情報２８１０と、下限の数値情報「３，７００円」を圧縮処理した下限の圧縮情報２８０２とを比較する。まず、比較対象圧縮情報２８１０および下限の圧縮情報２８０２のフィーダ，桁数，先頭数字の圧縮符号どうしの一致比較をおこなう。この段階でいずれか一つの圧縮符号が不一致であれば、圧縮化帳票ファイルＦｉ内のつぎのフィーダをサーチする。【０１９７】
一方、フィーダの圧縮符号が一致していれば、同種の数値情報であることがわかり、さらに桁数が一致していれば、比較対象圧縮情報２８１０は少なくとも４桁数字の数値の圧縮形式であることがわかり、さらに先頭数字が一致していれば、比較対象圧縮情報２８１０は少なくとも先頭数字が「３」の数値の圧縮形式であることがわかる。したがって、フィーダ，桁数，および先頭数字の圧縮符号がすべて一致した場合、同一桁における数字の圧縮符号の大小比較をおこなう。【０１９８】
この例では、第２数字の圧縮符号を比較することで、比較対象圧縮情報２８０２のファイル内の数値情報「３，３００円」よりも下限数値の数値情報「３，７００円」が大きいことがわかる。この場合、下限比較結果マップＭ０４において、圧縮化帳票ファイルＦｉに対応するビットは「０」のままである。そして、圧縮化帳票ファイルＦｉ内のつぎのフィーダをサーチして、下限数値の数値情報「３，７００円」以上の数値情報がある場合、下限比較結果マップＭ０４において、圧縮化帳票ファイルＦｉに対応するビットを「１」とする。【０１９９】
この比較処理を、下限マップＭ０３内においてビットが立っているすべての圧縮化帳票ファイルＦ０〜Ｆｎについておこなうことで、下限比較結果マップＭ０４を得ることができる。このように、下限マップＭ０３から４桁でかつ先頭数字が「３」である数値を含む圧縮化帳票ファイルＦｉを抽出することで、帳票ファイルｆｉを圧縮形式のまま検索することができる。【０２００】
図２８−３では、図２８−１で得られた４桁・先頭数字６マップＭ４６と省略マップＭ０２との論理積をとることで、上限マップＭ０５を得る。省略マップＭ０２との論理積をとることで、中間数値群内の数値を有する帳票ファイルを除外することができる。【０２０１】
この上限マップＭ０５において、ビットがＯＮである圧縮化帳票ファイルＦｉを抽出する。この圧縮化帳票ファイルＦｉを先頭からサーチしてフィーダ（図２８−３では「ｘ’Ｂ’」）の圧縮符号「１０１１」を探索する。フィーダの圧縮符号「１０１１」が探索されると、そのフィーダの圧縮符号「１０１１」を先頭とする圧縮情報２８０３を読み出す。この圧縮情報２８０３のうち、全角・半角ビットおよびカンマ有無ビットが「１」である場合、「０」に変換することでマスクする。この変換後の圧縮情報を比較対象圧縮情報２８３０と称す。【０２０２】
そして、圧縮化帳票ファイルＦｉ内の数値情報「６，２００円」を圧縮した比較対象圧縮情報２８３０と、上限の数値情報「６，３００円」を圧縮処理した上限の圧縮情報２８０４とを比較する。まず、比較対象圧縮情報２８３０および上限の圧縮情報２８０４のフィーダ，桁数，先頭数字の圧縮符号どうしの一致比較をおこなう。この段階でいずれか一つの圧縮符号が不一致であれば、圧縮化帳票ファイルＦｉ内のつぎのフィーダをサーチする。【０２０３】
一方、フィーダの圧縮符号が一致していれば、同種の数値情報であることがわかり、さらに桁数が一致していれば、比較対象圧縮情報２８３０は少なくとも４桁数字の数値の圧縮形式であることがわかり、さらに先頭数字が一致していれば、比較対象圧縮情報２８３０は少なくとも先頭数字が「３」の数値の圧縮形式であることがわかる。したがって、フィーダ，桁数，および先頭数字の圧縮符号がすべて一致した場合、同一桁における数字の圧縮符号の大小比較をおこなう。【０２０４】
この例では、第２数字の圧縮符号どうしを比較することで、比較対象圧縮情報２８３０の数値情報「６，２００円」よりも上限数値の数値情報「６，３００円」が大きいことがわかる。この場合、上限比較結果マップＭ０６において、圧縮化帳票ファイルＦｉに対応するビットを「１」とする。【０２０５】
この比較処理を、上限マップＭ０５内においてビットが立っているすべての圧縮化帳票ファイルＦｉについておこなうことで、上限比較結果マップＭ０６を得ることができる。このように、上限マップＭ０５から４桁でかつ先頭数字が「６」である数値を含む圧縮化帳票ファイルＦｉを抽出することで、帳票ファイルｆｉを圧縮形式のまま検索することができる。【０２０６】
図２８−４では、下限比較結果マップＭ０４、中間結果マップＭ０１、および上限比較結果マップＭ０６の論理和をとることで、統合結果マップＭ０７を得ている。これにより、数値範囲『３，７００円以上６，３００円以下』内の数値情報を含む帳票ファイルｆｉを圧縮形式のまま特定することができる。【０２０７】
なお、上述した図２８−１〜図２８−４の例では、数値範囲を特定する下限数値と上限数値とが同一桁数で、かつ、先頭桁の数字が異なる場合を例にして説明したが、上限の数値の桁数が大きい場合（または下限の数値の桁数が小さい場合）も同様に比較することができる。たとえば、数値範囲が『３，７００円以上６４，０００円以下』である場合、４桁先頭数字４マップ〜４桁先頭数字９マップと５桁先頭数字１マップ〜５桁先頭数字５マップまでを中間数値群の出現マップとして抽出すればよい。【０２０８】
また、数値範囲が『３，７００円以上３，９００円以下』や『３，７００円以上４，５００円以下』など、中間数値群が存在しない場合は、中間結果マップＭ０１が存在しないため、省略マップＭ０２の全ビットをＯＦＦにする。そして、統合結果マップＭ０７を得る場合も中間結果マップＭ０１が存在しないため、下限比較結果マップＭ０４と上限比較結果マップＭ０６との論理和により統合結果マップＭ０７を演算する。【０２０９】
（検索結果表示部６２３の詳細な機能的構成）
つぎに、図６に示した検索結果表示部６２３の詳細な機能的構成について説明する。図２９は、図６に示した検索結果表示部６２３の詳細な機能的構成を示すブロック図である。図２９において、検索結果表示部６２３は、読出し部２９０１と、ファイル伸長部２９０２と、ファイル表示部２９０３と、から構成されている。【０２１０】
まず、読出し部２９０１は、検索候補選択部２１１１によって選択された検索候補である項目データを、圧縮化帳票ファイル群Ｆの圧縮化帳票ファイルＦｉから読み出す。また、ファイル伸長部２９０２は、読出し部２９０１によって読み出された項目データを、ハフマン木１８０１によって伸長する。ファイル表示部２９０３は、ファイル伸長部２９０２によって伸長された項目データを検索結果として表示する。【０２１１】
（情報検索処理手順）
つぎに、この発明の実施の形態にかかる情報検索装置６００の情報検索処理手順について説明する。図３０は、この発明の実施の形態にかかる情報検索装置６００の情報検索処理手順を示すフローチャートである。図３０において、まず、数値・文字出現頻度管理データ生成部６１２により、数値・文字出現頻度管理データ生成処理を実行する（ステップＳ３００１）。【０２１２】
そして、圧縮／暗号化部６１３により、圧縮／暗号化処理を実行する（ステップＳ３００２）。このあと、検索初期化部６２１により、検索初期化処理を実行する（ステップＳ３００３）。つぎに、検索実行部６２２により、検索処理を実行する（ステップＳ３００４）。【０２１３】
最後に、検索結果表示部６２３により、検索結果表示処理を実行する（ステップＳ３００５）。なお、検索結果表示処理では、検索候補一覧から選択された検索候補（項目データ）を圧縮帳票ファイルＦｉから読み出して、ハフマン木１８１０にて伸長することにより、項目データの全文を検索結果として表示することができる。【０２１４】
つぎに、図３０に示した数値・文字出現頻度管理データ生成処理（ステップＳ３００１）の詳細な処理手順について説明する。図３１は、図３０に示した数値・文字出現頻度管理データ生成処理（ステップＳ３００１）の詳細な処理手順を示すフローチャートである。図３１において、まず、初期化処理を実行する（ステップＳ３１０１）。具体的には、８，１６ビットの数値・文字データ、連字データ、バイナリデータの区点対応の集計領域を確保し、出現頻度と出現マップのセグメント等を初期化する。また、数値・文字データのコードをセットし、各種カウンタを初期化する。【０２１５】
つぎに、数値・文字出現頻度集計処理を実行する（ステップＳ３１０２）。この数値・文字出現頻度集計処理の詳細な処理手順については後述する。この数値・文字出現頻度集計処理のあと、数値・文字出現頻度管理データ５００の領域確保とその領域の初期化を実行し（ステップＳ３１０３）、８，１６ビットの数値・文字データ、連字データ、バイナリデータの文字コードと出現頻度をセットする（ステップＳ３１０４）。【０２１６】
そして、出現マップの各セグメントを連結し（ステップＳ３１０５）。連字領域の連字データを高出現頻度順にソートする（ステップＳ３１０６）ことで、２５６種の連字データを選択する。これにより、連字データの削減を図ることができる。【０２１７】
つぎに、連字／外字置換をおこなうとともに、連字／外字置換テーブル６４０を生成する（ステップＳ３１０７）。具体的には、高出現頻度順に連字データを外字データに置換することにより、連字外字データと連字／外字置換テーブル６４０を生成する。【０２１８】
そして、低出現頻度の連字データ、すなわち外字に置換されなかった連字データを単一文字データに分解し、該当する文字領域に割り振る補正をおこなう（ステップＳ３１０８）。すなわち、低出現頻度の連字データを表音文字データに分割し、当該文字データの頻度の加算と出現マップのＯＲ演算を実行する。【０２１９】
このあと、数値・文字データを高出現頻度順にソートし（ステップＳ３１０９）、頻度０回の数値・文字データをカットして、連字外字データとバイナリデータとを結合し（ステップＳ３１１０）、この結合によって得られた数値・文字出現頻度管理データ５００をファイルに出力する（ステップＳ３１１１）。これにより、ステップＳ３００２に移行する。【０２２０】
つぎに、上述した数値・文字出現頻度集計処理（ステップＳ３１０２）の詳細な処理手順について説明する。図３２−１は、上述した数値・文字出現頻度集計処理（ステップＳ３１０２）の詳細な処理手順を示すフローチャート（前半）である。図３２−１において、まず、先頭帳票ファイルｆ０をオープンする（ステップＳ３２０１）。【０２２１】
つぎに、オープンされた帳票ファイルから順次データを抽出する。抽出されたデータがバイナリデータである場合（ステップＳ３２０２：Ｙｅｓ）、当該バイナリデータの出現頻度を加算し、当該バイナリデータの出現マップにおけるオープン中のファイルに対応するビットを「１」に設定し、さらに、バイトカウンタを加算する（ステップＳ３２０３）。そして、図３２−２に示すステップＳ３２１１に移行する。【０２２２】
一方、ステップＳ３２０２において、抽出されたデータがバイナリデータではない場合（ステップＳ３２０２：Ｎｏ）、数値であるか否かを判定する（ステップＳ３２０４）。たとえば、数字のみからなる数字列であれば、数値と判定する。また、数字のほか「，」（カンマ）や「．」（小数点）が数字列に含まれている場合も、数値と判定する。【０２２３】
そして、数値である場合（ステップＳ３２０４：Ｙｅｓ）、当該数値の出現頻度を加算し、当該数値の出現マップにおけるオープン中のファイルに対応するビットを「１」に設定し、さらに、バイトカウンタを加算する（ステップＳ３２０５）。そして、図３２−２に示すステップＳ３２１１に移行する。【０２２４】
一方、ステップＳ３２０４において、抽出されたデータが数値ではない場合（ステップＳ３２０４：Ｎｏ）、連字データであるか否かを判定する（ステップＳ３２０６）。連字データである場合（ステップＳ３２０６：Ｙｅｓ）、当該連字データの出現頻度を加算し、当該連字データの出現マップにおけるオープン中のファイルに対応するビットを「１」に設定し、さらに、バイトカウンタを加算する（ステップＳ３２０７）。そして、図３２−２に示すステップＳ３２１１に移行する。【０２２５】
一方、ステップＳ３２０６において、抽出されたデータが連字データでない場合（ステップＳ３２０６：Ｎｏ）、漢字データであるか否かを判定する（ステップＳ３２０８）。漢字データでない場合（ステップＳ３２０８：Ｎｏ）、当該データは表音文字データであるため、その表音文字データの出現頻度を加算し、当該表音文字データの出現マップにおけるオープン中のファイルに対応するビットを「１」に設定し、バイトカウンタを加算する（ステップＳ３２０９）。そして、図３２−２に示すステップＳ３２１１に移行する。【０２２６】
一方、ステップＳ３２０８において、抽出されたデータが漢字データである場合（ステップＳ３２０８：Ｙｅｓ）、当該漢字データの出現頻度を加算し、当該漢字データの出現マップにおけるオープン中のファイルに対応するビットを「１」に設定し、バイトカウンタを加算する（ステップＳ３２１０）。そして、図３２−２に示すステップＳ３２１１に移行する。【０２２７】
図３２−２は、数値・文字出現頻度集計処理（ステップＳ３２０２）の詳細な処理手順を示すフローチャート（後半）である。図３２−２において、出現マップのセグメントのセグメントカウンタを加算し（ステップＳ３２１１）、セグメント終了か否か、すなわちセグメントの集計が終了したか否かを判断する（ステップＳ３２１２）。セグメントの集計が終了した場合（ステップＳ３２１２：Ｙｅｓ）、出現マップのセグメントをファイルに追加出力し、セグメントカウンタをクリアする（ステップＳ３２１３）。そして、ステップＳ３２１４に移行する。【０２２８】
一方、セグメントの集計が終了していない場合（ステップＳ３２１２：Ｎｏ）、またはステップＳ３２１３のあと、ブロック終了か否か、たとえば、集計した数値・文字データ数が４０００文字に到達したか否かを判断する（ステップＳ３２１４）。【０２２９】
そして、ブロック終了した場合（ステップＳ３２１４：Ｙｅｓ）、当該ブロックデータを有する帳票ファイルｆｉのファイル番号ｉ、当該ブロックデータのブロック番号ｍ、オフセット、文字数、およびレングスからなるブロック情報を生成してファイルに追加出力するとともに、バイトカウンタをクリアする（ステップＳ３２１５）。そして、ステップＳ３２１６に移行する。【０２３０】
一方、ブロック終了していない場合（ステップＳ３２１４：Ｎｏ）、またはステップＳ３２１５のあと、ファイル終了か否か、すなわち、現在オープンしている帳票ファイルｆｉの集計が終了したか否かを判断する（ステップＳ３２１６）。現在オープンしている帳票ファイルｆｉの集計が終了していない場合（ステップＳ３２１６：Ｎｏ）、図３２−１に示したステップＳ３２０２に戻って次のデータを抽出し、抽出したデータの種類を特定して、集計する（ステップＳ３２０２〜Ｓ３２１０）。【０２３１】
一方、ステップＳ３２１６において、現在オープンしている帳票ファイルの集計が終了した場合（ステップＳ３２１６：Ｙｅｓ）、集計終了か否か、すなわち、現在オープンしている帳票ファイルｆｉをクローズする（ステップＳ３２１７）。このあと、すべての帳票ファイルｆ０〜ｆｎからの集計が終了したか否かを判断する（ステップＳ３２１８）。【０２３２】
すべての帳票ファイルｆ０〜ｆｎの集計が終了していない場合（ステップＳ３２１８：Ｎｏ）、つぎのファイル番号ｉ（ｉ＝ｉ＋１）の帳票ファイルｆｉをオープンし（ステップＳ３２１９）、図３２−１に示したステップＳ３２０２に戻って次のデータを抽出し、抽出したデータの種類を特定して、集計する（ステップＳ３２０２〜Ｓ３２１０）。【０２３３】
一方、ステップＳ３２１８において、すべての帳票ファイルｆ０〜ｆｎの集計が終了した場合（ステップＳ３２１８：Ｙｅｓ）、出現マップ５１０のセグメントをファイルに追加出力し（ステップＳ３２２０）、ステップＳ３２０３に移行することで一連の処理を終了する。【０２３４】
つぎに、図３０に示した圧縮／暗号化処理（ステップＳ３００２）の詳細な処理手順について説明する。図３３は、図３０に示した圧縮／暗号化処理（ステップＳ３００２）の詳細な処理手順を示すフローチャートである。図３３において、まず、数字や小数点、フィーダ（以下、「数字等」と称す）の出現頻度の補正をおこなう（ステップＳ３３０１）。そして、その他の文字データの出現頻度を補正する（ステップＳ３３０２）。【０２３５】
そして、出現頻度順に混合領域８１２の数値・文字データをソートする（ステップＳ３３０３）。つぎに、低出現頻度の数値・文字データを８ビットに分解し、該当するバイナリデータの出現頻度に加算する（ステップＳ３３０４）。そして、混合領域８１２の数値・文字データ、連字外字データ、バイナリデータを連結し、出現頻度順にソートする（ステップＳ３３０５）。【０２３６】
このあと、ソートされた数値・文字データごとに、補正された出現頻度に基づいて生起確率を演算し（ステップＳ３３０６）、この生起確率に基づいて、８，１６ビットの数値・文字データに共通のハフマン木を生成する（ステップＳ３３０７）。【０２３７】
そして、各帳票ファイルの圧縮処理を実行する（ステップＳ３３０８）。この圧縮処理の具体的な手順は図３３において後述する。そして、数値・文字出現頻度管理データ５００を暗号化する（ステップＳ３３０９）。具体的には、数値・文字出現頻度管理データ５００の暗号化領域（数値・文字データおよび出現頻度の領域）を、マスタキーを用いて排他的論理和（ＸＯＲ）により暗号化する。【０２３８】
そして、連字／外字置換テーブル６４０を暗号化する（ステップＳ３３１０）。具体的には、連字／外字置換テーブル６４０の暗号化領域を、マスタキーを用いて排他的論理和（ＸＯＲ）により暗号化する。そして、検索初期化処理（ステップＳ３００３）に移行し、一連の処理を終了する。【０２３９】
つぎに、図３３のステップＳ３３０８に示した圧縮処理の詳細な処理手順について説明する。図３４は、図３３のステップＳ３３０８に示した圧縮処理の詳細な処理手順を示すフローチャートである。まず、ファイル番号ｉをｉ＝０とし（ステップＳ３４０１）、帳票ファイルｆｉを、たとえば４０００文字ごとにブロック化する（ステップＳ３４０２）。つぎに、帳票ファイルｆｉ内のデータを順次読み込み、読み込んだデータがフィーダであるか否かを判断する（ステップＳ３４０３）。【０２４０】
フィーダであると判断された場合（ステップＳ３４０３：Ｙｅｓ）、フィーダに続く連続する数字を数値として読み込んで（ステップＳ３４０４）、全角・半角、数値の桁数を検出する（ステップＳ３４０５）。そして、ハフマン木による数値圧縮を実行し（ステップＳ３４０６）、ステップＳ３４０８に移行する。【０２４１】
一方、フィーダでないと判断された場合（ステップＳ３４０３：Ｎｏ）、当該データはその他の文字データであるため、ハフマン木を用いて文字データ圧縮を実行し（ステップＳ３４０７）、ステップＳ３４０８に移行する。【０２４２】
そして、ステップＳ３４０８において、当該ブロックにおける圧縮が終了したか否かを判断する（ステップＳ３４０８）。圧縮が終了していない場合（ステップＳ３４０８：Ｎｏ）、ステップＳ３４０３に戻って、つぎのデータを読み込む。一方、圧縮終了である場合（ステップＳ３４０８：Ｙｅｓ）、未処理ブロックがあるか否かを判断する（ステップＳ３４０９）。【０２４３】
未処理ブロックがある場合（ステップＳ３４０９：Ｙｅｓ）、当該未処理ブロックを読み込んで（ステップＳ３４１０）、ステップＳ３４０３に戻って、データの読み込みをおこなう。一方、未処理ブロックがない場合（ステップＳ３４０９：Ｎｏ）、ファイル番号ｉをインクリメントし（ステップＳ３４１１）、ｉ＞ｎか否かを判断する（ステップＳ３４１２）。【０２４４】
ｉ＞ｎでない場合（ステップＳ３４１２：Ｎｏ）、ステップＳ３４０２に戻って、つぎの帳票ファイルｆｉをブロック化する。一方、ｉ＞ｎである場合（ステップＳ３４１２：Ｙｅｓ）、図３３に示したステップＳ３３０９に移行する。これにより、圧縮処理における一連の処理を終了する。【０２４５】
つぎに、図３０に示した検索初期化処理（ステップＳ３００３）の詳細な処理手順について説明する。図３５は、図３０に示した検索初期化処理（ステップＳ３００３）の詳細な処理手順を示すフローチャートである。【０２４６】
図３５において、まず、検索初期化処理の起動を待ち受け（ステップＳ３５０１：Ｎｏ）、起動した場合（ステップＳ３５０１：Ｙｅｓ）、圧縮／暗号化処理において暗号化された暗号化数値・文字出現頻度管理データ６５０を復号化する（ステップＳ３５０２）。具体的には、暗号化数値・文字出現頻度管理データ６５０の暗号化領域（数値・文字データおよび出現頻度の領域）を、暗号化したときのマスタキーを用いて排他的論理和（ＸＯＲ）により復号する。【０２４７】
つぎに、暗号化連字／外字置換テーブル６６０を復号化する（ステップＳ３５０３）。具体的には、暗号化連字／外字置換テーブル６６０の暗号化領域を、暗号化したときのマスタキーを用いて排他的論理和（ＸＯＲ）により復号する。【０２４８】
つぎに、圧縮／暗号化処理で示したステップＳ３４０１〜Ｓ３４０５までの処理と同様の処理を実行する。すなわち、高出現頻度順に数値・文字データをソートし（ステップＳ３５０４）、低出現頻度の数値・文字データを８ビットに分解し、該当するバイナリデータの出現頻度に加算する（ステップＳ３５０５）。【０２４９】
そして、数値・文字データ、連字データ、バイナリデータを連結し、高出現頻度順にソートする（ステップＳ３５０６）。このあと、数値・文字データごとに、出現頻度に基づいて生起確率を演算し（ステップＳ３５０７）、この生起確率に基づいて、８，１６ビットの数値・文字データに共通のハフマン木を生成する（ステップＳ３５０８）。【０２５０】
このあと、出現マップ５１０の設定処理を実行する（ステップＳ３５０９）。具体的には、第１の区点対応テーブルおよび第２の区点対応テーブルの領域確保、各文字データの出現順位の第１の区点対応テーブルへのセット、各数値データの出現順位の第２の区点対応テーブルへのセット、復号された数値・文字出現頻度管理データ５００の出現マップのメモリ展開、当該出現マップと第１の区点対応テーブルおよび第２の区点対応テーブルとのリンクを実行する。このあと、検索処理（ステップＳ３００４）に移行して、一連の処理を終了する。【０２５１】
つぎに、図３０に示した検索処理（ステップＳ３００４）の詳細な処理手順について説明する。図３６は、図３０に示した検索処理（ステップＳ３００４）の詳細な処理手順を示すフローチャートである。検索初期化処理（ステップＳ３００３）のあと、図３６において、まず、検索モード画面の呼び出しをおこない（ステップＳ３６０１）、数値検索モードまたは文字検索モードの選択を待ち受ける（ステップＳ３６０２）。【０２５２】
数値検索モードが選択された場合（ステップＳ３６０２：Ｙｅｓ）、図４０に示すステップＳ４００１に移行する。一方、文字検索モードが選択された場合（ステップＳ３６０２：Ｎｏ）、検索キーワードの入力を受け付ける（ステップＳ３６０３）。【０２５３】
検索キーワードが複数でない場合（ステップＳ３６０４：Ｎｏ）、ステップＳ３６０６に移行する。一方、検索キーワードが複数である場合（ステップＳ３６０４：Ｙｅｓ）、各キーワードの文字列を連結して（ステップＳ３６０５）、ステップＳ３６０６に移行する。【０２５４】
このあと、ステップＳ３６０６において、検索キーワード内に連字データがない場合（ステップＳ３６０６：Ｎｏ）、ステップＳ３６０８に移行する。一方、連字データがある場合（ステップＳ３６０６：Ｙｅｓ）、連字／外字置換テーブル６４０を用いて、その連字データを２文字の外字データに置換して（ステップＳ３６０７）、ステップＳ３６０８に移行する。【０２５５】
このあと、ステップＳ３６０８において、検索キーワードを単一文字データに分解して、出現マップから各文字データの各帳票ファイルにおける存否ビット列を読み取る（ステップＳ３６０８）。そして、各文字データの存否ビット列の論理積により、圧縮化帳票ファイルを特定（絞込み）する（ステップＳ３６０９）。また、検索キーワードを検索初期化処理（ステップＳ３００３）において生成されたハフマン木で圧縮する（ステップＳ３６１０）。【０２５６】
つぎに、照合予測テーブル生成処理（ステップＳ３６１１）を実行する。この照合予測テーブル生成処理の詳細な処理手順については図３７において後述する。照合予測テーブルを生成後、ファイルカウンタを初期化する（ステップＳ３６１２）。【０２５７】
このあと、ステップＳ３６０９で特定された圧縮化帳票ファイル（以下、「特定圧縮化帳票ファイル」と称す。）をオープンし（ステップＳ３６１３）、オープンされた特定圧縮化帳票ファイルの圧縮ブロックデータごとに、圧縮キーワードとの不一致判定処理をおこなう（ステップＳ３６１４）。この不一致判定処理については図３８において後述する。【０２５８】
この不一致判定処理において、すべての圧縮ブロックデータについて不一致であると判定された場合（ステップＳ３６１５：Ｙｅｓ）、ステップＳ３６１８に移行する。一方、１つでも一致すると判定された場合（ステップＳ３６１５：Ｎｏ）、当該一致すると判定された圧縮ブロックデータを、ハフマン木を用いて伸長する（ステップＳ３６１６）。そして、伸長されたブロックデータと検索キーワードとを比較し、検索キーワードに一致した項目データのファイル番号およびアンカーを記録して（ステップＳ３６１７）、ステップＳ３６１８に移行する。【０２５９】
このあと、オープンしている特定圧縮化帳票ファイルをクローズし（ステップＳ３６１８）、ファイルカウンタを更新する（ステップＳ３６１９）。ファイルカウンタの更新により、未処理の特定圧縮化帳票ファイルがあると判断された場合（ステップＳ３６２０：Ｙｅｓ）、ステップＳ３６１３に移行して、つぎの特定圧縮化帳票ファイルをオープンする。【０２６０】
一方、未処理の特定圧縮化帳票ファイルがないと判断された場合（ステップＳ３６２０：Ｎｏ）、検索候補一覧を表示し（ステップＳ３６２１）、ユーザからの選択入力を待ち受ける（ステップＳ３６２２）ことにより、検索結果表示処理（ステップＳ３００５）に移行して、一連の処理を終了する。【０２６１】
このように、コンテンツが複数の帳票ファイルから構成されていても、単一の圧縮情報（数値・文字出現頻度管理データ５００）により共通化することができる。【０２６２】
また、サイズが大きい帳票ファイルでは文字データ数に応じてブロック化をおこない、８ビットコード、１６ビットコードまたは３２ビットコードの文字データが混在する検索対象ファイルについてのハフマン圧縮技術を確立することができる。【０２６３】
また、サイズ（容量）ではなく、文字データ数に応じたブロック化をおこない、帳票ファイル内の各文字データの出現頻度の集計時に、文字データの種類（８ビットコード、１６ビットコードまたは３２ビットコード）を判定し、出現頻度を集計することができる。【０２６４】
また、英和辞典での英字データなど出現頻度の高い８ビットコードの文字データに対しては、０ｘ’ＦＦ＊＊’など１６ビットコードの文字データに置換し、ハフマン圧縮をおこなう。これにより、低出現率の８ビットコードの文字データと区別して、効率的な圧縮をおこなうことができる。【０２６５】
また、ポインタなどの非文字データはランダムな値であるため、８ビットコードに置換する。また、ハフマン木のサイズ縮小のため、出現頻度の低い１６ビットコードの文字データを分割し、８ビットコードの文字データに置換する。これにより、効率的な圧縮をおこなうことができる。【０２６６】
また、圧縮のためのハフマン木の生成元である数値・文字出現頻度管理データ５００またはその一部を暗号化する。すなわち、コンテンツや、コンテンツ圧縮のためのハフマン木を直接暗号化せず、ハフマン木の生成元を暗号化しているため、セキュリティの向上を図ることができる。【０２６７】
また、数値・文字出現頻度管理データ５００をもとに、全文検索の高速化を図ることができる。また、連続する表音文字データの出現頻度の高い２文字の連字データを外字データに置換した後、コンテンツ圧縮をおこなっているため、圧縮率の向上を図ることができる。【０２６８】
また、連字データにより、オープン／クローズするファイル数を削減することができ、文字列の比較領域の縮小により全文検索の高速化を図ることができる。さらに、全文検索は伸長後に外字データのままで文字列比較を行うことで、さらに検索速度の向上を図ることができる。【０２６９】
（照合予測テーブル生成処理手順）
つぎに、上述した照合予測テーブル生成処理（ステップＳ３６１１）について詳細に説明する。図３７は、照合予測テーブル生成処理手順を示すフローチャートである。図３７において、まず、圧縮キーワード２３０２の総シフト数を演算する（ステップＳ３７０１）。具体的には、圧縮キーワード長とレジスタＲａのビット長とから圧縮キーワード２３０２が保持されていないビット長（図２５の「＊」）を総シフト数として算出する。【０２７０】
つぎに、図２４に示したシフト操作の図表を参照して、照合間隔（バイト数）を演算する（ステップＳ３７０２）。そして、圧縮キーワード２３０２を、上記総シフト分１ビットずつシフトして、シフトテーブル２５００を作成する（ステップＳ３７０３）。このシフトテーブル２５００の各ビット列と圧縮キーワード２３０２とをＸＯＲ演算してＸＯＲテーブル２５０１を作成する（ステップＳ３７０４）。【０２７１】
そして、作成されたＸＯＲテーブル２５０１とＸＯＲテーブル２５０１を構成する各ビット列のシフト数からなる部分判定テーブル２５０２を作成する（ステップＳ３７０５）。そして、部分判定テーブル２５０２を用いて、照合予測テーブル２５０３を作成し（ステップＳ３７０６）、ステップＳ３６１２へ移行する。【０２７２】
（圧縮ブロックデータと圧縮キーワードとの不一致判定処理手順）
つぎに、上述した圧縮ブロックデータと圧縮キーワードとの不一致判定処理（ステップＳ３６１４）について説明する。図３８は、圧縮ブロックデータと圧縮キーワードとの不一致判定処理手順を示すフローチャートである。図３８において、まず、圧縮キーワード２３０２をレジスタＲａにセットする（ステップＳ３８０１）。【０２７３】
つぎに、圧縮ブロックデータ２３１２をシフトさせる照合間隔（バイト数）をセットし（ステップＳ３８０２）、特定圧縮化帳票ファイル２３１１のポインタを初期化する（ステップＳ３８０３）。このあと、現在のポインタにしたがって、圧縮ブロックデータ２３１２をレジスタＲｂにセットする（ステップＳ３８０４）。そして、レジスタＲａとレジスタＲｂとをＸＯＲ演算して（ステップＳ３８０５）、下位８ビットのビット列２３３０を抽出する（ステップＳ３８０６）。【０２７４】
つぎに、抽出された下位８ビットのビット列２３３０と照合予測テーブル２５０３とを照合して、照合予測テーブル２５０３内のビット列のうち、下位８ビットのビット列２３３０と一致するビット列のシフト数を検出し、検出されたシフト数が「−１」であるか否か、すなわち不一致であるか否かを判断する（ステップＳ３８０７）。【０２７５】
そして、シフト数が「−１」である場合（ステップＳ３８０７：Ｙｅｓ）、特定圧縮化帳票ファイル２３１１のポインタを照合間隔分加算する（ステップＳ３８０８）。そして、圧縮ブロックデータ２３１２がないか否かを判断する（ステップＳ３８０９）。圧縮ブロックデータ２３１２がある場合（ステップＳ３８０９：Ｎｏ）、ステップＳ３８０４に戻る。一方、圧縮ブロックデータ２３１２がない場合（ステップＳ３８０９：Ｙｅｓ）、ステップＳ３６１５に移行する。このステップＳ３８０４〜ステップＳ３８０９：Ｎｏのループにより、不一致であることを高速で照合することができ、検索速度の高速化を実現することができる。【０２７６】
また、ステップＳ３８０７において、シフト数が「−１」でない場合（ステップＳ３８０７：Ｎｏ）、シフト数が０〜６３である場合（ステップＳ３８１０：０〜６３）、すなわち、部分一致となる場合、当該シフト数を取得して（ステップＳ３８１１）、全ビット不一致照合処理を実行する（ステップＳ３８１２）。全ビット不一致照合処理（ステップＳ３８１２）については後述する。このあと、ステップＳ３８０８に移行する。【０２７７】
また、ステップＳ３８１０において、シフト数が６４である場合（ステップＳ３８１０：６４）、すなわち、重複部分一致となる場合、部分判定テーブル２５０２のポインタを初期化し（ステップＳ３８１３）、現在のポインタに対応する部分判定テーブル２５０２のＸＯＲ結果を取得する（ステップＳ３８１４）。そして、対応するビット列と、現在のポインタに対応する部分判定テーブル２５０２のＸＯＲ結果とが一致するか否かを判断する（ステップＳ３８１５）。不一致の場合（ステップＳ３８１５：Ｎｏ）、ステップＳ３８１８に移行する。【０２７８】
一方、一致する場合（ステップＳ３８１５：Ｙｅｓ）、そのＸＯＲ結果に対応するシフト数を部分判定テーブル２５０２から取得して（ステップＳ３８１６）、全ビット不一致照合処理を実行する（ステップＳ３８１７）。この全ビット不一致照合処理（ステップＳ３８１７）は、全ビット不一致照合処理（ステップＳ３８１２）と同一であるため後述する。【０２７９】
そして、全ビット不一致照合処理（ステップＳ３８１７）のあと、部分判定テーブル２５０２のポインタを加算する（ステップＳ３８１８）。部分判定テーブル２５０２の現在のポインタが最終ポインタでない場合（ステップＳ３８１９：Ｎｏ）、ステップＳ３８１４に戻る。一方、部分判定テーブル２５０２の現在のポインタが最終ポインタである場合（ステップＳ３８１９：Ｙｅｓ）、ステップＳ３８０８に移行する。【０２８０】
（全ビット不一致照合処理手順）
つぎに、上述した全ビット不一致照合処理（ステップＳ３８１２およびステップＳ３８１７）について詳細に説明する。図３９は、全ビット不一致照合処理（ステップＳ３８１２およびステップＳ３８１７）を示すフローチャートである。図３９において、シフト数を８で除算することにより、その除数および余りを取得する（ステップＳ３９０１）。【０２８１】
つぎに、特定圧縮化帳票ファイル２３１１の現在のポインタに除数を加算し（ステップＳ３９０２）、圧縮ブロックデータ２３１２をレジスタＲｂにセットする（ステップＳ３９０３）。そして、セットされた圧縮ブロックデータ２３１２を余りの値分シフトする（ステップＳ３９０４）。【０２８２】
つぎに、圧縮キーワード２３０２をレジスタＲａにセットし（ステップＳ３９０５）、両レジスタＲａ、Ｒｂにおいて照合対象外となるビットのマスクをＯＦＦにする（ステップＳ３９０６）。そして、全ビットが一致する場合（ステップＳ３９０７：Ｙｅｓ）、一致したアドレスを記録し（ステップＳ３９０８）、ステップＳ３８０８（またはＳ３８１７）に移行する。一方、全ビットが一致しない場合（ステップＳ３９０７：Ｎｏ）、ステップＳ３８０８（またはステップＳ３８１７）に移行する。【０２８３】
これにより、特定圧縮化帳票ファイル２３１１に対して、コンピュータのＣＰＵ１０１が得意であるバイト毎の操作をもとにした不一致照合の方式を実現することができる。すなわち、ビット毎の照合予測を目的に、入力された検索キーワード２３０１を圧縮した圧縮キーワード２３０２とその圧縮キーワード２３０２を１ビット毎シフトしたデータの集合であるシフトテーブル２５００とのＸＯＲ演算をおこない、その演算結果をもとに不一致照合をおこなう。そして、圧縮キーワード長に応じて、特定圧縮化帳票ファイル２３１１との照合間隔を長くすることにより不一致照合の高速化を図ることができる。【０２８４】
（数値検索モードにおける数値検索実行処理手順）
つぎに、この発明の実施の形態にかかる数値検索モードにおける数値検索実行処理手順について説明する。図４０は、この発明の実施の形態にかかる数値検索モードにおける数値検索実行処理手順を示すフローチャートである。【０２８５】
図３６におけるステップＳ３６０２：Ｙｅｓのあと、取得部２７０１により数値範囲を取得する（ステップＳ４００１）。つぎに、検出部２７０３により、数値範囲の境界を規定する数値（下限数値、上限数値）の桁数および先頭数字を検出する（ステップＳ４００２）。そして、数値圧縮部２７０２により、下限数値および上限数値を圧縮する（ステップＳ４００３）。【０２８６】
このあと、出現マップ抽出部２７０５により、出現マップ５１０から下限数値群〜上限数値群の出現マップを抽出する（ステップＳ４００４）。そして、中間数値群判断部２７０４により、中間数値群があるか否かを判断する（ステップＳ４００５）。中間数値群があると判断された場合（ステップＳ４００５：Ｙｅｓ）、省略マップ設定部２７０６により、中間数値群の出現マップの論理和をとることにより、中間結果マップを生成し（ステップＳ４００６）、中間結果マップ内の全ビットを反転させて省略マップに変換する（ステップＳ４００７）。【０２８７】
一方、中間数値群がないと判断された場合（ステップＳ４００５：Ｎｏ）、省略マップを初期化する（ステップＳ４００８）。すなわち、帳票ファイルｆ０〜ｆｎに対応するビット列をすべてＯＦＦにすることで、全ビット「０」の省略マップを得る。そして、ステップＳ４００９に移行する。【０２８８】
このあと、下限特定／比較処理（ステップＳ４００９）および上限特定／比較処理（ステップＳ４０１０）を実行する。下限特定／比較処理（ステップＳ４００９）および上限特定／比較処理（ステップＳ４０１０）の詳細な処理手順については後述する。【０２８９】
そして、決定部２７１１により、数値範囲内の数値が存在する圧縮化帳票ファイルＦｉを決定する（ステップＳ４０１１）。このあと、ファイル構成データ特定部２１０９により、数値範囲内の数値が存在する圧縮化帳票ファイルＦｉのページリストを特定し（ステップＳ４０１２）、図３６に示したステップＳ３６２１に移行する。これにより、数値検索実行処理の一連の手順を終了する。【０２９０】
（下限特定／比較処理手順）
つぎに、図４０に示した下限特定／比較処理の詳細な処理手順について説明する。図４１は、図４０に示した下限特定／比較処理手順を示すフローチャートである。図４１においては、図２８−１〜図２８−４に示した大小比較例を参照しながら説明する。【０２９１】
まず、図２８−２で示したように、下限数値群マップ（４桁先頭数字３マップＭ４３）と省略マップＭ０２との論理積演算をおこなうことにより、下限マップＭ０３を得る（ステップＳ４１０１）。つぎに、ファイル番号ｉをｉ＝０とし、下限比較結果マップＭ０４を初期化（全ビットＯＦＦ）する（ステップＳ４１０２）。【０２９２】
そして、下限マップＭ０３中、ｉ番目のビットがＯＮであるか否かを判断する（ステップＳ４１０３）。ビットがＯＦＦである場合（ステップＳ４１０３：Ｎｏ）、ステップＳ４１１０に移行する。【０２９３】
一方、ビットがＯＮである場合（ステップＳ４１０３：Ｙｅｓ）、圧縮化帳票ファイルＦの中から圧縮化帳票ファイルＦｉを抽出する（ステップＳ４１０４）。このあと、圧縮化帳票ファイルＦｉの中に、ファイル内数値の圧縮情報（図２８−２では圧縮情報２８０１）があるか否かを判断する（ステップＳ４１０５）。【０２９４】
圧縮情報がある場合（ステップＳ４１０５：Ｙｅｓ）、下限数値照合処理を実行する（ステップＳ４１０６）。この下限数値照合処理については図４２で後述する。そして、下限数値照合処理による照合結果により、下限数値の境界条件を充足しているか否かを判断する（ステップＳ４１０７）。【０２９５】
充足していない場合（ステップＳ４１０７：Ｎｏ）、ステップＳ４１０５に戻る。一方、境界条件を充足している場合（ステップＳ４１０７：Ｙｅｓ）、下限比較結果マップＭ０４中、ｉ番目のビットがＯＦＦのままか否かを判断する（ステップＳ４１０８）。すでにＯＮになっている場合（ステップＳ４１０８：Ｎｏ）、ステップＳ４１０５に移行する。【０２９６】
一方、ビットがＯＦＦである場合（ステップＳ４１０８：Ｙｅｓ）、そのｉ番目のビットをＯＦＦからＯＮにして（ステップＳ４１０９）、ステップＳ４１０５に戻る。また、ステップＳ４１０５において、未照合のファイル内数値の圧縮情報がない場合（ステップＳ４１０５：Ｎｏ）、ステップＳ４１１０に移行する。ステップＳ４１１０では、ファイル番号ｉを１つインクリメントする。そして、ｉ＞ｎであるか否かを判断する（ステップＳ４１１１）。【０２９７】
ｉ＞ｎでない場合（ステップＳ４１１１：Ｎｏ）、ステップＳ４１０３に戻る。一方、ｉ＞ｎである場合（ステップＳ４１１１：Ｙｅｓ）、図４０で示したステップＳ４０１１に移行する。これにより、下限特定／比較処理の一連の手順を終了する。【０２９８】
（下限数値照合処理手順）
つぎに、図４１に示した下限数値照合処理の詳細な処理手順について説明する。図４２は、下限数値照合処理手順を示すフローチャートである。図４２において、下限数値の圧縮情報内の全角・半角ビットおよびカンマ有無ビットと、ファイル内数値の圧縮情報内の全角・半角ビットおよびカンマ有無ビットとをＯＦＦにする（ステップＳ４２０１）。【０２９９】
そして、圧縮情報どうしを比較してフィーダが一致するか否かを判断する（ステップＳ４２０１）。不一致である場合（ステップＳ４２０２：Ｎｏ）、ステップＳ４１０７に移行する。一方、フィーダが一致した場合（ステップＳ４２０２：Ｙｅｓ）、桁数が一致するか否かを判断する（ステップＳ４２０３）。【０３００】
桁数が不一致である場合（ステップＳ４２０３：Ｎｏ）、ステップＳ４１０７に移行する。一方、桁数も一致する場合（ステップＳ４２０３：Ｙｅｓ）、桁数カウンタＮをＮ＝Ｎmaxに設定する（ステップＳ４２０４）。Ｎmaxは下限数値およびファイル内数値の桁数である。【０３０１】
そして、ファイル内数値のＮ桁目の数字が下限数値のＮ桁目の数字以上であるか否かを判断する（ステップＳ４２０５）。ここで、判断基準として下限数値のＮ桁目の数字以上としたのは、数値範囲における下限数値の境界条件が「≦」であるからであり、当該境界条件が「＜」である場合、ファイル内数値のＮ桁目の数字が下限数値のＮ桁目の数字よりも大きいか否かを判断することとなる。【０３０２】
そして、下限数値のＮ桁目の数字以上でない場合（ステップＳ４２０５：Ｎｏ）、ステップＳ４１０７に移行する。一方、下限数値のＮ桁目の数字以上である場合（ステップＳ４２０５：Ｙｅｓ）、桁数カウンタＮを１つデクリメントし（ステップＳ４２０６）、桁数カウンタＮがＮ＜０であるか否かを判断する（ステップＳ４２０７）。Ｎ＜０でない場合（ステップＳ４２０７：Ｎｏ）、下限数値の圧縮情報とファイル内数値の圧縮情報のうちいずれか一方にだけ、Ｎ−１桁目の数字の圧縮符号とＮ桁目の数字の圧縮符号との間に小数点の圧縮符号があるか否かを判断する（ステップＳ４２０８）。【０３０３】
いずれか一方にだけＮ−１桁目の数字の圧縮符号とＮ桁目の数字の圧縮符号との間に小数点の圧縮符号がない場合（ステップＳ４２０８：Ｎｏ）、すなわち、ともに小数点の圧縮符号があるか、いずれにも小数点の圧縮符号がない場合、ステップＳ４２０５に戻る。【０３０４】
一方、いずれか一方にだけＮ−１桁目の数字の圧縮符号とＮ桁目の数字の圧縮符号との間に小数点の圧縮符号がある場合（ステップＳ４２０８：Ｙｅｓ）、ステップＳ４１０７に移行する。【０３０５】
また、ステップＳ４２０７において、Ｎ＜０である場合（ステップＳ４２０７：Ｙｅｓ）、ステップＳ４１０７に移行する。これにより、下限数値照合処理の一連の手順を終了する。【０３０６】
そして、図４１に示したステップＳ４１０７では、ステップＳ４２０７でＮ＜０である場合（ステップＳ４２０７：Ｙｅｓ）、下限数値の境界条件を充足していると判断し、一方、ステップＳ４２０２、ステップＳ４２０３、ステップＳ４２０５またはステップＳ４２０８でＮｏと判断された場合、下限数値の境界条件を充足していないと判断する。【０３０７】
（上限特定／比較処理手順）
つぎに、図４０に示した上限特定／比較処理の詳細な処理手順について説明する。図４３は、図４０に示した上限特定／比較処理手順を示すフローチャートである。図４３においては、図２８−１〜図２８−４に示した大小比較例を参照しながら説明する。【０３０８】
まず、図２８−２で示したように、上限数値群マップ（４桁先頭数字６マップＭ４６）と省略マップＭ０２との論理積演算をおこなうことにより、上限マップＭ０５を得る（ステップＳ４３０１）。つぎに、ファイル番号ｉをｉ＝０とし、上限比較結果マップＭ０６を初期化（全ビットＯＦＦ）する（ステップＳ４３０２）。【０３０９】
そして、上限マップＭ０５中、ｉ番目のビットがＯＮであるか否かを判断する（ステップＳ４３０３）。ビットがＯＦＦである場合（ステップＳ４３０３：Ｎｏ）、ステップＳ４３１０に移行する。【０３１０】
一方、ビットがＯＮである場合（ステップＳ４３０３：Ｙｅｓ）、圧縮化帳票ファイルＦの中から圧縮化帳票ファイルＦｉを抽出する（ステップＳ４３０４）。このあと、圧縮化帳票ファイルＦｉの中に、ファイル内数値の圧縮情報（図２８−３では圧縮情報２８０３）があるか否かを判断する（ステップＳ４３０５）。【０３１１】
圧縮情報がある場合（ステップＳ４３０５：Ｙｅｓ）、上限数値照合処理を実行する（ステップＳ４３０６）。この上限数値照合処理については図４４で後述する。そして、上限数値照合処理による照合結果により、上限数値の境界条件を充足しているか否かを判断する（ステップＳ４３０７）。【０３１２】
充足していない場合（ステップＳ４３０７：Ｎｏ）、ステップＳ４３０５に戻る。一方、境界条件を充足している場合（ステップＳ４３０７：Ｙｅｓ）、上限比較結果マップＭ０６中、ｉ番目のビットがＯＦＦのままか否かを判断する（ステップＳ４３０８）。すでにＯＮになっている場合（ステップＳ４３０８：Ｎｏ）、ステップＳ４３０５に移行する。【０３１３】
一方、ビットがＯＦＦである場合（ステップＳ４３０８：Ｙｅｓ）、そのｉ番目のビットをＯＦＦからＯＮにして（ステップＳ４３０９）、ステップＳ４３０５に戻る。また、ステップＳ４３０５において、未照合のファイル内数値の圧縮情報がない場合（ステップＳ４３０５：Ｎｏ）、ステップＳ４３１０に移行する。ステップＳ４３１０では、ファイル番号ｉを１つインクリメントする（ステップＳ４３１０）。そして、ｉ＞ｎであるか否かを判断する（ステップＳ４３１１）。【０３１４】
ｉ＞ｎでない場合（ステップＳ４３１１：Ｎｏ）、ステップＳ４３０３に戻る。一方、ｉ＞ｎである場合（ステップＳ４３１１：Ｙｅｓ）、図４０で示したステップＳ４０１１に移行する。これにより、上限特定／比較処理の一連の手順を終了する。【０３１５】
（上限数値照合処理手順）
つぎに、図４３に示した上限数値照合処理の詳細な処理手順について説明する。図４４は、上限数値照合処理手順を示すフローチャートである。図４４において、上限数値の圧縮情報内の全角・半角ビットおよびカンマ有無ビットと、ファイル内数値の圧縮情報内の全角・半角ビットおよびカンマ有無ビットとをＯＦＦにする（ステップＳ４４０１）。【０３１６】
そして、圧縮情報どうしを比較してフィーダが一致するか否かを判断する（ステップＳ４４０２）。不一致である場合（ステップＳ４４０２：Ｎｏ）、ステップＳ４３０７に移行する。一方、フィーダが一致した場合（ステップＳ４４０２：Ｙｅｓ）、桁数が一致するか否かを判断する（ステップＳ４４０３）。【０３１７】
桁数が不一致である場合（ステップＳ４４０３：Ｎｏ）、ステップＳ４３０７に移行する。一方、桁数も一致する場合（ステップＳ４４０３：Ｙｅｓ）、桁数カウンタＮをＮ＝Ｎmaxに設定する（ステップＳ４４０４）。Ｎmaxは上限数値およびファイル内数値の桁数である。【０３１８】
そして、ファイル内数値のＮ桁目の数字が上限数値のＮ桁目の数字以下であるか否かを判断する（ステップＳ４４０５）。ここで、判断基準として「上限数値のＮ桁目の数字以下」としたのは、数値範囲における上限数値の境界条件が「≧」であるからであり、当該境界条件が「＞」である場合、ファイル内数値のＮ桁目の数字が上限数値のＮ桁目の数字よりも小さいか否かを判断することとなる。【０３１９】
そして、上限数値のＮ桁目の数字以下でない場合（ステップＳ４４０５：Ｎｏ）、ステップＳ４３０７に移行する。一方、上限数値のＮ桁目の数字以下である場合（ステップＳ４４０５：Ｙｅｓ）、桁数カウンタＮを１つデクリメントし（ステップＳ４４０６）、桁数カウンタＮがＮ＜０であるか否かを判断する（ステップＳ４４０７）。Ｎ＜０でない場合（ステップＳ４４０７：Ｎｏ）、上限数値の圧縮情報とファイル内数値の圧縮情報のうちいずれか一方にだけ、Ｎ−１桁目の数字の圧縮符号とＮ桁目の数字の圧縮符号との間に小数点の圧縮符号があるか否かを判断する（ステップＳ４４０８）。【０３２０】
いずれか一方にだけＮ−１桁目の数字の圧縮符号とＮ桁目の数字の圧縮符号との間に小数点の圧縮符号がない場合（ステップＳ４４０８：Ｎｏ）、すなわち、ともに小数点の圧縮符号があるか、いずれにも小数点の圧縮符号がない場合、ステップＳ４４０５に戻る。【０３２１】
一方、いずれか一方にだけＮ−１桁目の数字の圧縮符号とＮ桁目の数字の圧縮符号との間に小数点の圧縮符号がある場合（ステップＳ４４０８：Ｙｅｓ）、ステップＳ４３０７に移行する。【０３２２】
また、ステップＳ４４０７において、Ｎ＜０である場合（ステップＳ４４０７：Ｙｅｓ）、ステップＳ４３０７に移行する。これにより、上限数値照合処理の一連の手順を終了する。【０３２３】
そして、図４３に示したステップＳ４３０７では、ステップＳ４４０７でＮ＜０である場合（ステップＳ４４０７：Ｙｅｓ）、上限数値の境界条件を充足していると判断し、一方、ステップＳ４４０２、ステップＳ４４０３、ステップＳ４４０５またはステップＳ４４０８でＮｏと判断された場合、上限数値の境界条件を充足していないと判断する。【０３２４】
以上のことから、この発明の実施の形態によれば、中間数値群を検出して省略マップＭ０２に反映させているため、中間数値群の出現マップにより特定される圧縮化帳票ファイルに対して数値範囲内の数値の一致照合をするまでもなく、数値範囲内の数値の有無を検出することができる。【０３２５】
また、下限数値群や上限数値群についてのみ数値の一致照合をおこなうが、ファイル内数値はフィーダに関連付けられているため、圧縮化帳票ファイルＦｉの中から数値情報のみを高速に検索することができる。また、数値の圧縮情報どうしで一致照合しているため、フィーダや桁数の圧縮符号どうしの一致照合のみで大小比較をおこなうことができ、高精度な検索を高速でおこなうことができる。【０３２６】
また、数値・文字出現頻度管理データ５００において、数字等の出現頻度を補正することにより、数値の一致照合や伸長の高速化を図ることができる。特に、検索対象ファイルに数値データと文字データが混在する場合に、数値の一致照合や伸長の高速化を図ることができる。【０３２７】
このように、この発明の実施の形態によれば、数値範囲内の数値が存在するファイルを圧縮したまま特定することにより、数値範囲検索の高速化および高精度化を図ることができるという効果を奏する。
【産業上の利用可能性】
【０３２８】
以上のように、本発明にかかる情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置は、数値範囲の検索に有用であり、特に、帳票ファイルのような数値が多数含まれているコンテンツに適している。
【図１】
2008047432.tif 000003
【図２】
2008047432.tif 000004
【図３】
2008047432.tif 000005
【図４】
2008047432.tif 000006
【図５】
2008047432.tif 000007
【図６】
2008047432.tif 000008
【図７】
2008047432.tif 000009
【図８】
2008047432.tif 000010
【図９】
2008047432.tif 000011
【図１０】
2008047432.tif 000012
【図１１】
2008047432.tif 000013
【図１２】
2008047432.tif 000014
【図１３】
2008047432.tif 000015
【図１４】
2008047432.tif 000016
【図１５】
2008047432.tif 000017
【図１６−１】
2008047432.tif 000018
【図１６−２】
2008047432.tif 000019
【図１６−３】
2008047432.tif 000020
【図１６−４】
2008047432.tif 000021
【図１７−１】
2008047432.tif 000022
【図１７−２】
2008047432.tif 000023
【図１８】
2008047432.tif 000024
【図１９】
2008047432.tif 000025
【図２０】
2008047432.tif 000026
【図２１】
2008047432.tif 000027
【図２２】
2008047432.tif 000028
【図２３】
2008047432.tif 000029
【図２４】
2008047432.tif 000030
【図２５】
2008047432.tif 000031
【図２６】
2008047432.tif 000032
【図２７】
2008047432.tif 000033
【図２８−１】
2008047432.tif 000034
【図２８−２】
2008047432.tif 000035
【図２８−３】
2008047432.tif 000036
【図２８−４】
2008047432.tif 000037
【図２９】
2008047432.tif 000038
【図３０】
2008047432.tif 000039
【図３１】
2008047432.tif 000040
【図３２−１】
2008047432.tif 000041
【図３２−２】
2008047432.tif 000042
【図３３】
2008047432.tif 000043
【図３４】
2008047432.tif 000044
【図３５】
2008047432.tif 000045
【図３６】
2008047432.tif 000046
【図３７】
2008047432.tif 000047
【図３８】
2008047432.tif 000048
【図３９】
2008047432.tif 000049
【図４０】
2008047432.tif 000050
【図４１】
2008047432.tif 000051
【図４２】
2008047432.tif 000052
【図４３】
2008047432.tif 000053
【図４４】
2008047432.tif 000054
【手続補正書】
【提出日】平成21年2月5日(2009.2.5)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、帳票や治験データベースなどの数値データに対する、数値の一致検索や範囲検索、および数値抽象化検索の高速化技術に関する情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置である。
【背景技術】
【０００２】
従来の全文検索では、文字列に対してはインデックスを作成し、検索の高速化が図られているが、数値は未対応である。さらに、数字文字列の一致比較は行われているが、数値としての一致比較が行われていない。たとえば、全角数字の「６８５０円」や半角数字の「￥６，８５０．−」などの異なる数値表現に対しては、同じ数値に関わらず、数字文字列の比較では「不一致」と判断される。
【０００３】
従来より、帳票システムでは、電子帳簿保存法で数値の範囲指定に適合した数値の検索機能（たとえば、下記特許文献１を参照。）の実装が義務付けられている。また、電子帳簿はデータ容量の削減とセキュリティのため、圧縮・暗号化され保管されている。
【０００４】
したがって、保管されている電子帳簿の数値検索には、各帳簿のファイルの伸長と復号化を行い、各数値データと大小比較を行っており、多大なハードウェア資源と処理時間が必要となっている。なお、関連する全文検索の方式については以下の３種に大別できるが、いずれも数値検索の高速化が図られていない。
【０００５】
・高度インデックス全文検索：インターネットの全文検索では高度なインデックスを利用することで高速化が図られているが、数値の検索にはさらに膨大なインデックスが必要となるため、高速化の対象外となっている。
【０００６】
・簡易インデックス全文検索：漢字に関する文字構成表などの簡易インデックスにより全文検索の高速化を行うものであるが、数値に関する高速化は図られていない。
【０００７】
・インデックスレス全文検索：全データに対し、高速な検索エンジンにより文字列照合を行うものであり、数値の検索の高速化は行われていない。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平３−１９０８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、上述した従来技術における数値の一致検索の場合、非圧縮・非暗号化の数値の一致検索では、インデックスによる高速化などは図られておらず、数値の一致照合に多大な時間を費やしている。また、「６８５０円」や「￥６，８５０．−」などの異なる数値表現に対して、「一致」と判定することができない。したがって、簡易インデックスを利用した一致検索の高速化、および「一致」の判定方法の改善が課題である。
【００１０】
また、従来技術における数値の一致検索の場合、圧縮・暗号化された数値の一致検索では、電子帳簿データなどは保管やセキュリティのため、圧縮・暗号化されているが、伸長と復号化の後に大小比較をおこなっており、多大な処理時間を費やしている。したがって、伸長と復号化の見直しによる速度の改善が課題である。
【００１１】
また、従来技術における数値の範囲検索の場合、非圧縮・非暗号化の数値の一致検索では、上述した「数値の一致検索の場合」と同様、簡易インデックスを利用した高速化が課題である。
【００１２】
また、従来技術における数値の範囲検索の場合、圧縮・暗号化された数値の範囲検索では、上述した「数値の一致検索の場合」と同様、伸長と復号化の見直しによる速度の改善が課題である。
【００１３】
さらに、治験データなどに関する数値の抽象化検索の場合、従来技術には無く、数値の範囲検索を工夫し、かつ、人間の判断を交え、さらに各検索を組み合わせて対応している。抽象化の技術の確立と高速化が課題である。
【００１４】
本発明は、上記に鑑みてなされたものであって、数値範囲内の数値が存在するファイルを圧縮したまま特定することにより、数値範囲検索の高速化および高精度化を図ることができる情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置を提供することを目的とする。
【課題を解決するための手段】
【００１５】
上述した課題を解決し、目的を達成するために、第１の発明の情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置は、任意の数値範囲の境界を規定する数値を取得し、取得された境界を規定する数値の桁数および先頭数字を検出し、桁数および先頭数字を満たす数値群内の数値の存否を検索対象ファイルごとにあらわしたビット列の集合の中から、検出された桁数および先頭数字を満たす数値群内の数値の存否を前記検索対象ファイルごとにあらわしたビット列を抽出し、抽出されたビット列の中の、検出された桁数および先頭数字を満たす数値群内の数値の存在を示すビットに対応する検索対象ファイルを、前記複数の検索対象ファイルの中から特定し、特定された検索対象ファイルに含まれているファイル内数値が、前記境界を規定する数値との境界条件を充足しているか否かを判断し、判断された判断結果に基づいて、特定された検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定することを特徴とする。
【００１６】
この発明によれば、数値範囲検索に先立って、桁数および先頭数字を満たす数値群内の数値が含まれている検索対象ファイルの絞込みをおこなうことができる。
【００１７】
また、上記発明において、前記境界を規定する一方の数値の桁数および先頭数字を満たす一方の数値群と、前記境界を規定する他方の数値の桁数および先頭数字を満たす他方の数値群との間に、中間の数値群が存在するか否かを判断し、前記一方の数値群内の数値が存在する検索対象ファイルのうち前記中間数値群内の数値が存在しない検索対象ファイル（以下、「一方の検索対象ファイル」という）を特定するとともに、前記他方の数値群内の数値が存在する検索対象ファイルのうち前記中間数値群内の数値が存在しない検索対象ファイル（以下、「他方の検索対象ファイル」という）を特定し、特定された一方の検索対象ファイルに含まれているファイル内数値が前記境界を規定する一方の数値との境界条件を充足しているか否か、および、特定された他方の検索対象ファイルに含まれているファイル内数値が前記境界を規定する他方の数値との境界条件を充足しているか否かを判断し、判断された判断結果に基づいて、前記一方の検索対象ファイル、前記他方の検索対象ファイル、または前記中間数値群内の数値が存在する検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定することとしてもよい。
【００１８】
この発明によれば、桁数および先頭数字を満たす数値群内の数値が含まれている検索対象ファイルの絞込みの高速化を図ることができる。
【００１９】
また、第２の発明の情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置は、任意の数値範囲の境界を規定する数値を取得し、取得された境界を規定する数値を所定の圧縮形式で圧縮し、前記境界を規定する数値に関する圧縮情報と、検索対象ファイルを前記所定の形式で圧縮した圧縮化検索対象ファイルに含まれているファイル内数値に関する圧縮情報とを照合することにより、前記ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断し、判断された判断結果に基づいて、前記圧縮化検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定することを特徴とする。
【００２０】
この発明によれば、圧縮状態のまま数値の大小を比較することができる。
【００２１】
また、上記発明において、前記境界を規定する数値を、前記境界を規定する数値の桁数を示す数字に関する圧縮符号および前記境界を規定する数値の桁数ごとの数字に関する圧縮符号を含む圧縮情報に圧縮し、圧縮された圧縮情報と、前記ファイル内数値の桁数を示す数字に関する圧縮符号および前記ファイル内数値の桁ごとの数字に関する圧縮符号とを含む前記ファイル内数値に関する圧縮情報とを照合することにより、前記ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断することとしてもよい。
【００２２】
この発明によれば、桁数や先頭桁の数字、２番目の桁の数字、・・・といった順に照合することで、数値の大小比較を段階的に圧縮した状態でおこなうことができる。
【００２３】
また、上記発明において、前記境界を規定する一方の数値の桁数および先頭数字を満たす一方の数値群と、前記境界を規定する他方の数値の桁数および先頭数字を満たす他方の数値群との間に、中間の数値群が存在するか否かを判断し、前記一方の数値群内の数値が存在する圧縮化検索対象ファイルのうち前記中間数値群内の数値が存在しない圧縮化検索対象ファイル（以下、「一方の圧縮化検索対象ファイル」という）を特定するとともに、前記他方の数値群内の数値が存在する圧縮化検索対象ファイルのうち前記中間数値群内の数値が存在しない圧縮化検索対象ファイル（以下、「他方の圧縮化検索対象ファイル」という）を特定し、前記境界を規定する一方の数値を、前記境界を規定する数値の桁数を示す数字に関する圧縮符号および前記境界を規定する数値の桁数ごとの数字に関する圧縮符号を含む一方の圧縮情報に圧縮するとともに、前記境界を規定する他方の数値を、前記境界を規定する数値の桁数を示す数字に関する圧縮符号および前記境界を規定する数値の桁数ごとの数字に関する圧縮符号を含む他方の圧縮情報に圧縮し、前記一方の圧縮情報と前記一方の圧縮化検索対象ファイルに含まれているファイル内数値に関する圧縮情報とを照合することにより、当該ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断するとともに、前記他方の圧縮情報と前記他方の圧縮化検索対象ファイルに含まれているファイル内数値に関する圧縮情報とを照合することにより、当該ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断し、判断された判断結果に基づいて、前記一方の圧縮化検索対象ファイル、前記他方の圧縮化検索対象ファイル、または前記中間数値群内の数値が存在する圧縮化検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定することとしてもよい。
【００２４】
この発明によれば、桁数や先頭桁の数字、２番目の桁の数字、・・・といった順に照合することで、数値範囲検索を段階的に圧縮した状態でおこなうことができる。
【００２５】
また、上記発明において、前記検索対象ファイル内に存在する数字の出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正し、補正された出現頻度に基づいて、前記検索対象ファイルを圧縮し、前記境界を規定する数値に関する圧縮情報と、前記ファイル圧縮工程によって圧縮された前記圧縮化検索対象ファイルに含まれているファイル内数値に関する圧縮情報とを照合することにより、前記ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断することとしてもよい。
【００２６】
この発明によれば、数値の圧縮効率を文字データよりも優先的に高くすることができる。
【００２７】
また、上記発明において、さらに、前記検索対象ファイル内に存在するカンマの出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正することとしてもよい。
【００２８】
この発明によれば、カンマを含む数値の圧縮効率を文字データよりも優先的に高くすることができる。
【００２９】
また、上記発明において、さらに、前記検索対象ファイル内に存在する小数点の出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正することとしてもよい。
【００３０】
この発明によれば、小数点を含む数値の圧縮効率を文字データよりも優先的に高くすることができる。
【００３１】
また、第３の発明の情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置は、数字と文字とが混在する検索対象ファイルの中から数値の存在を示すフィーダを検出し、検出されたフィーダに関連付けられている数値の桁数を検出し、前記検索対象ファイル内に含まれている数字の出現頻度に基づいて、前記数値を前記フィーダに関連付けて、検出された桁数を示す数字に関する圧縮符号と前記数値の桁数ごとの数字に関する圧縮符号とを含む圧縮情報に圧縮することを特徴とする。
【００３２】
この発明によれば、文字列の中に数字が混在しているファイルからも高速に数値を抽出することができる。
【００３３】
また、上記発明において、前記フィーダは、前記数値の種類を特定する情報としてもよい。
【００３４】
この発明によれば、圧縮された数値を分類することができ、同種の数値どうしについて数値の大小比較や数値範囲検索をおこなうことができる。
【００３５】
また、上記発明において、前記数値が全角または半角であることを検出し、さらに、前記数値を、検出された検出結果に関する圧縮符号を含む圧縮情報に圧縮することとしてもよい。
【００３６】
この発明によれば、数値の全角・半角の区別についても圧縮しておくことにより、全角・半角の区別を示す圧縮符号を無視することで、全角・半角の相違を除外して数値の大小比較や数値範囲検索をおこなうことができる。
【００３７】
また、上記発明において、前記数値の中からカンマを検出し、さらに、前記数値を、検出された検出結果に関する圧縮符号を含む圧縮情報に圧縮することとしてもよい。
【００３８】
この発明によれば、数値のカンマの有無についても圧縮しておくことにより、カンマの有無を示す圧縮符号を無視することで、カンマの相違を除外して数値の大小比較や数値範囲検索をおこなうことができる。
【００３９】
また、上記発明において、前記検索対象ファイル内に存在する数字の出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正し、補正された出現頻度に基づいて、前記数値を圧縮することとしてもよい。
【００４０】
この発明によれば、数値の圧縮効率を文字データよりも優先的に高くすることができる。
【００４１】
また、上記発明において、さらに、前記検索対象ファイル内に存在するカンマの出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正することとしてもよい。
【００４２】
この発明によれば、カンマを含む数値の圧縮効率を文字データよりも優先的に高くすることができる。
【００４３】
また、上記発明において、さらに、前記検索対象ファイル内に存在する小数点の出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正することとしてもよい。
【００４４】
この発明によれば、小数点を含む数値の圧縮効率を文字データよりも優先的に高くすることができる。
【発明の効果】
【００４５】
この発明によれば、中間数値群内の数値に対して数値検索をおこなうことなく、数値範囲内の数値が存在するか否かを判断することができ、数値検索の高速化を図ることができる。
【００４６】
本発明にかかる情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置は、数値範囲内の数値が存在するファイルを圧縮したまま特定することにより、数値範囲検索の高速化および高精度化を図ることができるという効果を奏する。
【図面の簡単な説明】
【００４７】
【図１】図１は、この発明の実施の形態にかかる情報検索装置のハードウェア構成を示すブロック図である。
【図２】図２は、電子帳票のデータ構成を示す説明図である。
【図３】図３は、図２に示したファイル構成データ３００を示す説明図である。
【図４】図４は、図２に示したページリストデータ４００を示す説明図である。
【図５】図５は、数値・文字出現頻度管理データ５００を示す説明図である。
【図６】図６は、この発明の実施の形態にかかる情報検索装置の機能的構成を示すブロック図である。
【図７】図７は、図６に示した数値・文字出現頻度管理データ生成部６１２の機能的構成を示すブロック図である。
【図８】図８は、数値・文字出現頻度管理データ５００の生成処理を示すデータ構成図である。
【図９】図９は、連字／外字置換処理を示すデータ構成図である。
【図１０】図１０は、最終的に生成された連字／外字置換テーブル６４０を示す説明図である。
【図１１】図１１は、図６に示した圧縮／暗号化部６１３の詳細な機能的構成を示すブロック図である。
【図１２】図１２は、数字等の出現頻度の補正の一例を示す説明図である。
【図１３】図１３は、数字等の出現頻度の補正の他の例を示す説明図である。
【図１４】図１４は、圧縮／暗号化部６１３による具体的なハフマン木生成処理を示す説明図である。
【図１５】図１５は、図１１に示したファイルファイル圧縮部１１０６の詳細な機能的構成を示すブロック図である。
【図１６−１】図１６−１は、数値圧縮処理の第１の例を示す説明図である。
【図１６−２】図１６−２は、数値圧縮処理の第２の例を示す説明図である。
【図１６−３】図１６−３は、数値圧縮処理の第３の例を示す説明図である。
【図１６−４】図１６−４は、数値抽象化データの圧縮処理例を示す説明図である。
【図１７−１】図１７−１は、ファイル圧縮部１１０６によって圧縮された圧縮化帳票ファイルのデータ構造を示す説明図である。
【図１７−２】図１７−２は、圧縮ブロックデータＣ１〜Ｃｍと、圧縮前の元のブロックデータとの比較を示す図表である。
【図１８】図１８は、図６に示した検索初期化部６２１の詳細な機能的構成を示すブロック図である。
【図１９】図１９は、第１の区点対応テーブルと出現マップとの対応関係を示す説明図である。
【図２０】図２０は、第２の区点対応テーブルと出現マップとの対応関係を示す説明図である。
【図２１】図２１は、検索実行部６２２内の全文検索実行部６２４の詳細な機能的構成を示すブロック図である。
【図２２】図２２は、圧縮化帳票ファイルＦｉの絞込みの一例を示す説明図である。
【図２３】図２３は、全文検索実行部６２４における不一致照合処理を示す説明図である。
【図２４】図２４は、図２３に示した圧縮ブロックデータのシフト操作を示す図表である。
【図２５】図２５は、照合予測テーブルの生成処理を示す説明図である。
【図２６】図２６は、全ビット不一致照合処理を示す説明図である。
【図２７】図２７は、検索実行部６２２内の数値検索実行部６２５の詳細な機能的構成を示すブロック図である。
【図２８−１】図２８−１は、数値範囲の大小比較例を示す説明図（その１）である。
【図２８−２】図２８−２は、数値範囲の大小比較例を示す説明図（その２）である。
【図２８−３】図２８−３は、数値範囲の大小比較例を示す説明図（その３）である。
【図２８−４】図２８−４は、数値範囲の大小比較例を示す説明図（その４）である。
【図２９】図２９は、図６に示した検索結果表示部６２３の詳細な機能的構成を示すブロック図である。
【図３０】図３０は、この発明の実施の形態にかかる情報検索装置６００の情報検索処理手順を示すフローチャートである。
【図３１】図３１は、図３０に示した数値・文字出現頻度管理データ生成処理（ステップＳ３００１）の詳細な処理手順を示すフローチャートである。
【図３２−１】図３２−１は、上述した数値・文字出現頻度集計処理（ステップＳ３１０２）の詳細な処理手順を示すフローチャート（前半）である。
【図３２−２】図３２−２は、数値・文字出現頻度集計処理（ステップＳ３１０２）の詳細な処理手順を示すフローチャート（後半）である。
【図３３】図３３は、図３０に示した圧縮／暗号化処理（ステップＳ３００２）の詳細な処理手順を示すフローチャートである。
【図３４】図３４は、図３３のステップＳ３３０８に示した圧縮処理の詳細な処理手順を示すフローチャートである。
【図３５】図３５は、図３０に示した検索初期化処理（ステップＳ３００３）の詳細な処理手順を示すフローチャートである。
【図３６】図３６は、図３０に示した検索処理（ステップＳ３００４）の詳細な処理手順を示すフローチャートである。
【図３７】図３７は、照合予測テーブル生成処理手順を示すフローチャートである。
【図３８】図３８は、圧縮ブロックデータと圧縮キーワードとの不一致判定処理手順を示すフローチャートである。
【図３９】図３９は、全ビット不一致照合処理（ステップＳ３８１２およびステップＳ３８１７）を示すフローチャートである。
【図４０】図４０は、この発明の実施の形態にかかる数値検索モードにおける数値検索実行処理手順を示すフローチャートである。
【図４１】図４１は、図４０に示した下限特定／比較処理手順を示すフローチャートである。
【図４２】図４２は、下限数値照合処理手順を示すフローチャートである。
【図４３】図４３は、図４０に示した上限特定／比較処理手順を示すフローチャートである。
【図４４】図４４は、上限数値照合処理手順を示すフローチャートである。
【発明を実施するための形態】
【００４８】
（情報検索装置のハードウェア構成）
まず、この発明の実施の形態にかかる情報検索装置のハードウェア構成について説明する。図１は、この発明の実施の形態にかかる情報検索装置のハードウェア構成を示すブロック図である。
【００４９】
図１において、情報検索装置は、ＣＰＵ１０１と、ＲＯＭ１０２と、ＲＡＭ１０３と、ＨＤＤ（ハードディスクドライブ）１０４と、ＨＤ（ハードディスク）１０５と、ＦＤＤ（フレキシブルディスクドライブ）１０６と、着脱可能な記録媒体の一例としてのＦＤ（フレキシブルディスク）１０７と、ディスプレイ１０８と、Ｉ／Ｆ（インターフェース）１０９と、キーボード１１０と、マウス１１１と、スキャナ１１２と、プリンタ１１３と、を備えている。また、各構成部はバス１００によってそれぞれ接続されている。
【００５０】
ここで、ＣＰＵ１０１は、情報検索装置の全体の制御を司る。ＲＯＭ１０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ１０３は、ＣＰＵ１０１のワークエリアとして使用される。ＨＤＤ１０４は、ＣＰＵ１０１の制御にしたがってＨＤ１０５に対するデータのリード／ライトを制御する。ＨＤ１０５は、ＨＤＤ１０４の制御で書き込まれたデータを記憶する。
【００５１】
ＦＤＤ１０６は、ＣＰＵ１０１の制御にしたがってＦＤ１０７に対するデータのリード／ライトを制御する。ＦＤ１０７は、ＦＤＤ１０６の制御で書き込まれたデータを記憶したり、ＦＤ１０７に記憶されたデータを情報検索装置に読み取らせたりする。
【００５２】
また、着脱可能な記録媒体として、ＦＤ１０７のほか、ＣＤ−ＲＯＭ（ＣＤ−Ｒ、ＣＤ−ＲＷ）、ＭＯ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、メモリーカードなどであってもよい。ディスプレイ１０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ１０８は、たとえば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００５３】
Ｉ／Ｆ１０９は、通信回線を通じてインターネットなどのネットワーク１１４に接続され、このネットワーク１１４を介して他の装置に接続される。そして、Ｉ／Ｆ１０９は、ネットワーク１１４と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ１０９には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００５４】
キーボード１１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス１１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００５５】
スキャナ１１２は、画像を光学的に読み取り、情報検索装置内に画像データを取り込む。なお、スキャナ１１２は、ＯＣＲ機能を持たせてもよい。また、プリンタ１１３は、画像データや文書データを印刷する。プリンタ１１３には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
【００５６】
（電子帳票のデータ構成）
つぎに、電子帳票のデータ構成について説明する。図２は、電子帳票のデータ構成を示す説明図である。図２において、本明細書において電子帳票とは、帳簿や伝票といった帳票を電子化したデータである。電子帳票をあらわすコンテンツ２００は、上位フォルダ２０１に保存されている。さらに、上位フォルダ２０１には、管理フォルダ２０２と帳票フォルダ２０３という下位のフォルダが含まれている。
【００５７】
管理フォルダ２０２には、ファイル構成データ３００（図３参照）、ページリストデータ４００（図４参照）、および数値・文字出現頻度管理データ５００（図５参照）が保存されている。また、帳票フォルダ２０３には、複数の帳票ファイルｆｉ（ｉ＝０〜ｎ）からなる帳票ファイル群ｆが保存されている。
【００５８】
各帳票ファイルｆｉはそれぞれ帳票データｇｊ（ｊ＝１〜Ｐ）を有しており、全帳票ファイルｆ０〜ｆｎでＰページ分有している。各帳票データｇｊは、たとえば、ＨＴＭＬ形式またはＸＭＬ形式で構成され、アンカーや見出し語などを含むヘッダ部（宛先データ）、品名データ、数量データ、金額データ、小計部、合計部、トレーラ部などの各種項目データを有している。
【００５９】
図３は、図２に示したファイル構成データ３００を示す説明図である。ファイル構成データ３００は、各帳票ファイルｆ０〜ｆｎのファイル番号ｉ（ｉ＝０〜ｎ）ごとにファイルパスを関連付けたデータである。図３では、ファイル番号ｉの帳票ファイルｆｉを「ｆｉｌｅ（ｉ）．ｈｔｍｌ」と表記している。
【００６０】
図４は、図２に示したページリストデータ４００を示す説明図である。ページリストデータ４００とは、図２に示した帳票ファイルｆｉと帳票データｇｊとファイル構成データ３００とを関連付けるデータである。ページリストデータ４００は、帳票ファイルｆｉの全ファイル数（ｎ＋１個）、ブロックサイズ（ｍ  ｂｙｔｅ）、帳票データｇｊの全データ数（Ｐ個）、帳票ファイルｆｉのファイルパスデータＦＰ（０）〜ＦＰ（ｎ）、ページリストを有する。
【００６１】
また、ページリストデータ４００は、ファイルパスデータＦＰ（ｉ）ごとに、ファイル番号ｉとブロック数と図３に示したファイルパスとを有する。また、ページリスト４０１は、ファイル番号ｉごとにオフセット、レングス、ページ番号ｊ、見出し語が記述されているリストである。
【００６２】
図５は、数値・文字出現頻度管理データ５００を示す説明図である。図５において、数値・文字出現頻度管理データ５００は、数値・文字データの出現頻度を管理するデータである。ここで、数値・文字データは、数値データと文字データとに分けられる。数値データとは、０〜９の数字、００〜９９などの２以上の連続する数字からなる数字連字、桁数および先頭数字が共通する数値群、軽度高血圧など数値を抽象的な表現であらわした抽象化数値データを含むデータである。
【００６３】
ここで、数値群とは、桁数および先頭数字により規定される数値範囲内の数値の集合である。たとえば、３桁でかつ先頭数字が２である数値群とは、数値範囲２００〜２９９内の数値の集合である。
【００６４】
また、文字データとは、英字、かな、漢字、文字連字などを含むデータである。具体的には、８ビット系（ＡＳＣＩＩ）である英字、カタカナ、記号、１６ビット系（ＪＩＳ）の英字、カタカナ、記号、１６ビット系（ＪＩＳ）の仮名や漢字などが文字データに含まれる。これら英字や、仮名、カタカナなどの８ビットコードが中心である表音文字および漢字の文字データを、本明細書において「標準文字データ」と称す。
【００６５】
また、文字データには、標準文字データのほか、外字および文字連字が含まれる。文字連字とは、２以上の文字列からなる文字データである。たとえば、１６ビットの２つの仮名の文字連字である場合、当該文字連字は、３２ビットコードの文字データからなる。また、非文字データではあるがアドレスポインタなどのバイナリデータも便宜的に上記「文字データ」に含めることとする。以下、特に断りがない限り、「文字データ」という用語には、バイナリデータも含まれる。
【００６６】
また、数値・文字出現頻度管理データ５００は、数値・文字データの出現頻度、出現ファイル数（ブロック数でもよい）、出現順位、出現マップ５１０（５０１〜５０９）を有する。出現頻度とは、全帳票ファイルｆ０〜ｆｎにおいて当該数値・文字データが出現した頻度（回数）である。出現ファイル数とは、全帳票ファイルｆ０〜ｆｎにおいて当該数値・文字データが出現した帳票ファイルの数である。出現順位とは、出現頻度順のランクである。
【００６７】
出現マップ５１０とは、帳票ファイルｆｉ順に配列されたｎ＋１ビットのビット列であり、数値・文字データの存否をあらわしている。図５では、左端のビットが帳票ファイルｆ０に対応するビットであり、右端のビットが帳票ファイルｆｎに対応するビットである。
【００６８】
各ビットにおいて「１」がＯＮをあらわしており、「０」がＯＦＦをあらわしている。すなわち、ある数値・文字データにおいて、その出現マップ５１０中、帳票ファイルｆｉに対応するビットが「１」である場合、当該数値・文字データが帳票ファイルｆｉに存在することをあらわしている。また、帳票ファイルｆｉに対応するビットが「０」である場合、当該数値・文字データが帳票ファイルｆｉに存在しないことをあらわしている。
【００６９】
（情報検索装置の機能的構成）
つぎに、この発明の実施の形態にかかる情報検索装置の機能的構成について説明する。図６は、この発明の実施の形態にかかる情報検索装置の機能的構成を示すブロック図である。図６において、情報検索装置６００は、編集部６０１と検索部６０２とから構成されている。
【００７０】
まず、編集部６０１は、ファイル構成データ抽出部６１１と、数値・文字出現頻度管理データ生成部６１２と、圧縮／暗号化部６１３と、から構成されている。ここでは、検索対象として帳票ファイルを例に挙げているが、数値データが含まれているコンテンツであれば、帳票ファイル以外のデータでもよい。
【００７１】
ファイル構成データ抽出部６１１は、図３に示したファイル構成データ３００を参照して、帳票ファイルｆ０〜ｆｎから図４に示したページリストデータ４００を抽出する。また、数値・文字出現頻度管理データ生成部６１２は、帳票ファイルｆ０〜ｆｎから数値・文字出現頻度管理データ５００を生成する。さらに、数値・文字出現頻度管理データ生成部６１２は、複数の帳票ファイルｆ０〜ｆｎに記述されている数字連字や文字連字を外字に置換する連字／外字置換テーブル６４０を生成する。以降、数字連字および文字連字をまとめて、「連字データ」と称す。
【００７２】
また、圧縮／暗号化部６１３は、帳票ファイルｆ０〜ｆｎを圧縮して圧縮化帳票ファイル群Ｆを生成するとともに、数値・文字出現頻度管理データ５００および連字／外字置換テーブル６４０を暗号化して、暗号化数値・文字出現頻度管理データ６５０および暗号化連字／外字置換テーブル６６０を生成する。
【００７３】
また、検索部６０２は、検索初期化部６２１と、検索実行部６２２と、検索結果表示部６２３とから構成されている。検索初期化部６２１は、暗号化数値・文字出現頻度管理データ６５０および暗号化連字／外字置換テーブル６６０を復号して、検索部６０２による検索の初期化を実行する。
【００７４】
また、検索実行部６２２は、数値・文字出現頻度管理データ５００や連字／外字置換テーブル６４０を用いて、検索処理を実行することにより、検索候補一覧を生成する。具体的には、検索実行部６２２は、全文検索を実行する全文検索実行部６２４と、数値検索を実行する数値検索実行部６２５とを備える。
【００７５】
全文検索実行部６２４は、検索キーワードの入力を受け付け、圧縮化帳票ファイルの全文検索を実行することにより、検索キーワードに該当する帳票ファイルｆｉを示す検索候補一覧を生成する。
【００７６】
また、数値検索実行部６２５は、数値や数値範囲の入力を受け付け、圧縮化帳票ファイル群Ｆに対して数値検索を実行することにより、入力された数値や数値範囲に該当する帳票ファイルｆｉを示す検索候補一覧を生成する。
【００７７】
また、検索結果表示部６２３は、検索実行部６２２による検索候補の中から、ユーザに選択された検索候補を伸長して、検索結果として表示する。なお、上述した帳票ファイル、数値・文字出現頻度管理データ５００、ファイル構成データ３００、ページリストデータ４００、連字／外字置換テーブル６４０、圧縮化帳票ファイル群Ｆ、暗号化数値・文字出現頻度管理データ６５０および暗号化連字／外字置換テーブル６６０は、具体的には、たとえば、図１に示したＲＯＭ１０２、ＲＡＭ１０３、ＨＤ１０５などの記録媒体によって、その機能を実現する。
【００７８】
また、編集部６０１（内部の機能的構成含む）および検索部６０２（内部の機能的構成含む）は、具体的には、たとえば、図１に示したＲＯＭ１０２、ＲＡＭ１０３、ＨＤ１０５などの記録媒体に記録されたプログラムを、ＣＰＵ１０１が実行することによって、その機能を実現する。
【００７９】
（数値・文字出現頻度管理データ生成部６１２の機能的構成）
つぎに、図６に示した数値・文字出現頻度管理データ生成部６１２の機能的構成について説明する。図７は、図６に示した数値・文字出現頻度管理データ生成部６１２の機能的構成を示すブロック図である。図７において、数値・文字出現頻度管理データ生成部６１２は、数値・文字データ抽出部７０１と、数値・文字出現頻度集計部７０２と、ソート部７０３と、生成処理部７０４とから構成されている。
【００８０】
数値・文字データ抽出部７０１は、帳票ファイルから数値・文字データを順次抽出する。数値・文字出現頻度集計部７０２は、数値・文字データ抽出部７０１によって抽出された数値・文字データの帳票ファイルｆｉにおける出現頻度を集計する。また、数値・文字出現頻度集計部７０２は、数値・文字データの帳票ファイルｆ０〜ｆｎごとの存否も検出する。
【００８１】
また、ソート部７０３は、出現頻度順に数値・文字データをソートする。生成処理部７０４は、ソートされた各数値・文字データの出現頻度と、存否検出結果である各数値・文字データの出現マップ５０１〜５０９とを用いて、数値・文字出現頻度管理データ５００を生成する。また、連字／外字置換テーブル６４０も生成する。ここで、数値・文字出現頻度管理データ生成部６１２による数値・文字出現頻度管理データ５００および連字／外字置換テーブル６４０の生成処理を具体的に説明する。
【００８２】
図８は、数値・文字出現頻度管理データ５００の生成処理を示すデータ構成図である。図８において、（Ａ）は、数値・文字出現頻度集計部７０２によって数値・文字データが集計されたときの数値・文字出現頻度管理データ５００のデータ構成、（Ｂ）は、連字／外字置換処理後の数値・文字出現頻度管理データ５００のデータ構成、（Ｃ）は、標準文字データおよび外字データからなる混合データのソート後における数値・文字出現頻度管理データ５００のデータ構成、（Ｄ）は、低出現頻度の混合データのカット後における数値・文字出現頻度管理データ５００のデータ構成、（Ｅ）は、最終的に生成された数値・文字出現頻度管理データ５００のデータ構成を示している。
【００８３】
（Ａ）において、符号８００は、文字出現頻度管理データ５００の管理領域である。また、符号８０１は、数値データ（数字連字を除く）の出現頻度、出現ファイル数、出現順位、出現マップを記憶する数値領域である。また符号８０２は、８ビット系（ＡＳＣＩＩ）である英字、カタカナ、記号、１６ビット系（ＪＩＳ）の英字、カタカナ、記号、１６ビット系（ＪＩＳ）のかなや漢字などの標準文字データの出現頻度、出現ファイル数、出現順位、出現マップを記憶する標準文字領域である。
【００８４】
また、符号８０３は、外字の出現頻度、出現ファイル数、出現順位、出現マップを記憶する外字領域である。また、符号８０４は、連字データの出現頻度、出現ファイル数、出現順位、出現マップを記憶する連字領域である。また、符号８０５は、８ビットのバイナリデータの出現頻度、出現ファイル数、出現順位を記憶するバイナリ領域である。
【００８５】
（Ａ）のデータ構造において、連字領域８０４の連字データは、その出現頻度順にソートされる。そして、所定の出現頻度以上の連字データを、外字データと重複しないように、他の外字データ（以下、「連字外字データ」）に置換する。このように、出現頻度の高い複数の文字列からなる連字データを、単一文字データである外字データに置換することにより、データ量の削減を図ることができ、圧縮効率の向上を図ることができる。なお、所定の出現頻度未満の連字データは、低出現頻度の連字データであるため、単一の文字データに分解されて、該当する領域に割り当てられる。この結果、（Ｂ）連字／外字置換処理後の数値・文字出現頻度管理データ５００のデータ構成となる。
【００８６】
また、（Ｂ）のデータ構造において、数値領域８０１のデータ、標準文字領域８０２の標準文字データおよび外字領域８０３の外字データを混合して高出現頻度順にソートした結果が、（Ｃ）のデータ構造である。（Ｃ）のデータ構造において、（Ｂ）に示した連字外字領域８１４の連字外字データおよびバイナリ領域８０５のバイナリデータは、ソートの対象外である。
【００８７】
（Ｃ）のデータ構造において、数値データと標準文字データと外字データとが混在する混合領域８１２において、低出現頻度、たとえば、出現回数０回のデータはカットされる。このカットされたときのデータ構造が、（Ｄ）のデータ構造である。（Ｄ）において、管理領域８００および混合領域８１２と、連字外字領域８１４と、バイナリ領域８０５とを結合することで、（Ｅ）のデータ構造で示したような、最終的な数値・文字出現頻度管理データ５００を生成することができる。
【００８８】
この数値・文字出現頻度管理データ５００において、管理領域８００には、ファイル・ブロック数と、出現文字データの種類の数（出現文字数（種類））と、連字外字データの数（連字数（２５６種））と、バイナリデータ数（バイナリ（２５６種））とが記録される。
【００８９】
そして、図５に示した数値・文字出現頻度管理データ５００は、バイナリデータを除く数値・文字データごとに、出現頻度と出現マップ５１０とが対応付けられている。数値・文字データは高出現頻度順にソートされている。なお、後述するが、図５に示した数値・文字出現頻度管理データ５００において、数値・文字データとその出現頻度は、所定のマスタキーを用い、暗号化アルゴリズムである排他的論理和（ＸＯＲ）などによって暗号化される。
【００９０】
つぎに、連字／外字置換処理について具体的に説明する。図９は、連字／外字置換処理を示すデータ構成図である。図９において、（Ｆ）は、数値・文字出現頻度集計部７０２によって連字データが集計されたときの数値・文字出現頻度管理データ５００の連字領域８０４のデータ構成、（Ｇ）は、連字データのソート後における連字領域８０４のデータ構成、（Ｈ）は、置換後におけるデータ構成を示している。
【００９１】
（Ｆ）のデータ構造において、連字領域８０４は、領域９０１〜９０７を有している。領域９０１には、８ビット系（ＡＳＣＩＩ）の数字列データ（「００」〜「９９」）の情報（当該数字列データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。
【００９２】
領域９０２には、８ビット系（ＡＳＣＩＩ）の英字列データ（「ＡＡ」〜「ｚｚ」）の情報（当該英字列データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。また、領域９０３には、８ビット系（ＡＳＣＩＩ）のカタカナ列データ（「アア」〜「ンン」、濁音・半濁音）の情報（当該カタカナデータ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。
【００９３】
領域９０４には、１６ビット系（ＪＩＳ）の数字列データ（「００」〜「９９」）の情報（当該数字列データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。また、領域９０５には、１６ビット系（ＪＩＳ）の英字列データ（「ＡＡ」〜「ｚｚ」）の情報（当該数字列データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。
【００９４】
領域９０６には、１６ビット系（ＪＩＳ）のカタカナ列データ（「アア」〜「ンン」、濁音・半濁音）の情報（当該カタカナ列データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。また、領域９０７には、１６ビット系（ＪＩＳ）の仮名列データ（「ああ」〜「んん」、濁音・半濁音）の情報（当該仮名列データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。
【００９５】
また、（Ｇ）のデータ構造は、（Ｆ）のデータ構造を、各連字データの高出現順にソートすることにより得られるデータ構造である。（Ｇ）のデータ構造において、領域９１１は、高出現頻度の連字データの情報であり、外字データへの置換対象となる。一方、領域９１２は、所定の出現頻度以下の連字データ（低出現頻度連字データ）の情報である。この低出現頻度連字データは、単一の文字データに分解される。これにより文字データの出現頻度と出現マップ５０５〜５０９とが補正される。
【００９６】
また、（Ｈ）のデータ構造は、（Ｇ）のデータ構造のうち高出現頻度の連字データを外字に置換することによって得られるデータ構造である。連字外字領域８１４には、置換された連字外字データの情報（当該連字外字データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。
【００９７】
また、図１０は、最終的に生成された連字／外字置換テーブル６４０を示す説明図である。連字／外字置換テーブル６４０は、（Ｇ）のデータ構造の領域９１１の連字データと、（Ｈ）のデータ構造の領域８１４の連字外字データとを対応させることによって生成される。
【００９８】
（圧縮／暗号化部６１３の詳細な機能的構成）
つぎに、図６に示した圧縮／暗号化部６１３の詳細な機能的構成について説明する。図１１は、図６に示した圧縮／暗号化部６１３の詳細な機能的構成を示すブロック図である。図１１において、圧縮／暗号化部６１３は、出現頻度補正部１１０１と、低出現頻度数値・文字データ分解部１１０２と、暗号化部１１０３と、生起確率演算部１１０４と、ハフマン木生成部１１０５と、ファイル圧縮部１１０６と、から構成されている。
【００９９】
まず、出現頻度補正部１１０１は、数値・文字出現頻度管理データ５００内の数字に関する出現頻度を補正する。具体的には、たとえば、０〜９の数字や小数点、フィーダ（以下、「数字等」という）に対する圧縮符号のビット幅を設定し、そのビット幅に応じた出現頻度を、０〜９の数字等に対して設定する。より具体的には、文字データの出現頻度よりも高くなるように強制的に数字等の出現頻度を補正する。
【０１００】
図１２は、数字等の出現頻度の補正の一例を示す説明図である。図１２では、数値・文字データの出現頻度を補正する符号化テーブルを示している。図１２では、圧縮符号のビット幅が４ビットであるため、数値等の各出現頻度を１／１６とする。そして、さらに出現順位に応じて出現頻度を加算している。図１２に示した補正例は、数値が多い帳票ファイルに有効である。なお、補正により出現頻度の総和が１を超過した場合、その他の文字データの出現頻度に応じて、その他の文字データの出現頻度が補正される。
【０１０１】
図１３は、数字等の出現頻度の補正の他の例を示す説明図である。図１３でも、数値・文字データの出現頻度を補正する符号化テーブルを示している。図１３では、圧縮符号のビット幅が５ビットであるため、数値等の各出現頻度を１／３２とする。そして、さらに出現順位に応じて出現頻度を加算している。図１３に示した補正例は、文字データが多いホームページなどに有効である。なお、補正により出現頻度の総和が１を超過した場合、その他の文字データの出現頻度に応じて、その他の文字データの出現頻度が補正される。
【０１０２】
また、図１１において、低出現頻度数値・文字データ分解部１１０２は、数値・文字出現頻度管理データ５００内における文字領域の数値・文字データを高出現頻度順にソートする。そして、所定の出現頻度以下の残余の低出現頻度の数値・文字データを８ビットコードに分解して、同じ８ビットコードであるバイナリデータが記憶されているバイナリ領域に記憶する。
【０１０３】
暗号化部１１０３は、低出現頻度数値・文字データ分解部１１０２による分解によって得られた数値・文字出現頻度管理データ５００を、所定のマスタキーを用いてＸＯＲによる暗号化をおこない、暗号化数値・文字出現頻度管理データ６５０を生成する。連字／外字置換テーブル６４０も同様に、所定のマスタキーを用いてＸＯＲによる暗号化をおこない、暗号化連字／外字置換テーブル６６０を生成することとしてもよい。
【０１０４】
また、生起確率演算部１１０４は、低出現頻度数値・文字データ分解部１１０２による分解によって得られた文字出現頻度管理データ５００における数値データ、標準文字データ、連字外字データおよびバイナリデータを高出現順にソートして、これらの生起確率を演算する。また、ハフマン木生成部１１０５は、生起確率演算部１１０４によって演算された生起確率からハフマン木を生成する。
【０１０５】
また、ファイル圧縮部１１０６は、ハフマン木生成部１１０５によって生成されたハフマン木を用いて帳票ファイル群ｆを圧縮し、圧縮化帳票ファイル群Ｆを生成する。具体的には、各帳票ファイルｆ０〜ｆｎに記述されている数値・文字データに対して、補正後の出現頻度が高い順、すなわち生起確率が高い順に短いビットを割り当てて、帳票ファイル群ｆを圧縮する。ファイル圧縮部１１０６による帳票ファイル群ｆの圧縮は、数値と文字データとで圧縮法が異なる。この点については後述する。
【０１０６】
つぎに、圧縮／暗号化部６１３による具体的なハフマン木生成処理について説明する。図１４は、圧縮／暗号化部６１３による具体的なハフマン木生成処理を示す説明図である。図１４の（Ｉ）に示した数値・文字出現頻度管理データ５００を、低出現頻度数値・文字データ分解部１１０２により、低出現頻度の文字データを分解して、バイナリデータが記憶されているバイナリ領域に記憶する（図１４中（Ｊ））。
【０１０７】
つぎに、（Ｊ）のデータ構造において、混合領域、連字外字領域、およびバイナリ領域内のすべての数値・文字データを高出現頻度順にソートする（図１４中（Ｋ））。そして、（Ｋ）の領域１４００において、出現頻度をハフマンの圧縮パラメータとして各数値・文字データの生起確率を演算する（図１４中（Ｌ））。最後に（Ｌ）において、各数値・文字データの生起確率からハフマン木１４０１を生成する（図１４中（Ｍ））。
【０１０８】
（ファイル圧縮部１１０６の詳細な機能的構成）
つぎに、図１１に示したファイル圧縮部１１０６の詳細な機能的構成について説明する。図１５は、図１１に示したファイル圧縮部１１０６の詳細な機能的構成を示すブロック図である。
【０１０９】
図１５において、ファイル圧縮部１１０６は、フィーダ検出部と、文字データ抽出部と、数値抽出部と、数値詳細情報検出部と、圧縮処理部と、から構成されている。
【０１１０】
まず、フィーダ検出部１５０１は、帳票ファイルｆｉの中からフィーダを検出する。フィーダは数値の先頭に位置するため、フィーダが検出されると、その後には数値が存在することとなり、フィーダが検出されないと、当該文字データと認識される。
【０１１１】
また、文字データ抽出部１５０２は、フィーダ検出部１５０１によりフィーダにフィーダが検出されなかった場合、その位置のデータを文字データとして抽出する。抽出された文字データは圧縮処理部１５０５において圧縮処理される。
【０１１２】
数値抽出部１５０３は、フィーダ検出部１５０１によりフィーダが検出された場合、当該フィーダに関連付けられている数値、たとえば、フィーダに続く数字列を数値として抽出する。この場合、数字列の中に、カンマや小数点が含まれている場合、そのカンマや小数点も抽出する。
【０１１３】
また、数値詳細情報検出部１５０４は、数値抽出部１５０３によって抽出された数値の詳細な情報を抽出する。ここで、詳細な情報とは、たとえば、桁数はいくつか、数値が全角であるか半角であるか、カンマが含まれているか、小数点が含まれているか、含まれている場合の小数点の位置などを検出する。
【０１１４】
また、圧縮処理部１５０５は、ハフマン木生成部１１０５によって生成されたハフマン木を用いて、文字データ抽出部１５０２によって抽出された文字データや、数値抽出部１５０３によって抽出された数値データを圧縮する。
【０１１５】
数値を圧縮する場合、ハフマン木を用いて、桁数を示す数字や桁ごとの数字を、当該数字に応じた圧縮符号に変換する。このとき、桁ごとの数字の圧縮符号は、桁順に配列するものとする。また、数値に小数点が含まれている場合、小数点に応じた圧縮符号に変換する。カンマの有無や全角・半角については、１ビットであらわす。
【０１１６】
（数値圧縮処理）
つぎに、上述した圧縮処理部１５０５における数値圧縮処理について説明する。数値圧縮処理では、まず、金額や血圧などの数値情報から数値のみを抽出する。そして、この抽出された数値を圧縮する。具体的には、図１２や図１３に示した符号化テーブルを参照して、フィーダの圧縮符号を読み出す。
【０１１７】
つぎに、数値が半角か全角かを示すビット（全角・半角ビット）を設定する。この全角・半角ビットは全角の場合が「１」で半角の場合が「０」である。また、数値がカンマ「，」を用いた表記であるか否かを示すカンマ有無ビットを設定する。このカンマ有無ビットはカンマ有りの場合が「１」でカンマ無しの場合が「０」である。
【０１１８】
つぎに、数値の桁数を検出する。検出された桁数は小数点以下の桁数は含まれないこととする。そして、検出された桁数が示す数字の圧縮符号を図１２に示した符号化テーブルから読み出す。また、数値を構成する先頭桁から末尾桁までの数字の圧縮符号を、図１２や図１３に示した符号化テーブルから読み出す。
【０１１９】
つぎに、数値に小数点があれば小数点の圧縮符号を図１２や図１３に示した符号化テーブルから読み出す。このようにして、数値は、圧縮符号およびビットからなる数字列に圧縮される。以下、図１２の符号化テーブルを用いた圧縮処理例について説明する。なお、圧縮処理された数値を、圧縮数値と称す。
【０１２０】
図１６−１は、数値圧縮処理の第１の例を示す説明図である。図１６−１においては、数値情報「￥６，８００．−」から先頭の「￥」および末尾の「−」を分離して、数値「６，８００．」を抽出する。そして、この数値「６，８００．」を圧縮する。
【０１２１】
具体的には、数値の開始位置を示すフィーダ「ｘ’Ｂ’」の圧縮符号「１０１１」を図１２に示した符号化テーブルから読み出す。つぎに、数値「６，８００．」が半角であることを示す全角・半角ビット「０」を設定する。また、数値データ「６，８００．」がカンマ「，」を用いた表記であることを示すカンマ有無ビット「１」を設定する。つぎに、数値「６，８００．」の桁数「４」を検出し、検出された桁数「４」の圧縮符号「０１００」を図１２に示した符号化テーブルから読み出す。
【０１２２】
つぎに、数値「６，８００．」の先頭数字「６」、第２数字「８」、第３数字「０」、および末尾数字「０」までの数字の圧縮符号「０１１０」，「１０００」，「００００」，「００００」を、図１２に示した符号化テーブルから読み出す。最後に、数値「６，８００．」の小数点「ｘ’Ａ’」の圧縮符号「１０１０」を、図１２に示した符号化テーブルから読み出す。このようにして、数値「６，８００．」は圧縮されることとなる。
【０１２３】
図１６−２は、数値圧縮処理の第２の例を示す説明図である。図１６−２においては、数値情報「＄６８０．５０−」から先頭の「＄」および末尾の「−」を分離して、数値「６８０．５０」を抽出する。そして、この数値「６８０．５０」を圧縮する。
【０１２４】
具体的には、数値の開始位置を示すフィーダ「ｘ’Ｂ’」の圧縮符号「１０１１」を図１２に示した符号化テーブルから読み出す。つぎに、数値「６８０．５０」が半角であることを示す全角・半角ビット「０」を設定する。また、数値「６８０．５０」がカンマ「，」を用いていない表記であることを示すカンマ有無ビット「０」を設定する。つぎに、数値「６８０．５０」の桁数「３」を検出し、検出された桁数「３」の圧縮符号「００１１」を図１２に示した符号化テーブルから読み出す。
【０１２５】
つぎに、数値「６８０．５０」の先頭数字「６」、第２数字「８」、第３数字「０」、小数点「ｘ’Ａ’」、第４数字「５」、および末尾数字「０」までの数字の圧縮符号「０１１０」，「１０００」，「００００」，「１０１０」，「０１０１」，「００００」を、図１２に示した符号化テーブルから読み出す。このようにして、数値「６８０．５０」は圧縮されることとなる。
【０１２６】
図１６−３は、数値圧縮処理の第３の例を示す説明図である。図１６−３においては、数値情報「６８００円」から末尾の「円」を分離して、数値「６８００」を抽出する。そして、この数値「６８００」を圧縮する。
【０１２７】
具体的には、数値の開始位置を示すフィーダ「ｘ’Ｂ’」の圧縮符号「１０１１」を図１２に示した符号化テーブルから読み出す。つぎに、数値「６８００」が全角であることを示す全角・半角ビット「１」を設定する。また、数値「６８００」がカンマ「，」を用いていない表記であることを示すカンマ有無ビット「０」を設定する。つぎに、数値「６８００」の桁数「４」を検出し、検出された桁数「４」の圧縮符号「０１００」を図１２に示した符号化テーブルから読み出す。
【０１２８】
つぎに、数値「６８００」の先頭数字「６」、第２数字「８」、第３数字「０」、および末尾数字「０」までの数字の圧縮符号「０１１０」，「１０００」，「００００」，「００００」を、図１２に示した符号化テーブルから読み出す。このようにして、数値「６８００」は圧縮されることとなる。
【０１２９】
図１６−４は、数値抽象化データの圧縮処理例を示す説明図である。図１６−４においては、ＨＴＭＬデータ中、最小血圧の値を示す数値抽象化データ「＜最小血圧＞１０７＜最小血圧＞」から先頭および末尾の「＜／最小血圧＞」を分離して、数値「１０７」を抽出する。そして、この数値「１０７」を圧縮する。
【０１３０】
具体的には、数値の開始位置を示すフィーダ「ｘ’０Ｂ’」の圧縮符号「００００１０１１」を図１２に示した符号化テーブルから読み出す。このフィーダ「ｘ’０Ｂ’」は、数値が最終血圧であることを識別するフィーダである。つぎに、数値「１０７」が半角であることを示す全角・半角ビット「０」を設定する。また、数値「１０７」がカンマ「，」を用いていない表記であることを示すカンマ有無ビット「０」を設定する。つぎに、数値「１０７」の桁数「３」を検出し、検出された桁数「３」の圧縮符号「００１１」を図１２に示した符号化テーブルから読み出す。
【０１３１】
つぎに、数値「１０７」の先頭数字「１」、第２数字「０」、および第３数字「７」までの数字の圧縮符号「０００１」，「００００」，「０１１１」を、図１２に示した符号化テーブルから読み出す。このようにして、数値「１０７」は圧縮されることとなる。
【０１３２】
（圧縮化帳票ファイルのデータ構造）
つぎに、ファイル圧縮部１１０６によって圧縮された圧縮化帳票ファイルのデータ構造について説明する。図１７−１は、ファイル圧縮部１１０６によって圧縮された圧縮化帳票ファイルのデータ構造を示す説明図である。図１７−１では、任意の圧縮化帳票ファイルＦｉに着目して説明する。この圧縮化帳票ファイルＦｉは、ブロック数情報（ｍ個）を格納する領域１７０１と、ｍ個の各ブロックのアドレス情報（＃１〜＃ｍ）を格納する領域１７０２と、各ブロックの圧縮ブロックデータＣ１〜Ｃｍを格納する領域１７０３から構成される。
【０１３３】
また、図１７−２は、圧縮ブロックデータＣ１〜Ｃｍと、圧縮前の元のブロックデータとの比較を示す図表である。図１７−２を参照すると、圧縮ブロックデータＣ１〜Ｃｍのレングスが、対応する元のブロックデータのレングスの約半分に圧縮されていることがわかる。
【０１３４】
（検索初期化部６２１の詳細な機能的構成）
つぎに、図６に示した検索初期化部６２１の詳細な機能的構成について説明する。図１８は、図６に示した検索初期化部６２１の詳細な機能的構成を示すブロック図である。図１８において、検索初期化部６２１は、復号部１８０１と、低出現頻度数値・文字データ分解部１８０２と、生起確率演算部１８０３と、ハフマン木生成部１８０４と、出現マップ設定部１８０５と、から構成されている。
【０１３５】
まず、復号部１８０１は、暗号化数値・文字出現頻度管理データ６５０を復号する。具体的には、図１１で用いた暗号化のマスタキーを用いて排他的論理和（ＸＯＲ）による復号処理を実行する。同様に、暗号化連字／外字置換テーブル６６０も、元の連字／外字置換テーブル６４０に戻す。また、低出現頻度数値・文字データ分解部１８０２、生起確率演算部１８０３およびハフマン木生成部１８０４は、図１１に示した低出現頻度数値・文字データ分解部１１０２、生起確率演算部１１０４およびハフマン木生成部１１０５と同一の処理を実行し、ハフマン木１８１０を生成する。このハフマン木は、出現頻度補正部１１０１により補正されたハフマン木となる。
【０１３６】
また、出現マップ設定部１８０５は、復号された数値・文字出現頻度管理データ５００の出現マップ５１０を読み込んでメモリ展開し、区点対応テーブルとリンクする。区点は、ＪＩＳによって制定された全角文字向けの文字コードであり、区点対応テーブルは、各区点のアドレスを記憶したテーブルである。
【０１３７】
図１９は、文字の区点対応テーブルと出現マップとの対応関係を示す説明図である。文字の区点対応テーブル１９００は、数値・文字出現頻度管理データ５００の文字データと出現マップ５０５〜５０９とを対応づけるテーブルである。この文字の区点対応テーブル１９００により、区点に対応する文字データの存否をあらわすビット列の出現マップ５０５〜５０９を呼び出すことができる。
【０１３８】
図２０は、数値の区点対応テーブルと出現マップとの対応関係を示す説明図である。数値の区点対応テーブル２０００は、数値・文字出現頻度管理データ５００の数値群と出現マップ５０３とを対応づけるテーブルである。この数値の区点対応テーブル２０００により、区点に対応する数値群内の数値の存否をあらわすビット列の出現マップ５０３を呼び出すことができる。
【０１３９】
（全文検索実行部６２４の詳細な機能的構成）
つぎに、図６に示した検索実行部６２２内の全文検索実行部６２４の詳細な機能的構成について説明する。図２１は、検索実行部６２２内の全文検索実行部６２４の詳細な機能的構成を示すブロック図である。
【０１４０】
図２１において、全文検索実行部６２４は、検索キーワード入力処理部２１０１と、検索キーワード圧縮部２１０２と、出現マップ読取部２１０３と、圧縮化帳票ファイル特定部２１０４と、圧縮化帳票ファイル抽出部２１０５と、判定部２１０６と、ブロック伸長部２１０７と、文字列比較部２１０８と、ファイル構成データ特定部２１０９と、検索候補一覧表示部２１１０と、検索候補選択部２１１１と、から構成されている。
【０１４１】
まず、検索キーワード入力処理部２１０１は、ユーザからの検索キーワードの入力を受け付ける。また、検索キーワードが複数ある場合、各検索キーワードの文字列を連結する。さらに、検索キーワードの連字が所定の連字に該当する場合、連字／外字置換テーブル６４０を用いて、連字を外字に置換する。このあと、検索キーワード入力処理部２１０１は、検索キーワードを単一文字に分解する。
【０１４２】
また、検索キーワード圧縮部２１０２は、検索キーワード入力処理部２１０１によって入力された検索キーワードを、検索初期化部６２１のハフマン木生成部１８０４によって生成されたハフマン木１８１０を用いて圧縮する。また、出現マップ読取部２１０３は、出現マップ設定部１８０５によって設定された出現マップ５１０を用いて、検索キーワードの各文字の各帳票ファイルｆ０〜ｆｎにおけるビット列を読み取る。具体的には、この出現マップ５１０における各文字データは、区点対応テーブルにより区点とリンクしているため、区点と一致する検索キーワードの各文字データのビット列を読み取ることができる。
【０１４３】
圧縮化帳票ファイル特定部２１０４は、出現マップ５１０から読み取られた各文字の各帳票ファイルｆ０〜ｆｎにおけるビット列の論理積を算出することにより、検索キーワードの各文字データがすべて存在する圧縮化帳票ファイルを特定することで、圧縮化帳票ファイルの絞込みをおこなう。ここで、絞込みの一例について説明する。
【０１４４】
図２２は、圧縮化帳票ファイルＦｉの絞込みの一例を示す説明図である。図２２においては、検索キーワードを『出金伝票』とし、帳票ファイルの数を４個、すなわち、ファイル番号ｉ＝０〜３までとする。図２２において、たとえば、文字『出』のビット列は［１１００］である。このビット列は、ファイル番号０、１の帳票ファイルｆ０、ｆ１には文字『出』が含まれており、ファイル番号２、３の帳票ファイルｆ２、ｆ３には文字『出』が含まれていないことを示している。
【０１４５】
そして、図２２において、絞込み結果は、ファイル番号ｉごとのビットの論理積（ＡＮＤ）結果を示している。この絞込み結果によれば、ファイル番号１の帳票ファイルｆ１のみが、存在を示すビット「１」となっているため、検索キーワードを構成するすべての文字『出』、『金』、『伝』および『票』は、帳票ファイルｆ１にのみ存在し、他の帳票ファイルｆ０、ｆ２、ｆ３には存在しないことがわかる。これにより、検索対象としてオープンするファイルを、帳票ファイルｆ１を圧縮した圧縮化帳票ファイルＦ１のみに特定することができ、無駄なファイルのオープン／クローズ処理を防止して検索速度の向上を図ることができる。
【０１４６】
また、図２１において、圧縮化帳票ファイル抽出部２１０５は、圧縮化帳票ファイル群Ｆの中から、圧縮化帳票ファイル特定部２１０４によって特定された帳票ファイルＦｉを抽出する。図２２の例では、ファイル番号１の圧縮化帳票ファイルＦ１を抽出する。
【０１４７】
また、判定部２１０６は、圧縮化帳票ファイル抽出部２１０５によって抽出された圧縮化帳票ファイルＦｉに、検索キーワード圧縮部２１０２によって圧縮された検索キーワード（以下、「圧縮キーワード」）が含まれているか否かを判定する。具体的には、圧縮化帳票ファイルＦｉ内の圧縮ブロックデータごとに判定をおこなっている。
【０１４８】
この判定結果が不一致である場合、圧縮化帳票ファイルＦｉには、検索キーワードが含まれていないことがわかる。一方、判定結果が一致である場合、圧縮化帳票ファイルＦｉには、検索キーワードが含まれていることがわかる。たとえば、図２２においては、圧縮化帳票ファイルＦ１に、検索キーワード『出金伝票』という文字列が含まれていることがわかる。
【０１４９】
また、ブロック伸長部２１０７は、判定部２１０６により一致すると判定された圧縮化帳票ファイルＦｉの圧縮ブロックデータのみ伸長する。この判定部２１０６およびブロック伸長部２１０７により、圧縮化帳票ファイルＦｉのまま判定をおこなうことができ、不一致であれば、圧縮化帳票ファイルＦｉを伸長する前に検索候補から外し、一致した帳票ファイルのみ伸長することができる。また、ブロック伸長部２１０７において、伸長された帳票ファイルｆｉに連字外字データが含まれている場合、復号部１８０１によって復号された連字／外字置換テーブル６４０を用いて、連字外字データを元の連字データに置換する。
【０１５０】
また、文字列比較部２１０８は、ブロック伸長部２１０７によって伸長されたブロックデータ内の文字列と、検索キーワード入力処理部２１０１によって入力された検索キーワードとを比較する。
【０１５１】
ファイル構成データ特定部２１０９は、検索キーワードに一致する文字列の帳票データｇｊがあった場合、当該帳票データｇｊのページ番号ｊおよび当該帳票データｇｊが属する帳票ファイルｆｉのファイル番号ｉを特定する。
【０１５２】
検索候補一覧表示部２１１０は、ページリストデータ４００を編集して、ファイル構成データ３００内のファイルリストのうち、文字列比較部２１０８により帳票データｇｊのページ番号ｊおよび当該帳票データｇｊが属する帳票ファイルｆｉのファイル番号ｉが特定されたファイルリストを、検索候補一覧（たとえば、見出し語の一覧）として図１に示したディスプレイ１０８に表示する。
【０１５３】
また、検索候補選択部２１１１は、検索候補一覧表示部２１１０によって表示された検索候補一覧の中から、ユーザの操作によって選択された検索候補を受け付ける。
【０１５４】
（全文検索機能における不一致照合処理）
つぎに、上述した全文検索実行部６２４における不一致照合処理について説明する。上述した全文検索の文字列の不一致照合方式は、圧縮・暗号化されたデータを伸長せず、検索キーワードを圧縮し不一致照合をおこなうこととしている。
【０１５５】
非圧縮データの文字列の照合は１バイト毎、もしくは文字単位に比較されるが、圧縮データでは、文字の境界の識別が困難であり、１ビット毎にシフトを行い比較することが必要である。ここでは、この点に着目して、圧縮化帳票ファイルに対して、ＣＰＵ１０１が得意であるバイト毎の操作をもとにした不一致照合処理を全文検索実行部６２４において実行する。
【０１５６】
図２３は、全文検索実行部６２４における不一致照合処理を示す説明図である。図２１に示した検索キーワード入力処理部２１０１により入力された検索キーワード２３０１は、検索キーワード圧縮部２１０２によりハフマン木１８１０を用いてｘビットの圧縮キーワード２３０２に圧縮され、レジスタＲａにセットされる。
【０１５７】
一方、圧縮化帳票ファイル抽出部２１０５によって抽出された特定圧縮化帳票ファイル（圧縮化帳票ファイル）２３１１内の圧縮ブロックデータ２３１２をレジスタＲｂにセットして、レジスタＲａにセットされた圧縮キーワード２３０２と比較する。具体的には、レジスタＲｂには、所定バイトずつシフトされた圧縮ブロックデータ２３１２がセットされ、順次圧縮キーワード２３０２と比較される。
【０１５８】
具体的には、圧縮キーワード２３０２と圧縮ブロックデータ２３１２とのＸＯＲ演算により比較結果２３２０を出力する。そして、比較結果２３２０における末尾８ビット（図２３中、網掛け表示）のビット列２３３０を抽出して、不一致照合をおこなう。
【０１５９】
図２４は、図２３に示した圧縮ブロックデータのシフト操作を示す図表である。このシフト操作では、圧縮キーワード２３０２の圧縮サイズ（圧縮キーワード長）に応じた照合間隔分シフトする。なお、圧縮キーワード長が１６ビット以上である場合、照合判定のビット長は８ビットとなるが、１１ビット以上１５ビット以下の場合、３〜７ビットとして、末尾のビットを調整する。また、圧縮キーワード長が１〜１０ビットの場合、圧縮形式の不一致照合はおこなわず、伸長後に検索キーワード２３０１を照合する。
【０１６０】
図２５は、照合予測テーブルの生成処理を示す説明図である。図２５において、レジスタＲａに圧縮キーワード２３０２をセットする。レジスタＲａ内の「＊」（末尾８ビット）は、圧縮キーワード２３０２が保持されていないビットである。図２５では、そして、レジスタＲａ内の圧縮キーワード２３０２を１ビットごとシフトして、シフトテーブル２５００を生成する。すなわち、圧縮キーワード２３０２はｎビットであるため、シフト数０ビットからｘ−８ビットまでのシフトビット列によりシフトテーブル２５００を生成する。
【０１６１】
そして、レジスタＲａにセットされている圧縮キーワード２３０２とシフトテーブル２５００とを照合予測する。具体的には、ＸＯＲ演算を施すことにより、ＸＯＲテーブル２５０１を生成する。そして、ＸＯＲテーブル２５０１の各シフトビット列において、「＊」が含まれていない１７ビット目から２４ビット目までの８ビット分の部分ビット列（図中網掛け表示）と対応するシフトビット列のシフト数とを連結して部分判定テーブル２５０２を生成する。
【０１６２】
つぎに、高速判定するための照合予測テーブル２５０３を生成する。照合予測テーブル２５０３は、部分判定テーブル２５０２を参照して、８ビットのアドレスに、シフト数を割り当てる。なお、シフト数が重複するビット列が出現した場合、当該ビット列には「６４」がセットされ、照合の際、部分判定テーブル２５０２を参照する。また、部分判定テーブル２５０２とは一致しないアドレスには、シフト数として「−１」を割り当てる。この照合予測テーブル２５０３と不一致照合用のビット列２３３０とを比較することで、不一致照合を実行する。
【０１６３】
図２６は、全ビット不一致照合処理を示す説明図である。図２６において、現在のシフト数を８で除算することにより、その除数および余りを算出する。そして、特定圧縮化帳票ファイル２３１１の現在のポインタに除数を加算することで、加算後のポインタに応じた圧縮ブロックデータ２３１２を再取得してレジスタＲｂにセットする。そして、セットされた圧縮ブロックデータ２３１２を余りの値分シフトする。
【０１６４】
また、圧縮キーワード２３０２をレジスタＲａにセットする。両レジスタＲａ、Ｒｂにおいて照合対象外となるビットのマスクをＯＦＦにし、両レジスタＲａ、Ｒｂを比較する。そして、全ビットが一致した場合に、その一致したアドレスを記録することとする。
【０１６５】
（数値検索実行部の詳細な機能的構成）
図２７は、検索実行部６２２内の数値検索実行部６２５の詳細な機能的構成を示すブロック図である。なお、図２１に示した構成と同一構成については同一符号を付し、その説明を省略する。
【０１６６】
図２７において、数値検索実行部６２５は、取得部２７０１と、数値圧縮部２７０２と、検出部２７０３と、中間数値群判断部２７０４と、出現マップ抽出部２７０５と、省略マップ設定部２７０６と、下限／上限マップ生成部２７０７と、特定部２７０８と、圧縮情報検索部２７０９と、境界条件判断部２７１０と、決定部２７１１と、を有している。
【０１６７】
まず、取得部２７０１は、任意の数値範囲の境界を規定する数値を取得する。ここで、数値範囲とは、境界を規定する数値と境界を規定する演算子とにより特定される区間である。境界を規定する数値とは、数値範囲の下限を規定する数値（下限数値）Ｎｘや上限を規定する数値（上限数値）Ｎｙである。また、境界を規定する演算子とは、「≦」、「＜」、「≧」、「＞」といった不等号を示す演算子であり、下限数値や上限数値の境界条件となる。
【０１６８】
これにより、任意の数値をＺとすると、取得部２７０１では、ユーザ入力や演算子の初期設定などにより、数値Ｎが取りうる以下の数値範囲を設定することができる。
・Ｎｘ＜Ｚ
・Ｎｘ≦Ｚ
・Ｎｙ＞Ｚ
・Ｎｙ≧Ｚ
・Ｎｘ＜Ｚ＜Ｎｙ
・Ｎｘ≦Ｚ＜Ｎｙ
・Ｎｘ＜Ｚ≦Ｎｙ
・Ｎｘ≦Ｚ≦Ｎｙ
【０１６９】
また、数値圧縮部２７０２は、取得部２７０１によって取得された数値を圧縮する。具体的には、数値であることを識別するフィーダの圧縮符号、全角・半角ビットの圧縮符号、カンマ有無ビットの圧縮符号、桁数の圧縮符号、各桁の数字の圧縮符号、小数点を含む場合は小数点の圧縮符号などからなる圧縮情報に圧縮する。なお、各圧縮化帳票ファイルＦｉ内の数値も同様な規則で圧縮されている。また、全角・半角ビットおよび圧縮符号、カンマ有無ビットは一律「０」（ＯＦＦ）としておく。
【０１７０】
また、検出部２７０３は、取得部２７０１によって取得された境界を規定する数値の桁数および先頭数字を検出する。たとえば、数値ＮがＮ＝１２，３４５である場合、桁数は「５」であり、先頭数字は「１」である。また、数値に小数が含まれている場合、小数点以下の桁数も計数する。たとえば、数値ＮがＮ＝１２，３４５．６７である場合、桁数は「７」であり、先頭数字は「１」である。また、先頭桁は最上位の１桁としたが、先頭からの連続する複数の上位桁としてもよい。たとえば、数値Ｎ（Ｎ＝１２，３４５）では、先頭数字は、「１２」としてもよい。
【０１７１】
また、中間数値群判断部２７０４は、取得部２７０１によって取得された数値範囲に中間数値群が含まれているか否かを判断する。ここで、中間数値群とは、数値範囲の下限数値を含む数値群（以下、「下限数値群」と称す）と、数値範囲の上限数値を含む数値群（以下、「上限数値群」と称す）との間に存在する数値群である。下限数値群と上限数値群との桁数が相違していれば、中間数値群が存在すると判断する。また、桁数が同一であっても、先頭数字が相違していれば、中間数値群が存在すると判断する。
【０１７２】
たとえば、数値範囲が『３，７００以上６，３００以下』である場合、下限数値群として４桁・先頭数字３の数値群と、上限数値群として４桁・先頭数字６の数値群とが検出される。この場合、中間数値群として、４桁・先頭数字４の数値群と４桁・先頭数字５の数値群とが数値範囲内に存在することとなる。
【０１７３】
また、数値範囲が『３，７００以上１６，３００以下』である場合、下限数値群として４桁・先頭数字３の数値群と、上限数値群として５桁・先頭数字１の数値群とが検出される。この場合、中間数値群として、４桁・先頭数字４の数値群〜４桁・先頭数字９の数値群が数値範囲内に存在することとなる。
【０１７４】
また、数値範囲が『３，７００以上４，３００以下』である場合、下限数値群として４桁・先頭数字３の数値群と、上限数値群として４桁・先頭数字４の数値群とが検出される。この場合、中間数値群は存在しない。
【０１７５】
同様に、数値範囲が『３，７００以上３，９００以下』である場合、下限数値群として４桁・先頭数字３の数値群と、上限数値群として４桁・先頭数字３の数値群とが検出される。すなわち、下限数値群および上限数値群が同一の数値群となる。この場合も、中間数値群は存在しない。
【０１７６】
また、出現マップ抽出部２７０５は、数値群の出現マップの中から、検出部２７０３によって検出された桁数および先頭数字に応じた出現マップを抽出する。たとえば、検出部２７０３により、桁数「５」で先頭数字「１」が検出された場合、５桁・先頭数字１の数値群に関する出現マップを抽出する。また、中間数値群が存在する場合、中間数値群に関する出現マップも抽出する。
【０１７７】
省略マップ設定部２７０６は、中間数値群に関する出現マップに基づいて、省略マップを設定する。省略マップとは、下限数値群に関する出現マップや上限数値群に関する出現マップとの論理積を演算するためのマップである。省略マップ自体は、数値群に関する出現マップ５０３と同様、帳票ファイルｆｉにおける存否をビットのＯＮ／ＯＦＦであらわしている。したがって、ＯＮになっているビットに対応する帳票ファイルｆｉには、中間数値群内の数値が存在していることをあらわしており、ＯＦＦになっているビットに対応する帳票ファイルｆｉには、中間数値群内の数値が存在しないことをあらわしている。
【０１７８】
省略マップは、具体的には、中間数値群に関する出現マップの論理和を演算することにより中間結果マップを算出し、この中間結果マップ内のビットを反転することにより、省略マップを設定する。なお、中間数値群に関する出現マップが１つしか存在しない場合、当該出現マップ内のビットを反転することにより省略マップを設定することができる。また、中間数値群に関する出現マップがない場合、全ビットＯＦＦの省略マップを設定する。
【０１７９】
また、下限／上限マップ生成部２７０７は、下限マップおよび上限マップを生成する。ここで、下限マップとは、下限数値群に関する出現マップ（下限数値群マップ）と省略マップとの論理積により得られるマップであり、上限マップとは、上限数値群に関する出現マップ（上限数値群マップ）と省略マップとの論理積により得られるマップである。この論理積演算により、下限マップは下限数値群内数値のみの存否をあらわすマップとなり、上限マップは上限数値群内数値のみの存否をあらわすマップとなる。
【０１８０】
また、特定部２７０８は、複数の圧縮化検索対象ファイルの中から、検出部２７０３によって検出された桁数および先頭数字を満たす数値群内の数値が存在する圧縮化検索対象ファイルを特定する。具体的には、下限マップ内のビットのうち、ＯＮになっているビットに対応する帳票ファイルｆｉを特定し、圧縮化帳票ファイル群Ｆの中から圧縮化帳票ファイルＦｉを抽出する。同様に、上限マップ内のビットのうち、ＯＮになっているビットに対応する帳票ファイルｆｉを特定し、圧縮化帳票ファイル群Ｆの中から圧縮化帳票ファイルＦｉを抽出する。
【０１８１】
また、圧縮情報検索部２７０９は、特定部２７０８によって特定された圧縮化帳票ファイルＦｉの中から、ファイル内数値に関する圧縮情報を検索する。圧縮化帳票ファイルｆｉ内においては、ファイル内数値は、フィーダの圧縮符号、全角・半角フラグの圧縮符号、カンマフラグの圧縮符号、桁数の圧縮符号、各桁の数字の圧縮符号などからなる圧縮情報により圧縮されている。圧縮情報検索部２７０９は、ファイル内数値に関する圧縮情報（たとえば、フィーダの圧縮符号のみ）を検出することで、ファイル内数値に関する圧縮情報を抽出する。
【０１８２】
また、境界条件判断部２７１０は、数値圧縮部２７０２によって圧縮された境界を規定する数値の圧縮情報と、圧縮情報検索部２７０９によって検索されたファイル内数値の圧縮情報とを比較することにより、ファイル内数値が境界を規定する数値との境界条件を充足しているか否かを判断する。境界条件とは、（境界を規定する数値）以上、以下、より大きい、より小さいといった境界を規定する数値との大小関係をあらわす条件である。
【０１８３】
たとえば、まず、桁数の数字の圧縮符号どうしを比較することにより、圧縮元となる数値どうしの大小を比較する。また、同一桁数である場合、先頭数字の圧縮符号どうしを比較することにより、圧縮元となる数値どうしの大小を比較する。また、先頭数字が同一である場合、順次、つぎの桁の数字どうしを比較することにより、圧縮元となる数値どうしの大小を比較する。これにより、ファイル内数値が境界を規定する数値との境界条件を充足しているか否かを判断することができる。
【０１８４】
また、全角・半角ビットおよび圧縮符号、カンマ有無ビットは一律「０」（ＯＦＦ）としてあるため、ファイル内数値の圧縮情報との比較の際、ファイル内数値の圧縮情報において、全角・半角ビットおよび圧縮符号、カンマ有無ビットを「０」（ＯＦＦ）に設定する。これにより、全角・半角の相違やカンマの有無を考慮することなく、数値検索をおこなうことができる。
【０１８５】
また、決定部２７１１は、境界条件判断部２７１０によって判断された判断結果に基づいて、特定部２７０８によって特定された圧縮化検索対象ファイルＦｉを、数値範囲内の数値を含むファイルに決定する。具体的には、ファイル内数値が境界を規定する数値との境界条件を充足した場合、特定部２７０８によって特定された圧縮化検索対象ファイルＦｉを、数値範囲内の数値を含むファイルに決定する。この決定処理では、出現マップと同様、帳票ファイルに対応するビット列であらわされる下限比較結果マップおよび上限比較結果マップを用いる。初期設定として全ビットをＯＦＦにしておく。
【０１８６】
そして、圧縮化帳票ファイルＦｉにおいて、ファイル内数値が下限数値との境界条件を充足した場合、下限比較結果マップ内の当該圧縮化帳票ファイルＦｉに対応するビットをＯＮにする。同様に、ファイル内数値が上限数値との境界条件を充足した場合、上限比較結果マップ内の当該圧縮化帳票ファイルＦｉに対応するビットをＯＮにする。
【０１８７】
そして、決定部２７１１は、最終的に得られた下限比較結果マップと上限比較結果マップと中間結果マップが存在する場合には中間結果マップとの論理和を演算することにより、数値範囲内の数値が存在する圧縮化帳票ファイルＦｉを決定することができる。
【０１８８】
なお、ファイル構成データ特定部２１０９は、決定部２７１１により数値範囲内の数値が存在する圧縮化帳票ファイルＦｉが決定された場合、境界を規定する数値との境界条件を満足したファイル内数値が存在する帳票データｇｊのページ番号ｊおよび当該帳票データｇｊが属する帳票ファイルｆｉのファイル番号ｉを特定する。
【０１８９】
（数値範囲の大小比較例）
つぎに、数値範囲の第１の大小比較例について説明する。ここでは、数値範囲を特定する下限の数値と上限の数値とが同一桁数で、かつ、先頭桁の数字が異なる場合を例にして説明する。図２８−１〜図２８−４は、数値範囲の大小比較例を示す説明図である。ここでは、例として、数値範囲『３，７００円以上６，３００円以下』が与えられたとして、当該数値範囲で指定された範囲の金額（数値）を含む圧縮化帳票ファイルＦｉを検索する例である。なお、数値範囲の下限数値の数値情報「３，７００円」および上限数値の数値情報「６，３００円」は、ともに図１６−３に示した圧縮処理により圧縮される。
【０１９０】
図２８−１において、まず、数値範囲『３，７００円以上６，３００円以下』について、中間数値群の出現マップを抽出する。具体的には、下限数値群の出現マップとなる４桁・先頭数字３マップＭ４３と上限数値群の出現マップとなる４桁・先頭数字６マップＭ４６との間の４桁・先頭数字４マップＭ４４および４桁・先頭数字５マップＭ４５を、中間数値群の出現マップとして抽出する。
【０１９１】
４桁・先頭数字３マップＭ４３は、４桁・先頭数字３の数値を有する帳票ファイルｆｉの存否をあらわしている。４桁・先頭数字４マップＭ４４は、４桁・先頭数字４の数値を有する帳票ファイルｆｉの存否をあらわしている。４桁・先頭数字５マップＭ４５は、４桁・先頭数字５の数値を有する帳票ファイルｆｉの存否をあらわしている。４桁・先頭数字６マップＭ４６は、４桁・先頭数字６の数値を有する帳票ファイルｆｉの存否をあらわしている。
【０１９２】
ここで、４桁・先頭数字３マップＭ４３および４桁・先頭数字６マップＭ４６は、大小比較に用いる出現マップである。また、４桁・先頭数字４マップＭ４４および４桁・先頭数字５マップＭ４５は、論理和をとって中間結果マップＭ０１とする。中間結果マップＭ０１は、数値４０００〜５９９９が存在する帳票ファイルｆｉの存否をあらわしている。そして、この中間結果マップＭ０１内のビットを反転させることで、省略マップＭ０２を得る。
【０１９３】
図２８−２では、図２８−１で得られた４桁・先頭数字３マップＭ４３と省略マップＭ０２との論理積をとることで、下限マップＭ０３を得る。省略マップＭ０２との論理積をとることで、中間数値群内の数値を有する帳票ファイルを除外することができる。
【０１９４】
この下限マップＭ０３において、ビットがＯＮである圧縮化帳票ファイルＦｉを抽出する。この圧縮化帳票ファイルＦｉを先頭からサーチしてフィーダ（図２８−２では「ｘ’Ｂ’」）の圧縮符号「１０１１」を探索する。フィーダの圧縮符号「１０１１」が探索されると、そのフィーダの圧縮符号「１０１１」を先頭とする圧縮情報２８０１を読み出す。この圧縮情報２８０１のうち、全角・半角ビットおよびカンマ有無ビットが「１」である場合、「０」に変換することでマスクする。この変換後の圧縮情報を比較対象圧縮情報２８１０と称す。
【０１９５】
そして、圧縮化帳票ファイルＦｉ内の数値情報「３，３００円」を圧縮した比較対象圧縮情報２８１０と、下限の数値情報「３，７００円」を圧縮処理した下限の圧縮情報２８０２とを比較する。まず、比較対象圧縮情報２８１０および下限の圧縮情報２８０２のフィーダ，桁数，先頭数字の圧縮符号どうしの一致比較をおこなう。この段階でいずれか一つの圧縮符号が不一致であれば、圧縮化帳票ファイルＦｉ内のつぎのフィーダをサーチする。
【０１９６】
一方、フィーダの圧縮符号が一致していれば、同種の数値情報であることがわかり、さらに桁数が一致していれば、比較対象圧縮情報２８１０は少なくとも４桁数字の数値の圧縮形式であることがわかり、さらに先頭数字が一致していれば、比較対象圧縮情報２８１０は少なくとも先頭数字が「３」の数値の圧縮形式であることがわかる。したがって、フィーダ，桁数，および先頭数字の圧縮符号がすべて一致した場合、同一桁における数字の圧縮符号の大小比較をおこなう。
【０１９７】
この例では、第２数字の圧縮符号を比較することで、比較対象圧縮情報２８０２のファイル内の数値情報「３，３００円」よりも下限数値の数値情報「３，７００円」が大きいことがわかる。この場合、下限比較結果マップＭ０４において、圧縮化帳票ファイルＦｉに対応するビットは「０」のままである。そして、圧縮化帳票ファイルＦｉ内のつぎのフィーダをサーチして、下限数値の数値情報「３，７００円」以上の数値情報がある場合、下限比較結果マップＭ０４において、圧縮化帳票ファイルＦｉに対応するビットを「１」とする。
【０１９８】
この比較処理を、下限マップＭ０３内においてビットが立っているすべての圧縮化帳票ファイルＦ０〜Ｆｎについておこなうことで、下限比較結果マップＭ０４を得ることができる。このように、下限マップＭ０３から４桁でかつ先頭数字が「３」である数値を含む圧縮化帳票ファイルＦｉを抽出することで、帳票ファイルｆｉを圧縮形式のまま検索することができる。
【０１９９】
図２８−３では、図２８−１で得られた４桁・先頭数字６マップＭ４６と省略マップＭ０２との論理積をとることで、上限マップＭ０５を得る。省略マップＭ０２との論理積をとることで、中間数値群内の数値を有する帳票ファイルを除外することができる。
【０２００】
この上限マップＭ０５において、ビットがＯＮである圧縮化帳票ファイルＦｉを抽出する。この圧縮化帳票ファイルＦｉを先頭からサーチしてフィーダ（図２８−３では「ｘ’Ｂ’」）の圧縮符号「１０１１」を探索する。フィーダの圧縮符号「１０１１」が探索されると、そのフィーダの圧縮符号「１０１１」を先頭とする圧縮情報２８０３を読み出す。この圧縮情報２８０３のうち、全角・半角ビットおよびカンマ有無ビットが「１」である場合、「０」に変換することでマスクする。この変換後の圧縮情報を比較対象圧縮情報２８３０と称す。
【０２０１】
そして、圧縮化帳票ファイルＦｉ内の数値情報「６，２００円」を圧縮した比較対象圧縮情報２８３０と、上限の数値情報「６，３００円」を圧縮処理した上限の圧縮情報２８０４とを比較する。まず、比較対象圧縮情報２８３０および上限の圧縮情報２８０４のフィーダ，桁数，先頭数字の圧縮符号どうしの一致比較をおこなう。この段階でいずれか一つの圧縮符号が不一致であれば、圧縮化帳票ファイルＦｉ内のつぎのフィーダをサーチする。
【０２０２】
一方、フィーダの圧縮符号が一致していれば、同種の数値情報であることがわかり、さらに桁数が一致していれば、比較対象圧縮情報２８３０は少なくとも４桁数字の数値の圧縮形式であることがわかり、さらに先頭数字が一致していれば、比較対象圧縮情報２８３０は少なくとも先頭数字が「３」の数値の圧縮形式であることがわかる。したがって、フィーダ，桁数，および先頭数字の圧縮符号がすべて一致した場合、同一桁における数字の圧縮符号の大小比較をおこなう。
【０２０３】
この例では、第２数字の圧縮符号どうしを比較することで、比較対象圧縮情報２８３０の数値情報「６，２００円」よりも上限数値の数値情報「６，３００円」が大きいことがわかる。この場合、上限比較結果マップＭ０６において、圧縮化帳票ファイルＦｉに対応するビットを「１」とする。
【０２０４】
この比較処理を、上限マップＭ０５内においてビットが立っているすべての圧縮化帳票ファイルＦｉについておこなうことで、上限比較結果マップＭ０６を得ることができる。このように、上限マップＭ０５から４桁でかつ先頭数字が「６」である数値を含む圧縮化帳票ファイルＦｉを抽出することで、帳票ファイルｆｉを圧縮形式のまま検索することができる。
【０２０５】
図２８−４では、下限比較結果マップＭ０４、中間結果マップＭ０１、および上限比較結果マップＭ０６の論理和をとることで、統合結果マップＭ０７を得ている。これにより、数値範囲『３，７００円以上６，３００円以下』内の数値情報を含む帳票ファイルｆｉを圧縮形式のまま特定することができる。
【０２０６】
なお、上述した図２８−１〜図２８−４の例では、数値範囲を特定する下限数値と上限数値とが同一桁数で、かつ、先頭桁の数字が異なる場合を例にして説明したが、上限の数値の桁数が大きい場合（または下限の数値の桁数が小さい場合）も同様に比較することができる。たとえば、数値範囲が『３，７００円以上６４，０００円以下』である場合、４桁先頭数字４マップ〜４桁先頭数字９マップと５桁先頭数字１マップ〜５桁先頭数字５マップまでを中間数値群の出現マップとして抽出すればよい。
【０２０７】
また、数値範囲が『３，７００円以上３，９００円以下』や『３，７００円以上４，５００円以下』など、中間数値群が存在しない場合は、中間結果マップＭ０１が存在しないため、省略マップＭ０２の全ビットをＯＦＦにする。そして、統合結果マップＭ０７を得る場合も中間結果マップＭ０１が存在しないため、下限比較結果マップＭ０４と上限比較結果マップＭ０６との論理和により統合結果マップＭ０７を演算する。
【０２０８】
（検索結果表示部６２３の詳細な機能的構成）
つぎに、図６に示した検索結果表示部６２３の詳細な機能的構成について説明する。図２９は、図６に示した検索結果表示部６２３の詳細な機能的構成を示すブロック図である。図２９において、検索結果表示部６２３は、読出し部２９０１と、ファイル伸長部２９０２と、ファイル表示部２９０３と、から構成されている。
【０２０９】
まず、読出し部２９０１は、検索候補選択部２１１１によって選択された検索候補である項目データを、圧縮化帳票ファイル群Ｆの圧縮化帳票ファイルＦｉから読み出す。また、ファイル伸長部２９０２は、読出し部２９０１によって読み出された項目データを、ハフマン木１８０１によって伸長する。ファイル表示部２９０３は、ファイル伸長部２９０２によって伸長された項目データを検索結果として表示する。
【０２１０】
（情報検索処理手順）
つぎに、この発明の実施の形態にかかる情報検索装置６００の情報検索処理手順について説明する。図３０は、この発明の実施の形態にかかる情報検索装置６００の情報検索処理手順を示すフローチャートである。図３０において、まず、数値・文字出現頻度管理データ生成部６１２により、数値・文字出現頻度管理データ生成処理を実行する（ステップＳ３００１）。
【０２１１】
そして、圧縮／暗号化部６１３により、圧縮／暗号化処理を実行する（ステップＳ３００２）。このあと、検索初期化部６２１により、検索初期化処理を実行する（ステップＳ３００３）。つぎに、検索実行部６２２により、検索処理を実行する（ステップＳ３００４）。
【０２１２】
最後に、検索結果表示部６２３により、検索結果表示処理を実行する（ステップＳ３００５）。なお、検索結果表示処理では、検索候補一覧から選択された検索候補（項目データ）を圧縮帳票ファイルＦｉから読み出して、ハフマン木１８１０にて伸長することにより、項目データの全文を検索結果として表示することができる。
【０２１３】
つぎに、図３０に示した数値・文字出現頻度管理データ生成処理（ステップＳ３００１）の詳細な処理手順について説明する。図３１は、図３０に示した数値・文字出現頻度管理データ生成処理（ステップＳ３００１）の詳細な処理手順を示すフローチャートである。図３１において、まず、初期化処理を実行する（ステップＳ３１０１）。具体的には、８，１６ビットの数値・文字データ、連字データ、バイナリデータの区点対応の集計領域を確保し、出現頻度と出現マップのセグメント等を初期化する。また、数値・文字データのコードをセットし、各種カウンタを初期化する。
【０２１４】
つぎに、数値・文字出現頻度集計処理を実行する（ステップＳ３１０２）。この数値・文字出現頻度集計処理の詳細な処理手順については後述する。この数値・文字出現頻度集計処理のあと、数値・文字出現頻度管理データ５００の領域確保とその領域の初期化を実行し（ステップＳ３１０３）、８，１６ビットの数値・文字データ、連字データ、バイナリデータの文字コードと出現頻度をセットする（ステップＳ３１０４）。
【０２１５】
そして、出現マップの各セグメントを連結し（ステップＳ３１０５）。連字領域の連字データを高出現頻度順にソートする（ステップＳ３１０６）ことで、２５６種の連字データを選択する。これにより、連字データの削減を図ることができる。
【０２１６】
つぎに、連字／外字置換をおこなうとともに、連字／外字置換テーブル６４０を生成する（ステップＳ３１０７）。具体的には、高出現頻度順に連字データを外字データに置換することにより、連字外字データと連字／外字置換テーブル６４０を生成する。
【０２１７】
そして、低出現頻度の連字データ、すなわち外字に置換されなかった連字データを単一文字データに分解し、該当する文字領域に割り振る補正をおこなう（ステップＳ３１０８）。すなわち、低出現頻度の連字データを表音文字データに分割し、当該文字データの頻度の加算と出現マップのＯＲ演算を実行する。
【０２１８】
このあと、数値・文字データを高出現頻度順にソートし（ステップＳ３１０９）、頻度０回の数値・文字データをカットして、連字外字データとバイナリデータとを結合し（ステップＳ３１１０）、この結合によって得られた数値・文字出現頻度管理データ５００をファイルに出力する（ステップＳ３１１１）。これにより、ステップＳ３００２に移行する。
【０２１９】
つぎに、上述した数値・文字出現頻度集計処理（ステップＳ３１０２）の詳細な処理手順について説明する。図３２−１は、上述した数値・文字出現頻度集計処理（ステップＳ３１０２）の詳細な処理手順を示すフローチャート（前半）である。図３２−１において、まず、先頭帳票ファイルｆ０をオープンする（ステップＳ３２０１）。
【０２２０】
つぎに、オープンされた帳票ファイルから順次データを抽出する。抽出されたデータがバイナリデータである場合（ステップＳ３２０２：Ｙｅｓ）、当該バイナリデータの出現頻度を加算し、当該バイナリデータの出現マップにおけるオープン中のファイルに対応するビットを「１」に設定し、さらに、バイトカウンタを加算する（ステップＳ３２０３）。そして、図３２−２に示すステップＳ３２１１に移行する。
【０２２１】
一方、ステップＳ３２０２において、抽出されたデータがバイナリデータではない場合（ステップＳ３２０２：Ｎｏ）、数値であるか否かを判定する（ステップＳ３２０４）。たとえば、数字のみからなる数字列であれば、数値と判定する。また、数字のほか「，」（カンマ）や「．」（小数点）が数字列に含まれている場合も、数値と判定する。
【０２２２】
そして、数値である場合（ステップＳ３２０４：Ｙｅｓ）、当該数値の出現頻度を加算し、当該数値の出現マップにおけるオープン中のファイルに対応するビットを「１」に設定し、さらに、バイトカウンタを加算する（ステップＳ３２０５）。そして、図３２−２に示すステップＳ３２１１に移行する。
【０２２３】
一方、ステップＳ３２０４において、抽出されたデータが数値ではない場合（ステップＳ３２０４：Ｎｏ）、連字データであるか否かを判定する（ステップＳ３２０６）。連字データである場合（ステップＳ３２０６：Ｙｅｓ）、当該連字データの出現頻度を加算し、当該連字データの出現マップにおけるオープン中のファイルに対応するビットを「１」に設定し、さらに、バイトカウンタを加算する（ステップＳ３２０７）。そして、図３２−２に示すステップＳ３２１１に移行する。
【０２２４】
一方、ステップＳ３２０６において、抽出されたデータが連字データでない場合（ステップＳ３２０６：Ｎｏ）、漢字データであるか否かを判定する（ステップＳ３２０８）。漢字データでない場合（ステップＳ３２０８：Ｎｏ）、当該データは表音文字データであるため、その表音文字データの出現頻度を加算し、当該表音文字データの出現マップにおけるオープン中のファイルに対応するビットを「１」に設定し、バイトカウンタを加算する（ステップＳ３２０９）。そして、図３２−２に示すステップＳ３２１１に移行する。
【０２２５】
一方、ステップＳ３２０８において、抽出されたデータが漢字データである場合（ステップＳ３２０８：Ｙｅｓ）、当該漢字データの出現頻度を加算し、当該漢字データの出現マップにおけるオープン中のファイルに対応するビットを「１」に設定し、バイトカウンタを加算する（ステップＳ３２１０）。そして、図３２−２に示すステップＳ３２１１に移行する。
【０２２６】
図３２−２は、数値・文字出現頻度集計処理（ステップＳ３２０２）の詳細な処理手順を示すフローチャート（後半）である。図３２−２において、出現マップのセグメントのセグメントカウンタを加算し（ステップＳ３２１１）、セグメント終了か否か、すなわちセグメントの集計が終了したか否かを判断する（ステップＳ３２１２）。セグメントの集計が終了した場合（ステップＳ３２１２：Ｙｅｓ）、出現マップのセグメントをファイルに追加出力し、セグメントカウンタをクリアする（ステップＳ３２１３）。そして、ステップＳ３２１４に移行する。
【０２２７】
一方、セグメントの集計が終了していない場合（ステップＳ３２１２：Ｎｏ）、またはステップＳ３２１３のあと、ブロック終了か否か、たとえば、集計した数値・文字データ数が４０００文字に到達したか否かを判断する（ステップＳ３２１４）。
【０２２８】
そして、ブロック終了した場合（ステップＳ３２１４：Ｙｅｓ）、当該ブロックデータを有する帳票ファイルｆｉのファイル番号ｉ、当該ブロックデータのブロック番号ｍ、オフセット、文字数、およびレングスからなるブロック情報を生成してファイルに追加出力するとともに、バイトカウンタをクリアする（ステップＳ３２１５）。そして、ステップＳ３２１６に移行する。
【０２２９】
一方、ブロック終了していない場合（ステップＳ３２１４：Ｎｏ）、またはステップＳ３２１５のあと、ファイル終了か否か、すなわち、現在オープンしている帳票ファイルｆｉの集計が終了したか否かを判断する（ステップＳ３２１６）。現在オープンしている帳票ファイルｆｉの集計が終了していない場合（ステップＳ３２１６：Ｎｏ）、図３２−１に示したステップＳ３２０２に戻って次のデータを抽出し、抽出したデータの種類を特定して、集計する（ステップＳ３２０２〜Ｓ３２１０）。
【０２３０】
一方、ステップＳ３２１６において、現在オープンしている帳票ファイルの集計が終了した場合（ステップＳ３２１６：Ｙｅｓ）、集計終了か否か、すなわち、現在オープンしている帳票ファイルｆｉをクローズする（ステップＳ３２１７）。このあと、すべての帳票ファイルｆ０〜ｆｎからの集計が終了したか否かを判断する（ステップＳ３２１８）。
【０２３１】
すべての帳票ファイルｆ０〜ｆｎの集計が終了していない場合（ステップＳ３２１８：Ｎｏ）、つぎのファイル番号ｉ（ｉ＝ｉ＋１）の帳票ファイルｆｉをオープンし（ステップＳ３２１９）、図３２−１に示したステップＳ３２０２に戻って次のデータを抽出し、抽出したデータの種類を特定して、集計する（ステップＳ３２０２〜Ｓ３２１０）。
【０２３２】
一方、ステップＳ３２１８において、すべての帳票ファイルｆ０〜ｆｎの集計が終了した場合（ステップＳ３２１８：Ｙｅｓ）、出現マップ５１０のセグメントをファイルに追加出力し（ステップＳ３２２０）、ステップＳ３２０３に移行することで一連の処理を終了する。
【０２３３】
つぎに、図３０に示した圧縮／暗号化処理（ステップＳ３００２）の詳細な処理手順について説明する。図３３は、図３０に示した圧縮／暗号化処理（ステップＳ３００２）の詳細な処理手順を示すフローチャートである。図３３において、まず、数字や小数点、フィーダ（以下、「数字等」と称す）の出現頻度の補正をおこなう（ステップＳ３３０１）。そして、その他の文字データの出現頻度を補正する（ステップＳ３３０２）。
【０２３４】
そして、出現頻度順に混合領域８１２の数値・文字データをソートする（ステップＳ３３０３）。つぎに、低出現頻度の数値・文字データを８ビットに分解し、該当するバイナリデータの出現頻度に加算する（ステップＳ３３０４）。そして、混合領域８１２の数値・文字データ、連字外字データ、バイナリデータを連結し、出現頻度順にソートする（ステップＳ３３０５）。
【０２３５】
このあと、ソートされた数値・文字データごとに、補正された出現頻度に基づいて生起確率を演算し（ステップＳ３３０６）、この生起確率に基づいて、８，１６ビットの数値・文字データに共通のハフマン木を生成する（ステップＳ３３０７）。
【０２３６】
そして、各帳票ファイルの圧縮処理を実行する（ステップＳ３３０８）。この圧縮処理の具体的な手順は図３３において後述する。そして、数値・文字出現頻度管理データ５００を暗号化する（ステップＳ３３０９）。具体的には、数値・文字出現頻度管理データ５００の暗号化領域（数値・文字データおよび出現頻度の領域）を、マスタキーを用いて排他的論理和（ＸＯＲ）により暗号化する。
【０２３７】
そして、連字／外字置換テーブル６４０を暗号化する（ステップＳ３３１０）。具体的には、連字／外字置換テーブル６４０の暗号化領域を、マスタキーを用いて排他的論理和（ＸＯＲ）により暗号化する。そして、検索初期化処理（ステップＳ３００３）に移行し、一連の処理を終了する。
【０２３８】
つぎに、図３３のステップＳ３３０８に示した圧縮処理の詳細な処理手順について説明する。図３４は、図３３のステップＳ３３０８に示した圧縮処理の詳細な処理手順を示すフローチャートである。まず、ファイル番号ｉをｉ＝０とし（ステップＳ３４０１）、帳票ファイルｆｉを、たとえば４０００文字ごとにブロック化する（ステップＳ３４０２）。つぎに、帳票ファイルｆｉ内のデータを順次読み込み、読み込んだデータがフィーダであるか否かを判断する（ステップＳ３４０３）。
【０２３９】
フィーダであると判断された場合（ステップＳ３４０３：Ｙｅｓ）、フィーダに続く連続する数字を数値として読み込んで（ステップＳ３４０４）、全角・半角、数値の桁数を検出する（ステップＳ３４０５）。そして、ハフマン木による数値圧縮を実行し（ステップＳ３４０６）、ステップＳ３４０８に移行する。
【０２４０】
一方、フィーダでないと判断された場合（ステップＳ３４０３：Ｎｏ）、当該データはその他の文字データであるため、ハフマン木を用いて文字データ圧縮を実行し（ステップＳ３４０７）、ステップＳ３４０８に移行する。
【０２４１】
そして、ステップＳ３４０８において、当該ブロックにおける圧縮が終了したか否かを判断する（ステップＳ３４０８）。圧縮が終了していない場合（ステップＳ３４０８：Ｎｏ）、ステップＳ３４０３に戻って、つぎのデータを読み込む。一方、圧縮終了である場合（ステップＳ３４０８：Ｙｅｓ）、未処理ブロックがあるか否かを判断する（ステップＳ３４０９）。
【０２４２】
未処理ブロックがある場合（ステップＳ３４０９：Ｙｅｓ）、当該未処理ブロックを読み込んで（ステップＳ３４１０）、ステップＳ３４０３に戻って、データの読み込みをおこなう。一方、未処理ブロックがない場合（ステップＳ３４０９：Ｎｏ）、ファイル番号ｉをインクリメントし（ステップＳ３４１１）、ｉ＞ｎか否かを判断する（ステップＳ３４１２）。
【０２４３】
ｉ＞ｎでない場合（ステップＳ３４１２：Ｎｏ）、ステップＳ３４０２に戻って、つぎの帳票ファイルｆｉをブロック化する。一方、ｉ＞ｎである場合（ステップＳ３４１２：Ｙｅｓ）、図３３に示したステップＳ３３０９に移行する。これにより、圧縮処理における一連の処理を終了する。
【０２４４】
つぎに、図３０に示した検索初期化処理（ステップＳ３００３）の詳細な処理手順について説明する。図３５は、図３０に示した検索初期化処理（ステップＳ３００３）の詳細な処理手順を示すフローチャートである。
【０２４５】
図３５において、まず、検索初期化処理の起動を待ち受け（ステップＳ３５０１：Ｎｏ）、起動した場合（ステップＳ３５０１：Ｙｅｓ）、圧縮／暗号化処理において暗号化された暗号化数値・文字出現頻度管理データ６５０を復号化する（ステップＳ３５０２）。具体的には、暗号化数値・文字出現頻度管理データ６５０の暗号化領域（数値・文字データおよび出現頻度の領域）を、暗号化したときのマスタキーを用いて排他的論理和（ＸＯＲ）により復号する。
【０２４６】
つぎに、暗号化連字／外字置換テーブル６６０を復号化する（ステップＳ３５０３）。具体的には、暗号化連字／外字置換テーブル６６０の暗号化領域を、暗号化したときのマスタキーを用いて排他的論理和（ＸＯＲ）により復号する。
【０２４７】
つぎに、圧縮／暗号化処理で示したステップＳ３４０１〜Ｓ３４０５までの処理と同様の処理を実行する。すなわち、高出現頻度順に数値・文字データをソートし（ステップＳ３５０４）、低出現頻度の数値・文字データを８ビットに分解し、該当するバイナリデータの出現頻度に加算する（ステップＳ３５０５）。
【０２４８】
そして、数値・文字データ、連字データ、バイナリデータを連結し、高出現頻度順にソートする（ステップＳ３５０６）。このあと、数値・文字データごとに、出現頻度に基づいて生起確率を演算し（ステップＳ３５０７）、この生起確率に基づいて、８，１６ビットの数値・文字データに共通のハフマン木を生成する（ステップＳ３５０８）。
【０２４９】
このあと、出現マップ５１０の設定処理を実行する（ステップＳ３５０９）。具体的には、第１の区点対応テーブルおよび第２の区点対応テーブルの領域確保、各文字データの出現順位の第１の区点対応テーブルへのセット、各数値データの出現順位の第２の区点対応テーブルへのセット、復号された数値・文字出現頻度管理データ５００の出現マップのメモリ展開、当該出現マップと第１の区点対応テーブルおよび第２の区点対応テーブルとのリンクを実行する。このあと、検索処理（ステップＳ３００４）に移行して、一連の処理を終了する。
【０２５０】
つぎに、図３０に示した検索処理（ステップＳ３００４）の詳細な処理手順について説明する。図３６は、図３０に示した検索処理（ステップＳ３００４）の詳細な処理手順を示すフローチャートである。検索初期化処理（ステップＳ３００３）のあと、図３６において、まず、検索モード画面の呼び出しをおこない（ステップＳ３６０１）、数値検索モードまたは文字検索モードの選択を待ち受ける（ステップＳ３６０２）。
【０２５１】
数値検索モードが選択された場合（ステップＳ３６０２：Ｙｅｓ）、図４０に示すステップＳ４００１に移行する。一方、文字検索モードが選択された場合（ステップＳ３６０２：Ｎｏ）、検索キーワードの入力を受け付ける（ステップＳ３６０３）。
【０２５２】
検索キーワードが複数でない場合（ステップＳ３６０４：Ｎｏ）、ステップＳ３６０６に移行する。一方、検索キーワードが複数である場合（ステップＳ３６０４：Ｙｅｓ）、各キーワードの文字列を連結して（ステップＳ３６０５）、ステップＳ３６０６に移行する。
【０２５３】
このあと、ステップＳ３６０６において、検索キーワード内に連字データがない場合（ステップＳ３６０６：Ｎｏ）、ステップＳ３６０８に移行する。一方、連字データがある場合（ステップＳ３６０６：Ｙｅｓ）、連字／外字置換テーブル６４０を用いて、その連字データを２文字の外字データに置換して（ステップＳ３６０７）、ステップＳ３６０８に移行する。
【０２５４】
このあと、ステップＳ３６０８において、検索キーワードを単一文字データに分解して、出現マップから各文字データの各帳票ファイルにおける存否ビット列を読み取る（ステップＳ３６０８）。そして、各文字データの存否ビット列の論理積により、圧縮化帳票ファイルを特定（絞込み）する（ステップＳ３６０９）。また、検索キーワードを検索初期化処理（ステップＳ３００３）において生成されたハフマン木で圧縮する（ステップＳ３６１０）。
【０２５５】
つぎに、照合予測テーブル生成処理（ステップＳ３６１１）を実行する。この照合予測テーブル生成処理の詳細な処理手順については図３７において後述する。照合予測テーブルを生成後、ファイルカウンタを初期化する（ステップＳ３６１２）。
【０２５６】
このあと、ステップＳ３６０９で特定された圧縮化帳票ファイル（以下、「特定圧縮化帳票ファイル」と称す。）をオープンし（ステップＳ３６１３）、オープンされた特定圧縮化帳票ファイルの圧縮ブロックデータごとに、圧縮キーワードとの不一致判定処理をおこなう（ステップＳ３６１４）。この不一致判定処理については図３８において後述する。
【０２５７】
この不一致判定処理において、すべての圧縮ブロックデータについて不一致であると判定された場合（ステップＳ３６１５：Ｙｅｓ）、ステップＳ３６１８に移行する。一方、１つでも一致すると判定された場合（ステップＳ３６１５：Ｎｏ）、当該一致すると判定された圧縮ブロックデータを、ハフマン木を用いて伸長する（ステップＳ３６１６）。そして、伸長されたブロックデータと検索キーワードとを比較し、検索キーワードに一致した項目データのファイル番号およびアンカーを記録して（ステップＳ３６１７）、ステップＳ３６１８に移行する。
【０２５８】
このあと、オープンしている特定圧縮化帳票ファイルをクローズし（ステップＳ３６１８）、ファイルカウンタを更新する（ステップＳ３６１９）。ファイルカウンタの更新により、未処理の特定圧縮化帳票ファイルがあると判断された場合（ステップＳ３６２０：Ｙｅｓ）、ステップＳ３６１３に移行して、つぎの特定圧縮化帳票ファイルをオープンする。
【０２５９】
一方、未処理の特定圧縮化帳票ファイルがないと判断された場合（ステップＳ３６２０：Ｎｏ）、検索候補一覧を表示し（ステップＳ３６２１）、ユーザからの選択入力を待ち受ける（ステップＳ３６２２）ことにより、検索結果表示処理（ステップＳ３００５）に移行して、一連の処理を終了する。
【０２６０】
このように、コンテンツが複数の帳票ファイルから構成されていても、単一の圧縮情報（数値・文字出現頻度管理データ５００）により共通化することができる。
【０２６１】
また、サイズが大きい帳票ファイルでは文字データ数に応じてブロック化をおこない、８ビットコード、１６ビットコードまたは３２ビットコードの文字データが混在する検索対象ファイルについてのハフマン圧縮技術を確立することができる。
【０２６２】
また、サイズ（容量）ではなく、文字データ数に応じたブロック化をおこない、帳票ファイル内の各文字データの出現頻度の集計時に、文字データの種類（８ビットコード、１６ビットコードまたは３２ビットコード）を判定し、出現頻度を集計することができる。
【０２６３】
また、英和辞典での英字データなど出現頻度の高い８ビットコードの文字データに対しては、０ｘ’ＦＦ＊＊’など１６ビットコードの文字データに置換し、ハフマン圧縮をおこなう。これにより、低出現率の８ビットコードの文字データと区別して、効率的な圧縮をおこなうことができる。
【０２６４】
また、ポインタなどの非文字データはランダムな値であるため、８ビットコードに置換する。また、ハフマン木のサイズ縮小のため、出現頻度の低い１６ビットコードの文字データを分割し、８ビットコードの文字データに置換する。これにより、効率的な圧縮をおこなうことができる。
【０２６５】
また、圧縮のためのハフマン木の生成元である数値・文字出現頻度管理データ５００またはその一部を暗号化する。すなわち、コンテンツや、コンテンツ圧縮のためのハフマン木を直接暗号化せず、ハフマン木の生成元を暗号化しているため、セキュリティの向上を図ることができる。
【０２６６】
また、数値・文字出現頻度管理データ５００をもとに、全文検索の高速化を図ることができる。また、連続する表音文字データの出現頻度の高い２文字の連字データを外字データに置換した後、コンテンツ圧縮をおこなっているため、圧縮率の向上を図ることができる。
【０２６７】
また、連字データにより、オープン／クローズするファイル数を削減することができ、文字列の比較領域の縮小により全文検索の高速化を図ることができる。さらに、全文検索は伸長後に外字データのままで文字列比較を行うことで、さらに検索速度の向上を図ることができる。
【０２６８】
（照合予測テーブル生成処理手順）
つぎに、上述した照合予測テーブル生成処理（ステップＳ３６１１）について詳細に説明する。図３７は、照合予測テーブル生成処理手順を示すフローチャートである。図３７において、まず、圧縮キーワード２３０２の総シフト数を演算する（ステップＳ３７０１）。具体的には、圧縮キーワード長とレジスタＲａのビット長とから圧縮キーワード２３０２が保持されていないビット長（図２５の「＊」）を総シフト数として算出する。
【０２６９】
つぎに、図２４に示したシフト操作の図表を参照して、照合間隔（バイト数）を演算する（ステップＳ３７０２）。そして、圧縮キーワード２３０２を、上記総シフト分１ビットずつシフトして、シフトテーブル２５００を作成する（ステップＳ３７０３）。このシフトテーブル２５００の各ビット列と圧縮キーワード２３０２とをＸＯＲ演算してＸＯＲテーブル２５０１を作成する（ステップＳ３７０４）。
【０２７０】
そして、作成されたＸＯＲテーブル２５０１とＸＯＲテーブル２５０１を構成する各ビット列のシフト数からなる部分判定テーブル２５０２を作成する（ステップＳ３７０５）。そして、部分判定テーブル２５０２を用いて、照合予測テーブル２５０３を作成し（ステップＳ３７０６）、ステップＳ３６１２へ移行する。
【０２７１】
（圧縮ブロックデータと圧縮キーワードとの不一致判定処理手順）
つぎに、上述した圧縮ブロックデータと圧縮キーワードとの不一致判定処理（ステップＳ３６１４）について説明する。図３８は、圧縮ブロックデータと圧縮キーワードとの不一致判定処理手順を示すフローチャートである。図３８において、まず、圧縮キーワード２３０２をレジスタＲａにセットする（ステップＳ３８０１）。
【０２７２】
つぎに、圧縮ブロックデータ２３１２をシフトさせる照合間隔（バイト数）をセットし（ステップＳ３８０２）、特定圧縮化帳票ファイル２３１１のポインタを初期化する（ステップＳ３８０３）。このあと、現在のポインタにしたがって、圧縮ブロックデータ２３１２をレジスタＲｂにセットする（ステップＳ３８０４）。そして、レジスタＲａとレジスタＲｂとをＸＯＲ演算して（ステップＳ３８０５）、下位８ビットのビット列２３３０を抽出する（ステップＳ３８０６）。
【０２７３】
つぎに、抽出された下位８ビットのビット列２３３０と照合予測テーブル２５０３とを照合して、照合予測テーブル２５０３内のビット列のうち、下位８ビットのビット列２３３０と一致するビット列のシフト数を検出し、検出されたシフト数が「−１」であるか否か、すなわち不一致であるか否かを判断する（ステップＳ３８０７）。
【０２７４】
そして、シフト数が「−１」である場合（ステップＳ３８０７：Ｙｅｓ）、特定圧縮化帳票ファイル２３１１のポインタを照合間隔分加算する（ステップＳ３８０８）。そして、圧縮ブロックデータ２３１２がないか否かを判断する（ステップＳ３８０９）。圧縮ブロックデータ２３１２がある場合（ステップＳ３８０９：Ｎｏ）、ステップＳ３８０４に戻る。一方、圧縮ブロックデータ２３１２がない場合（ステップＳ３８０９：Ｙｅｓ）、ステップＳ３６１５に移行する。このステップＳ３８０４〜ステップＳ３８０９：Ｎｏのループにより、不一致であることを高速で照合することができ、検索速度の高速化を実現することができる。
【０２７５】
また、ステップＳ３８０７において、シフト数が「−１」でない場合（ステップＳ３８０７：Ｎｏ）、シフト数が０〜６３である場合（ステップＳ３８１０：０〜６３）、すなわち、部分一致となる場合、当該シフト数を取得して（ステップＳ３８１１）、全ビット不一致照合処理を実行する（ステップＳ３８１２）。全ビット不一致照合処理（ステップＳ３８１２）については後述する。このあと、ステップＳ３８０８に移行する。
【０２７６】
また、ステップＳ３８１０において、シフト数が６４である場合（ステップＳ３８１０：６４）、すなわち、重複部分一致となる場合、部分判定テーブル２５０２のポインタを初期化し（ステップＳ３８１３）、現在のポインタに対応する部分判定テーブル２５０２のＸＯＲ結果を取得する（ステップＳ３８１４）。そして、対応するビット列と、現在のポインタに対応する部分判定テーブル２５０２のＸＯＲ結果とが一致するか否かを判断する（ステップＳ３８１５）。不一致の場合（ステップＳ３８１５：Ｎｏ）、ステップＳ３８１８に移行する。
【０２７７】
一方、一致する場合（ステップＳ３８１５：Ｙｅｓ）、そのＸＯＲ結果に対応するシフト数を部分判定テーブル２５０２から取得して（ステップＳ３８１６）、全ビット不一致照合処理を実行する（ステップＳ３８１７）。この全ビット不一致照合処理（ステップＳ３８１７）は、全ビット不一致照合処理（ステップＳ３８１２）と同一であるため後述する。
【０２７８】
そして、全ビット不一致照合処理（ステップＳ３８１７）のあと、部分判定テーブル２５０２のポインタを加算する（ステップＳ３８１８）。部分判定テーブル２５０２の現在のポインタが最終ポインタでない場合（ステップＳ３８１９：Ｎｏ）、ステップＳ３８１４に戻る。一方、部分判定テーブル２５０２の現在のポインタが最終ポインタである場合（ステップＳ３８１９：Ｙｅｓ）、ステップＳ３８０８に移行する。
【０２７９】
（全ビット不一致照合処理手順）
つぎに、上述した全ビット不一致照合処理（ステップＳ３８１２およびステップＳ３８１７）について詳細に説明する。図３９は、全ビット不一致照合処理（ステップＳ３８１２およびステップＳ３８１７）を示すフローチャートである。図３９において、シフト数を８で除算することにより、その除数および余りを取得する（ステップＳ３９０１）。
【０２８０】
つぎに、特定圧縮化帳票ファイル２３１１の現在のポインタに除数を加算し（ステップＳ３９０２）、圧縮ブロックデータ２３１２をレジスタＲｂにセットする（ステップＳ３９０３）。そして、セットされた圧縮ブロックデータ２３１２を余りの値分シフトする（ステップＳ３９０４）。
【０２８１】
つぎに、圧縮キーワード２３０２をレジスタＲａにセットし（ステップＳ３９０５）、両レジスタＲａ、Ｒｂにおいて照合対象外となるビットのマスクをＯＦＦにする（ステップＳ３９０６）。そして、全ビットが一致する場合（ステップＳ３９０７：Ｙｅｓ）、一致したアドレスを記録し（ステップＳ３９０８）、ステップＳ３８０８（またはＳ３８１７）に移行する。一方、全ビットが一致しない場合（ステップＳ３９０７：Ｎｏ）、ステップＳ３８０８（またはステップＳ３８１７）に移行する。
【０２８２】
これにより、特定圧縮化帳票ファイル２３１１に対して、コンピュータのＣＰＵ１０１が得意であるバイト毎の操作をもとにした不一致照合の方式を実現することができる。すなわち、ビット毎の照合予測を目的に、入力された検索キーワード２３０１を圧縮した圧縮キーワード２３０２とその圧縮キーワード２３０２を１ビット毎シフトしたデータの集合であるシフトテーブル２５００とのＸＯＲ演算をおこない、その演算結果をもとに不一致照合をおこなう。そして、圧縮キーワード長に応じて、特定圧縮化帳票ファイル２３１１との照合間隔を長くすることにより不一致照合の高速化を図ることができる。
【０２８３】
（数値検索モードにおける数値検索実行処理手順）
つぎに、この発明の実施の形態にかかる数値検索モードにおける数値検索実行処理手順について説明する。図４０は、この発明の実施の形態にかかる数値検索モードにおける数値検索実行処理手順を示すフローチャートである。
【０２８４】
図３６におけるステップＳ３６０２：Ｙｅｓのあと、取得部２７０１により数値範囲を取得する（ステップＳ４００１）。つぎに、検出部２７０３により、数値範囲の境界を規定する数値（下限数値、上限数値）の桁数および先頭数字を検出する（ステップＳ４００２）。そして、数値圧縮部２７０２により、下限数値および上限数値を圧縮する（ステップＳ４００３）。
【０２８５】
このあと、出現マップ抽出部２７０５により、出現マップ５１０から下限数値群〜上限数値群の出現マップを抽出する（ステップＳ４００４）。そして、中間数値群判断部２７０４により、中間数値群があるか否かを判断する（ステップＳ４００５）。中間数値群があると判断された場合（ステップＳ４００５：Ｙｅｓ）、省略マップ設定部２７０６により、中間数値群の出現マップの論理和をとることにより、中間結果マップを生成し（ステップＳ４００６）、中間結果マップ内の全ビットを反転させて省略マップに変換する（ステップＳ４００７）。
【０２８６】
一方、中間数値群がないと判断された場合（ステップＳ４００５：Ｎｏ）、省略マップを初期化する（ステップＳ４００８）。すなわち、帳票ファイルｆ０〜ｆｎに対応するビット列をすべてＯＦＦにすることで、全ビット「０」の省略マップを得る。そして、ステップＳ４００９に移行する。
【０２８７】
このあと、下限特定／比較処理（ステップＳ４００９）および上限特定／比較処理（ステップＳ４０１０）を実行する。下限特定／比較処理（ステップＳ４００９）および上限特定／比較処理（ステップＳ４０１０）の詳細な処理手順については後述する。
【０２８８】
そして、決定部２７１１により、数値範囲内の数値が存在する圧縮化帳票ファイルＦｉを決定する（ステップＳ４０１１）。このあと、ファイル構成データ特定部２１０９により、数値範囲内の数値が存在する圧縮化帳票ファイルＦｉのページリストを特定し（ステップＳ４０１２）、図３６に示したステップＳ３６２１に移行する。これにより、数値検索実行処理の一連の手順を終了する。
【０２８９】
（下限特定／比較処理手順）
つぎに、図４０に示した下限特定／比較処理の詳細な処理手順について説明する。図４１は、図４０に示した下限特定／比較処理手順を示すフローチャートである。図４１においては、図２８−１〜図２８−４に示した大小比較例を参照しながら説明する。
【０２９０】
まず、図２８−２で示したように、下限数値群マップ（４桁先頭数字３マップＭ４３）と省略マップＭ０２との論理積演算をおこなうことにより、下限マップＭ０３を得る（ステップＳ４１０１）。つぎに、ファイル番号ｉをｉ＝０とし、下限比較結果マップＭ０４を初期化（全ビットＯＦＦ）する（ステップＳ４１０２）。
【０２９１】
そして、下限マップＭ０３中、ｉ番目のビットがＯＮであるか否かを判断する（ステップＳ４１０３）。ビットがＯＦＦである場合（ステップＳ４１０３：Ｎｏ）、ステップＳ４１１０に移行する。
【０２９２】
一方、ビットがＯＮである場合（ステップＳ４１０３：Ｙｅｓ）、圧縮化帳票ファイルＦの中から圧縮化帳票ファイルＦｉを抽出する（ステップＳ４１０４）。このあと、圧縮化帳票ファイルＦｉの中に、ファイル内数値の圧縮情報（図２８−２では圧縮情報２８０１）があるか否かを判断する（ステップＳ４１０５）。
【０２９３】
圧縮情報がある場合（ステップＳ４１０５：Ｙｅｓ）、下限数値照合処理を実行する（ステップＳ４１０６）。この下限数値照合処理については図４２で後述する。そして、下限数値照合処理による照合結果により、下限数値の境界条件を充足しているか否かを判断する（ステップＳ４１０７）。
【０２９４】
充足していない場合（ステップＳ４１０７：Ｎｏ）、ステップＳ４１０５に戻る。一方、境界条件を充足している場合（ステップＳ４１０７：Ｙｅｓ）、下限比較結果マップＭ０４中、ｉ番目のビットがＯＦＦのままか否かを判断する（ステップＳ４１０８）。すでにＯＮになっている場合（ステップＳ４１０８：Ｎｏ）、ステップＳ４１０５に移行する。
【０２９５】
一方、ビットがＯＦＦである場合（ステップＳ４１０８：Ｙｅｓ）、そのｉ番目のビットをＯＦＦからＯＮにして（ステップＳ４１０９）、ステップＳ４１０５に戻る。また、ステップＳ４１０５において、未照合のファイル内数値の圧縮情報がない場合（ステップＳ４１０５：Ｎｏ）、ステップＳ４１１０に移行する。ステップＳ４１１０では、ファイル番号ｉを１つインクリメントする。そして、ｉ＞ｎであるか否かを判断する（ステップＳ４１１１）。
【０２９６】
ｉ＞ｎでない場合（ステップＳ４１１１：Ｎｏ）、ステップＳ４１０３に戻る。一方、ｉ＞ｎである場合（ステップＳ４１１１：Ｙｅｓ）、図４０で示したステップＳ４０１１に移行する。これにより、下限特定／比較処理の一連の手順を終了する。
【０２９７】
（下限数値照合処理手順）
つぎに、図４１に示した下限数値照合処理の詳細な処理手順について説明する。図４２は、下限数値照合処理手順を示すフローチャートである。図４２において、下限数値の圧縮情報内の全角・半角ビットおよびカンマ有無ビットと、ファイル内数値の圧縮情報内の全角・半角ビットおよびカンマ有無ビットとをＯＦＦにする（ステップＳ４２０１）。
【０２９８】
そして、圧縮情報どうしを比較してフィーダが一致するか否かを判断する（ステップＳ４２０１）。不一致である場合（ステップＳ４２０２：Ｎｏ）、ステップＳ４１０７に移行する。一方、フィーダが一致した場合（ステップＳ４２０２：Ｙｅｓ）、桁数が一致するか否かを判断する（ステップＳ４２０３）。
【０２９９】
桁数が不一致である場合（ステップＳ４２０３：Ｎｏ）、ステップＳ４１０７に移行する。一方、桁数も一致する場合（ステップＳ４２０３：Ｙｅｓ）、桁数カウンタＮをＮ＝Ｎmaxに設定する（ステップＳ４２０４）。Ｎmaxは下限数値およびファイル内数値の桁数である。
【０３００】
そして、ファイル内数値のＮ桁目の数字が下限数値のＮ桁目の数字以上であるか否かを判断する（ステップＳ４２０５）。ここで、判断基準として下限数値のＮ桁目の数字以上としたのは、数値範囲における下限数値の境界条件が「≦」であるからであり、当該境界条件が「＜」である場合、ファイル内数値のＮ桁目の数字が下限数値のＮ桁目の数字よりも大きいか否かを判断することとなる。
【０３０１】
そして、下限数値のＮ桁目の数字以上でない場合（ステップＳ４２０５：Ｎｏ）、ステップＳ４１０７に移行する。一方、下限数値のＮ桁目の数字以上である場合（ステップＳ４２０５：Ｙｅｓ）、桁数カウンタＮを１つデクリメントし（ステップＳ４２０６）、桁数カウンタＮがＮ＜０であるか否かを判断する（ステップＳ４２０７）。Ｎ＜０でない場合（ステップＳ４２０７：Ｎｏ）、下限数値の圧縮情報とファイル内数値の圧縮情報のうちいずれか一方にだけ、Ｎ−１桁目の数字の圧縮符号とＮ桁目の数字の圧縮符号との間に小数点の圧縮符号があるか否かを判断する（ステップＳ４２０８）。
【０３０２】
いずれか一方にだけＮ−１桁目の数字の圧縮符号とＮ桁目の数字の圧縮符号との間に小数点の圧縮符号がない場合（ステップＳ４２０８：Ｎｏ）、すなわち、ともに小数点の圧縮符号があるか、いずれにも小数点の圧縮符号がない場合、ステップＳ４２０５に戻る。
【０３０３】
一方、いずれか一方にだけＮ−１桁目の数字の圧縮符号とＮ桁目の数字の圧縮符号との間に小数点の圧縮符号がある場合（ステップＳ４２０８：Ｙｅｓ）、ステップＳ４１０７に移行する。
【０３０４】
また、ステップＳ４２０７において、Ｎ＜０である場合（ステップＳ４２０７：Ｙｅｓ）、ステップＳ４１０７に移行する。これにより、下限数値照合処理の一連の手順を終了する。
【０３０５】
そして、図４１に示したステップＳ４１０７では、ステップＳ４２０７でＮ＜０である場合（ステップＳ４２０７：Ｙｅｓ）、下限数値の境界条件を充足していると判断し、一方、ステップＳ４２０２、ステップＳ４２０３、ステップＳ４２０５またはステップＳ４２０８でＮｏと判断された場合、下限数値の境界条件を充足していないと判断する。
【０３０６】
（上限特定／比較処理手順）
つぎに、図４０に示した上限特定／比較処理の詳細な処理手順について説明する。図４３は、図４０に示した上限特定／比較処理手順を示すフローチャートである。図４３においては、図２８−１〜図２８−４に示した大小比較例を参照しながら説明する。
【０３０７】
まず、図２８−２で示したように、上限数値群マップ（４桁先頭数字６マップＭ４６）と省略マップＭ０２との論理積演算をおこなうことにより、上限マップＭ０５を得る（ステップＳ４３０１）。つぎに、ファイル番号ｉをｉ＝０とし、上限比較結果マップＭ０６を初期化（全ビットＯＦＦ）する（ステップＳ４３０２）。
【０３０８】
そして、上限マップＭ０５中、ｉ番目のビットがＯＮであるか否かを判断する（ステップＳ４３０３）。ビットがＯＦＦである場合（ステップＳ４３０３：Ｎｏ）、ステップＳ４３１０に移行する。
【０３０９】
一方、ビットがＯＮである場合（ステップＳ４３０３：Ｙｅｓ）、圧縮化帳票ファイルＦの中から圧縮化帳票ファイルＦｉを抽出する（ステップＳ４３０４）。このあと、圧縮化帳票ファイルＦｉの中に、ファイル内数値の圧縮情報（図２８−３では圧縮情報２８０３）があるか否かを判断する（ステップＳ４３０５）。
【０３１０】
圧縮情報がある場合（ステップＳ４３０５：Ｙｅｓ）、上限数値照合処理を実行する（ステップＳ４３０６）。この上限数値照合処理については図４４で後述する。そして、上限数値照合処理による照合結果により、上限数値の境界条件を充足しているか否かを判断する（ステップＳ４３０７）。
【０３１１】
充足していない場合（ステップＳ４３０７：Ｎｏ）、ステップＳ４３０５に戻る。一方、境界条件を充足している場合（ステップＳ４３０７：Ｙｅｓ）、上限比較結果マップＭ０６中、ｉ番目のビットがＯＦＦのままか否かを判断する（ステップＳ４３０８）。すでにＯＮになっている場合（ステップＳ４３０８：Ｎｏ）、ステップＳ４３０５に移行する。
【０３１２】
一方、ビットがＯＦＦである場合（ステップＳ４３０８：Ｙｅｓ）、そのｉ番目のビットをＯＦＦからＯＮにして（ステップＳ４３０９）、ステップＳ４３０５に戻る。また、ステップＳ４３０５において、未照合のファイル内数値の圧縮情報がない場合（ステップＳ４３０５：Ｎｏ）、ステップＳ４３１０に移行する。ステップＳ４３１０では、ファイル番号ｉを１つインクリメントする（ステップＳ４３１０）。そして、ｉ＞ｎであるか否かを判断する（ステップＳ４３１１）。
【０３１３】
ｉ＞ｎでない場合（ステップＳ４３１１：Ｎｏ）、ステップＳ４３０３に戻る。一方、ｉ＞ｎである場合（ステップＳ４３１１：Ｙｅｓ）、図４０で示したステップＳ４０１１に移行する。これにより、上限特定／比較処理の一連の手順を終了する。
【０３１４】
（上限数値照合処理手順）
つぎに、図４３に示した上限数値照合処理の詳細な処理手順について説明する。図４４は、上限数値照合処理手順を示すフローチャートである。図４４において、上限数値の圧縮情報内の全角・半角ビットおよびカンマ有無ビットと、ファイル内数値の圧縮情報内の全角・半角ビットおよびカンマ有無ビットとをＯＦＦにする（ステップＳ４４０１）。
【０３１５】
そして、圧縮情報どうしを比較してフィーダが一致するか否かを判断する（ステップＳ４４０２）。不一致である場合（ステップＳ４４０２：Ｎｏ）、ステップＳ４３０７に移行する。一方、フィーダが一致した場合（ステップＳ４４０２：Ｙｅｓ）、桁数が一致するか否かを判断する（ステップＳ４４０３）。
【０３１６】
桁数が不一致である場合（ステップＳ４４０３：Ｎｏ）、ステップＳ４３０７に移行する。一方、桁数も一致する場合（ステップＳ４４０３：Ｙｅｓ）、桁数カウンタＮをＮ＝Ｎmaxに設定する（ステップＳ４４０４）。Ｎmaxは上限数値およびファイル内数値の桁数である。
【０３１７】
そして、ファイル内数値のＮ桁目の数字が上限数値のＮ桁目の数字以下であるか否かを判断する（ステップＳ４４０５）。ここで、判断基準として「上限数値のＮ桁目の数字以下」としたのは、数値範囲における上限数値の境界条件が「≧」であるからであり、当該境界条件が「＞」である場合、ファイル内数値のＮ桁目の数字が上限数値のＮ桁目の数字よりも小さいか否かを判断することとなる。
【０３１８】
そして、上限数値のＮ桁目の数字以下でない場合（ステップＳ４４０５：Ｎｏ）、ステップＳ４３０７に移行する。一方、上限数値のＮ桁目の数字以下である場合（ステップＳ４４０５：Ｙｅｓ）、桁数カウンタＮを１つデクリメントし（ステップＳ４４０６）、桁数カウンタＮがＮ＜０であるか否かを判断する（ステップＳ４４０７）。Ｎ＜０でない場合（ステップＳ４４０７：Ｎｏ）、上限数値の圧縮情報とファイル内数値の圧縮情報のうちいずれか一方にだけ、Ｎ−１桁目の数字の圧縮符号とＮ桁目の数字の圧縮符号との間に小数点の圧縮符号があるか否かを判断する（ステップＳ４４０８）。
【０３１９】
いずれか一方にだけＮ−１桁目の数字の圧縮符号とＮ桁目の数字の圧縮符号との間に小数点の圧縮符号がない場合（ステップＳ４４０８：Ｎｏ）、すなわち、ともに小数点の圧縮符号があるか、いずれにも小数点の圧縮符号がない場合、ステップＳ４４０５に戻る。
【０３２０】
一方、いずれか一方にだけＮ−１桁目の数字の圧縮符号とＮ桁目の数字の圧縮符号との間に小数点の圧縮符号がある場合（ステップＳ４４０８：Ｙｅｓ）、ステップＳ４３０７に移行する。
【０３２１】
また、ステップＳ４４０７において、Ｎ＜０である場合（ステップＳ４４０７：Ｙｅｓ）、ステップＳ４３０７に移行する。これにより、上限数値照合処理の一連の手順を終了する。
【０３２２】
そして、図４３に示したステップＳ４３０７では、ステップＳ４４０７でＮ＜０である場合（ステップＳ４４０７：Ｙｅｓ）、上限数値の境界条件を充足していると判断し、一方、ステップＳ４４０２、ステップＳ４４０３、ステップＳ４４０５またはステップＳ４４０８でＮｏと判断された場合、上限数値の境界条件を充足していないと判断する。
【０３２３】
以上のことから、この発明の実施の形態によれば、中間数値群を検出して省略マップＭ０２に反映させているため、中間数値群の出現マップにより特定される圧縮化帳票ファイルに対して数値範囲内の数値の一致照合をするまでもなく、数値範囲内の数値の有無を検出することができる。
【０３２４】
また、下限数値群や上限数値群についてのみ数値の一致照合をおこなうが、ファイル内数値はフィーダに関連付けられているため、圧縮化帳票ファイルＦｉの中から数値情報のみを高速に検索することができる。また、数値の圧縮情報どうしで一致照合しているため、フィーダや桁数の圧縮符号どうしの一致照合のみで大小比較をおこなうことができ、高精度な検索を高速でおこなうことができる。
【０３２５】
また、数値・文字出現頻度管理データ５００において、数字等の出現頻度を補正することにより、数値の一致照合や伸長の高速化を図ることができる。特に、検索対象ファイルに数値データと文字データが混在する場合に、数値の一致照合や伸長の高速化を図ることができる。
【０３２６】
このように、この発明の実施の形態によれば、数値範囲内の数値が存在するファイルを圧縮したまま特定することにより、数値範囲検索の高速化および高精度化を図ることができるという効果を奏する。
【０３２７】
（付記１）任意の数値範囲の境界を規定する数値を取得させる取得工程と、
前記取得工程によって取得された境界を規定する数値の桁数および先頭数字を検出させる検出工程と、
桁数および先頭数字を満たす数値群内の数値の存否を検索対象ファイルごとにあらわしたビット列の集合の中から、前記検出工程によって検出された桁数および先頭数字を満たす数値群内の数値の存否を前記検索対象ファイルごとにあらわしたビット列を抽出させるビット列抽出工程と、
前記境界を規定する一方の数値の桁数および先頭数字を満たす一方の数値群と、前記境界を規定する他方の数値の桁数および先頭数字を満たす他方の数値群との間に、中間の数値群が存在するか否かを判断させる中間数値群判断工程と、
前記中間数値群判断工程によって判断された判断結果に基づいて、前記ビット列抽出工程によって抽出されたビット列の中の前記検出工程によって検出された桁数および先頭数字を満たす数値群内の数値の存在を示すビットに対応する検索対象ファイルを、前記複数の検索対象ファイルの中から特定させる特定工程と、
前記特定工程によって特定された検索対象ファイルに含まれているファイル内数値が、前記境界を規定する数値との境界条件を充足しているか否かを判断させる境界条件判断工程と、
前記境界条件判断工程によって判断された判断結果に基づいて、前記特定工程によって特定された検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定させる決定工程と、
をコンピュータに実行させることを特徴とする情報検索プログラム。
【０３２８】
（付記２）前記特定工程は、
さらに、前記中間数値群判断工程によって前記中間の数値群が存在しないと判断された場合、前記一方の数値群内の数値が存在する検索対象ファイルのうち前記中間数値群内の数値が存在しない検索対象ファイル（以下、「一方の検索対象ファイル」という）を特定させるとともに、前記他方の数値群内の数値が存在する検索対象ファイルのうち前記中間数値群内の数値が存在しない検索対象ファイル（以下、「他方の検索対象ファイル」という）を特定させ、
前記境界条件判断工程は、
前記特定工程によって特定された一方の検索対象ファイルに含まれているファイル内数値が前記境界を規定する一方の数値との境界条件を充足しているか否か、および前記特定工程によって特定された他方の検索対象ファイルに含まれているファイル内数値が前記境界を規定する他方の数値との境界条件を充足しているか否かを判断させ、
前記決定工程は、
前記境界条件判断工程によって判断された判断結果に基づいて、前記一方の検索対象ファイル、前記他方の検索対象ファイル、または前記中間数値群内の数値が存在する検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定させることを特徴とする付記１に記載の情報検索プログラム。
【０３２９】
（付記３）任意の数値範囲の境界を規定する数値を取得させる取得工程と、
前記取得工程によって取得された境界を規定する数値を、前記境界を規定する数値の桁数を示す数字に関する圧縮符号および前記境界を規定する数値の桁数ごとの数字に関する圧縮符号を含む圧縮情報に圧縮させる数値圧縮工程と、
前記数値圧縮工程によって得られた前記境界を規定する数値に関する圧縮情報と、検索対象ファイルを前記所定の形式で圧縮した圧縮化検索対象ファイルに含まれているファイル内数値の桁数を示す数字に関する圧縮符号および前記ファイル内数値の桁ごとの数字に関する圧縮符号とを含む前記ファイル内数値に関する圧縮情報とを照合することにより、前記ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断させる境界条件判断工程と、
前記境界条件判断工程によって判断された判断結果に基づいて、前記圧縮化検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定させる決定工程と、
をコンピュータに実行させることを特徴とする情報検索プログラム。
【０３３０】
（付記４）前記境界を規定する一方の数値の桁数および先頭数字を満たす一方の数値群と、前記境界を規定する他方の数値の桁数および先頭数字を満たす他方の数値群との間に、中間の数値群が存在するか否かを判断させる中間数値群判断工程と、
前記一方の数値群内の数値が存在する圧縮化検索対象ファイルのうち前記中間数値群内の数値が存在しない圧縮化検索対象ファイル（以下、「一方の圧縮化検索対象ファイル」という）を特定させるとともに、
前記他方の数値群内の数値が存在する圧縮化検索対象ファイルのうち前記中間数値群内の数値が存在しない圧縮化検索対象ファイル（以下、「他方の圧縮化検索対象ファイル」という）を特定させる特定工程とを、前記コンピュータに実行させ、
前記数値圧縮工程は、
前記境界を規定する一方の数値を、前記境界を規定する数値の桁数を示す数字に関する圧縮符号および前記境界を規定する数値の桁数ごとの数字に関する圧縮符号を含む一方の圧縮情報に圧縮させるとともに、
前記境界を規定する他方の数値を、前記境界を規定する数値の桁数を示す数字に関する圧縮符号および前記境界を規定する数値の桁数ごとの数字に関する圧縮符号を含む他方の圧縮情報に圧縮させ、
前記境界条件判断工程は、
前記数値圧縮工程によって得られた前記一方の圧縮情報と前記一方の圧縮化検索対象ファイルに含まれているファイル内数値に関する圧縮情報とを照合することにより、当該ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断させるとともに、
前記数値圧縮工程によって得られた前記他方の圧縮情報と前記他方の圧縮化検索対象ファイルに含まれているファイル内数値に関する圧縮情報とを照合することにより、当該ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断させ、
前記決定工程は、
前記境界条件判断工程によって判断された判断結果に基づいて、前記一方の圧縮化検索対象ファイル、前記他方の圧縮化検索対象ファイル、または前記中間数値群内の数値が存在する圧縮化検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定させることを特徴とする付記３に記載の情報検索プログラム。
【０３３１】
（付記５）任意の数値範囲の境界を規定する数値を取得させる取得工程と、
前記検索対象ファイル内に存在する数字の出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正させる補正工程と、
前記補正工程によって補正された出現頻度に基づいて、前記検索対象ファイルを圧縮させるファイル圧縮工程と、
前記取得工程によって取得された境界を規定する数値を所定の圧縮形式で圧縮させる数値圧縮工程と、
前記数値圧縮工程によって得られた前記境界を規定する数値に関する圧縮情報と、前記ファイル圧縮工程によって圧縮された前記圧縮化検索対象ファイルに含まれているファイル内数値に関する圧縮情報とを照合することにより、前記ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断させる境界条件判断工程と、
前記境界条件判断工程によって判断された判断結果に基づいて、前記圧縮化検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定させる決定工程と、
をコンピュータに実行させることを特徴とする情報検索プログラム。
【０３３２】
（付記６）前記補正工程は、
さらに、前記検索対象ファイル内に存在するカンマの出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正させることを特徴とする付記５に記載の情報検索プログラム。
【０３３３】
（付記７）前記補正工程は、
さらに、前記検索対象ファイル内に存在する小数点の出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正させることを特徴とする付記５または６に記載の情報検索プログラム。
【０３３４】
（付記８）数字と文字とが混在する検索対象ファイルの中から数値の存在を示すフィーダを検出させるフィーダ検出工程と、
前記フィーダ検出工程によって検出されたフィーダに関連付けられている数値の桁数を検出させる桁数検出工程と、
前記検索対象ファイル内に含まれている数字の出現頻度に基づいて、前記数値を前記フィーダに関連付けて、前記桁数検出工程によって検出された桁数を示す数字に関する圧縮符号と前記数値の桁数ごとの数字に関する圧縮符号とを含む圧縮情報に圧縮させる圧縮工程と、
をコンピュータに実行させることを特徴とする情報検索プログラム。
【０３３５】
（付記９）前記フィーダは、前記数値の種類を特定する情報であることを特徴とする付記８に記載の情報検索プログラム。
【０３３６】
（付記１０）前記数値が全角または半角であることを検出させる全角／半角検出工程を前記コンピュータに実行させ、
前記圧縮工程は、
さらに、前記数値を、前記全角／半角検出工程によって検出された検出結果に関する圧縮符号を含む圧縮情報に圧縮させることを特徴とする付記８また９に記載の情報検索プログラム。
【０３３７】
（付記１１）前記数値の中からカンマを検出させるカンマ検出工程を前記コンピュータに実行させ、
前記圧縮工程は、
さらに、前記数値を、前記カンマ検出工程によって検出された検出結果に関する圧縮符号を含む圧縮情報に圧縮させることを特徴とする付記８また９に記載の情報検索プログラム。
【０３３８】
（付記１２）前記検索対象ファイル内に存在する数字の出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正させる補正工程を前記コンピュータに実行させ、
前記圧縮工程は、
前記補正工程によって補正された出現頻度に基づいて、前記数値を圧縮させることを特徴とする付記８に記載の情報検索プログラム。
【０３３９】
（付記１３）前記補正工程は、
さらに、前記検索対象ファイル内に存在するカンマの出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正させることを特徴とする付記８に記載の情報検索プログラム。
【０３４０】
（付記１４）前記補正工程は、
さらに、前記検索対象ファイル内に存在する小数点の出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正させることを特徴とする付記８に記載の情報検索プログラム。
【０３４１】
（付記１５）付記１〜３または８のいずれか一つに記載の情報検索プログラムを記録した前記コンピュータに読み取り可能な記録媒体。
【０３４２】
（付記１６）コンピュータが、
任意の数値範囲の境界を規定する数値を取得する取得工程と、
前記取得工程によって取得された境界を規定する数値の桁数および先頭数字を検出する検出工程と、
桁数および先頭数字を満たす数値群内の数値の存否を検索対象ファイルごとにあらわしたビット列の集合の中から、前記検出工程によって検出された桁数および先頭数字を満たす数値群内の数値の存否を前記検索対象ファイルごとにあらわしたビット列を抽出するビット列抽出工程と、
前記境界を規定する一方の数値の桁数および先頭数字を満たす一方の数値群と、前記境界を規定する他方の数値の桁数および先頭数字を満たす他方の数値群との間に、中間の数値群が存在するか否かを判断する中間数値群判断工程と、
前記中間数値群判断工程によって判断された判断結果に基づいて、前記ビット列抽出工程によって抽出されたビット列の中の前記検出工程によって検出された桁数および先頭数字を満たす数値群内の数値の存在を示すビットに対応する検索対象ファイルを、前記複数の検索対象ファイルの中から特定する特定工程と、
前記特定工程によって特定された検索対象ファイルに含まれているファイル内数値が、前記境界を規定する数値との境界条件を充足しているか否かを判断させる境界条件判断工程と、
前記境界条件判断工程によって判断された判断結果に基づいて、前記特定工程によって特定された検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定する決定工程と、
を実行することを特徴とする情報検索方法。
【０３４３】
（付記１７）コンピュータが、
任意の数値範囲の境界を規定する数値を取得する取得工程と、
前記取得工程によって取得された境界を規定する数値を、前記境界を規定する数値の桁数を示す数字に関する圧縮符号および前記境界を規定する数値の桁数ごとの数字に関する圧縮符号を含む圧縮情報に圧縮する数値圧縮工程と、
前記数値圧縮工程によって得られた前記境界を規定する数値に関する圧縮情報と、検索対象ファイルを前記所定の形式で圧縮した圧縮化検索対象ファイルに含まれているファイル内数値の桁数を示す数字に関する圧縮符号および前記ファイル内数値の桁ごとの数字に関する圧縮符号とを含む前記ファイル内数値に関する圧縮情報とを照合することにより、前記ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断する境界条件判断工程と、
前記境界条件判断工程によって判断された判断結果に基づいて、前記圧縮化検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定する決定工程と、
を実行することを特徴とする情報検索方法。
【０３４４】
（付記１８）コンピュータが、
任意の数値範囲の境界を規定する数値を取得する取得工程と、
前記検索対象ファイル内に存在する数字の出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正する補正工程と、
前記補正工程によって補正された出現頻度に基づいて、前記検索対象ファイルを圧縮するファイル圧縮工程と、
前記取得工程によって取得された境界を規定する数値を所定の圧縮形式で圧縮する数値圧縮工程と、
前記数値圧縮工程によって得られた前記境界を規定する数値に関する圧縮情報と、前記ファイル圧縮工程によって圧縮された前記圧縮化検索対象ファイルに含まれているファイル内数値に関する圧縮情報とを照合することにより、前記ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断する境界条件判断工程と、
前記境界条件判断工程によって判断された判断結果に基づいて、前記圧縮化検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定する決定工程と、
を実行することを特徴とする情報検索方法。
【０３４５】
（付記１９）コンピュータが、
数字と文字とが混在する検索対象ファイルの中から数値の存在を示すフィーダを検出するフィーダ検出工程と、
前記フィーダ検出工程によって検出されたフィーダに関連付けられている数値の桁数を検出する桁数検出工程と、
前記検索対象ファイル内に含まれている数字の出現頻度に基づいて、前記数値を前記フィーダに関連付けて、前記桁数検出工程によって検出された桁数を示す数字に関する圧縮符号と前記数値の桁数ごとの数字に関する圧縮符号とを含む圧縮情報に圧縮する圧縮工程と、
を実行することを特徴とする情報検索方法。
【産業上の利用可能性】
【０３４６】
以上のように、本発明にかかる情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置は、数値範囲の検索に有用であり、特に、帳票ファイルのような数値が多数含まれているコンテンツに適している。
【符号の説明】
【０３４７】
５００  数値・文字出現頻度管理データ
５１０  出現マップ
６００  情報検索装置
６０１  編集部
６０２  検索部
６２２  検索実行部
６２３  検索結果表示部
６２４  全文検索実行部
６２５  数値検索実行部
２７０１  取得部
２７０２  数値圧縮部
２７０３  検出部
２７０４  中間数値群判断部
２７０６  省略マップ設定部
２７０７  下限／上限マップ生成部
２７０８  特定部
２７０９  圧縮情報検索部
２７１０  境界条件判断部
２７１１  決定部
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
任意の数値範囲の境界を規定する数値を取得させる取得工程と、
前記取得工程によって取得された境界を規定する数値の桁数および先頭数字を検出させる検出工程と、
桁数および先頭数字を満たす数値群内の数値の存否を検索対象ファイルごとにあらわしたビット列の集合の中から、前記検出工程によって検出された桁数および先頭数字を満たす数値群内の数値の存否を前記検索対象ファイルごとにあらわしたビット列を抽出させるビット列抽出工程と、
前記境界を規定する一方の数値の桁数および先頭数字を満たす一方の数値群と、前記境界を規定する他方の数値の桁数および先頭数字を満たす他方の数値群との間に、中間の数値群が存在するか否かを判断させる中間数値群判断工程と、
前記中間数値群判断工程によって判断された判断結果に基づいて、前記ビット列抽出工程によって抽出されたビット列の中の前記検出工程によって検出された桁数および先頭数字を満たす数値群内の数値の存在を示すビットに対応する検索対象ファイルを、前記複数の検索対象ファイルの中から特定させる特定工程と、
前記特定工程によって特定された検索対象ファイルに含まれているファイル内数値が、前記境界を規定する数値との境界条件を充足しているか否かを判断させる境界条件判断工程と、
前記境界条件判断工程によって判断された判断結果に基づいて、前記特定工程によって特定された検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定させる決定工程と、
をコンピュータに実行させることを特徴とする情報検索プログラム。
【請求項２】
任意の数値範囲の境界を規定する数値を取得させる取得工程と、
前記取得工程によって取得された境界を規定する数値を、前記境界を規定する数値の桁数を示す数字に関する圧縮符号および前記境界を規定する数値の桁数ごとの数字に関する圧縮符号を含む圧縮情報に圧縮させる数値圧縮工程と、
前記数値圧縮工程によって得られた前記境界を規定する数値に関する圧縮情報と、検索対象ファイルを前記所定の形式で圧縮した圧縮化検索対象ファイルに含まれているファイル内数値の桁数を示す数字に関する圧縮符号および前記ファイル内数値の桁ごとの数字に関する圧縮符号とを含む前記ファイル内数値に関する圧縮情報とを照合することにより、前記ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断させる境界条件判断工程と、
前記境界条件判断工程によって判断された判断結果に基づいて、前記圧縮化検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定させる決定工程と、
をコンピュータに実行させることを特徴とする情報検索プログラム。
【請求項３】
任意の数値範囲の境界を規定する数値を取得させる取得工程と、
前記検索対象ファイル内に存在する数字の出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正させる補正工程と、
前記補正工程によって補正された出現頻度に基づいて、前記検索対象ファイルを圧縮させるファイル圧縮工程と、
前記取得工程によって取得された境界を規定する数値を所定の圧縮形式で圧縮させる数値圧縮工程と、
前記数値圧縮工程によって得られた前記境界を規定する数値に関する圧縮情報と、前記ファイル圧縮工程によって圧縮された前記圧縮化検索対象ファイルに含まれているファイル内数値に関する圧縮情報とを照合することにより、前記ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断させる境界条件判断工程と、
前記境界条件判断工程によって判断された判断結果に基づいて、前記圧縮化検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定させる決定工程と、
をコンピュータに実行させることを特徴とする情報検索プログラム。
【請求項４】
数字と文字とが混在する検索対象ファイルの中から数値の存在を示すフィーダを検出させるフィーダ検出工程と、
前記フィーダ検出工程によって検出されたフィーダに関連付けられている数値の桁数を検出させる桁数検出工程と、
前記検索対象ファイル内に含まれている数字の出現頻度に基づいて、前記数値を前記フィーダに関連付けて、前記桁数検出工程によって検出された桁数を示す数字に関する圧縮符号と前記数値の桁数ごとの数字に関する圧縮符号とを含む圧縮情報に圧縮させる圧縮工程と、
をコンピュータに実行させることを特徴とする情報検索プログラム。
【請求項５】
コンピュータが、
任意の数値範囲の境界を規定する数値を取得する取得工程と、
前記取得工程によって取得された境界を規定する数値の桁数および先頭数字を検出する検出工程と、
桁数および先頭数字を満たす数値群内の数値の存否を検索対象ファイルごとにあらわしたビット列の集合の中から、前記検出工程によって検出された桁数および先頭数字を満たす数値群内の数値の存否を前記検索対象ファイルごとにあらわしたビット列を抽出するビット列抽出工程と、
前記境界を規定する一方の数値の桁数および先頭数字を満たす一方の数値群と、前記境界を規定する他方の数値の桁数および先頭数字を満たす他方の数値群との間に、中間の数値群が存在するか否かを判断する中間数値群判断工程と、
前記中間数値群判断工程によって判断された判断結果に基づいて、前記ビット列抽出工程によって抽出されたビット列の中の前記検出工程によって検出された桁数および先頭数字を満たす数値群内の数値の存在を示すビットに対応する検索対象ファイルを、前記複数の検索対象ファイルの中から特定する特定工程と、
前記特定工程によって特定された検索対象ファイルに含まれているファイル内数値が、前記境界を規定する数値との境界条件を充足しているか否かを判断させる境界条件判断工程と、
前記境界条件判断工程によって判断された判断結果に基づいて、前記特定工程によって特定された検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定する決定工程と、
を実行することを特徴とする情報検索方法。
【請求項６】
コンピュータが、
任意の数値範囲の境界を規定する数値を取得する取得工程と、
前記取得工程によって取得された境界を規定する数値を、前記境界を規定する数値の桁数を示す数字に関する圧縮符号および前記境界を規定する数値の桁数ごとの数字に関する圧縮符号を含む圧縮情報に圧縮する数値圧縮工程と、
前記数値圧縮工程によって得られた前記境界を規定する数値に関する圧縮情報と、検索対象ファイルを前記所定の形式で圧縮した圧縮化検索対象ファイルに含まれているファイル内数値の桁数を示す数字に関する圧縮符号および前記ファイル内数値の桁ごとの数字に関する圧縮符号とを含む前記ファイル内数値に関する圧縮情報とを照合することにより、前記ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断する境界条件判断工程と、
前記境界条件判断工程によって判断された判断結果に基づいて、前記圧縮化検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定する決定工程と、
を実行することを特徴とする情報検索方法。
【請求項７】
コンピュータが、
任意の数値範囲の境界を規定する数値を取得する取得工程と、
前記検索対象ファイル内に存在する数字の出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正する補正工程と、
前記補正工程によって補正された出現頻度に基づいて、前記検索対象ファイルを圧縮するファイル圧縮工程と、
前記取得工程によって取得された境界を規定する数値を所定の圧縮形式で圧縮する数値圧縮工程と、
前記数値圧縮工程によって得られた前記境界を規定する数値に関する圧縮情報と、前記ファイル圧縮工程によって圧縮された前記圧縮化検索対象ファイルに含まれているファイル内数値に関する圧縮情報とを照合することにより、前記ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断する境界条件判断工程と、
前記境界条件判断工程によって判断された判断結果に基づいて、前記圧縮化検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定する決定工程と、
を実行することを特徴とする情報検索方法。
【請求項８】
コンピュータが、
数字と文字とが混在する検索対象ファイルの中から数値の存在を示すフィーダを検出するフィーダ検出工程と、
前記フィーダ検出工程によって検出されたフィーダに関連付けられている数値の桁数を検出する桁数検出工程と、
前記検索対象ファイル内に含まれている数字の出現頻度に基づいて、前記数値を前記フィーダに関連付けて、前記桁数検出工程によって検出された桁数を示す数字に関する圧縮符号と前記数値の桁数ごとの数字に関する圧縮符号とを含む圧縮情報に圧縮する圧縮工程と、
を実行することを特徴とする情報検索方法。
【国際調査報告】
2008047432.tif 000055
2008047432.tif 000056
2008047432.tif 000057
2008047432.tif 000058