JP4707198B2 - 情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置 - Google Patents

情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置 Download PDF

Info

Publication number
JP4707198B2
JP4707198B2 JP2008539647A JP2008539647A JP4707198B2 JP 4707198 B2 JP4707198 B2 JP 4707198B2 JP 2008539647 A JP2008539647 A JP 2008539647A JP 2008539647 A JP2008539647 A JP 2008539647A JP 4707198 B2 JP4707198 B2 JP 4707198B2
Authority
JP
Japan
Prior art keywords
numerical value
file
compression
numerical
boundary
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008539647A
Other languages
English (en)
Other versions
JPWO2008047432A1 (ja
Inventor
正弘 片岡
博幸 鳥居
正博 栗島
英男 嘉斎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2008047432A1 publication Critical patent/JPWO2008047432A1/ja
Application granted granted Critical
Publication of JP4707198B2 publication Critical patent/JP4707198B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/81Indexing, e.g. XML tags; Data structures therefor; Storage structures
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation

Description

本発明は、帳票や治験データベースなどの数値データに対する、数値の一致検索や範囲検索、および数値抽象化検索の高速化技術に関する情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置である。
従来の全文検索では、文字列に対してはインデックスを作成し、検索の高速化が図られているが、数値は未対応である。さらに、数字文字列の一致比較は行われているが、数値としての一致比較が行われていない。たとえば、全角数字の「6850円」や半角数字の「¥6,850.−」などの異なる数値表現に対しては、同じ数値に関わらず、数字文字列の比較では「不一致」と判断される。
従来より、帳票システムでは、電子帳簿保存法で数値の範囲指定に適合した数値の検索機能(たとえば、下記特許文献1を参照。)の実装が義務付けられている。また、電子帳簿はデータ容量の削減とセキュリティのため、圧縮・暗号化され保管されている。
したがって、保管されている電子帳簿の数値検索には、各帳簿のファイルの伸長と復号化を行い、各数値データと大小比較を行っており、多大なハードウェア資源と処理時間が必要となっている。なお、関連する全文検索の方式については以下の3種に大別できるが、いずれも数値検索の高速化が図られていない。
・高度インデックス全文検索:インターネットの全文検索では高度なインデックスを利用することで高速化が図られているが、数値の検索にはさらに膨大なインデックスが必要となるため、高速化の対象外となっている。
・簡易インデックス全文検索:漢字に関する文字構成表などの簡易インデックスにより全文検索の高速化を行うものであるが、数値に関する高速化は図られていない。
・インデックスレス全文検索:全データに対し、高速な検索エンジンにより文字列照合を行うものであり、数値の検索の高速化は行われていない。
特開平3−19081号公報
しかしながら、上述した従来技術における数値の一致検索の場合、非圧縮・非暗号化の数値の一致検索では、インデックスによる高速化などは図られておらず、数値の一致照合に多大な時間を費やしている。また、「6850円」や「¥6,850.−」などの異なる数値表現に対して、「一致」と判定することができない。したがって、簡易インデックスを利用した一致検索の高速化、および「一致」の判定方法の改善が課題である。
また、従来技術における数値の一致検索の場合、圧縮・暗号化された数値の一致検索では、電子帳簿データなどは保管やセキュリティのため、圧縮・暗号化されているが、伸長と復号化の後に大小比較をおこなっており、多大な処理時間を費やしている。したがって、伸長と復号化の見直しによる速度の改善が課題である。
また、従来技術における数値の範囲検索の場合、非圧縮・非暗号化の数値の一致検索では、上述した「数値の一致検索の場合」と同様、簡易インデックスを利用した高速化が課題である。
また、従来技術における数値の範囲検索の場合、圧縮・暗号化された数値の範囲検索では、上述した「数値の一致検索の場合」と同様、伸長と復号化の見直しによる速度の改善が課題である。
さらに、治験データなどに関する数値の抽象化検索の場合、従来技術には無く、数値の範囲検索を工夫し、かつ、人間の判断を交え、さらに各検索を組み合わせて対応している。抽象化の技術の確立と高速化が課題である。
本発明は、上記に鑑みてなされたものであって、数値範囲内の数値が存在するファイルを圧縮したまま特定することにより、数値範囲検索の高速化および高精度化を図ることができる情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置を提供することを目的とする。
上述した課題を解決し、目的を達成するために、第1の発明の情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置は、任意の数値範囲の境界を規定する数値を取得し、取得された境界を規定する数値の桁数および先頭数字を検出し、桁数および先頭数字を満たす数値群内の数値の存否を検索対象ファイルごとにあらわしたビット列の集合の中から、検出された桁数および先頭数字を満たす数値群内の数値の存否を前記検索対象ファイルごとにあらわしたビット列を抽出し、抽出されたビット列の中の、検出された桁数および先頭数字を満たす数値群内の数値の存在を示すビットに対応する検索対象ファイルを、前記複数の検索対象ファイルの中から特定し、特定された検索対象ファイルに含まれているファイル内数値が、前記境界を規定する数値との境界条件を充足しているか否かを判断し、判断された判断結果に基づいて、特定された検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定することを特徴とする。
この発明によれば、数値範囲検索に先立って、桁数および先頭数字を満たす数値群内の数値が含まれている検索対象ファイルの絞込みをおこなうことができる。
また、上記発明において、前記境界を規定する一方の数値の桁数および先頭数字を満たす一方の数値群と、前記境界を規定する他方の数値の桁数および先頭数字を満たす他方の数値群との間に、中間の数値群が存在するか否かを判断し、前記一方の数値群内の数値が存在する検索対象ファイルのうち前記中間数値群内の数値が存在しない検索対象ファイル(以下、「一方の検索対象ファイル」という)を特定するとともに、前記他方の数値群内の数値が存在する検索対象ファイルのうち前記中間数値群内の数値が存在しない検索対象ファイル(以下、「他方の検索対象ファイル」という)を特定し、特定された一方の検索対象ファイルに含まれているファイル内数値が前記境界を規定する一方の数値との境界条件を充足しているか否か、および、特定された他方の検索対象ファイルに含まれているファイル内数値が前記境界を規定する他方の数値との境界条件を充足しているか否かを判断し、判断された判断結果に基づいて、前記一方の検索対象ファイル、前記他方の検索対象ファイル、または前記中間数値群内の数値が存在する検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定することとしてもよい。
この発明によれば、桁数および先頭数字を満たす数値群内の数値が含まれている検索対象ファイルの絞込みの高速化を図ることができる。
また、第2の発明の情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置は、任意の数値範囲の境界を規定する数値を取得し、取得された境界を規定する数値を所定の圧縮形式で圧縮し、前記境界を規定する数値に関する圧縮情報と、検索対象ファイルを前記所定の形式で圧縮した圧縮化検索対象ファイルに含まれているファイル内数値に関する圧縮情報とを照合することにより、前記ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断し、判断された判断結果に基づいて、前記圧縮化検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定することを特徴とする。
この発明によれば、圧縮状態のまま数値の大小を比較することができる。
また、上記発明において、前記境界を規定する数値を、前記境界を規定する数値の桁数を示す数字に関する圧縮符号および前記境界を規定する数値の桁数ごとの数字に関する圧縮符号を含む圧縮情報に圧縮し、圧縮された圧縮情報と、前記ファイル内数値の桁数を示す数字に関する圧縮符号および前記ファイル内数値の桁ごとの数字に関する圧縮符号とを含む前記ファイル内数値に関する圧縮情報とを照合することにより、前記ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断することとしてもよい。
この発明によれば、桁数や先頭桁の数字、2番目の桁の数字、・・・といった順に照合することで、数値の大小比較を段階的に圧縮した状態でおこなうことができる。
また、上記発明において、前記境界を規定する一方の数値の桁数および先頭数字を満たす一方の数値群と、前記境界を規定する他方の数値の桁数および先頭数字を満たす他方の数値群との間に、中間の数値群が存在するか否かを判断し、前記一方の数値群内の数値が存在する圧縮化検索対象ファイルのうち前記中間数値群内の数値が存在しない圧縮化検索対象ファイル(以下、「一方の圧縮化検索対象ファイル」という)を特定するとともに、前記他方の数値群内の数値が存在する圧縮化検索対象ファイルのうち前記中間数値群内の数値が存在しない圧縮化検索対象ファイル(以下、「他方の圧縮化検索対象ファイル」という)を特定し、前記境界を規定する一方の数値を、前記境界を規定する数値の桁数を示す数字に関する圧縮符号および前記境界を規定する数値の桁数ごとの数字に関する圧縮符号を含む一方の圧縮情報に圧縮するとともに、前記境界を規定する他方の数値を、前記境界を規定する数値の桁数を示す数字に関する圧縮符号および前記境界を規定する数値の桁数ごとの数字に関する圧縮符号を含む他方の圧縮情報に圧縮し、前記一方の圧縮情報と前記一方の圧縮化検索対象ファイルに含まれているファイル内数値に関する圧縮情報とを照合することにより、当該ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断するとともに、前記他方の圧縮情報と前記他方の圧縮化検索対象ファイルに含まれているファイル内数値に関する圧縮情報とを照合することにより、当該ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断し、判断された判断結果に基づいて、前記一方の圧縮化検索対象ファイル、前記他方の圧縮化検索対象ファイル、または前記中間数値群内の数値が存在する圧縮化検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定することとしてもよい。
この発明によれば、桁数や先頭桁の数字、2番目の桁の数字、・・・といった順に照合することで、数値範囲検索を段階的に圧縮した状態でおこなうことができる。
また、上記発明において、前記検索対象ファイル内に存在する数字の出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正し、補正された出現頻度に基づいて、前記検索対象ファイルを圧縮し、前記境界を規定する数値に関する圧縮情報と、前記ファイル圧縮工程によって圧縮された前記圧縮化検索対象ファイルに含まれているファイル内数値に関する圧縮情報とを照合することにより、前記ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断することとしてもよい。
この発明によれば、数値の圧縮効率を文字データよりも優先的に高くすることができる。
また、上記発明において、さらに、前記検索対象ファイル内に存在するカンマの出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正することとしてもよい。
この発明によれば、カンマを含む数値の圧縮効率を文字データよりも優先的に高くすることができる。
また、上記発明において、さらに、前記検索対象ファイル内に存在する小数点の出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正することとしてもよい。
この発明によれば、小数点を含む数値の圧縮効率を文字データよりも優先的に高くすることができる。
また、第3の発明の情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置は、数字と文字とが混在する検索対象ファイルの中から数値の存在を示すフィーダを検出し、検出されたフィーダに関連付けられている数値の桁数を検出し、前記検索対象ファイル内に含まれている数字の出現頻度に基づいて、前記数値を前記フィーダに関連付けて、検出された桁数を示す数字に関する圧縮符号と前記数値の桁数ごとの数字に関する圧縮符号とを含む圧縮情報に圧縮することを特徴とする。
この発明によれば、文字列の中に数字が混在しているファイルからも高速に数値を抽出することができる。
また、上記発明において、前記フィーダは、前記数値の種類を特定する情報としてもよい。
この発明によれば、圧縮された数値を分類することができ、同種の数値どうしについて数値の大小比較や数値範囲検索をおこなうことができる。
また、上記発明において、前記数値が全角または半角であることを検出し、さらに、前記数値を、検出された検出結果に関する圧縮符号を含む圧縮情報に圧縮することとしてもよい。
この発明によれば、数値の全角・半角の区別についても圧縮しておくことにより、全角・半角の区別を示す圧縮符号を無視することで、全角・半角の相違を除外して数値の大小比較や数値範囲検索をおこなうことができる。
また、上記発明において、前記数値の中からカンマを検出し、さらに、前記数値を、検出された検出結果に関する圧縮符号を含む圧縮情報に圧縮することとしてもよい。
この発明によれば、数値のカンマの有無についても圧縮しておくことにより、カンマの有無を示す圧縮符号を無視することで、カンマの相違を除外して数値の大小比較や数値範囲検索をおこなうことができる。
また、上記発明において、前記検索対象ファイル内に存在する数字の出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正し、補正された出現頻度に基づいて、前記数値を圧縮することとしてもよい。
この発明によれば、数値の圧縮効率を文字データよりも優先的に高くすることができる。
また、上記発明において、さらに、前記検索対象ファイル内に存在するカンマの出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正することとしてもよい。
この発明によれば、カンマを含む数値の圧縮効率を文字データよりも優先的に高くすることができる。
また、上記発明において、さらに、前記検索対象ファイル内に存在する小数点の出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正することとしてもよい。
この発明によれば、小数点を含む数値の圧縮効率を文字データよりも優先的に高くすることができる。
この発明によれば、中間数値群内の数値に対して数値検索をおこなうことなく、数値範囲内の数値が存在するか否かを判断することができ、数値検索の高速化を図ることができる。
本発明にかかる情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置は、数値範囲内の数値が存在するファイルを圧縮したまま特定することにより、数値範囲検索の高速化および高精度化を図ることができるという効果を奏する。
図1は、この発明の実施の形態にかかる情報検索装置のハードウェア構成を示すブロック図である。 図2は、電子帳票のデータ構成を示す説明図である。 図3は、図2に示したファイル構成データ300を示す説明図である。 図4は、図2に示したページリストデータ400を示す説明図である。 図5は、数値・文字出現頻度管理データ500を示す説明図である。 図6は、この発明の実施の形態にかかる情報検索装置の機能的構成を示すブロック図である。 図7は、図6に示した数値・文字出現頻度管理データ生成部612の機能的構成を示すブロック図である。 図8は、数値・文字出現頻度管理データ500の生成処理を示すデータ構成図である。 図9は、連字/外字置換処理を示すデータ構成図である。 図10は、最終的に生成された連字/外字置換テーブル640を示す説明図である。 図11は、図6に示した圧縮/暗号化部613の詳細な機能的構成を示すブロック図である。 図12は、数字等の出現頻度の補正の一例を示す説明図である。 図13は、数字等の出現頻度の補正の他の例を示す説明図である。 図14は、圧縮/暗号化部613による具体的なハフマン木生成処理を示す説明図である。 図15は、図11に示したファイルファイル圧縮部1106の詳細な機能的構成を示すブロック図である。 図16−1は、数値圧縮処理の第1の例を示す説明図である。 図16−2は、数値圧縮処理の第2の例を示す説明図である。 図16−3は、数値圧縮処理の第3の例を示す説明図である。 図16−4は、数値抽象化データの圧縮処理例を示す説明図である。 図17−1は、ファイル圧縮部1106によって圧縮された圧縮化帳票ファイルのデータ構造を示す説明図である。 図17−2は、圧縮ブロックデータC1〜Cmと、圧縮前の元のブロックデータとの比較を示す図表である。 図18は、図6に示した検索初期化部621の詳細な機能的構成を示すブロック図である。 図19は、第1の区点対応テーブルと出現マップとの対応関係を示す説明図である。 図20は、第2の区点対応テーブルと出現マップとの対応関係を示す説明図である。 図21は、検索実行部622内の全文検索実行部624の詳細な機能的構成を示すブロック図である。 図22は、圧縮化帳票ファイルFiの絞込みの一例を示す説明図である。 図23は、全文検索実行部624における不一致照合処理を示す説明図である。 図24は、図23に示した圧縮ブロックデータのシフト操作を示す図表である。 図25は、照合予測テーブルの生成処理を示す説明図である。 図26は、全ビット不一致照合処理を示す説明図である。 図27は、検索実行部622内の数値検索実行部625の詳細な機能的構成を示すブロック図である。 図28−1は、数値範囲の大小比較例を示す説明図(その1)である。 図28−2は、数値範囲の大小比較例を示す説明図(その2)である。 図28−3は、数値範囲の大小比較例を示す説明図(その3)である。 図28−4は、数値範囲の大小比較例を示す説明図(その4)である。 図29は、図6に示した検索結果表示部623の詳細な機能的構成を示すブロック図である。 図30は、この発明の実施の形態にかかる情報検索装置600の情報検索処理手順を示すフローチャートである。 図31は、図30に示した数値・文字出現頻度管理データ生成処理(ステップS3001)の詳細な処理手順を示すフローチャートである。 図32−1は、上述した数値・文字出現頻度集計処理(ステップS3102)の詳細な処理手順を示すフローチャート(前半)である。 図32−2は、数値・文字出現頻度集計処理(ステップS3102)の詳細な処理手順を示すフローチャート(後半)である。 図33は、図30に示した圧縮/暗号化処理(ステップS3002)の詳細な処理手順を示すフローチャートである。 図34は、図33のステップS3308に示した圧縮処理の詳細な処理手順を示すフローチャートである。 図35は、図30に示した検索初期化処理(ステップS3003)の詳細な処理手順を示すフローチャートである。 図36は、図30に示した検索処理(ステップS3004)の詳細な処理手順を示すフローチャートである。 図37は、照合予測テーブル生成処理手順を示すフローチャートである。 図38は、圧縮ブロックデータと圧縮キーワードとの不一致判定処理手順を示すフローチャートである。 図39は、全ビット不一致照合処理(ステップS3812およびステップS3817)を示すフローチャートである。 図40は、この発明の実施の形態にかかる数値検索モードにおける数値検索実行処理手順を示すフローチャートである。 図41は、図40に示した下限特定/比較処理手順を示すフローチャートである。 図42は、下限数値照合処理手順を示すフローチャートである。 図43は、図40に示した上限特定/比較処理手順を示すフローチャートである。 図44は、上限数値照合処理手順を示すフローチャートである。
(情報検索装置のハードウェア構成)
まず、この発明の実施の形態にかかる情報検索装置のハードウェア構成について説明する。図1は、この発明の実施の形態にかかる情報検索装置のハードウェア構成を示すブロック図である。
図1において、情報検索装置は、CPU101と、ROM102と、RAM103と、HDD(ハードディスクドライブ)104と、HD(ハードディスク)105と、FDD(フレキシブルディスクドライブ)106と、着脱可能な記録媒体の一例としてのFD(フレキシブルディスク)107と、ディスプレイ108と、I/F(インターフェース)109と、キーボード110と、マウス111と、スキャナ112と、プリンタ113と、を備えている。また、各構成部はバス100によってそれぞれ接続されている。
ここで、CPU101は、情報検索装置の全体の制御を司る。ROM102は、ブートプログラムなどのプログラムを記憶している。RAM103は、CPU101のワークエリアとして使用される。HDD104は、CPU101の制御にしたがってHD105に対するデータのリード/ライトを制御する。HD105は、HDD104の制御で書き込まれたデータを記憶する。
FDD106は、CPU101の制御にしたがってFD107に対するデータのリード/ライトを制御する。FD107は、FDD106の制御で書き込まれたデータを記憶したり、FD107に記憶されたデータを情報検索装置に読み取らせたりする。
また、着脱可能な記録媒体として、FD107のほか、CD−ROM(CD−R、CD−RW)、MO、DVD(Digital Versatile Disk)、メモリーカードなどであってもよい。ディスプレイ108は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ108は、たとえば、CRT、TFT液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
I/F109は、通信回線を通じてインターネットなどのネットワーク114に接続され、このネットワーク114を介して他の装置に接続される。そして、I/F109は、ネットワーク114と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F109には、たとえばモデムやLANアダプタなどを採用することができる。
キーボード110は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス111は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
スキャナ112は、画像を光学的に読み取り、情報検索装置内に画像データを取り込む。なお、スキャナ112は、OCR機能を持たせてもよい。また、プリンタ113は、画像データや文書データを印刷する。プリンタ113には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
(電子帳票のデータ構成)
つぎに、電子帳票のデータ構成について説明する。図2は、電子帳票のデータ構成を示す説明図である。図2において、本明細書において電子帳票とは、帳簿や伝票といった帳票を電子化したデータである。電子帳票をあらわすコンテンツ200は、上位フォルダ201に保存されている。さらに、上位フォルダ201には、管理フォルダ202と帳票フォルダ203という下位のフォルダが含まれている。
管理フォルダ202には、ファイル構成データ300(図3参照)、ページリストデータ400(図4参照)、および数値・文字出現頻度管理データ500(図5参照)が保存されている。また、帳票フォルダ203には、複数の帳票ファイルfi(i=0〜n)からなる帳票ファイル群fが保存されている。
各帳票ファイルfiはそれぞれ帳票データgj(j=1〜P)を有しており、全帳票ファイルf0〜fnでPページ分有している。各帳票データgjは、たとえば、HTML形式またはXML形式で構成され、アンカーや見出し語などを含むヘッダ部(宛先データ)、品名データ、数量データ、金額データ、小計部、合計部、トレーラ部などの各種項目データを有している。
図3は、図2に示したファイル構成データ300を示す説明図である。ファイル構成データ300は、各帳票ファイルf0〜fnのファイル番号i(i=0〜n)ごとにファイルパスを関連付けたデータである。図3では、ファイル番号iの帳票ファイルfiを「file(i).html」と表記している。
図4は、図2に示したページリストデータ400を示す説明図である。ページリストデータ400とは、図2に示した帳票ファイルfiと帳票データgjとファイル構成データ300とを関連付けるデータである。ページリストデータ400は、帳票ファイルfiの全ファイル数(n+1個)、ブロックサイズ(m byte)、帳票データgjの全データ数(P個)、帳票ファイルfiのファイルパスデータFP(0)〜FP(n)、ページリストを有する。
また、ページリストデータ400は、ファイルパスデータFP(i)ごとに、ファイル番号iとブロック数と図3に示したファイルパスとを有する。また、ページリスト401は、ファイル番号iごとにオフセット、レングス、ページ番号j、見出し語が記述されているリストである。
図5は、数値・文字出現頻度管理データ500を示す説明図である。図5において、数値・文字出現頻度管理データ500は、数値・文字データの出現頻度を管理するデータである。ここで、数値・文字データは、数値データと文字データとに分けられる。数値データとは、0〜9の数字、00〜99などの2以上の連続する数字からなる数字連字、桁数および先頭数字が共通する数値群、軽度高血圧など数値を抽象的な表現であらわした抽象化数値データを含むデータである。
ここで、数値群とは、桁数および先頭数字により規定される数値範囲内の数値の集合である。たとえば、3桁でかつ先頭数字が2である数値群とは、数値範囲200〜299内の数値の集合である。
また、文字データとは、英字、かな、漢字、文字連字などを含むデータである。具体的には、8ビット系(ASCII)である英字、カタカナ、記号、16ビット系(JIS)の英字、カタカナ、記号、16ビット系(JIS)の仮名や漢字などが文字データに含まれる。これら英字や、仮名、カタカナなどの8ビットコードが中心である表音文字および漢字の文字データを、本明細書において「標準文字データ」と称す。
また、文字データには、標準文字データのほか、外字および文字連字が含まれる。文字連字とは、2以上の文字列からなる文字データである。たとえば、16ビットの2つの仮名の文字連字である場合、当該文字連字は、32ビットコードの文字データからなる。また、非文字データではあるがアドレスポインタなどのバイナリデータも便宜的に上記「文字データ」に含めることとする。以下、特に断りがない限り、「文字データ」という用語には、バイナリデータも含まれる。
また、数値・文字出現頻度管理データ500は、数値・文字データの出現頻度、出現ファイル数(ブロック数でもよい)、出現順位、出現マップ510(501〜509)を有する。出現頻度とは、全帳票ファイルf0〜fnにおいて当該数値・文字データが出現した頻度(回数)である。出現ファイル数とは、全帳票ファイルf0〜fnにおいて当該数値・文字データが出現した帳票ファイルの数である。出現順位とは、出現頻度順のランクである。
出現マップ510とは、帳票ファイルfi順に配列されたn+1ビットのビット列であり、数値・文字データの存否をあらわしている。図5では、左端のビットが帳票ファイルf0に対応するビットであり、右端のビットが帳票ファイルfnに対応するビットである。
各ビットにおいて「1」がONをあらわしており、「0」がOFFをあらわしている。すなわち、ある数値・文字データにおいて、その出現マップ510中、帳票ファイルfiに対応するビットが「1」である場合、当該数値・文字データが帳票ファイルfiに存在することをあらわしている。また、帳票ファイルfiに対応するビットが「0」である場合、当該数値・文字データが帳票ファイルfiに存在しないことをあらわしている。
(情報検索装置の機能的構成)
つぎに、この発明の実施の形態にかかる情報検索装置の機能的構成について説明する。図6は、この発明の実施の形態にかかる情報検索装置の機能的構成を示すブロック図である。図6において、情報検索装置600は、編集部601と検索部602とから構成されている。
まず、編集部601は、ファイル構成データ抽出部611と、数値・文字出現頻度管理データ生成部612と、圧縮/暗号化部613と、から構成されている。ここでは、検索対象として帳票ファイルを例に挙げているが、数値データが含まれているコンテンツであれば、帳票ファイル以外のデータでもよい。
ファイル構成データ抽出部611は、図3に示したファイル構成データ300を参照して、帳票ファイルf0〜fnから図4に示したページリストデータ400を抽出する。また、数値・文字出現頻度管理データ生成部612は、帳票ファイルf0〜fnから数値・文字出現頻度管理データ500を生成する。さらに、数値・文字出現頻度管理データ生成部612は、複数の帳票ファイルf0〜fnに記述されている数字連字や文字連字を外字に置換する連字/外字置換テーブル640を生成する。以降、数字連字および文字連字をまとめて、「連字データ」と称す。
また、圧縮/暗号化部613は、帳票ファイルf0〜fnを圧縮して圧縮化帳票ファイル群Fを生成するとともに、数値・文字出現頻度管理データ500および連字/外字置換テーブル640を暗号化して、暗号化数値・文字出現頻度管理データ650および暗号化連字/外字置換テーブル660を生成する。
また、検索部602は、検索初期化部621と、検索実行部622と、検索結果表示部623とから構成されている。検索初期化部621は、暗号化数値・文字出現頻度管理データ650および暗号化連字/外字置換テーブル660を復号して、検索部602による検索の初期化を実行する。
また、検索実行部622は、数値・文字出現頻度管理データ500や連字/外字置換テーブル640を用いて、検索処理を実行することにより、検索候補一覧を生成する。具体的には、検索実行部622は、全文検索を実行する全文検索実行部624と、数値検索を実行する数値検索実行部625とを備える。
全文検索実行部624は、検索キーワードの入力を受け付け、圧縮化帳票ファイルの全文検索を実行することにより、検索キーワードに該当する帳票ファイルfiを示す検索候補一覧を生成する。
また、数値検索実行部625は、数値や数値範囲の入力を受け付け、圧縮化帳票ファイル群Fに対して数値検索を実行することにより、入力された数値や数値範囲に該当する帳票ファイルfiを示す検索候補一覧を生成する。
また、検索結果表示部623は、検索実行部622による検索候補の中から、ユーザに選択された検索候補を伸長して、検索結果として表示する。なお、上述した帳票ファイル、数値・文字出現頻度管理データ500、ファイル構成データ300、ページリストデータ400、連字/外字置換テーブル640、圧縮化帳票ファイル群F、暗号化数値・文字出現頻度管理データ650および暗号化連字/外字置換テーブル660は、具体的には、たとえば、図1に示したROM102、RAM103、HD105などの記録媒体によって、その機能を実現する。
また、編集部601(内部の機能的構成含む)および検索部602(内部の機能的構成含む)は、具体的には、たとえば、図1に示したROM102、RAM103、HD105などの記録媒体に記録されたプログラムを、CPU101が実行することによって、その機能を実現する。
(数値・文字出現頻度管理データ生成部612の機能的構成)
つぎに、図6に示した数値・文字出現頻度管理データ生成部612の機能的構成について説明する。図7は、図6に示した数値・文字出現頻度管理データ生成部612の機能的構成を示すブロック図である。図7において、数値・文字出現頻度管理データ生成部612は、数値・文字データ抽出部701と、数値・文字出現頻度集計部702と、ソート部703と、生成処理部704とから構成されている。
数値・文字データ抽出部701は、帳票ファイルから数値・文字データを順次抽出する。数値・文字出現頻度集計部702は、数値・文字データ抽出部701によって抽出された数値・文字データの帳票ファイルfiにおける出現頻度を集計する。また、数値・文字出現頻度集計部702は、数値・文字データの帳票ファイルf0〜fnごとの存否も検出する。
また、ソート部703は、出現頻度順に数値・文字データをソートする。生成処理部704は、ソートされた各数値・文字データの出現頻度と、存否検出結果である各数値・文字データの出現マップ501〜509とを用いて、数値・文字出現頻度管理データ500を生成する。また、連字/外字置換テーブル640も生成する。ここで、数値・文字出現頻度管理データ生成部612による数値・文字出現頻度管理データ500および連字/外字置換テーブル640の生成処理を具体的に説明する。
図8は、数値・文字出現頻度管理データ500の生成処理を示すデータ構成図である。図8において、(A)は、数値・文字出現頻度集計部702によって数値・文字データが集計されたときの数値・文字出現頻度管理データ500のデータ構成、(B)は、連字/外字置換処理後の数値・文字出現頻度管理データ500のデータ構成、(C)は、標準文字データおよび外字データからなる混合データのソート後における数値・文字出現頻度管理データ500のデータ構成、(D)は、低出現頻度の混合データのカット後における数値・文字出現頻度管理データ500のデータ構成、(E)は、最終的に生成された数値・文字出現頻度管理データ500のデータ構成を示している。
(A)において、符号800は、文字出現頻度管理データ500の管理領域である。また、符号801は、数値データ(数字連字を除く)の出現頻度、出現ファイル数、出現順位、出現マップを記憶する数値領域である。また符号802は、8ビット系(ASCII)である英字、カタカナ、記号、16ビット系(JIS)の英字、カタカナ、記号、16ビット系(JIS)のかなや漢字などの標準文字データの出現頻度、出現ファイル数、出現順位、出現マップを記憶する標準文字領域である。
また、符号803は、外字の出現頻度、出現ファイル数、出現順位、出現マップを記憶する外字領域である。また、符号804は、連字データの出現頻度、出現ファイル数、出現順位、出現マップを記憶する連字領域である。また、符号805は、8ビットのバイナリデータの出現頻度、出現ファイル数、出現順位を記憶するバイナリ領域である。
(A)のデータ構造において、連字領域804の連字データは、その出現頻度順にソートされる。そして、所定の出現頻度以上の連字データを、外字データと重複しないように、他の外字データ(以下、「連字外字データ」)に置換する。このように、出現頻度の高い複数の文字列からなる連字データを、単一文字データである外字データに置換することにより、データ量の削減を図ることができ、圧縮効率の向上を図ることができる。なお、所定の出現頻度未満の連字データは、低出現頻度の連字データであるため、単一の文字データに分解されて、該当する領域に割り当てられる。この結果、(B)連字/外字置換処理後の数値・文字出現頻度管理データ500のデータ構成となる。
また、(B)のデータ構造において、数値領域801のデータ、標準文字領域802の標準文字データおよび外字領域803の外字データを混合して高出現頻度順にソートした結果が、(C)のデータ構造である。(C)のデータ構造において、(B)に示した連字外字領域814の連字外字データおよびバイナリ領域805のバイナリデータは、ソートの対象外である。
(C)のデータ構造において、数値データと標準文字データと外字データとが混在する混合領域812において、低出現頻度、たとえば、出現回数0回のデータはカットされる。このカットされたときのデータ構造が、(D)のデータ構造である。(D)において、管理領域800および混合領域812と、連字外字領域814と、バイナリ領域805とを結合することで、(E)のデータ構造で示したような、最終的な数値・文字出現頻度管理データ500を生成することができる。
この数値・文字出現頻度管理データ500において、管理領域800には、ファイル・ブロック数と、出現文字データの種類の数(出現文字数(種類))と、連字外字データの数(連字数(256種))と、バイナリデータ数(バイナリ(256種))とが記録される。
そして、図5に示した数値・文字出現頻度管理データ500は、バイナリデータを除く数値・文字データごとに、出現頻度と出現マップ510とが対応付けられている。数値・文字データは高出現頻度順にソートされている。なお、後述するが、図5に示した数値・文字出現頻度管理データ500において、数値・文字データとその出現頻度は、所定のマスタキーを用い、暗号化アルゴリズムである排他的論理和(XOR)などによって暗号化される。
つぎに、連字/外字置換処理について具体的に説明する。図9は、連字/外字置換処理を示すデータ構成図である。図9において、(F)は、数値・文字出現頻度集計部702によって連字データが集計されたときの数値・文字出現頻度管理データ500の連字領域804のデータ構成、(G)は、連字データのソート後における連字領域804のデータ構成、(H)は、置換後におけるデータ構成を示している。
(F)のデータ構造において、連字領域804は、領域901〜907を有している。領域901には、8ビット系(ASCII)の数字列データ(「00」〜「99」)の情報(当該数字列データ、出現頻度、出現ファイル数、出現順位、出現マップ)が記憶されている。
領域902には、8ビット系(ASCII)の英字列データ(「AA」〜「zz」)の情報(当該英字列データ、出現頻度、出現ファイル数、出現順位、出現マップ)が記憶されている。また、領域903には、8ビット系(ASCII)のカタカナ列データ(「アア」〜「ンン」、濁音・半濁音)の情報(当該カタカナデータ、出現頻度、出現ファイル数、出現順位、出現マップ)が記憶されている。
領域904には、16ビット系(JIS)の数字列データ(「00」〜「99」)の情報(当該数字列データ、出現頻度、出現ファイル数、出現順位、出現マップ)が記憶されている。また、領域905には、16ビット系(JIS)の英字列データ(「AA」〜「zz」)の情報(当該数字列データ、出現頻度、出現ファイル数、出現順位、出現マップ)が記憶されている。
領域906には、16ビット系(JIS)のカタカナ列データ(「アア」〜「ンン」、濁音・半濁音)の情報(当該カタカナ列データ、出現頻度、出現ファイル数、出現順位、出現マップ)が記憶されている。また、領域907には、16ビット系(JIS)の仮名列データ(「ああ」〜「んん」、濁音・半濁音)の情報(当該仮名列データ、出現頻度、出現ファイル数、出現順位、出現マップ)が記憶されている。
また、(G)のデータ構造は、(F)のデータ構造を、各連字データの高出現順にソートすることにより得られるデータ構造である。(G)のデータ構造において、領域911は、高出現頻度の連字データの情報であり、外字データへの置換対象となる。一方、領域912は、所定の出現頻度以下の連字データ(低出現頻度連字データ)の情報である。この低出現頻度連字データは、単一の文字データに分解される。これにより文字データの出現頻度と出現マップ505〜509とが補正される。
また、(H)のデータ構造は、(G)のデータ構造のうち高出現頻度の連字データを外字に置換することによって得られるデータ構造である。連字外字領域814には、置換された連字外字データの情報(当該連字外字データ、出現頻度、出現ファイル数、出現順位、出現マップ)が記憶されている。
また、図10は、最終的に生成された連字/外字置換テーブル640を示す説明図である。連字/外字置換テーブル640は、(G)のデータ構造の領域911の連字データと、(H)のデータ構造の領域814の連字外字データとを対応させることによって生成される。
(圧縮/暗号化部613の詳細な機能的構成)
つぎに、図6に示した圧縮/暗号化部613の詳細な機能的構成について説明する。図11は、図6に示した圧縮/暗号化部613の詳細な機能的構成を示すブロック図である。図11において、圧縮/暗号化部613は、出現頻度補正部1101と、低出現頻度数値・文字データ分解部1102と、暗号化部1103と、生起確率演算部1104と、ハフマン木生成部1105と、ファイル圧縮部1106と、から構成されている。
まず、出現頻度補正部1101は、数値・文字出現頻度管理データ500内の数字に関する出現頻度を補正する。具体的には、たとえば、0〜9の数字や小数点、フィーダ(以下、「数字等」という)に対する圧縮符号のビット幅を設定し、そのビット幅に応じた出現頻度を、0〜9の数字等に対して設定する。より具体的には、文字データの出現頻度よりも高くなるように強制的に数字等の出現頻度を補正する。
図12は、数字等の出現頻度の補正の一例を示す説明図である。図12では、数値・文字データの出現頻度を補正する符号化テーブルを示している。図12では、圧縮符号のビット幅が4ビットであるため、数値等の各出現頻度を1/16とする。そして、さらに出現順位に応じて出現頻度を加算している。図12に示した補正例は、数値が多い帳票ファイルに有効である。なお、補正により出現頻度の総和が1を超過した場合、その他の文字データの出現頻度に応じて、その他の文字データの出現頻度が補正される。
図13は、数字等の出現頻度の補正の他の例を示す説明図である。図13でも、数値・文字データの出現頻度を補正する符号化テーブルを示している。図13では、圧縮符号のビット幅が5ビットであるため、数値等の各出現頻度を1/32とする。そして、さらに出現順位に応じて出現頻度を加算している。図13に示した補正例は、文字データが多いホームページなどに有効である。なお、補正により出現頻度の総和が1を超過した場合、その他の文字データの出現頻度に応じて、その他の文字データの出現頻度が補正される。
また、図11において、低出現頻度数値・文字データ分解部1102は、数値・文字出現頻度管理データ500内における文字領域の数値・文字データを高出現頻度順にソートする。そして、所定の出現頻度以下の残余の低出現頻度の数値・文字データを8ビットコードに分解して、同じ8ビットコードであるバイナリデータが記憶されているバイナリ領域に記憶する。
暗号化部1103は、低出現頻度数値・文字データ分解部1102による分解によって得られた数値・文字出現頻度管理データ500を、所定のマスタキーを用いてXORによる暗号化をおこない、暗号化数値・文字出現頻度管理データ650を生成する。連字/外字置換テーブル640も同様に、所定のマスタキーを用いてXORによる暗号化をおこない、暗号化連字/外字置換テーブル660を生成することとしてもよい。
また、生起確率演算部1104は、低出現頻度数値・文字データ分解部1102による分解によって得られた文字出現頻度管理データ500における数値データ、標準文字データ、連字外字データおよびバイナリデータを高出現順にソートして、これらの生起確率を演算する。また、ハフマン木生成部1105は、生起確率演算部1104によって演算された生起確率からハフマン木を生成する。
また、ファイル圧縮部1106は、ハフマン木生成部1105によって生成されたハフマン木を用いて帳票ファイル群fを圧縮し、圧縮化帳票ファイル群Fを生成する。具体的には、各帳票ファイルf0〜fnに記述されている数値・文字データに対して、補正後の出現頻度が高い順、すなわち生起確率が高い順に短いビットを割り当てて、帳票ファイル群fを圧縮する。ファイル圧縮部1106による帳票ファイル群fの圧縮は、数値と文字データとで圧縮法が異なる。この点については後述する。
つぎに、圧縮/暗号化部613による具体的なハフマン木生成処理について説明する。図14は、圧縮/暗号化部613による具体的なハフマン木生成処理を示す説明図である。図14の(I)に示した数値・文字出現頻度管理データ500を、低出現頻度数値・文字データ分解部1102により、低出現頻度の文字データを分解して、バイナリデータが記憶されているバイナリ領域に記憶する(図14中(J))。
つぎに、(J)のデータ構造において、混合領域、連字外字領域、およびバイナリ領域内のすべての数値・文字データを高出現頻度順にソートする(図14中(K))。そして、(K)の領域1400において、出現頻度をハフマンの圧縮パラメータとして各数値・文字データの生起確率を演算する(図14中(L))。最後に(L)において、各数値・文字データの生起確率からハフマン木1401を生成する(図14中(M))。
(ファイル圧縮部1106の詳細な機能的構成)
つぎに、図11に示したファイル圧縮部1106の詳細な機能的構成について説明する。図15は、図11に示したファイル圧縮部1106の詳細な機能的構成を示すブロック図である。
図15において、ファイル圧縮部1106は、フィーダ検出部と、文字データ抽出部と、数値抽出部と、数値詳細情報検出部と、圧縮処理部と、から構成されている。
まず、フィーダ検出部1501は、帳票ファイルfiの中からフィーダを検出する。フィーダは数値の先頭に位置するため、フィーダが検出されると、その後には数値が存在することとなり、フィーダが検出されないと、当該文字データと認識される。
また、文字データ抽出部1502は、フィーダ検出部1501によりフィーダにフィーダが検出されなかった場合、その位置のデータを文字データとして抽出する。抽出された文字データは圧縮処理部1505において圧縮処理される。
数値抽出部1503は、フィーダ検出部1501によりフィーダが検出された場合、当該フィーダに関連付けられている数値、たとえば、フィーダに続く数字列を数値として抽出する。この場合、数字列の中に、カンマや小数点が含まれている場合、そのカンマや小数点も抽出する。
また、数値詳細情報検出部1504は、数値抽出部1503によって抽出された数値の詳細な情報を抽出する。ここで、詳細な情報とは、たとえば、桁数はいくつか、数値が全角であるか半角であるか、カンマが含まれているか、小数点が含まれているか、含まれている場合の小数点の位置などを検出する。
また、圧縮処理部1505は、ハフマン木生成部1105によって生成されたハフマン木を用いて、文字データ抽出部1502によって抽出された文字データや、数値抽出部1503によって抽出された数値データを圧縮する。
数値を圧縮する場合、ハフマン木を用いて、桁数を示す数字や桁ごとの数字を、当該数字に応じた圧縮符号に変換する。このとき、桁ごとの数字の圧縮符号は、桁順に配列するものとする。また、数値に小数点が含まれている場合、小数点に応じた圧縮符号に変換する。カンマの有無や全角・半角については、1ビットであらわす。
(数値圧縮処理)
つぎに、上述した圧縮処理部1505における数値圧縮処理について説明する。数値圧縮処理では、まず、金額や血圧などの数値情報から数値のみを抽出する。そして、この抽出された数値を圧縮する。具体的には、図12や図13に示した符号化テーブルを参照して、フィーダの圧縮符号を読み出す。
つぎに、数値が半角か全角かを示すビット(全角・半角ビット)を設定する。この全角・半角ビットは全角の場合が「1」で半角の場合が「0」である。また、数値がカンマ「,」を用いた表記であるか否かを示すカンマ有無ビットを設定する。このカンマ有無ビットはカンマ有りの場合が「1」でカンマ無しの場合が「0」である。
つぎに、数値の桁数を検出する。検出された桁数は小数点以下の桁数は含まれないこととする。そして、検出された桁数が示す数字の圧縮符号を図12に示した符号化テーブルから読み出す。また、数値を構成する先頭桁から末尾桁までの数字の圧縮符号を、図12や図13に示した符号化テーブルから読み出す。
つぎに、数値に小数点があれば小数点の圧縮符号を図12や図13に示した符号化テーブルから読み出す。このようにして、数値は、圧縮符号およびビットからなる数字列に圧縮される。以下、図12の符号化テーブルを用いた圧縮処理例について説明する。なお、圧縮処理された数値を、圧縮数値と称す。
図16−1は、数値圧縮処理の第1の例を示す説明図である。図16−1においては、数値情報「¥6,800.−」から先頭の「¥」および末尾の「−」を分離して、数値「6,800.」を抽出する。そして、この数値「6,800.」を圧縮する。
具体的には、数値の開始位置を示すフィーダ「x’B’」の圧縮符号「1011」を図12に示した符号化テーブルから読み出す。つぎに、数値「6,800.」が半角であることを示す全角・半角ビット「0」を設定する。また、数値データ「6,800.」がカンマ「,」を用いた表記であることを示すカンマ有無ビット「1」を設定する。つぎに、数値「6,800.」の桁数「4」を検出し、検出された桁数「4」の圧縮符号「0100」を図12に示した符号化テーブルから読み出す。
つぎに、数値「6,800.」の先頭数字「6」、第2数字「8」、第3数字「0」、および末尾数字「0」までの数字の圧縮符号「0110」,「1000」,「0000」,「0000」を、図12に示した符号化テーブルから読み出す。最後に、数値「6,800.」の小数点「x’A’」の圧縮符号「1010」を、図12に示した符号化テーブルから読み出す。このようにして、数値「6,800.」は圧縮されることとなる。
図16−2は、数値圧縮処理の第2の例を示す説明図である。図16−2においては、数値情報「$680.50−」から先頭の「$」および末尾の「−」を分離して、数値「680.50」を抽出する。そして、この数値「680.50」を圧縮する。
具体的には、数値の開始位置を示すフィーダ「x’B’」の圧縮符号「1011」を図12に示した符号化テーブルから読み出す。つぎに、数値「680.50」が半角であることを示す全角・半角ビット「0」を設定する。また、数値「680.50」がカンマ「,」を用いていない表記であることを示すカンマ有無ビット「0」を設定する。つぎに、数値「680.50」の桁数「3」を検出し、検出された桁数「3」の圧縮符号「0011」を図12に示した符号化テーブルから読み出す。
つぎに、数値「680.50」の先頭数字「6」、第2数字「8」、第3数字「0」、小数点「x’A’」、第4数字「5」、および末尾数字「0」までの数字の圧縮符号「0110」,「1000」,「0000」,「1010」,「0101」,「0000」を、図12に示した符号化テーブルから読み出す。このようにして、数値「680.50」は圧縮されることとなる。
図16−3は、数値圧縮処理の第3の例を示す説明図である。図16−3においては、数値情報「6800円」から末尾の「円」を分離して、数値「6800」を抽出する。そして、この数値「6800」を圧縮する。
具体的には、数値の開始位置を示すフィーダ「x’B’」の圧縮符号「1011」を図12に示した符号化テーブルから読み出す。つぎに、数値「6800」が全角であることを示す全角・半角ビット「1」を設定する。また、数値「6800」がカンマ「,」を用いていない表記であることを示すカンマ有無ビット「0」を設定する。つぎに、数値「6800」の桁数「4」を検出し、検出された桁数「4」の圧縮符号「0100」を図12に示した符号化テーブルから読み出す。
つぎに、数値「6800」の先頭数字「6」、第2数字「8」、第3数字「0」、および末尾数字「0」までの数字の圧縮符号「0110」,「1000」,「0000」,「0000」を、図12に示した符号化テーブルから読み出す。このようにして、数値「6800」は圧縮されることとなる。
図16−4は、数値抽象化データの圧縮処理例を示す説明図である。図16−4においては、HTMLデータ中、最小血圧の値を示す数値抽象化データ「<最小血圧>107<最小血圧>」から先頭および末尾の「</最小血圧>」を分離して、数値「107」を抽出する。そして、この数値「107」を圧縮する。
具体的には、数値の開始位置を示すフィーダ「x’0B’」の圧縮符号「00001011」を図12に示した符号化テーブルから読み出す。このフィーダ「x’0B’」は、数値が最終血圧であることを識別するフィーダである。つぎに、数値「107」が半角であることを示す全角・半角ビット「0」を設定する。また、数値「107」がカンマ「,」を用いていない表記であることを示すカンマ有無ビット「0」を設定する。つぎに、数値「107」の桁数「3」を検出し、検出された桁数「3」の圧縮符号「0011」を図12に示した符号化テーブルから読み出す。
つぎに、数値「107」の先頭数字「1」、第2数字「0」、および第3数字「7」までの数字の圧縮符号「0001」,「0000」,「0111」を、図12に示した符号化テーブルから読み出す。このようにして、数値「107」は圧縮されることとなる。
(圧縮化帳票ファイルのデータ構造)
つぎに、ファイル圧縮部1106によって圧縮された圧縮化帳票ファイルのデータ構造について説明する。図17−1は、ファイル圧縮部1106によって圧縮された圧縮化帳票ファイルのデータ構造を示す説明図である。図17−1では、任意の圧縮化帳票ファイルFiに着目して説明する。この圧縮化帳票ファイルFiは、ブロック数情報(m個)を格納する領域1701と、m個の各ブロックのアドレス情報(#1〜#m)を格納する領域1702と、各ブロックの圧縮ブロックデータC1〜Cmを格納する領域1703から構成される。
また、図17−2は、圧縮ブロックデータC1〜Cmと、圧縮前の元のブロックデータとの比較を示す図表である。図17−2を参照すると、圧縮ブロックデータC1〜Cmのレングスが、対応する元のブロックデータのレングスの約半分に圧縮されていることがわかる。
(検索初期化部621の詳細な機能的構成)
つぎに、図6に示した検索初期化部621の詳細な機能的構成について説明する。図18は、図6に示した検索初期化部621の詳細な機能的構成を示すブロック図である。図18において、検索初期化部621は、復号部1801と、低出現頻度数値・文字データ分解部1802と、生起確率演算部1803と、ハフマン木生成部1804と、出現マップ設定部1805と、から構成されている。
まず、復号部1801は、暗号化数値・文字出現頻度管理データ650を復号する。具体的には、図11で用いた暗号化のマスタキーを用いて排他的論理和(XOR)による復号処理を実行する。同様に、暗号化連字/外字置換テーブル660も、元の連字/外字置換テーブル640に戻す。また、低出現頻度数値・文字データ分解部1802、生起確率演算部1803およびハフマン木生成部1804は、図11に示した低出現頻度数値・文字データ分解部1102、生起確率演算部1104およびハフマン木生成部1105と同一の処理を実行し、ハフマン木1810を生成する。このハフマン木は、出現頻度補正部1101により補正されたハフマン木となる。
また、出現マップ設定部1805は、復号された数値・文字出現頻度管理データ500の出現マップ510を読み込んでメモリ展開し、区点対応テーブルとリンクする。区点は、JISによって制定された全角文字向けの文字コードであり、区点対応テーブルは、各区点のアドレスを記憶したテーブルである。
図19は、文字の区点対応テーブルと出現マップとの対応関係を示す説明図である。文字の区点対応テーブル1900は、数値・文字出現頻度管理データ500の文字データと出現マップ505〜509とを対応づけるテーブルである。この文字の区点対応テーブル1900により、区点に対応する文字データの存否をあらわすビット列の出現マップ505〜509を呼び出すことができる。
図20は、数値の区点対応テーブルと出現マップとの対応関係を示す説明図である。数値の区点対応テーブル2000は、数値・文字出現頻度管理データ500の数値群と出現マップ503とを対応づけるテーブルである。この数値の区点対応テーブル2000により、区点に対応する数値群内の数値の存否をあらわすビット列の出現マップ503を呼び出すことができる。
(全文検索実行部624の詳細な機能的構成)
つぎに、図6に示した検索実行部622内の全文検索実行部624の詳細な機能的構成について説明する。図21は、検索実行部622内の全文検索実行部624の詳細な機能的構成を示すブロック図である。
図21において、全文検索実行部624は、検索キーワード入力処理部2101と、検索キーワード圧縮部2102と、出現マップ読取部2103と、圧縮化帳票ファイル特定部2104と、圧縮化帳票ファイル抽出部2105と、判定部2106と、ブロック伸長部2107と、文字列比較部2108と、ファイル構成データ特定部2109と、検索候補一覧表示部2110と、検索候補選択部2111と、から構成されている。
まず、検索キーワード入力処理部2101は、ユーザからの検索キーワードの入力を受け付ける。また、検索キーワードが複数ある場合、各検索キーワードの文字列を連結する。さらに、検索キーワードの連字が所定の連字に該当する場合、連字/外字置換テーブル640を用いて、連字を外字に置換する。このあと、検索キーワード入力処理部2101は、検索キーワードを単一文字に分解する。
また、検索キーワード圧縮部2102は、検索キーワード入力処理部2101によって入力された検索キーワードを、検索初期化部621のハフマン木生成部1804によって生成されたハフマン木1810を用いて圧縮する。また、出現マップ読取部2103は、出現マップ設定部1805によって設定された出現マップ510を用いて、検索キーワードの各文字の各帳票ファイルf0〜fnにおけるビット列を読み取る。具体的には、この出現マップ510における各文字データは、区点対応テーブルにより区点とリンクしているため、区点と一致する検索キーワードの各文字データのビット列を読み取ることができる。
圧縮化帳票ファイル特定部2104は、出現マップ510から読み取られた各文字の各帳票ファイルf0〜fnにおけるビット列の論理積を算出することにより、検索キーワードの各文字データがすべて存在する圧縮化帳票ファイルを特定することで、圧縮化帳票ファイルの絞込みをおこなう。ここで、絞込みの一例について説明する。
図22は、圧縮化帳票ファイルFiの絞込みの一例を示す説明図である。図22においては、検索キーワードを『出金伝票』とし、帳票ファイルの数を4個、すなわち、ファイル番号i=0〜3までとする。図22において、たとえば、文字『出』のビット列は[1100]である。このビット列は、ファイル番号0、1の帳票ファイルf0、f1には文字『出』が含まれており、ファイル番号2、3の帳票ファイルf2、f3には文字『出』が含まれていないことを示している。
そして、図22において、絞込み結果は、ファイル番号iごとのビットの論理積(AND)結果を示している。この絞込み結果によれば、ファイル番号1の帳票ファイルf1のみが、存在を示すビット「1」となっているため、検索キーワードを構成するすべての文字『出』、『金』、『伝』および『票』は、帳票ファイルf1にのみ存在し、他の帳票ファイルf0、f2、f3には存在しないことがわかる。これにより、検索対象としてオープンするファイルを、帳票ファイルf1を圧縮した圧縮化帳票ファイルF1のみに特定することができ、無駄なファイルのオープン/クローズ処理を防止して検索速度の向上を図ることができる。
また、図21において、圧縮化帳票ファイル抽出部2105は、圧縮化帳票ファイル群Fの中から、圧縮化帳票ファイル特定部2104によって特定された帳票ファイルFiを抽出する。図22の例では、ファイル番号1の圧縮化帳票ファイルF1を抽出する。
また、判定部2106は、圧縮化帳票ファイル抽出部2105によって抽出された圧縮化帳票ファイルFiに、検索キーワード圧縮部2102によって圧縮された検索キーワード(以下、「圧縮キーワード」)が含まれているか否かを判定する。具体的には、圧縮化帳票ファイルFi内の圧縮ブロックデータごとに判定をおこなっている。
この判定結果が不一致である場合、圧縮化帳票ファイルFiには、検索キーワードが含まれていないことがわかる。一方、判定結果が一致である場合、圧縮化帳票ファイルFiには、検索キーワードが含まれていることがわかる。たとえば、図22においては、圧縮化帳票ファイルF1に、検索キーワード『出金伝票』という文字列が含まれていることがわかる。
また、ブロック伸長部2107は、判定部2106により一致すると判定された圧縮化帳票ファイルFiの圧縮ブロックデータのみ伸長する。この判定部2106およびブロック伸長部2107により、圧縮化帳票ファイルFiのまま判定をおこなうことができ、不一致であれば、圧縮化帳票ファイルFiを伸長する前に検索候補から外し、一致した帳票ファイルのみ伸長することができる。また、ブロック伸長部2107において、伸長された帳票ファイルfiに連字外字データが含まれている場合、復号部1801によって復号された連字/外字置換テーブル640を用いて、連字外字データを元の連字データに置換する。
また、文字列比較部2108は、ブロック伸長部2107によって伸長されたブロックデータ内の文字列と、検索キーワード入力処理部2101によって入力された検索キーワードとを比較する。
ファイル構成データ特定部2109は、検索キーワードに一致する文字列の帳票データgjがあった場合、当該帳票データgjのページ番号jおよび当該帳票データgjが属する帳票ファイルfiのファイル番号iを特定する。
検索候補一覧表示部2110は、ページリストデータ400を編集して、ファイル構成データ300内のファイルリストのうち、文字列比較部2108により帳票データgjのページ番号jおよび当該帳票データgjが属する帳票ファイルfiのファイル番号iが特定されたファイルリストを、検索候補一覧(たとえば、見出し語の一覧)として図1に示したディスプレイ108に表示する。
また、検索候補選択部2111は、検索候補一覧表示部2110によって表示された検索候補一覧の中から、ユーザの操作によって選択された検索候補を受け付ける。
(全文検索機能における不一致照合処理)
つぎに、上述した全文検索実行部624における不一致照合処理について説明する。上述した全文検索の文字列の不一致照合方式は、圧縮・暗号化されたデータを伸長せず、検索キーワードを圧縮し不一致照合をおこなうこととしている。
非圧縮データの文字列の照合は1バイト毎、もしくは文字単位に比較されるが、圧縮データでは、文字の境界の識別が困難であり、1ビット毎にシフトを行い比較することが必要である。ここでは、この点に着目して、圧縮化帳票ファイルに対して、CPU101が得意であるバイト毎の操作をもとにした不一致照合処理を全文検索実行部624において実行する。
図23は、全文検索実行部624における不一致照合処理を示す説明図である。図21に示した検索キーワード入力処理部2101により入力された検索キーワード2301は、検索キーワード圧縮部2102によりハフマン木1810を用いてxビットの圧縮キーワード2302に圧縮され、レジスタRaにセットされる。
一方、圧縮化帳票ファイル抽出部2105によって抽出された特定圧縮化帳票ファイル(圧縮化帳票ファイル)2311内の圧縮ブロックデータ2312をレジスタRbにセットして、レジスタRaにセットされた圧縮キーワード2302と比較する。具体的には、レジスタRbには、所定バイトずつシフトされた圧縮ブロックデータ2312がセットされ、順次圧縮キーワード2302と比較される。
具体的には、圧縮キーワード2302と圧縮ブロックデータ2312とのXOR演算により比較結果2320を出力する。そして、比較結果2320における末尾8ビット(図23中、網掛け表示)のビット列2330を抽出して、不一致照合をおこなう。
図24は、図23に示した圧縮ブロックデータのシフト操作を示す図表である。このシフト操作では、圧縮キーワード2302の圧縮サイズ(圧縮キーワード長)に応じた照合間隔分シフトする。なお、圧縮キーワード長が16ビット以上である場合、照合判定のビット長は8ビットとなるが、11ビット以上15ビット以下の場合、3〜7ビットとして、末尾のビットを調整する。また、圧縮キーワード長が1〜10ビットの場合、圧縮形式の不一致照合はおこなわず、伸長後に検索キーワード2301を照合する。
図25は、照合予測テーブルの生成処理を示す説明図である。図25において、レジスタRaに圧縮キーワード2302をセットする。レジスタRa内の「*」(末尾8ビット)は、圧縮キーワード2302が保持されていないビットである。図25では、そして、レジスタRa内の圧縮キーワード2302を1ビットごとシフトして、シフトテーブル2500を生成する。すなわち、圧縮キーワード2302はnビットであるため、シフト数0ビットからx−8ビットまでのシフトビット列によりシフトテーブル2500を生成する。
そして、レジスタRaにセットされている圧縮キーワード2302とシフトテーブル2500とを照合予測する。具体的には、XOR演算を施すことにより、XORテーブル2501を生成する。そして、XORテーブル2501の各シフトビット列において、「*」が含まれていない17ビット目から24ビット目までの8ビット分の部分ビット列(図中網掛け表示)と対応するシフトビット列のシフト数とを連結して部分判定テーブル2502を生成する。
つぎに、高速判定するための照合予測テーブル2503を生成する。照合予測テーブル2503は、部分判定テーブル2502を参照して、8ビットのアドレスに、シフト数を割り当てる。なお、シフト数が重複するビット列が出現した場合、当該ビット列には「64」がセットされ、照合の際、部分判定テーブル2502を参照する。また、部分判定テーブル2502とは一致しないアドレスには、シフト数として「−1」を割り当てる。この照合予測テーブル2503と不一致照合用のビット列2330とを比較することで、不一致照合を実行する。
図26は、全ビット不一致照合処理を示す説明図である。図26において、現在のシフト数を8で除算することにより、その除数および余りを算出する。そして、特定圧縮化帳票ファイル2311の現在のポインタに除数を加算することで、加算後のポインタに応じた圧縮ブロックデータ2312を再取得してレジスタRbにセットする。そして、セットされた圧縮ブロックデータ2312を余りの値分シフトする。
また、圧縮キーワード2302をレジスタRaにセットする。両レジスタRa、Rbにおいて照合対象外となるビットのマスクをOFFにし、両レジスタRa、Rbを比較する。そして、全ビットが一致した場合に、その一致したアドレスを記録することとする。
(数値検索実行部の詳細な機能的構成)
図27は、検索実行部622内の数値検索実行部625の詳細な機能的構成を示すブロック図である。なお、図21に示した構成と同一構成については同一符号を付し、その説明を省略する。
図27において、数値検索実行部625は、取得部2701と、数値圧縮部2702と、検出部2703と、中間数値群判断部2704と、出現マップ抽出部2705と、省略マップ設定部2706と、下限/上限マップ生成部2707と、特定部2708と、圧縮情報検索部2709と、境界条件判断部2710と、決定部2711と、を有している。
まず、取得部2701は、任意の数値範囲の境界を規定する数値を取得する。ここで、数値範囲とは、境界を規定する数値と境界を規定する演算子とにより特定される区間である。境界を規定する数値とは、数値範囲の下限を規定する数値(下限数値)Nxや上限を規定する数値(上限数値)Nyである。また、境界を規定する演算子とは、「≦」、「<」、「≧」、「>」といった不等号を示す演算子であり、下限数値や上限数値の境界条件となる。
これにより、任意の数値をZとすると、取得部2701では、ユーザ入力や演算子の初期設定などにより、数値Nが取りうる以下の数値範囲を設定することができる。
・Nx<Z
・Nx≦Z
・Ny>Z
・Ny≧Z
・Nx<Z<Ny
・Nx≦Z<Ny
・Nx<Z≦Ny
・Nx≦Z≦Ny
また、数値圧縮部2702は、取得部2701によって取得された数値を圧縮する。具体的には、数値であることを識別するフィーダの圧縮符号、全角・半角ビットの圧縮符号、カンマ有無ビットの圧縮符号、桁数の圧縮符号、各桁の数字の圧縮符号、小数点を含む場合は小数点の圧縮符号などからなる圧縮情報に圧縮する。なお、各圧縮化帳票ファイルFi内の数値も同様な規則で圧縮されている。また、全角・半角ビットおよび圧縮符号、カンマ有無ビットは一律「0」(OFF)としておく。
また、検出部2703は、取得部2701によって取得された境界を規定する数値の桁数および先頭数字を検出する。たとえば、数値NがN=12,345である場合、桁数は「5」であり、先頭数字は「1」である。また、数値に小数が含まれている場合、小数点以下の桁数も計数する。たとえば、数値NがN=12,345.67である場合、桁数は「7」であり、先頭数字は「1」である。また、先頭桁は最上位の1桁としたが、先頭からの連続する複数の上位桁としてもよい。たとえば、数値N(N=12,345)では、先頭数字は、「12」としてもよい。
また、中間数値群判断部2704は、取得部2701によって取得された数値範囲に中間数値群が含まれているか否かを判断する。ここで、中間数値群とは、数値範囲の下限数値を含む数値群(以下、「下限数値群」と称す)と、数値範囲の上限数値を含む数値群(以下、「上限数値群」と称す)との間に存在する数値群である。下限数値群と上限数値群との桁数が相違していれば、中間数値群が存在すると判断する。また、桁数が同一であっても、先頭数字が相違していれば、中間数値群が存在すると判断する。
たとえば、数値範囲が『3,700以上6,300以下』である場合、下限数値群として4桁・先頭数字3の数値群と、上限数値群として4桁・先頭数字6の数値群とが検出される。この場合、中間数値群として、4桁・先頭数字4の数値群と4桁・先頭数字5の数値群とが数値範囲内に存在することとなる。
また、数値範囲が『3,700以上16,300以下』である場合、下限数値群として4桁・先頭数字3の数値群と、上限数値群として5桁・先頭数字1の数値群とが検出される。この場合、中間数値群として、4桁・先頭数字4の数値群〜4桁・先頭数字9の数値群が数値範囲内に存在することとなる。
また、数値範囲が『3,700以上4,300以下』である場合、下限数値群として4桁・先頭数字3の数値群と、上限数値群として4桁・先頭数字4の数値群とが検出される。この場合、中間数値群は存在しない。
同様に、数値範囲が『3,700以上3,900以下』である場合、下限数値群として4桁・先頭数字3の数値群と、上限数値群として4桁・先頭数字3の数値群とが検出される。すなわち、下限数値群および上限数値群が同一の数値群となる。この場合も、中間数値群は存在しない。
また、出現マップ抽出部2705は、数値群の出現マップの中から、検出部2703によって検出された桁数および先頭数字に応じた出現マップを抽出する。たとえば、検出部2703により、桁数「5」で先頭数字「1」が検出された場合、5桁・先頭数字1の数値群に関する出現マップを抽出する。また、中間数値群が存在する場合、中間数値群に関する出現マップも抽出する。
省略マップ設定部2706は、中間数値群に関する出現マップに基づいて、省略マップを設定する。省略マップとは、下限数値群に関する出現マップや上限数値群に関する出現マップとの論理積を演算するためのマップである。省略マップ自体は、数値群に関する出現マップ503と同様、帳票ファイルfiにおける存否をビットのON/OFFであらわしている。したがって、ONになっているビットに対応する帳票ファイルfiには、中間数値群内の数値が存在していることをあらわしており、OFFになっているビットに対応する帳票ファイルfiには、中間数値群内の数値が存在しないことをあらわしている。
省略マップは、具体的には、中間数値群に関する出現マップの論理和を演算することにより中間結果マップを算出し、この中間結果マップ内のビットを反転することにより、省略マップを設定する。なお、中間数値群に関する出現マップが1つしか存在しない場合、当該出現マップ内のビットを反転することにより省略マップを設定することができる。また、中間数値群に関する出現マップがない場合、全ビットOFFの省略マップを設定する。
また、下限/上限マップ生成部2707は、下限マップおよび上限マップを生成する。ここで、下限マップとは、下限数値群に関する出現マップ(下限数値群マップ)と省略マップとの論理積により得られるマップであり、上限マップとは、上限数値群に関する出現マップ(上限数値群マップ)と省略マップとの論理積により得られるマップである。この論理積演算により、下限マップは下限数値群内数値のみの存否をあらわすマップとなり、上限マップは上限数値群内数値のみの存否をあらわすマップとなる。
また、特定部2708は、複数の圧縮化検索対象ファイルの中から、検出部2703によって検出された桁数および先頭数字を満たす数値群内の数値が存在する圧縮化検索対象ファイルを特定する。具体的には、下限マップ内のビットのうち、ONになっているビットに対応する帳票ファイルfiを特定し、圧縮化帳票ファイル群Fの中から圧縮化帳票ファイルFiを抽出する。同様に、上限マップ内のビットのうち、ONになっているビットに対応する帳票ファイルfiを特定し、圧縮化帳票ファイル群Fの中から圧縮化帳票ファイルFiを抽出する。
また、圧縮情報検索部2709は、特定部2708によって特定された圧縮化帳票ファイルFiの中から、ファイル内数値に関する圧縮情報を検索する。圧縮化帳票ファイルfi内においては、ファイル内数値は、フィーダの圧縮符号、全角・半角フラグの圧縮符号、カンマフラグの圧縮符号、桁数の圧縮符号、各桁の数字の圧縮符号などからなる圧縮情報により圧縮されている。圧縮情報検索部2709は、ファイル内数値に関する圧縮情報(たとえば、フィーダの圧縮符号のみ)を検出することで、ファイル内数値に関する圧縮情報を抽出する。
また、境界条件判断部2710は、数値圧縮部2702によって圧縮された境界を規定する数値の圧縮情報と、圧縮情報検索部2709によって検索されたファイル内数値の圧縮情報とを比較することにより、ファイル内数値が境界を規定する数値との境界条件を充足しているか否かを判断する。境界条件とは、(境界を規定する数値)以上、以下、より大きい、より小さいといった境界を規定する数値との大小関係をあらわす条件である。
たとえば、まず、桁数の数字の圧縮符号どうしを比較することにより、圧縮元となる数値どうしの大小を比較する。また、同一桁数である場合、先頭数字の圧縮符号どうしを比較することにより、圧縮元となる数値どうしの大小を比較する。また、先頭数字が同一である場合、順次、つぎの桁の数字どうしを比較することにより、圧縮元となる数値どうしの大小を比較する。これにより、ファイル内数値が境界を規定する数値との境界条件を充足しているか否かを判断することができる。
また、全角・半角ビットおよび圧縮符号、カンマ有無ビットは一律「0」(OFF)としてあるため、ファイル内数値の圧縮情報との比較の際、ファイル内数値の圧縮情報において、全角・半角ビットおよび圧縮符号、カンマ有無ビットを「0」(OFF)に設定する。これにより、全角・半角の相違やカンマの有無を考慮することなく、数値検索をおこなうことができる。
また、決定部2711は、境界条件判断部2710によって判断された判断結果に基づいて、特定部2708によって特定された圧縮化検索対象ファイルFiを、数値範囲内の数値を含むファイルに決定する。具体的には、ファイル内数値が境界を規定する数値との境界条件を充足した場合、特定部2708によって特定された圧縮化検索対象ファイルFiを、数値範囲内の数値を含むファイルに決定する。この決定処理では、出現マップと同様、帳票ファイルに対応するビット列であらわされる下限比較結果マップおよび上限比較結果マップを用いる。初期設定として全ビットをOFFにしておく。
そして、圧縮化帳票ファイルFiにおいて、ファイル内数値が下限数値との境界条件を充足した場合、下限比較結果マップ内の当該圧縮化帳票ファイルFiに対応するビットをONにする。同様に、ファイル内数値が上限数値との境界条件を充足した場合、上限比較結果マップ内の当該圧縮化帳票ファイルFiに対応するビットをONにする。
そして、決定部2711は、最終的に得られた下限比較結果マップと上限比較結果マップと中間結果マップが存在する場合には中間結果マップとの論理和を演算することにより、数値範囲内の数値が存在する圧縮化帳票ファイルFiを決定することができる。
なお、ファイル構成データ特定部2109は、決定部2711により数値範囲内の数値が存在する圧縮化帳票ファイルFiが決定された場合、境界を規定する数値との境界条件を満足したファイル内数値が存在する帳票データgjのページ番号jおよび当該帳票データgjが属する帳票ファイルfiのファイル番号iを特定する。
(数値範囲の大小比較例)
つぎに、数値範囲の第1の大小比較例について説明する。ここでは、数値範囲を特定する下限の数値と上限の数値とが同一桁数で、かつ、先頭桁の数字が異なる場合を例にして説明する。図28−1〜図28−4は、数値範囲の大小比較例を示す説明図である。ここでは、例として、数値範囲『3,700円以上6,300円以下』が与えられたとして、当該数値範囲で指定された範囲の金額(数値)を含む圧縮化帳票ファイルFiを検索する例である。なお、数値範囲の下限数値の数値情報「3,700円」および上限数値の数値情報「6,300円」は、ともに図16−3に示した圧縮処理により圧縮される。
図28−1において、まず、数値範囲『3,700円以上6,300円以下』について、中間数値群の出現マップを抽出する。具体的には、下限数値群の出現マップとなる4桁・先頭数字3マップM43と上限数値群の出現マップとなる4桁・先頭数字6マップM46との間の4桁・先頭数字4マップM44および4桁・先頭数字5マップM45を、中間数値群の出現マップとして抽出する。
4桁・先頭数字3マップM43は、4桁・先頭数字3の数値を有する帳票ファイルfiの存否をあらわしている。4桁・先頭数字4マップM44は、4桁・先頭数字4の数値を有する帳票ファイルfiの存否をあらわしている。4桁・先頭数字5マップM45は、4桁・先頭数字5の数値を有する帳票ファイルfiの存否をあらわしている。4桁・先頭数字6マップM46は、4桁・先頭数字6の数値を有する帳票ファイルfiの存否をあらわしている。
ここで、4桁・先頭数字3マップM43および4桁・先頭数字6マップM46は、大小比較に用いる出現マップである。また、4桁・先頭数字4マップM44および4桁・先頭数字5マップM45は、論理和をとって中間結果マップM01とする。中間結果マップM01は、数値4000〜5999が存在する帳票ファイルfiの存否をあらわしている。そして、この中間結果マップM01内のビットを反転させることで、省略マップM02を得る。
図28−2では、図28−1で得られた4桁・先頭数字3マップM43と省略マップM02との論理積をとることで、下限マップM03を得る。省略マップM02との論理積をとることで、中間数値群内の数値を有する帳票ファイルを除外することができる。
この下限マップM03において、ビットがONである圧縮化帳票ファイルFiを抽出する。この圧縮化帳票ファイルFiを先頭からサーチしてフィーダ(図28−2では「x’B’」)の圧縮符号「1011」を探索する。フィーダの圧縮符号「1011」が探索されると、そのフィーダの圧縮符号「1011」を先頭とする圧縮情報2801を読み出す。この圧縮情報2801のうち、全角・半角ビットおよびカンマ有無ビットが「1」である場合、「0」に変換することでマスクする。この変換後の圧縮情報を比較対象圧縮情報2810と称す。
そして、圧縮化帳票ファイルFi内の数値情報「3,300円」を圧縮した比較対象圧縮情報2810と、下限の数値情報「3,700円」を圧縮処理した下限の圧縮情報2802とを比較する。まず、比較対象圧縮情報2810および下限の圧縮情報2802のフィーダ,桁数,先頭数字の圧縮符号どうしの一致比較をおこなう。この段階でいずれか一つの圧縮符号が不一致であれば、圧縮化帳票ファイルFi内のつぎのフィーダをサーチする。
一方、フィーダの圧縮符号が一致していれば、同種の数値情報であることがわかり、さらに桁数が一致していれば、比較対象圧縮情報2810は少なくとも4桁数字の数値の圧縮形式であることがわかり、さらに先頭数字が一致していれば、比較対象圧縮情報2810は少なくとも先頭数字が「3」の数値の圧縮形式であることがわかる。したがって、フィーダ,桁数,および先頭数字の圧縮符号がすべて一致した場合、同一桁における数字の圧縮符号の大小比較をおこなう。
この例では、第2数字の圧縮符号を比較することで、比較対象圧縮情報2802のファイル内の数値情報「3,300円」よりも下限数値の数値情報「3,700円」が大きいことがわかる。この場合、下限比較結果マップM04において、圧縮化帳票ファイルFiに対応するビットは「0」のままである。そして、圧縮化帳票ファイルFi内のつぎのフィーダをサーチして、下限数値の数値情報「3,700円」以上の数値情報がある場合、下限比較結果マップM04において、圧縮化帳票ファイルFiに対応するビットを「1」とする。
この比較処理を、下限マップM03内においてビットが立っているすべての圧縮化帳票ファイルF0〜Fnについておこなうことで、下限比較結果マップM04を得ることができる。このように、下限マップM03から4桁でかつ先頭数字が「3」である数値を含む圧縮化帳票ファイルFiを抽出することで、帳票ファイルfiを圧縮形式のまま検索することができる。
図28−3では、図28−1で得られた4桁・先頭数字6マップM46と省略マップM02との論理積をとることで、上限マップM05を得る。省略マップM02との論理積をとることで、中間数値群内の数値を有する帳票ファイルを除外することができる。
この上限マップM05において、ビットがONである圧縮化帳票ファイルFiを抽出する。この圧縮化帳票ファイルFiを先頭からサーチしてフィーダ(図28−3では「x’B’」)の圧縮符号「1011」を探索する。フィーダの圧縮符号「1011」が探索されると、そのフィーダの圧縮符号「1011」を先頭とする圧縮情報2803を読み出す。この圧縮情報2803のうち、全角・半角ビットおよびカンマ有無ビットが「1」である場合、「0」に変換することでマスクする。この変換後の圧縮情報を比較対象圧縮情報2830と称す。
そして、圧縮化帳票ファイルFi内の数値情報「6,200円」を圧縮した比較対象圧縮情報2830と、上限の数値情報「6,300円」を圧縮処理した上限の圧縮情報2804とを比較する。まず、比較対象圧縮情報2830および上限の圧縮情報2804のフィーダ,桁数,先頭数字の圧縮符号どうしの一致比較をおこなう。この段階でいずれか一つの圧縮符号が不一致であれば、圧縮化帳票ファイルFi内のつぎのフィーダをサーチする。
一方、フィーダの圧縮符号が一致していれば、同種の数値情報であることがわかり、さらに桁数が一致していれば、比較対象圧縮情報2830は少なくとも4桁数字の数値の圧縮形式であることがわかり、さらに先頭数字が一致していれば、比較対象圧縮情報2830は少なくとも先頭数字が「3」の数値の圧縮形式であることがわかる。したがって、フィーダ,桁数,および先頭数字の圧縮符号がすべて一致した場合、同一桁における数字の圧縮符号の大小比較をおこなう。
この例では、第2数字の圧縮符号どうしを比較することで、比較対象圧縮情報2830の数値情報「6,200円」よりも上限数値の数値情報「6,300円」が大きいことがわかる。この場合、上限比較結果マップM06において、圧縮化帳票ファイルFiに対応するビットを「1」とする。
この比較処理を、上限マップM05内においてビットが立っているすべての圧縮化帳票ファイルFiについておこなうことで、上限比較結果マップM06を得ることができる。このように、上限マップM05から4桁でかつ先頭数字が「6」である数値を含む圧縮化帳票ファイルFiを抽出することで、帳票ファイルfiを圧縮形式のまま検索することができる。
図28−4では、下限比較結果マップM04、中間結果マップM01、および上限比較結果マップM06の論理和をとることで、統合結果マップM07を得ている。これにより、数値範囲『3,700円以上6,300円以下』内の数値情報を含む帳票ファイルfiを圧縮形式のまま特定することができる。
なお、上述した図28−1〜図28−4の例では、数値範囲を特定する下限数値と上限数値とが同一桁数で、かつ、先頭桁の数字が異なる場合を例にして説明したが、上限の数値の桁数が大きい場合(または下限の数値の桁数が小さい場合)も同様に比較することができる。たとえば、数値範囲が『3,700円以上64,000円以下』である場合、4桁先頭数字4マップ〜4桁先頭数字9マップと5桁先頭数字1マップ〜5桁先頭数字5マップまでを中間数値群の出現マップとして抽出すればよい。
また、数値範囲が『3,700円以上3,900円以下』や『3,700円以上4,500円以下』など、中間数値群が存在しない場合は、中間結果マップM01が存在しないため、省略マップM02の全ビットをOFFにする。そして、統合結果マップM07を得る場合も中間結果マップM01が存在しないため、下限比較結果マップM04と上限比較結果マップM06との論理和により統合結果マップM07を演算する。
(検索結果表示部623の詳細な機能的構成)
つぎに、図6に示した検索結果表示部623の詳細な機能的構成について説明する。図29は、図6に示した検索結果表示部623の詳細な機能的構成を示すブロック図である。図29において、検索結果表示部623は、読出し部2901と、ファイル伸長部2902と、ファイル表示部2903と、から構成されている。
まず、読出し部2901は、検索候補選択部2111によって選択された検索候補である項目データを、圧縮化帳票ファイル群Fの圧縮化帳票ファイルFiから読み出す。また、ファイル伸長部2902は、読出し部2901によって読み出された項目データを、ハフマン木1801によって伸長する。ファイル表示部2903は、ファイル伸長部2902によって伸長された項目データを検索結果として表示する。
(情報検索処理手順)
つぎに、この発明の実施の形態にかかる情報検索装置600の情報検索処理手順について説明する。図30は、この発明の実施の形態にかかる情報検索装置600の情報検索処理手順を示すフローチャートである。図30において、まず、数値・文字出現頻度管理データ生成部612により、数値・文字出現頻度管理データ生成処理を実行する(ステップS3001)。
そして、圧縮/暗号化部613により、圧縮/暗号化処理を実行する(ステップS3002)。このあと、検索初期化部621により、検索初期化処理を実行する(ステップS3003)。つぎに、検索実行部622により、検索処理を実行する(ステップS3004)。
最後に、検索結果表示部623により、検索結果表示処理を実行する(ステップS3005)。なお、検索結果表示処理では、検索候補一覧から選択された検索候補(項目データ)を圧縮帳票ファイルFiから読み出して、ハフマン木1810にて伸長することにより、項目データの全文を検索結果として表示することができる。
つぎに、図30に示した数値・文字出現頻度管理データ生成処理(ステップS3001)の詳細な処理手順について説明する。図31は、図30に示した数値・文字出現頻度管理データ生成処理(ステップS3001)の詳細な処理手順を示すフローチャートである。図31において、まず、初期化処理を実行する(ステップS3101)。具体的には、8,16ビットの数値・文字データ、連字データ、バイナリデータの区点対応の集計領域を確保し、出現頻度と出現マップのセグメント等を初期化する。また、数値・文字データのコードをセットし、各種カウンタを初期化する。
つぎに、数値・文字出現頻度集計処理を実行する(ステップS3102)。この数値・文字出現頻度集計処理の詳細な処理手順については後述する。この数値・文字出現頻度集計処理のあと、数値・文字出現頻度管理データ500の領域確保とその領域の初期化を実行し(ステップS3103)、8,16ビットの数値・文字データ、連字データ、バイナリデータの文字コードと出現頻度をセットする(ステップS3104)。
そして、出現マップの各セグメントを連結し(ステップS3105)。連字領域の連字データを高出現頻度順にソートする(ステップS3106)ことで、256種の連字データを選択する。これにより、連字データの削減を図ることができる。
つぎに、連字/外字置換をおこなうとともに、連字/外字置換テーブル640を生成する(ステップS3107)。具体的には、高出現頻度順に連字データを外字データに置換することにより、連字外字データと連字/外字置換テーブル640を生成する。
そして、低出現頻度の連字データ、すなわち外字に置換されなかった連字データを単一文字データに分解し、該当する文字領域に割り振る補正をおこなう(ステップS3108)。すなわち、低出現頻度の連字データを表音文字データに分割し、当該文字データの頻度の加算と出現マップのOR演算を実行する。
このあと、数値・文字データを高出現頻度順にソートし(ステップS3109)、頻度0回の数値・文字データをカットして、連字外字データとバイナリデータとを結合し(ステップS3110)、この結合によって得られた数値・文字出現頻度管理データ500をファイルに出力する(ステップS3111)。これにより、ステップS3002に移行する。
つぎに、上述した数値・文字出現頻度集計処理(ステップS3102)の詳細な処理手順について説明する。図32−1は、上述した数値・文字出現頻度集計処理(ステップS3102)の詳細な処理手順を示すフローチャート(前半)である。図32−1において、まず、先頭帳票ファイルf0をオープンする(ステップS3201)。
つぎに、オープンされた帳票ファイルから順次データを抽出する。抽出されたデータがバイナリデータである場合(ステップS3202:Yes)、当該バイナリデータの出現頻度を加算し、当該バイナリデータの出現マップにおけるオープン中のファイルに対応するビットを「1」に設定し、さらに、バイトカウンタを加算する(ステップS3203)。そして、図32−2に示すステップS3211に移行する。
一方、ステップS3202において、抽出されたデータがバイナリデータではない場合(ステップS3202:No)、数値であるか否かを判定する(ステップS3204)。たとえば、数字のみからなる数字列であれば、数値と判定する。また、数字のほか「,」(カンマ)や「.」(小数点)が数字列に含まれている場合も、数値と判定する。
そして、数値である場合(ステップS3204:Yes)、当該数値の出現頻度を加算し、当該数値の出現マップにおけるオープン中のファイルに対応するビットを「1」に設定し、さらに、バイトカウンタを加算する(ステップS3205)。そして、図32−2に示すステップS3211に移行する。
一方、ステップS3204において、抽出されたデータが数値ではない場合(ステップS3204:No)、連字データであるか否かを判定する(ステップS3206)。連字データである場合(ステップS3206:Yes)、当該連字データの出現頻度を加算し、当該連字データの出現マップにおけるオープン中のファイルに対応するビットを「1」に設定し、さらに、バイトカウンタを加算する(ステップS3207)。そして、図32−2に示すステップS3211に移行する。
一方、ステップS3206において、抽出されたデータが連字データでない場合(ステップS3206:No)、漢字データであるか否かを判定する(ステップS3208)。漢字データでない場合(ステップS3208:No)、当該データは表音文字データであるため、その表音文字データの出現頻度を加算し、当該表音文字データの出現マップにおけるオープン中のファイルに対応するビットを「1」に設定し、バイトカウンタを加算する(ステップS3209)。そして、図32−2に示すステップS3211に移行する。
一方、ステップS3208において、抽出されたデータが漢字データである場合(ステップS3208:Yes)、当該漢字データの出現頻度を加算し、当該漢字データの出現マップにおけるオープン中のファイルに対応するビットを「1」に設定し、バイトカウンタを加算する(ステップS3210)。そして、図32−2に示すステップS3211に移行する。
図32−2は、数値・文字出現頻度集計処理(ステップS3202)の詳細な処理手順を示すフローチャート(後半)である。図32−2において、出現マップのセグメントのセグメントカウンタを加算し(ステップS3211)、セグメント終了か否か、すなわちセグメントの集計が終了したか否かを判断する(ステップS3212)。セグメントの集計が終了した場合(ステップS3212:Yes)、出現マップのセグメントをファイルに追加出力し、セグメントカウンタをクリアする(ステップS3213)。そして、ステップS3214に移行する。
一方、セグメントの集計が終了していない場合(ステップS3212:No)、またはステップS3213のあと、ブロック終了か否か、たとえば、集計した数値・文字データ数が4000文字に到達したか否かを判断する(ステップS3214)。
そして、ブロック終了した場合(ステップS3214:Yes)、当該ブロックデータを有する帳票ファイルfiのファイル番号i、当該ブロックデータのブロック番号m、オフセット、文字数、およびレングスからなるブロック情報を生成してファイルに追加出力するとともに、バイトカウンタをクリアする(ステップS3215)。そして、ステップS3216に移行する。
一方、ブロック終了していない場合(ステップS3214:No)、またはステップS3215のあと、ファイル終了か否か、すなわち、現在オープンしている帳票ファイルfiの集計が終了したか否かを判断する(ステップS3216)。現在オープンしている帳票ファイルfiの集計が終了していない場合(ステップS3216:No)、図32−1に示したステップS3202に戻って次のデータを抽出し、抽出したデータの種類を特定して、集計する(ステップS3202〜S3210)。
一方、ステップS3216において、現在オープンしている帳票ファイルの集計が終了した場合(ステップS3216:Yes)、集計終了か否か、すなわち、現在オープンしている帳票ファイルfiをクローズする(ステップS3217)。このあと、すべての帳票ファイルf0〜fnからの集計が終了したか否かを判断する(ステップS3218)。
すべての帳票ファイルf0〜fnの集計が終了していない場合(ステップS3218:No)、つぎのファイル番号i(i=i+1)の帳票ファイルfiをオープンし(ステップS3219)、図32−1に示したステップS3202に戻って次のデータを抽出し、抽出したデータの種類を特定して、集計する(ステップS3202〜S3210)。
一方、ステップS3218において、すべての帳票ファイルf0〜fnの集計が終了した場合(ステップS3218:Yes)、出現マップ510のセグメントをファイルに追加出力し(ステップS3220)、ステップS3203に移行することで一連の処理を終了する。
つぎに、図30に示した圧縮/暗号化処理(ステップS3002)の詳細な処理手順について説明する。図33は、図30に示した圧縮/暗号化処理(ステップS3002)の詳細な処理手順を示すフローチャートである。図33において、まず、数字や小数点、フィーダ(以下、「数字等」と称す)の出現頻度の補正をおこなう(ステップS3301)。そして、その他の文字データの出現頻度を補正する(ステップS3302)。
そして、出現頻度順に混合領域812の数値・文字データをソートする(ステップS3303)。つぎに、低出現頻度の数値・文字データを8ビットに分解し、該当するバイナリデータの出現頻度に加算する(ステップS3304)。そして、混合領域812の数値・文字データ、連字外字データ、バイナリデータを連結し、出現頻度順にソートする(ステップS3305)。
このあと、ソートされた数値・文字データごとに、補正された出現頻度に基づいて生起確率を演算し(ステップS3306)、この生起確率に基づいて、8,16ビットの数値・文字データに共通のハフマン木を生成する(ステップS3307)。
そして、各帳票ファイルの圧縮処理を実行する(ステップS3308)。この圧縮処理の具体的な手順は図33において後述する。そして、数値・文字出現頻度管理データ500を暗号化する(ステップS3309)。具体的には、数値・文字出現頻度管理データ500の暗号化領域(数値・文字データおよび出現頻度の領域)を、マスタキーを用いて排他的論理和(XOR)により暗号化する。
そして、連字/外字置換テーブル640を暗号化する(ステップS3310)。具体的には、連字/外字置換テーブル640の暗号化領域を、マスタキーを用いて排他的論理和(XOR)により暗号化する。そして、検索初期化処理(ステップS3003)に移行し、一連の処理を終了する。
つぎに、図33のステップS3308に示した圧縮処理の詳細な処理手順について説明する。図34は、図33のステップS3308に示した圧縮処理の詳細な処理手順を示すフローチャートである。まず、ファイル番号iをi=0とし(ステップS3401)、帳票ファイルfiを、たとえば4000文字ごとにブロック化する(ステップS3402)。つぎに、帳票ファイルfi内のデータを順次読み込み、読み込んだデータがフィーダであるか否かを判断する(ステップS3403)。
フィーダであると判断された場合(ステップS3403:Yes)、フィーダに続く連続する数字を数値として読み込んで(ステップS3404)、全角・半角、数値の桁数を検出する(ステップS3405)。そして、ハフマン木による数値圧縮を実行し(ステップS3406)、ステップS3408に移行する。
一方、フィーダでないと判断された場合(ステップS3403:No)、当該データはその他の文字データであるため、ハフマン木を用いて文字データ圧縮を実行し(ステップS3407)、ステップS3408に移行する。
そして、ステップS3408において、当該ブロックにおける圧縮が終了したか否かを判断する(ステップS3408)。圧縮が終了していない場合(ステップS3408:No)、ステップS3403に戻って、つぎのデータを読み込む。一方、圧縮終了である場合(ステップS3408:Yes)、未処理ブロックがあるか否かを判断する(ステップS3409)。
未処理ブロックがある場合(ステップS3409:Yes)、当該未処理ブロックを読み込んで(ステップS3410)、ステップS3403に戻って、データの読み込みをおこなう。一方、未処理ブロックがない場合(ステップS3409:No)、ファイル番号iをインクリメントし(ステップS3411)、i>nか否かを判断する(ステップS3412)。
i>nでない場合(ステップS3412:No)、ステップS3402に戻って、つぎの帳票ファイルfiをブロック化する。一方、i>nである場合(ステップS3412:Yes)、図33に示したステップS3309に移行する。これにより、圧縮処理における一連の処理を終了する。
つぎに、図30に示した検索初期化処理(ステップS3003)の詳細な処理手順について説明する。図35は、図30に示した検索初期化処理(ステップS3003)の詳細な処理手順を示すフローチャートである。
図35において、まず、検索初期化処理の起動を待ち受け(ステップS3501:No)、起動した場合(ステップS3501:Yes)、圧縮/暗号化処理において暗号化された暗号化数値・文字出現頻度管理データ650を復号化する(ステップS3502)。具体的には、暗号化数値・文字出現頻度管理データ650の暗号化領域(数値・文字データおよび出現頻度の領域)を、暗号化したときのマスタキーを用いて排他的論理和(XOR)により復号する。
つぎに、暗号化連字/外字置換テーブル660を復号化する(ステップS3503)。具体的には、暗号化連字/外字置換テーブル660の暗号化領域を、暗号化したときのマスタキーを用いて排他的論理和(XOR)により復号する。
つぎに、圧縮/暗号化処理で示したステップS3401〜S3405までの処理と同様の処理を実行する。すなわち、高出現頻度順に数値・文字データをソートし(ステップS3504)、低出現頻度の数値・文字データを8ビットに分解し、該当するバイナリデータの出現頻度に加算する(ステップS3505)。
そして、数値・文字データ、連字データ、バイナリデータを連結し、高出現頻度順にソートする(ステップS3506)。このあと、数値・文字データごとに、出現頻度に基づいて生起確率を演算し(ステップS3507)、この生起確率に基づいて、8,16ビットの数値・文字データに共通のハフマン木を生成する(ステップS3508)。
このあと、出現マップ510の設定処理を実行する(ステップS3509)。具体的には、第1の区点対応テーブルおよび第2の区点対応テーブルの領域確保、各文字データの出現順位の第1の区点対応テーブルへのセット、各数値データの出現順位の第2の区点対応テーブルへのセット、復号された数値・文字出現頻度管理データ500の出現マップのメモリ展開、当該出現マップと第1の区点対応テーブルおよび第2の区点対応テーブルとのリンクを実行する。このあと、検索処理(ステップS3004)に移行して、一連の処理を終了する。
つぎに、図30に示した検索処理(ステップS3004)の詳細な処理手順について説明する。図36は、図30に示した検索処理(ステップS3004)の詳細な処理手順を示すフローチャートである。検索初期化処理(ステップS3003)のあと、図36において、まず、検索モード画面の呼び出しをおこない(ステップS3601)、数値検索モードまたは文字検索モードの選択を待ち受ける(ステップS3602)。
数値検索モードが選択された場合(ステップS3602:Yes)、図40に示すステップS4001に移行する。一方、文字検索モードが選択された場合(ステップS3602:No)、検索キーワードの入力を受け付ける(ステップS3603)。
検索キーワードが複数でない場合(ステップS3604:No)、ステップS3606に移行する。一方、検索キーワードが複数である場合(ステップS3604:Yes)、各キーワードの文字列を連結して(ステップS3605)、ステップS3606に移行する。
このあと、ステップS3606において、検索キーワード内に連字データがない場合(ステップS3606:No)、ステップS3608に移行する。一方、連字データがある場合(ステップS3606:Yes)、連字/外字置換テーブル640を用いて、その連字データを2文字の外字データに置換して(ステップS3607)、ステップS3608に移行する。
このあと、ステップS3608において、検索キーワードを単一文字データに分解して、出現マップから各文字データの各帳票ファイルにおける存否ビット列を読み取る(ステップS3608)。そして、各文字データの存否ビット列の論理積により、圧縮化帳票ファイルを特定(絞込み)する(ステップS3609)。また、検索キーワードを検索初期化処理(ステップS3003)において生成されたハフマン木で圧縮する(ステップS3610)。
つぎに、照合予測テーブル生成処理(ステップS3611)を実行する。この照合予測テーブル生成処理の詳細な処理手順については図37において後述する。照合予測テーブルを生成後、ファイルカウンタを初期化する(ステップS3612)。
このあと、ステップS3609で特定された圧縮化帳票ファイル(以下、「特定圧縮化帳票ファイル」と称す。)をオープンし(ステップS3613)、オープンされた特定圧縮化帳票ファイルの圧縮ブロックデータごとに、圧縮キーワードとの不一致判定処理をおこなう(ステップS3614)。この不一致判定処理については図38において後述する。
この不一致判定処理において、すべての圧縮ブロックデータについて不一致であると判定された場合(ステップS3615:Yes)、ステップS3618に移行する。一方、1つでも一致すると判定された場合(ステップS3615:No)、当該一致すると判定された圧縮ブロックデータを、ハフマン木を用いて伸長する(ステップS3616)。そして、伸長されたブロックデータと検索キーワードとを比較し、検索キーワードに一致した項目データのファイル番号およびアンカーを記録して(ステップS3617)、ステップS3618に移行する。
このあと、オープンしている特定圧縮化帳票ファイルをクローズし(ステップS3618)、ファイルカウンタを更新する(ステップS3619)。ファイルカウンタの更新により、未処理の特定圧縮化帳票ファイルがあると判断された場合(ステップS3620:Yes)、ステップS3613に移行して、つぎの特定圧縮化帳票ファイルをオープンする。
一方、未処理の特定圧縮化帳票ファイルがないと判断された場合(ステップS3620:No)、検索候補一覧を表示し(ステップS3621)、ユーザからの選択入力を待ち受ける(ステップS3622)ことにより、検索結果表示処理(ステップS3005)に移行して、一連の処理を終了する。
このように、コンテンツが複数の帳票ファイルから構成されていても、単一の圧縮情報(数値・文字出現頻度管理データ500)により共通化することができる。
また、サイズが大きい帳票ファイルでは文字データ数に応じてブロック化をおこない、8ビットコード、16ビットコードまたは32ビットコードの文字データが混在する検索対象ファイルについてのハフマン圧縮技術を確立することができる。
また、サイズ(容量)ではなく、文字データ数に応じたブロック化をおこない、帳票ファイル内の各文字データの出現頻度の集計時に、文字データの種類(8ビットコード、16ビットコードまたは32ビットコード)を判定し、出現頻度を集計することができる。
また、英和辞典での英字データなど出現頻度の高い8ビットコードの文字データに対しては、0x’FF**’など16ビットコードの文字データに置換し、ハフマン圧縮をおこなう。これにより、低出現率の8ビットコードの文字データと区別して、効率的な圧縮をおこなうことができる。
また、ポインタなどの非文字データはランダムな値であるため、8ビットコードに置換する。また、ハフマン木のサイズ縮小のため、出現頻度の低い16ビットコードの文字データを分割し、8ビットコードの文字データに置換する。これにより、効率的な圧縮をおこなうことができる。
また、圧縮のためのハフマン木の生成元である数値・文字出現頻度管理データ500またはその一部を暗号化する。すなわち、コンテンツや、コンテンツ圧縮のためのハフマン木を直接暗号化せず、ハフマン木の生成元を暗号化しているため、セキュリティの向上を図ることができる。
また、数値・文字出現頻度管理データ500をもとに、全文検索の高速化を図ることができる。また、連続する表音文字データの出現頻度の高い2文字の連字データを外字データに置換した後、コンテンツ圧縮をおこなっているため、圧縮率の向上を図ることができる。
また、連字データにより、オープン/クローズするファイル数を削減することができ、文字列の比較領域の縮小により全文検索の高速化を図ることができる。さらに、全文検索は伸長後に外字データのままで文字列比較を行うことで、さらに検索速度の向上を図ることができる。
(照合予測テーブル生成処理手順)
つぎに、上述した照合予測テーブル生成処理(ステップS3611)について詳細に説明する。図37は、照合予測テーブル生成処理手順を示すフローチャートである。図37において、まず、圧縮キーワード2302の総シフト数を演算する(ステップS3701)。具体的には、圧縮キーワード長とレジスタRaのビット長とから圧縮キーワード2302が保持されていないビット長(図25の「*」)を総シフト数として算出する。
つぎに、図24に示したシフト操作の図表を参照して、照合間隔(バイト数)を演算する(ステップS3702)。そして、圧縮キーワード2302を、上記総シフト分1ビットずつシフトして、シフトテーブル2500を作成する(ステップS3703)。このシフトテーブル2500の各ビット列と圧縮キーワード2302とをXOR演算してXORテーブル2501を作成する(ステップS3704)。
そして、作成されたXORテーブル2501とXORテーブル2501を構成する各ビット列のシフト数からなる部分判定テーブル2502を作成する(ステップS3705)。そして、部分判定テーブル2502を用いて、照合予測テーブル2503を作成し(ステップS3706)、ステップS3612へ移行する。
(圧縮ブロックデータと圧縮キーワードとの不一致判定処理手順)
つぎに、上述した圧縮ブロックデータと圧縮キーワードとの不一致判定処理(ステップS3614)について説明する。図38は、圧縮ブロックデータと圧縮キーワードとの不一致判定処理手順を示すフローチャートである。図38において、まず、圧縮キーワード2302をレジスタRaにセットする(ステップS3801)。
つぎに、圧縮ブロックデータ2312をシフトさせる照合間隔(バイト数)をセットし(ステップS3802)、特定圧縮化帳票ファイル2311のポインタを初期化する(ステップS3803)。このあと、現在のポインタにしたがって、圧縮ブロックデータ2312をレジスタRbにセットする(ステップS3804)。そして、レジスタRaとレジスタRbとをXOR演算して(ステップS3805)、下位8ビットのビット列2330を抽出する(ステップS3806)。
つぎに、抽出された下位8ビットのビット列2330と照合予測テーブル2503とを照合して、照合予測テーブル2503内のビット列のうち、下位8ビットのビット列2330と一致するビット列のシフト数を検出し、検出されたシフト数が「−1」であるか否か、すなわち不一致であるか否かを判断する(ステップS3807)。
そして、シフト数が「−1」である場合(ステップS3807:Yes)、特定圧縮化帳票ファイル2311のポインタを照合間隔分加算する(ステップS3808)。そして、圧縮ブロックデータ2312がないか否かを判断する(ステップS3809)。圧縮ブロックデータ2312がある場合(ステップS3809:No)、ステップS3804に戻る。一方、圧縮ブロックデータ2312がない場合(ステップS3809:Yes)、ステップS3615に移行する。このステップS3804〜ステップS3809:Noのループにより、不一致であることを高速で照合することができ、検索速度の高速化を実現することができる。
また、ステップS3807において、シフト数が「−1」でない場合(ステップS3807:No)、シフト数が0〜63である場合(ステップS3810:0〜63)、すなわち、部分一致となる場合、当該シフト数を取得して(ステップS3811)、全ビット不一致照合処理を実行する(ステップS3812)。全ビット不一致照合処理(ステップS3812)については後述する。このあと、ステップS3808に移行する。
また、ステップS3810において、シフト数が64である場合(ステップS3810:64)、すなわち、重複部分一致となる場合、部分判定テーブル2502のポインタを初期化し(ステップS3813)、現在のポインタに対応する部分判定テーブル2502のXOR結果を取得する(ステップS3814)。そして、対応するビット列と、現在のポインタに対応する部分判定テーブル2502のXOR結果とが一致するか否かを判断する(ステップS3815)。不一致の場合(ステップS3815:No)、ステップS3818に移行する。
一方、一致する場合(ステップS3815:Yes)、そのXOR結果に対応するシフト数を部分判定テーブル2502から取得して(ステップS3816)、全ビット不一致照合処理を実行する(ステップS3817)。この全ビット不一致照合処理(ステップS3817)は、全ビット不一致照合処理(ステップS3812)と同一であるため後述する。
そして、全ビット不一致照合処理(ステップS3817)のあと、部分判定テーブル2502のポインタを加算する(ステップS3818)。部分判定テーブル2502の現在のポインタが最終ポインタでない場合(ステップS3819:No)、ステップS3814に戻る。一方、部分判定テーブル2502の現在のポインタが最終ポインタである場合(ステップS3819:Yes)、ステップS3808に移行する。
(全ビット不一致照合処理手順)
つぎに、上述した全ビット不一致照合処理(ステップS3812およびステップS3817)について詳細に説明する。図39は、全ビット不一致照合処理(ステップS3812およびステップS3817)を示すフローチャートである。図39において、シフト数を8で除算することにより、その除数および余りを取得する(ステップS3901)。
つぎに、特定圧縮化帳票ファイル2311の現在のポインタに除数を加算し(ステップS3902)、圧縮ブロックデータ2312をレジスタRbにセットする(ステップS3903)。そして、セットされた圧縮ブロックデータ2312を余りの値分シフトする(ステップS3904)。
つぎに、圧縮キーワード2302をレジスタRaにセットし(ステップS3905)、両レジスタRa、Rbにおいて照合対象外となるビットのマスクをOFFにする(ステップS3906)。そして、全ビットが一致する場合(ステップS3907:Yes)、一致したアドレスを記録し(ステップS3908)、ステップS3808(またはS3817)に移行する。一方、全ビットが一致しない場合(ステップS3907:No)、ステップS3808(またはステップS3817)に移行する。
これにより、特定圧縮化帳票ファイル2311に対して、コンピュータのCPU101が得意であるバイト毎の操作をもとにした不一致照合の方式を実現することができる。すなわち、ビット毎の照合予測を目的に、入力された検索キーワード2301を圧縮した圧縮キーワード2302とその圧縮キーワード2302を1ビット毎シフトしたデータの集合であるシフトテーブル2500とのXOR演算をおこない、その演算結果をもとに不一致照合をおこなう。そして、圧縮キーワード長に応じて、特定圧縮化帳票ファイル2311との照合間隔を長くすることにより不一致照合の高速化を図ることができる。
(数値検索モードにおける数値検索実行処理手順)
つぎに、この発明の実施の形態にかかる数値検索モードにおける数値検索実行処理手順について説明する。図40は、この発明の実施の形態にかかる数値検索モードにおける数値検索実行処理手順を示すフローチャートである。
図36におけるステップS3602:Yesのあと、取得部2701により数値範囲を取得する(ステップS4001)。つぎに、検出部2703により、数値範囲の境界を規定する数値(下限数値、上限数値)の桁数および先頭数字を検出する(ステップS4002)。そして、数値圧縮部2702により、下限数値および上限数値を圧縮する(ステップS4003)。
このあと、出現マップ抽出部2705により、出現マップ510から下限数値群〜上限数値群の出現マップを抽出する(ステップS4004)。そして、中間数値群判断部2704により、中間数値群があるか否かを判断する(ステップS4005)。中間数値群があると判断された場合(ステップS4005:Yes)、省略マップ設定部2706により、中間数値群の出現マップの論理和をとることにより、中間結果マップを生成し(ステップS4006)、中間結果マップ内の全ビットを反転させて省略マップに変換する(ステップS4007)。
一方、中間数値群がないと判断された場合(ステップS4005:No)、省略マップを初期化する(ステップS4008)。すなわち、帳票ファイルf0〜fnに対応するビット列をすべてOFFにすることで、全ビット「0」の省略マップを得る。そして、ステップS4009に移行する。
このあと、下限特定/比較処理(ステップS4009)および上限特定/比較処理(ステップS4010)を実行する。下限特定/比較処理(ステップS4009)および上限特定/比較処理(ステップS4010)の詳細な処理手順については後述する。
そして、決定部2711により、数値範囲内の数値が存在する圧縮化帳票ファイルFiを決定する(ステップS4011)。このあと、ファイル構成データ特定部2109により、数値範囲内の数値が存在する圧縮化帳票ファイルFiのページリストを特定し(ステップS4012)、図36に示したステップS3621に移行する。これにより、数値検索実行処理の一連の手順を終了する。
(下限特定/比較処理手順)
つぎに、図40に示した下限特定/比較処理の詳細な処理手順について説明する。図41は、図40に示した下限特定/比較処理手順を示すフローチャートである。図41においては、図28−1〜図28−4に示した大小比較例を参照しながら説明する。
まず、図28−2で示したように、下限数値群マップ(4桁先頭数字3マップM43)と省略マップM02との論理積演算をおこなうことにより、下限マップM03を得る(ステップS4101)。つぎに、ファイル番号iをi=0とし、下限比較結果マップM04を初期化(全ビットOFF)する(ステップS4102)。
そして、下限マップM03中、i番目のビットがONであるか否かを判断する(ステップS4103)。ビットがOFFである場合(ステップS4103:No)、ステップS4110に移行する。
一方、ビットがONである場合(ステップS4103:Yes)、圧縮化帳票ファイルFの中から圧縮化帳票ファイルFiを抽出する(ステップS4104)。このあと、圧縮化帳票ファイルFiの中に、ファイル内数値の圧縮情報(図28−2では圧縮情報2801)があるか否かを判断する(ステップS4105)。
圧縮情報がある場合(ステップS4105:Yes)、下限数値照合処理を実行する(ステップS4106)。この下限数値照合処理については図42で後述する。そして、下限数値照合処理による照合結果により、下限数値の境界条件を充足しているか否かを判断する(ステップS4107)。
充足していない場合(ステップS4107:No)、ステップS4105に戻る。一方、境界条件を充足している場合(ステップS4107:Yes)、下限比較結果マップM04中、i番目のビットがOFFのままか否かを判断する(ステップS4108)。すでにONになっている場合(ステップS4108:No)、ステップS4105に移行する。
一方、ビットがOFFである場合(ステップS4108:Yes)、そのi番目のビットをOFFからONにして(ステップS4109)、ステップS4105に戻る。また、ステップS4105において、未照合のファイル内数値の圧縮情報がない場合(ステップS4105:No)、ステップS4110に移行する。ステップS4110では、ファイル番号iを1つインクリメントする。そして、i>nであるか否かを判断する(ステップS4111)。
i>nでない場合(ステップS4111:No)、ステップS4103に戻る。一方、i>nである場合(ステップS4111:Yes)、図40で示したステップS4011に移行する。これにより、下限特定/比較処理の一連の手順を終了する。
(下限数値照合処理手順)
つぎに、図41に示した下限数値照合処理の詳細な処理手順について説明する。図42は、下限数値照合処理手順を示すフローチャートである。図42において、下限数値の圧縮情報内の全角・半角ビットおよびカンマ有無ビットと、ファイル内数値の圧縮情報内の全角・半角ビットおよびカンマ有無ビットとをOFFにする(ステップS4201)。
そして、圧縮情報どうしを比較してフィーダが一致するか否かを判断する(ステップS4201)。不一致である場合(ステップS4202:No)、ステップS4107に移行する。一方、フィーダが一致した場合(ステップS4202:Yes)、桁数が一致するか否かを判断する(ステップS4203)。
桁数が不一致である場合(ステップS4203:No)、ステップS4107に移行する。一方、桁数も一致する場合(ステップS4203:Yes)、桁数カウンタNをN=Nmaxに設定する(ステップS4204)。Nmaxは下限数値およびファイル内数値の桁数である。
そして、ファイル内数値のN桁目の数字が下限数値のN桁目の数字以上であるか否かを判断する(ステップS4205)。ここで、判断基準として下限数値のN桁目の数字以上としたのは、数値範囲における下限数値の境界条件が「≦」であるからであり、当該境界条件が「<」である場合、ファイル内数値のN桁目の数字が下限数値のN桁目の数字よりも大きいか否かを判断することとなる。
そして、下限数値のN桁目の数字以上でない場合(ステップS4205:No)、ステップS4107に移行する。一方、下限数値のN桁目の数字以上である場合(ステップS4205:Yes)、桁数カウンタNを1つデクリメントし(ステップS4206)、桁数カウンタNがN<0であるか否かを判断する(ステップS4207)。N<0でない場合(ステップS4207:No)、下限数値の圧縮情報とファイル内数値の圧縮情報のうちいずれか一方にだけ、N−1桁目の数字の圧縮符号とN桁目の数字の圧縮符号との間に小数点の圧縮符号があるか否かを判断する(ステップS4208)。
いずれか一方にだけN−1桁目の数字の圧縮符号とN桁目の数字の圧縮符号との間に小数点の圧縮符号がない場合(ステップS4208:No)、すなわち、ともに小数点の圧縮符号があるか、いずれにも小数点の圧縮符号がない場合、ステップS4205に戻る。
一方、いずれか一方にだけN−1桁目の数字の圧縮符号とN桁目の数字の圧縮符号との間に小数点の圧縮符号がある場合(ステップS4208:Yes)、ステップS4107に移行する。
また、ステップS4207において、N<0である場合(ステップS4207:Yes)、ステップS4107に移行する。これにより、下限数値照合処理の一連の手順を終了する。
そして、図41に示したステップS4107では、ステップS4207でN<0である場合(ステップS4207:Yes)、下限数値の境界条件を充足していると判断し、一方、ステップS4202、ステップS4203、ステップS4205またはステップS4208でNoと判断された場合、下限数値の境界条件を充足していないと判断する。
(上限特定/比較処理手順)
つぎに、図40に示した上限特定/比較処理の詳細な処理手順について説明する。図43は、図40に示した上限特定/比較処理手順を示すフローチャートである。図43においては、図28−1〜図28−4に示した大小比較例を参照しながら説明する。
まず、図28−2で示したように、上限数値群マップ(4桁先頭数字6マップM46)と省略マップM02との論理積演算をおこなうことにより、上限マップM05を得る(ステップS4301)。つぎに、ファイル番号iをi=0とし、上限比較結果マップM06を初期化(全ビットOFF)する(ステップS4302)。
そして、上限マップM05中、i番目のビットがONであるか否かを判断する(ステップS4303)。ビットがOFFである場合(ステップS4303:No)、ステップS4310に移行する。
一方、ビットがONである場合(ステップS4303:Yes)、圧縮化帳票ファイルFの中から圧縮化帳票ファイルFiを抽出する(ステップS4304)。このあと、圧縮化帳票ファイルFiの中に、ファイル内数値の圧縮情報(図28−3では圧縮情報2803)があるか否かを判断する(ステップS4305)。
圧縮情報がある場合(ステップS4305:Yes)、上限数値照合処理を実行する(ステップS4306)。この上限数値照合処理については図44で後述する。そして、上限数値照合処理による照合結果により、上限数値の境界条件を充足しているか否かを判断する(ステップS4307)。
充足していない場合(ステップS4307:No)、ステップS4305に戻る。一方、境界条件を充足している場合(ステップS4307:Yes)、上限比較結果マップM06中、i番目のビットがOFFのままか否かを判断する(ステップS4308)。すでにONになっている場合(ステップS4308:No)、ステップS4305に移行する。
一方、ビットがOFFである場合(ステップS4308:Yes)、そのi番目のビットをOFFからONにして(ステップS4309)、ステップS4305に戻る。また、ステップS4305において、未照合のファイル内数値の圧縮情報がない場合(ステップS4305:No)、ステップS4310に移行する。ステップS4310では、ファイル番号iを1つインクリメントする(ステップS4310)。そして、i>nであるか否かを判断する(ステップS4311)。
i>nでない場合(ステップS4311:No)、ステップS4303に戻る。一方、i>nである場合(ステップS4311:Yes)、図40で示したステップS4011に移行する。これにより、上限特定/比較処理の一連の手順を終了する。
(上限数値照合処理手順)
つぎに、図43に示した上限数値照合処理の詳細な処理手順について説明する。図44は、上限数値照合処理手順を示すフローチャートである。図44において、上限数値の圧縮情報内の全角・半角ビットおよびカンマ有無ビットと、ファイル内数値の圧縮情報内の全角・半角ビットおよびカンマ有無ビットとをOFFにする(ステップS4401)。
そして、圧縮情報どうしを比較してフィーダが一致するか否かを判断する(ステップS4402)。不一致である場合(ステップS4402:No)、ステップS4307に移行する。一方、フィーダが一致した場合(ステップS4402:Yes)、桁数が一致するか否かを判断する(ステップS4403)。
桁数が不一致である場合(ステップS4403:No)、ステップS4307に移行する。一方、桁数も一致する場合(ステップS4403:Yes)、桁数カウンタNをN=Nmaxに設定する(ステップS4404)。Nmaxは上限数値およびファイル内数値の桁数である。
そして、ファイル内数値のN桁目の数字が上限数値のN桁目の数字以下であるか否かを判断する(ステップS4405)。ここで、判断基準として「上限数値のN桁目の数字以下」としたのは、数値範囲における上限数値の境界条件が「≧」であるからであり、当該境界条件が「>」である場合、ファイル内数値のN桁目の数字が上限数値のN桁目の数字よりも小さいか否かを判断することとなる。
そして、上限数値のN桁目の数字以下でない場合(ステップS4405:No)、ステップS4307に移行する。一方、上限数値のN桁目の数字以下である場合(ステップS4405:Yes)、桁数カウンタNを1つデクリメントし(ステップS4406)、桁数カウンタNがN<0であるか否かを判断する(ステップS4407)。N<0でない場合(ステップS4407:No)、上限数値の圧縮情報とファイル内数値の圧縮情報のうちいずれか一方にだけ、N−1桁目の数字の圧縮符号とN桁目の数字の圧縮符号との間に小数点の圧縮符号があるか否かを判断する(ステップS4408)。
いずれか一方にだけN−1桁目の数字の圧縮符号とN桁目の数字の圧縮符号との間に小数点の圧縮符号がない場合(ステップS4408:No)、すなわち、ともに小数点の圧縮符号があるか、いずれにも小数点の圧縮符号がない場合、ステップS4405に戻る。
一方、いずれか一方にだけN−1桁目の数字の圧縮符号とN桁目の数字の圧縮符号との間に小数点の圧縮符号がある場合(ステップS4408:Yes)、ステップS4307に移行する。
また、ステップS4407において、N<0である場合(ステップS4407:Yes)、ステップS4307に移行する。これにより、上限数値照合処理の一連の手順を終了する。
そして、図43に示したステップS4307では、ステップS4407でN<0である場合(ステップS4407:Yes)、上限数値の境界条件を充足していると判断し、一方、ステップS4402、ステップS4403、ステップS4405またはステップS4408でNoと判断された場合、上限数値の境界条件を充足していないと判断する。
以上のことから、この発明の実施の形態によれば、中間数値群を検出して省略マップM02に反映させているため、中間数値群の出現マップにより特定される圧縮化帳票ファイルに対して数値範囲内の数値の一致照合をするまでもなく、数値範囲内の数値の有無を検出することができる。
また、下限数値群や上限数値群についてのみ数値の一致照合をおこなうが、ファイル内数値はフィーダに関連付けられているため、圧縮化帳票ファイルFiの中から数値情報のみを高速に検索することができる。また、数値の圧縮情報どうしで一致照合しているため、フィーダや桁数の圧縮符号どうしの一致照合のみで大小比較をおこなうことができ、高精度な検索を高速でおこなうことができる。
また、数値・文字出現頻度管理データ500において、数字等の出現頻度を補正することにより、数値の一致照合や伸長の高速化を図ることができる。特に、検索対象ファイルに数値データと文字データが混在する場合に、数値の一致照合や伸長の高速化を図ることができる。
このように、この発明の実施の形態によれば、数値範囲内の数値が存在するファイルを圧縮したまま特定することにより、数値範囲検索の高速化および高精度化を図ることができるという効果を奏する。
(付記1)任意の数値範囲の境界を規定する数値を取得させる取得工程と、
前記取得工程によって取得された境界を規定する数値の桁数および先頭数字を検出させる検出工程と、
桁数および先頭数字を満たす数値群内の数値の存否を検索対象ファイルごとにあらわしたビット列の集合の中から、前記検出工程によって検出された桁数および先頭数字を満たす数値群内の数値の存否を前記検索対象ファイルごとにあらわしたビット列を抽出させるビット列抽出工程と、
前記境界を規定する一方の数値の桁数および先頭数字を満たす一方の数値群と、前記境界を規定する他方の数値の桁数および先頭数字を満たす他方の数値群との間に、中間の数値群が存在するか否かを判断させる中間数値群判断工程と、
前記中間数値群判断工程によって判断された判断結果に基づいて、前記ビット列抽出工程によって抽出されたビット列の中の前記検出工程によって検出された桁数および先頭数字を満たす数値群内の数値の存在を示すビットに対応する検索対象ファイルを、前記複数の検索対象ファイルの中から特定させる特定工程と、
前記特定工程によって特定された検索対象ファイルに含まれているファイル内数値が、前記境界を規定する数値との境界条件を充足しているか否かを判断させる境界条件判断工程と、
前記境界条件判断工程によって判断された判断結果に基づいて、前記特定工程によって特定された検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定させる決定工程と、
をコンピュータに実行させることを特徴とする情報検索プログラム。
(付記2)前記特定工程は、
さらに、前記中間数値群判断工程によって前記中間の数値群が存在しないと判断された場合、前記一方の数値群内の数値が存在する検索対象ファイルのうち前記中間数値群内の数値が存在しない検索対象ファイル(以下、「一方の検索対象ファイル」という)を特定させるとともに、前記他方の数値群内の数値が存在する検索対象ファイルのうち前記中間数値群内の数値が存在しない検索対象ファイル(以下、「他方の検索対象ファイル」という)を特定させ、
前記境界条件判断工程は、
前記特定工程によって特定された一方の検索対象ファイルに含まれているファイル内数値が前記境界を規定する一方の数値との境界条件を充足しているか否か、および前記特定工程によって特定された他方の検索対象ファイルに含まれているファイル内数値が前記境界を規定する他方の数値との境界条件を充足しているか否かを判断させ、
前記決定工程は、
前記境界条件判断工程によって判断された判断結果に基づいて、前記一方の検索対象ファイル、前記他方の検索対象ファイル、または前記中間数値群内の数値が存在する検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定させることを特徴とする付記1に記載の情報検索プログラム。
(付記3)任意の数値範囲の境界を規定する数値を取得させる取得工程と、
前記取得工程によって取得された境界を規定する数値を、前記境界を規定する数値の桁数を示す数字に関する圧縮符号および前記境界を規定する数値の桁数ごとの数字に関する圧縮符号を含む圧縮情報に圧縮させる数値圧縮工程と、
前記数値圧縮工程によって得られた前記境界を規定する数値に関する圧縮情報と、検索対象ファイルを前記所定の形式で圧縮した圧縮化検索対象ファイルに含まれているファイル内数値の桁数を示す数字に関する圧縮符号および前記ファイル内数値の桁ごとの数字に関する圧縮符号とを含む前記ファイル内数値に関する圧縮情報とを照合することにより、前記ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断させる境界条件判断工程と、
前記境界条件判断工程によって判断された判断結果に基づいて、前記圧縮化検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定させる決定工程と、
をコンピュータに実行させることを特徴とする情報検索プログラム。
(付記4)前記境界を規定する一方の数値の桁数および先頭数字を満たす一方の数値群と、前記境界を規定する他方の数値の桁数および先頭数字を満たす他方の数値群との間に、中間の数値群が存在するか否かを判断させる中間数値群判断工程と、
前記一方の数値群内の数値が存在する圧縮化検索対象ファイルのうち前記中間数値群内の数値が存在しない圧縮化検索対象ファイル(以下、「一方の圧縮化検索対象ファイル」という)を特定させるとともに、
前記他方の数値群内の数値が存在する圧縮化検索対象ファイルのうち前記中間数値群内の数値が存在しない圧縮化検索対象ファイル(以下、「他方の圧縮化検索対象ファイル」という)を特定させる特定工程とを、前記コンピュータに実行させ、
前記数値圧縮工程は、
前記境界を規定する一方の数値を、前記境界を規定する数値の桁数を示す数字に関する圧縮符号および前記境界を規定する数値の桁数ごとの数字に関する圧縮符号を含む一方の圧縮情報に圧縮させるとともに、
前記境界を規定する他方の数値を、前記境界を規定する数値の桁数を示す数字に関する圧縮符号および前記境界を規定する数値の桁数ごとの数字に関する圧縮符号を含む他方の圧縮情報に圧縮させ、
前記境界条件判断工程は、
前記数値圧縮工程によって得られた前記一方の圧縮情報と前記一方の圧縮化検索対象ファイルに含まれているファイル内数値に関する圧縮情報とを照合することにより、当該ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断させるとともに、
前記数値圧縮工程によって得られた前記他方の圧縮情報と前記他方の圧縮化検索対象ファイルに含まれているファイル内数値に関する圧縮情報とを照合することにより、当該ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断させ、
前記決定工程は、
前記境界条件判断工程によって判断された判断結果に基づいて、前記一方の圧縮化検索対象ファイル、前記他方の圧縮化検索対象ファイル、または前記中間数値群内の数値が存在する圧縮化検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定させることを特徴とする付記3に記載の情報検索プログラム。
(付記5)任意の数値範囲の境界を規定する数値を取得させる取得工程と、
前記検索対象ファイル内に存在する数字の出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正させる補正工程と、
前記補正工程によって補正された出現頻度に基づいて、前記検索対象ファイルを圧縮させるファイル圧縮工程と、
前記取得工程によって取得された境界を規定する数値を所定の圧縮形式で圧縮させる数値圧縮工程と、
前記数値圧縮工程によって得られた前記境界を規定する数値に関する圧縮情報と、前記ファイル圧縮工程によって圧縮された前記圧縮化検索対象ファイルに含まれているファイル内数値に関する圧縮情報とを照合することにより、前記ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断させる境界条件判断工程と、
前記境界条件判断工程によって判断された判断結果に基づいて、前記圧縮化検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定させる決定工程と、
をコンピュータに実行させることを特徴とする情報検索プログラム。
(付記6)前記補正工程は、
さらに、前記検索対象ファイル内に存在するカンマの出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正させることを特徴とする付記5に記載の情報検索プログラム。
(付記7)前記補正工程は、
さらに、前記検索対象ファイル内に存在する小数点の出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正させることを特徴とする付記5または6に記載の情報検索プログラム。
(付記8)数字と文字とが混在する検索対象ファイルの中から数値の存在を示すフィーダを検出させるフィーダ検出工程と、
前記フィーダ検出工程によって検出されたフィーダに関連付けられている数値の桁数を検出させる桁数検出工程と、
前記検索対象ファイル内に含まれている数字の出現頻度に基づいて、前記数値を前記フィーダに関連付けて、前記桁数検出工程によって検出された桁数を示す数字に関する圧縮符号と前記数値の桁数ごとの数字に関する圧縮符号とを含む圧縮情報に圧縮させる圧縮工程と、
をコンピュータに実行させることを特徴とする情報検索プログラム。
(付記9)前記フィーダは、前記数値の種類を特定する情報であることを特徴とする付記8に記載の情報検索プログラム。
(付記10)前記数値が全角または半角であることを検出させる全角/半角検出工程を前記コンピュータに実行させ、
前記圧縮工程は、
さらに、前記数値を、前記全角/半角検出工程によって検出された検出結果に関する圧縮符号を含む圧縮情報に圧縮させることを特徴とする付記8また9に記載の情報検索プログラム。
(付記11)前記数値の中からカンマを検出させるカンマ検出工程を前記コンピュータに実行させ、
前記圧縮工程は、
さらに、前記数値を、前記カンマ検出工程によって検出された検出結果に関する圧縮符号を含む圧縮情報に圧縮させることを特徴とする付記8また9に記載の情報検索プログラム。
(付記12)前記検索対象ファイル内に存在する数字の出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正させる補正工程を前記コンピュータに実行させ、
前記圧縮工程は、
前記補正工程によって補正された出現頻度に基づいて、前記数値を圧縮させることを特徴とする付記8に記載の情報検索プログラム。
(付記13)前記補正工程は、
さらに、前記検索対象ファイル内に存在するカンマの出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正させることを特徴とする付記8に記載の情報検索プログラム。
(付記14)前記補正工程は、
さらに、前記検索対象ファイル内に存在する小数点の出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正させることを特徴とする付記8に記載の情報検索プログラム。
(付記15)付記1〜3または8のいずれか一つに記載の情報検索プログラムを記録した前記コンピュータに読み取り可能な記録媒体。
(付記16)コンピュータが、
任意の数値範囲の境界を規定する数値を取得する取得工程と、
前記取得工程によって取得された境界を規定する数値の桁数および先頭数字を検出する検出工程と、
桁数および先頭数字を満たす数値群内の数値の存否を検索対象ファイルごとにあらわしたビット列の集合の中から、前記検出工程によって検出された桁数および先頭数字を満たす数値群内の数値の存否を前記検索対象ファイルごとにあらわしたビット列を抽出するビット列抽出工程と、
前記境界を規定する一方の数値の桁数および先頭数字を満たす一方の数値群と、前記境界を規定する他方の数値の桁数および先頭数字を満たす他方の数値群との間に、中間の数値群が存在するか否かを判断する中間数値群判断工程と、
前記中間数値群判断工程によって判断された判断結果に基づいて、前記ビット列抽出工程によって抽出されたビット列の中の前記検出工程によって検出された桁数および先頭数字を満たす数値群内の数値の存在を示すビットに対応する検索対象ファイルを、前記複数の検索対象ファイルの中から特定する特定工程と、
前記特定工程によって特定された検索対象ファイルに含まれているファイル内数値が、前記境界を規定する数値との境界条件を充足しているか否かを判断させる境界条件判断工程と、
前記境界条件判断工程によって判断された判断結果に基づいて、前記特定工程によって特定された検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定する決定工程と、
を実行することを特徴とする情報検索方法。
(付記17)コンピュータが、
任意の数値範囲の境界を規定する数値を取得する取得工程と、
前記取得工程によって取得された境界を規定する数値を、前記境界を規定する数値の桁数を示す数字に関する圧縮符号および前記境界を規定する数値の桁数ごとの数字に関する圧縮符号を含む圧縮情報に圧縮する数値圧縮工程と、
前記数値圧縮工程によって得られた前記境界を規定する数値に関する圧縮情報と、検索対象ファイルを前記所定の形式で圧縮した圧縮化検索対象ファイルに含まれているファイル内数値の桁数を示す数字に関する圧縮符号および前記ファイル内数値の桁ごとの数字に関する圧縮符号とを含む前記ファイル内数値に関する圧縮情報とを照合することにより、前記ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断する境界条件判断工程と、
前記境界条件判断工程によって判断された判断結果に基づいて、前記圧縮化検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定する決定工程と、
を実行することを特徴とする情報検索方法。
(付記18)コンピュータが、
任意の数値範囲の境界を規定する数値を取得する取得工程と、
前記検索対象ファイル内に存在する数字の出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正する補正工程と、
前記補正工程によって補正された出現頻度に基づいて、前記検索対象ファイルを圧縮するファイル圧縮工程と、
前記取得工程によって取得された境界を規定する数値を所定の圧縮形式で圧縮する数値圧縮工程と、
前記数値圧縮工程によって得られた前記境界を規定する数値に関する圧縮情報と、前記ファイル圧縮工程によって圧縮された前記圧縮化検索対象ファイルに含まれているファイル内数値に関する圧縮情報とを照合することにより、前記ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断する境界条件判断工程と、
前記境界条件判断工程によって判断された判断結果に基づいて、前記圧縮化検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定する決定工程と、
を実行することを特徴とする情報検索方法。
(付記19)コンピュータが、
数字と文字とが混在する検索対象ファイルの中から数値の存在を示すフィーダを検出するフィーダ検出工程と、
前記フィーダ検出工程によって検出されたフィーダに関連付けられている数値の桁数を検出する桁数検出工程と、
前記検索対象ファイル内に含まれている数字の出現頻度に基づいて、前記数値を前記フィーダに関連付けて、前記桁数検出工程によって検出された桁数を示す数字に関する圧縮符号と前記数値の桁数ごとの数字に関する圧縮符号とを含む圧縮情報に圧縮する圧縮工程と、
を実行することを特徴とする情報検索方法。
以上のように、本発明にかかる情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置は、数値範囲の検索に有用であり、特に、帳票ファイルのような数値が多数含まれているコンテンツに適している。
500 数値・文字出現頻度管理データ
510 出現マップ
600 情報検索装置
601 編集部
602 検索部
622 検索実行部
623 検索結果表示部
624 全文検索実行部
625 数値検索実行部
2701 取得部
2702 数値圧縮部
2703 検出部
2704 中間数値群判断部
2706 省略マップ設定部
2707 下限/上限マップ生成部
2708 特定部
2709 圧縮情報検索部
2710 境界条件判断部
2711 決定部

Claims (8)

  1. 任意の数値範囲の境界を規定する数値を取得させる取得工程と、
    前記取得工程によって取得された境界を規定する数値の桁数および先頭数字を検出させる検出工程と、
    桁数および先頭数字を満たす数値群内の数値の存否を検索対象ファイルごとにあらわしたビット列の集合の中から、前記検出工程によって検出された桁数および先頭数字を満たす数値群内の数値の存否を前記検索対象ファイルごとにあらわしたビット列を抽出させるビット列抽出工程と、
    前記境界を規定する一方の数値の桁数および先頭数字を満たす一方の数値群と、前記境界を規定する他方の数値の桁数および先頭数字を満たす他方の数値群との間に、中間の数値群が存在するか否かを判断させる中間数値群判断工程と、
    前記中間数値群判断工程によって判断された判断結果に基づいて、前記ビット列抽出工程によって抽出されたビット列の中の前記検出工程によって検出された桁数および先頭数字を満たす数値群内の数値の存在を示すビットに対応する検索対象ファイルを、前記複数の検索対象ファイルの中から特定させる特定工程と、
    前記特定工程によって特定された検索対象ファイルに含まれているファイル内数値が、前記境界を規定する数値との境界条件を充足しているか否かを判断させる境界条件判断工程と、
    前記境界条件判断工程によって判断された判断結果に基づいて、前記特定工程によって特定された検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定させる決定工程と、
    をコンピュータに実行させることを特徴とする情報検索プログラム。
  2. 任意の数値範囲の境界を規定する数値を取得させる取得工程と、
    前記取得工程によって取得された境界を規定する数値を、前記境界を規定する数値の桁数を示す数字に関する圧縮符号および前記境界を規定する数値の桁数ごとの数字に関する圧縮符号を含む圧縮情報に圧縮させる数値圧縮工程と、
    前記数値圧縮工程によって得られた前記境界を規定する数値に関する圧縮情報と、検索対象ファイルを前記所定の形式で圧縮した圧縮化検索対象ファイルに含まれているファイル内数値の桁数を示す数字に関する圧縮符号および前記ファイル内数値の桁ごとの数字に関する圧縮符号とを含む前記ファイル内数値に関する圧縮情報とを照合することにより、前記ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断させる境界条件判断工程と、
    前記境界条件判断工程によって判断された判断結果に基づいて、前記圧縮化検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定させる決定工程と、
    をコンピュータに実行させることを特徴とする情報検索プログラム。
  3. 任意の数値範囲の境界を規定する数値を取得させる取得工程と、
    前記検索対象ファイル内に存在する数字の出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正させる補正工程と、
    前記補正工程によって補正された出現頻度に基づいて、前記検索対象ファイルを圧縮させるファイル圧縮工程と、
    前記取得工程によって取得された境界を規定する数値を所定の圧縮形式で圧縮させる数値圧縮工程と、
    前記数値圧縮工程によって得られた前記境界を規定する数値に関する圧縮情報と、前記ファイル圧縮工程によって圧縮された前記圧縮化検索対象ファイルに含まれているファイル内数値に関する圧縮情報とを照合することにより、前記ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断させる境界条件判断工程と、
    前記境界条件判断工程によって判断された判断結果に基づいて、前記圧縮化検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定させる決定工程と、
    をコンピュータに実行させることを特徴とする情報検索プログラム。
  4. 数字と文字とが混在する検索対象ファイルの中から数値の存在を示すフィーダを検出させるフィーダ検出工程と、
    前記フィーダ検出工程によって検出されたフィーダに関連付けられている数値の桁数を検出させる桁数検出工程と、
    前記検索対象ファイル内に含まれている数字の出現頻度に基づいて、前記数値を前記フィーダに関連付けて、前記桁数検出工程によって検出された桁数を示す数字に関する圧縮符号と前記数値の桁数ごとの数字に関する圧縮符号とを含む圧縮情報に圧縮させる圧縮工程と、
    をコンピュータに実行させることを特徴とする情報検索プログラム。
  5. コンピュータが、
    任意の数値範囲の境界を規定する数値を取得する取得工程と、
    前記取得工程によって取得された境界を規定する数値の桁数および先頭数字を検出する検出工程と、
    桁数および先頭数字を満たす数値群内の数値の存否を検索対象ファイルごとにあらわしたビット列の集合の中から、前記検出工程によって検出された桁数および先頭数字を満たす数値群内の数値の存否を前記検索対象ファイルごとにあらわしたビット列を抽出するビット列抽出工程と、
    前記境界を規定する一方の数値の桁数および先頭数字を満たす一方の数値群と、前記境界を規定する他方の数値の桁数および先頭数字を満たす他方の数値群との間に、中間の数値群が存在するか否かを判断する中間数値群判断工程と、
    前記中間数値群判断工程によって判断された判断結果に基づいて、前記ビット列抽出工程によって抽出されたビット列の中の前記検出工程によって検出された桁数および先頭数字を満たす数値群内の数値の存在を示すビットに対応する検索対象ファイルを、前記複数の検索対象ファイルの中から特定する特定工程と、
    前記特定工程によって特定された検索対象ファイルに含まれているファイル内数値が、前記境界を規定する数値との境界条件を充足しているか否かを判断させる境界条件判断工程と、
    前記境界条件判断工程によって判断された判断結果に基づいて、前記特定工程によって特定された検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定する決定工程と、
    を実行することを特徴とする情報検索方法。
  6. コンピュータが、
    任意の数値範囲の境界を規定する数値を取得する取得工程と、
    前記取得工程によって取得された境界を規定する数値を、前記境界を規定する数値の桁数を示す数字に関する圧縮符号および前記境界を規定する数値の桁数ごとの数字に関する圧縮符号を含む圧縮情報に圧縮する数値圧縮工程と、
    前記数値圧縮工程によって得られた前記境界を規定する数値に関する圧縮情報と、検索対象ファイルを前記所定の形式で圧縮した圧縮化検索対象ファイルに含まれているファイル内数値の桁数を示す数字に関する圧縮符号および前記ファイル内数値の桁ごとの数字に関する圧縮符号とを含む前記ファイル内数値に関する圧縮情報とを照合することにより、前記ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断する境界条件判断工程と、
    前記境界条件判断工程によって判断された判断結果に基づいて、前記圧縮化検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定する決定工程と、
    を実行することを特徴とする情報検索方法。
  7. コンピュータが、
    任意の数値範囲の境界を規定する数値を取得する取得工程と、
    前記検索対象ファイル内に存在する数字の出現頻度を、前記検索対象ファイル内に存在する文字の出現頻度よりも高い出現頻度に補正する補正工程と、
    前記補正工程によって補正された出現頻度に基づいて、前記検索対象ファイルを圧縮するファイル圧縮工程と、
    前記取得工程によって取得された境界を規定する数値を所定の圧縮形式で圧縮する数値圧縮工程と、
    前記数値圧縮工程によって得られた前記境界を規定する数値に関する圧縮情報と、前記ファイル圧縮工程によって圧縮された前記圧縮化検索対象ファイルに含まれているファイル内数値に関する圧縮情報とを照合することにより、前記ファイル内数値が前記境界を規定する数値との境界条件を充足しているか否かを判断する境界条件判断工程と、
    前記境界条件判断工程によって判断された判断結果に基づいて、前記圧縮化検索対象ファイルを、前記数値範囲内の数値を含むファイルに決定する決定工程と、
    を実行することを特徴とする情報検索方法。
  8. コンピュータが、
    数字と文字とが混在する検索対象ファイルの中から数値の存在を示すフィーダを検出するフィーダ検出工程と、
    前記フィーダ検出工程によって検出されたフィーダに関連付けられている数値の桁数を検出する桁数検出工程と、
    前記検索対象ファイル内に含まれている数字の出現頻度に基づいて、前記数値を前記フィーダに関連付けて、前記桁数検出工程によって検出された桁数を示す数字に関する圧縮符号と前記数値の桁数ごとの数字に関する圧縮符号とを含む圧縮情報に圧縮する圧縮工程と、
    を実行することを特徴とする情報検索方法。
JP2008539647A 2006-10-19 2006-10-19 情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置 Expired - Fee Related JP4707198B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2006/320827 WO2008047432A1 (fr) 2006-10-19 2006-10-19 Programme de recherche d'informations, supports d'enregistrement comprenant un tel programme enregistré, procédé de recherche d'informations, dispositif de recherche d'informations

Publications (2)

Publication Number Publication Date
JPWO2008047432A1 JPWO2008047432A1 (ja) 2010-02-18
JP4707198B2 true JP4707198B2 (ja) 2011-06-22

Family

ID=39313691

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008539647A Expired - Fee Related JP4707198B2 (ja) 2006-10-19 2006-10-19 情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置

Country Status (3)

Country Link
US (2) US8131721B2 (ja)
JP (1) JP4707198B2 (ja)
WO (1) WO2008047432A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014045361A1 (ja) 2012-09-20 2014-03-27 株式会社東芝 データ処理装置、データ管理システム、データ処理方法およびプログラム

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4707198B2 (ja) * 2006-10-19 2011-06-22 富士通株式会社 情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置
JP5418218B2 (ja) * 2009-12-25 2014-02-19 富士通株式会社 情報処理プログラム、情報検索プログラム、情報処理装置、および情報検索装置
EP2579165B1 (en) 2010-05-28 2018-08-29 Fujitsu Limited Information generation program, device, method, and information retrieval program, device, method
US9292565B2 (en) * 2010-06-30 2016-03-22 International Business Machines Corporation Template-based recognition of food product information
GB2496423B (en) * 2011-11-11 2016-08-17 Ibm Data compression
JP6011618B2 (ja) * 2012-05-24 2016-10-19 富士通株式会社 検索プログラム、検索方法、検索装置、記憶プログラム、記憶方法及び記憶装置
US9197365B2 (en) * 2012-09-25 2015-11-24 Nvidia Corporation Decoding a coded data block
JP6107513B2 (ja) * 2013-07-29 2017-04-05 富士通株式会社 情報処理システム、情報処理方法、および情報処理プログラム
US9495155B2 (en) * 2013-08-06 2016-11-15 Intel Corporation Methods, apparatus, instructions and logic to provide population count functionality for genome sequencing and alignment
US9513907B2 (en) * 2013-08-06 2016-12-06 Intel Corporation Methods, apparatus, instructions and logic to provide vector population count functionality
US20150062660A1 (en) * 2013-08-30 2015-03-05 Toshiba Tec Kabushiki Kaisha File management apparatus and file management method
JP6476647B2 (ja) * 2014-08-20 2019-03-06 富士通株式会社 圧縮プログラム、圧縮装置、圧縮方法、伸長プログラム、伸長装置および伸長方法
JP2015062146A (ja) * 2015-01-05 2015-04-02 富士通株式会社 情報生成プログラム、情報生成装置、および情報生成方法
US10268449B1 (en) * 2015-06-25 2019-04-23 EMC IP Holding Company LLC Natural order in API calls
JP6717153B2 (ja) 2016-10-06 2020-07-01 富士通株式会社 インデックス生成プログラム、インデックス生成装置、インデックス生成方法、検索プログラム、検索装置および検索方法
US11106740B2 (en) * 2017-04-25 2021-08-31 Mitsubishi Electric Corporation Search device, search system, search method, and computer readable medium
JP6931442B2 (ja) 2017-05-16 2021-09-08 富士通株式会社 符号化プログラム、インデックス生成プログラム、検索プログラム、符号化装置、インデックス生成装置、検索装置、符号化方法、インデックス生成方法および検索方法
JP7003443B2 (ja) 2017-05-16 2022-01-20 富士通株式会社 符号化プログラム、符号化装置および符号化方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02159618A (ja) * 1988-12-13 1990-06-19 Matsushita Graphic Commun Syst Inc キーワード登録検索装置
JPH0319081A (ja) * 1989-06-16 1991-01-28 Hitachi Software Eng Co Ltd 情報検索システム
JPH03147036A (ja) * 1989-11-01 1991-06-24 Casio Comput Co Ltd 可変長データ処理装置
JPH0561918A (ja) * 1991-09-04 1993-03-12 Nec Home Electron Ltd 数値検索装置
JPH05314188A (ja) * 1992-05-11 1993-11-26 Nec Software Ltd 範囲をもつデータの検索処理方式
JPH06309369A (ja) * 1993-04-22 1994-11-04 Matsushita Electric Ind Co Ltd 情報検索装置

Family Cites Families (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3521034A (en) * 1965-09-13 1970-07-21 Calvin N Mooers Battery controlled machine
US3594560A (en) * 1969-01-03 1971-07-20 Bell Telephone Labor Inc Digital expandor circuit
US3760170A (en) * 1971-03-19 1973-09-18 Cam Technology Inc Method and apparatus for automatic control
JPS5316652B2 (ja) * 1971-09-17 1978-06-02
CH572650A5 (ja) * 1972-12-21 1976-02-13 Gretag Ag
JPS5422244B2 (ja) * 1973-04-09 1979-08-06
US3953846A (en) * 1973-11-05 1976-04-27 Ekeland Thomas C Encoding device
US3916388A (en) * 1974-05-30 1975-10-28 Ibm Shifting apparatus for automatic data alignment
US4068298A (en) * 1975-12-03 1978-01-10 Systems Development Corporation Information storage and retrieval system
US4180854A (en) * 1977-09-29 1979-12-25 Hewlett-Packard Company Programmable calculator having string variable editing capability
US5548110A (en) * 1986-04-18 1996-08-20 Cias, Inc. Optical error-detecting, error-correcting and other coding and processing, particularly for bar codes, and applications therefor such as counterfeit detection
US6062481A (en) * 1986-04-18 2000-05-16 Cias, Inc. Optimal error-detecting, error-correcting and other coding and processing, particularly for bar codes, and applications therefor such as counterfeit detection
US4862167A (en) * 1987-02-24 1989-08-29 Hayes Microcomputer Products, Inc. Adaptive data compression method and apparatus
US5138669A (en) * 1990-06-29 1992-08-11 Hitachi, Ltd. Range-conditional character string retrieving method and system
US5475616A (en) * 1992-02-19 1995-12-12 Matsushita Graphic Communication Systems, Inc. Data processing apparatus for decoding, converting in size and coding pieces of line data and transmitting the line data to a communication partner
US6272190B1 (en) * 1992-03-12 2001-08-07 Ntp Incorporated System for wireless transmission and receiving of information and method of operation thereof
US5745532A (en) * 1992-03-12 1998-04-28 Ntp Incorporated System for wireless transmission and receiving of information and method of operation thereof
US5717725A (en) * 1992-03-12 1998-02-10 Ntp Incorporated System for wireless transmission and receiving of information through a computer bus interface and method of operation
AU693147B2 (en) * 1994-02-28 1998-06-25 Sony Corporation Method and device for recording data, data recording medium,and method and device for reproducing data
JP3278297B2 (ja) * 1994-07-20 2002-04-30 富士通株式会社 データ圧縮方法及びデータ復元方法並びにデータ圧縮装置及びデータ復元装置
US5544268A (en) * 1994-09-09 1996-08-06 Deacon Research Display panel with electrically-controlled waveguide-routing
JP3305190B2 (ja) * 1996-03-11 2002-07-22 富士通株式会社 データ圧縮装置及びデータ復元装置
US6057790A (en) * 1997-02-28 2000-05-02 Fujitsu Limited Apparatus and method for data compression/expansion using block-based coding with top flag
US6489902B2 (en) * 1997-12-02 2002-12-03 Hughes Electronics Corporation Data compression for use with a communications channel
US20040080541A1 (en) * 1998-03-20 2004-04-29 Hisashi Saiga Data displaying device
GB9807020D0 (en) * 1998-04-02 1998-06-03 Bamford Excavators Ltd A method of marking a mechanical element, an encoding scheme, a reading means for said marking and an apparatus for determining the position of said element
US6232894B1 (en) * 1998-05-15 2001-05-15 Kokochi Sangyo Co., Ltd. Reproducible data conversion and/or compression method of digital signals and a data converter and a digital computer
US6196466B1 (en) * 1998-06-09 2001-03-06 Symbol Technologies, Inc. Data compression method using multiple base number systems
US6118904A (en) * 1998-08-27 2000-09-12 The United States Of America As Represented By The National Security Agency Method of encoding data to minimize the number of codewords
US8397177B2 (en) * 1999-07-22 2013-03-12 Tavusi Data Solutions Llc Graphic-information flow method and system for visually analyzing patterns and relationships
US6400293B1 (en) * 1999-12-20 2002-06-04 Ric B. Richardson Data compression system and method
JP3990853B2 (ja) * 2000-03-24 2007-10-17 株式会社トリニティーセキュリティーシステムズ デジタルコピー防止処理装置、その装置により処理されたデジタルデータを記録した再生可能な記録媒体、デジタルコピー防止処理方法、その方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体およびその方法により処理されたデジタルデータを記録した再生可能な記録媒体
US6392567B2 (en) * 2000-03-31 2002-05-21 Fijitsu Limited Apparatus for repeatedly compressing a data string and a method thereof
US6670893B1 (en) * 2000-11-22 2003-12-30 Nokia Corporation Double-sided keyboard having a spacer plate with apertures to hold contacts
US6741749B2 (en) * 2001-01-24 2004-05-25 Advanced Digital Systems, Inc. System, device, computer program product, and method for representing a plurality of electronic ink data points
US6392568B1 (en) * 2001-03-07 2002-05-21 Unisys Corporation Data compression and decompression method and apparatus with embedded filtering of dynamically variable infrequently encountered strings
US6931418B1 (en) * 2001-03-26 2005-08-16 Steven M. Barnes Method and system for partial-order analysis of multi-dimensional data
FI110373B (fi) * 2001-04-11 2002-12-31 Nokia Corp Menetelmä pakatun audiosignaalin purkamiseksi
US6557852B1 (en) * 2001-08-20 2003-05-06 Michael Dyer Cuddy Cubic sexenary (base 6) dice for generating radom numbers from a predetermined set
US7200561B2 (en) * 2001-08-23 2007-04-03 Nippon Telegraph And Telephone Corporation Digital signal coding and decoding methods and apparatuses and programs therefor
US20030115191A1 (en) * 2001-12-17 2003-06-19 Max Copperman Efficient and cost-effective content provider for customer relationship management (CRM) or other applications
US6670897B1 (en) * 2002-10-03 2003-12-30 Motorola, Inc. Compression/decompression techniques based on tokens and Huffman coding
US7209926B2 (en) * 2002-10-24 2007-04-24 Research In Motion Limited Methods and apparatus for lexicographically sorting cyclic data
JP4136594B2 (ja) * 2002-10-25 2008-08-20 株式会社ターボデータラボラトリー データ処理方法およびデータ処理プログラム
US7155465B2 (en) * 2003-04-18 2006-12-26 Lee Howard F Method and apparatus for automatically archiving a file system
FI117988B (fi) * 2003-07-04 2007-05-15 Medicel Oy Informaationhallintajärjestelmä biokemiallista informaatiota varten
US7684629B2 (en) * 2004-01-26 2010-03-23 Fujifilm Corporation Data compression apparatus, and data compression program storage medium
US7769904B2 (en) * 2004-06-09 2010-08-03 L-3 Communications Integrated Systems L.P. Extensible binary mark-up language for efficient XML-based data communications and related systems and methods
US8018995B2 (en) * 2005-03-09 2011-09-13 Vudu, Inc. System and method for trick play of highly compressed video data
WO2006123429A1 (ja) * 2005-05-20 2006-11-23 Fujitsu Limited 情報検索方法、装置、プログラム、該プログラムを記録した記録媒体
US8259760B2 (en) * 2006-03-31 2012-09-04 Stmicroelectronics, Inc. Apparatus and method for transmitting and recovering multi-lane encoded data streams using a reduced number of lanes
JP4707198B2 (ja) * 2006-10-19 2011-06-22 富士通株式会社 情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置
WO2008142799A1 (ja) * 2007-05-24 2008-11-27 Fujitsu Limited 情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置
JP5007743B2 (ja) * 2007-05-24 2012-08-22 富士通株式会社 情報検索プログラム、該プログラムを記録した記録媒体、情報検索装置、および情報検索方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02159618A (ja) * 1988-12-13 1990-06-19 Matsushita Graphic Commun Syst Inc キーワード登録検索装置
JPH0319081A (ja) * 1989-06-16 1991-01-28 Hitachi Software Eng Co Ltd 情報検索システム
JPH03147036A (ja) * 1989-11-01 1991-06-24 Casio Comput Co Ltd 可変長データ処理装置
JPH0561918A (ja) * 1991-09-04 1993-03-12 Nec Home Electron Ltd 数値検索装置
JPH05314188A (ja) * 1992-05-11 1993-11-26 Nec Software Ltd 範囲をもつデータの検索処理方式
JPH06309369A (ja) * 1993-04-22 1994-11-04 Matsushita Electric Ind Co Ltd 情報検索装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014045361A1 (ja) 2012-09-20 2014-03-27 株式会社東芝 データ処理装置、データ管理システム、データ処理方法およびプログラム
US10546136B2 (en) 2012-09-20 2020-01-28 Kabushiki Kaisha Toshiba Data processor, data management system, data processing method, and computer program product

Also Published As

Publication number Publication date
JPWO2008047432A1 (ja) 2010-02-18
US20090193020A1 (en) 2009-07-30
US8131721B2 (en) 2012-03-06
US9081874B2 (en) 2015-07-14
US20120072434A1 (en) 2012-03-22
WO2008047432A1 (fr) 2008-04-24

Similar Documents

Publication Publication Date Title
JP4707198B2 (ja) 情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置
JP5007743B2 (ja) 情報検索プログラム、該プログラムを記録した記録媒体、情報検索装置、および情報検索方法
JP4644708B2 (ja) 情報検索プログラム
JP5391583B2 (ja) 検索装置、生成装置、プログラム、検索方法および生成方法
US8712977B2 (en) Computer product, information retrieval method, and information retrieval apparatus
EP0293161B1 (en) Character processing system with spelling check function
EP2757488B1 (en) Extraction method, extraction program, extraction device, and extraction system
WO2012150637A1 (ja) 抽出方法、情報処理方法、抽出プログラム、情報処理プログラム、抽出装置、および情報処理装置
JP5605288B2 (ja) 出現マップ生成方法、ファイル抽出方法、出現マップ生成プログラム、ファイル抽出プログラム、出現マップ生成装置、およびファイル抽出装置
CA2275391C (en) File processing method, data processing device, and storage medium
US7382878B2 (en) System and method for data encryption
Yang et al. Chinese Multi-Keyword Fuzzy Rank Search over Encrypted Cloud Data Based on Locality-Sensitive Hashing.
JP2019067096A (ja) 符号符号分類検索ソフトウェアを記録した記録媒体
JP6304302B2 (ja) 情報生成方法、情報生成装置、および情報生成プログラム
JP6251437B1 (ja) 分類用符号生成ソフトウェアを記録した記録媒体
JP2016149160A5 (ja)
RU2386167C1 (ru) Устройство обработки информации для информационного поиска
KR19990084950A (ko) 역화일을 이용한 데이터 부분검색 장치 및 그 방법
JP2865446B2 (ja) 文章処理装置
JPH05341961A (ja) 整列のカストマイズ方法
JPH07129565A (ja) 情報処理装置
JPH07319895A (ja) 文書検索装置及び文書検索方法
JPH02171816A (ja) 用語辞書探索方法および装置
JPH1097542A (ja) 全文検索装置及び全文検索方法

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110308

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110314

R150 Certificate of patent or registration of utility model

Ref document number: 4707198

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees