(57)【特許請求の範囲】
【請求項１】
複数の検索対象ファイルからなるコンテンツから前記複数の検索対象ファイルに記述されている文字データを抽出させる文字データ抽出工程と、
前記文字データ抽出工程によって抽出された文字データの前記コンテンツにおける出現頻度を算出させる算出工程と、
前記文字データ抽出工程によって抽出された文字データの前記複数の検索対象ファイルを構成する各検索対象ファイルにおける存否を検出させる検出工程と、
前記算出工程によって算出された前記文字データごとの前記コンテンツにおける出現頻度と前記検出工程によって検出された前記文字データごとの前記各検索対象ファイルにおける存否情報とを含む前記コンテンツの圧縮情報を生成させる圧縮情報生成工程と、
前記圧縮情報生成工程によって生成された圧縮情報に含まれている前記文字データごとの前記コンテンツにおける出現頻度に基づいてハフマン木を生成させるハフマン木生成工程と、
前記ハフマン木生成工程によって生成されたハフマン木を用いて前記コンテンツを圧縮させるコンテンツ圧縮工程と、
検索キーワードの入力を受け付けさせる入力工程と、
前記入力工程によって入力された検索キーワードを構成する文字データ（以下、「検索文字データ」という）の前記各検索対象ファイルにおける存否情報を前記圧縮情報から抽出させる存否情報抽出工程と、
前記存否情報抽出工程によって抽出された前記検索文字データごとの存否情報に基づいて、前記複数の検索対象ファイルの中から、前記検索文字データがすべて記述されている検索対象ファイルを特定させる特定工程と、
前記複数の検索対象ファイルが前記コンテンツ圧縮工程によって圧縮された複数の圧縮ファイルの中から、前記特定工程によって特定された検索対象ファイルが前記コンテンツ圧縮工程によって圧縮された圧縮ファイルを抽出させる圧縮ファイル抽出工程と、
前記ハフマン木を用いて前記検索キーワードを圧縮させる検索キーワード圧縮工程と、
前記圧縮ファイル抽出工程によって抽出された圧縮ファイルに、前記検索キーワード圧縮工程によって圧縮された検索キーワード（以下、「圧縮検索キーワード」という）が含まれているか否かを判定させる判定工程と、
前記判定工程によって前記圧縮検索キーワードが含まれていると判定された前記圧縮ファイルを、前記ハフマン木を用いて伸長させる伸長工程と、
前記伸長工程により伸長することによって得られた検索対象ファイルの中から、前記検索キーワードと同一または関連する情報を検索させる検索工程と、
をコンピュータに実行させることを特徴とする情報検索プログラム。
【請求項２】
複数の検索対象ファイルからなるコンテンツのうち一の検索対象ファイルに記述されている文字データを抽出させる第１の文字データ抽出工程と、
前記第１の文字データ抽出工程によって抽出された文字データの前記一の検索対象ファイルにおける出現頻度を算出させる算出工程と、
前記算出工程によって算出された前記文字データごとの前記一の検索対象ファイルにおける出現頻度と前記文字データごとの前記一の検索対象ファイルにおける存否情報とを含む前記一の検索対象ファイルの圧縮情報を生成させる圧縮情報生成工程と、
前記圧縮情報生成工程によって生成された圧縮情報に含まれている前記文字データごとの前記一の検索対象ファイルにおける出現頻度に基づいてハフマン木を生成させるハフマン木生成工程と、
前記コンテンツから、前記複数の検索対象ファイルのうち前記一の検索対象ファイル以外の他の検索対象ファイルに記述されている文字データを抽出させる第２の文字データ抽出工程と、
前記第１の文字データ抽出工程によって抽出された文字データが記述されている前記一の検索対象ファイルと前記第２の文字データ抽出工程によって抽出された文字データが記述されている前記他の検索対象ファイルとを、前記ハフマン木生成工程によって生成されたハフマン木を用いて圧縮させる圧縮工程と、
前記圧縮情報内の存否情報に、前記第２の文字データ抽出工程によって抽出された文字データごとの前記他の検索対象ファイルにおける存否情報を追加することにより、前記圧縮情報を更新させる圧縮情報更新工程と、
検索キーワードの入力を受け付けさせる入力工程と、
前記入力工程によって入力された検索キーワードを構成する文字データ（以下、「検索文字データ」という）の前記一または他の検索対象ファイルにおける存否情報を前記圧縮情報更新工程によって更新された圧縮情報から抽出させる存否情報抽出工程と、
前記存否情報抽出工程によって抽出された前記検索文字データごとの存否情報に基づいて、前記一または他の検索対象ファイルの中から、前記検索文字データがすべて記述されている検索対象ファイルを特定させる特定工程と、
前記一および他の検索対象ファイルが前記圧縮工程によって圧縮された圧縮ファイル群の中から、前記特定工程によって特定された検索対象ファイルが前記圧縮工程によって圧縮された圧縮ファイルを抽出させる圧縮ファイル抽出工程と、
前記ハフマン木を用いて前記検索キーワードを圧縮させる検索キーワード圧縮工程と、
前記圧縮ファイル抽出工程によって抽出された圧縮ファイルに、前記検索キーワード圧縮工程によって圧縮された検索キーワード（以下、「圧縮検索キーワード」という）が含まれているか否かを判定させる判定工程と、
前記判定工程によって前記圧縮検索キーワードが含まれていると判定された前記圧縮ファイルを、前記ハフマン木を用いて伸長させる伸長工程と、
前記伸長工程により伸長することによって得られた検索対象ファイルの中から、前記検索キーワードと同一または関連する情報を検索させる検索工程と、
をコンピュータに実行させることを特徴とする情報検索プログラム。
【請求項３】
請求項１または２に記載の情報検索プログラムを記録したコンピュータに読み取り可能な記録媒体。
【請求項４】
複数の検索対象ファイルからなるコンテンツを記憶する記憶手段を有するコンピュータが、
文字データ抽出手段により、前記コンテンツから前記複数の検索対象ファイルに記述されている文字データを抽出する文字データ抽出工程と、
算出手段により、前記文字データ抽出工程によって抽出された文字データの前記コンテンツにおける出現頻度を算出する算出工程と、
検出手段により、前記文字データ抽出工程によって抽出された文字データの前記複数の検索対象ファイルを構成する各検索対象ファイルにおける存否を検出する検出工程と、
圧縮情報生成手段により、前記算出工程によって算出された前記文字データごとの前記コンテンツにおける出現頻度と前記検出工程によって検出された前記文字データごとの前記各検索対象ファイルにおける存否情報とを含む前記コンテンツの圧縮情報を生成する圧縮情報生成工程と、
ハフマン木生成手段により、前記圧縮情報生成工程によって生成された圧縮情報に含まれている前記文字データごとの前記コンテンツにおける出現頻度に基づいてハフマン木を生成するハフマン木生成工程と、
コンテンツ圧縮手段により、前記ハフマン木生成工程によって生成されたハフマン木を用いて前記コンテンツを圧縮するコンテンツ圧縮工程と、
入力手段により、検索キーワードの入力を受け付ける入力工程と、
存否情報抽出手段により、前記入力工程によって入力された検索キーワードを構成する文字データ（以下、「検索文字データ」という）の前記各検索対象ファイルにおける存否情報を前記圧縮情報から抽出する存否情報抽出工程と、
特定手段により、前記存否情報抽出工程によって抽出された前記検索文字データごとの存否情報に基づいて、前記複数の検索対象ファイルの中から、前記検索文字データがすべて記述されている検索対象ファイルを特定する特定工程と、
圧縮ファイル抽出手段により、前記複数の検索対象ファイルが前記コンテンツ圧縮工程によって圧縮された複数の圧縮ファイルの中から、前記特定工程によって特定された検索対象ファイルが前記コンテンツ圧縮工程によって圧縮された圧縮ファイルを抽出する圧縮ファイル抽出工程と、
判定手段により、前記ハフマン木を用いて前記検索キーワードを圧縮する検索キーワード圧縮工程と、
前記圧縮ファイル抽出工程によって抽出された圧縮ファイルに、前記検索キーワード圧縮工程によって圧縮された検索キーワード（以下、「圧縮検索キーワード」という）が含まれているか否かを判定する判定工程と、
伸長手段により、前記判定工程によって前記圧縮検索キーワードが含まれていると判定された前記圧縮ファイルを、前記ハフマン木を用いて伸長する伸長工程と、
検索手段により、前記伸長工程により伸長することによって得られた検索対象ファイルの中から、前記検索キーワードと同一または関連する情報を検索する検索工程と、
を実行することを特徴とする情報検索方法。
【請求項５】
複数の検索対象ファイルからなるコンテンツから前記複数の検索対象ファイルに記述されている文字データを抽出する文字データ抽出手段と、
前記文字データ抽出手段によって抽出された文字データの前記コンテンツにおける出現頻度を算出する算出手段と、
前記文字データ抽出手段によって抽出された文字データの前記複数の検索対象ファイルを構成する各検索対象ファイルにおける存否を検出する検出手段と、
前記算出手段によって算出された前記文字データごとの前記コンテンツにおける出現頻度と前記検出手段によって検出された前記文字データごとの前記各検索対象ファイルにおける存否情報とを含む前記コンテンツの圧縮情報を生成する圧縮情報生成手段と、
前記圧縮情報生成手段によって生成された圧縮情報に含まれている前記文字データごとの前記コンテンツにおける出現頻度に基づいてハフマン木を生成するハフマン木生成手段と、
前記ハフマン木生成手段によって生成されたハフマン木を用いて前記コンテンツを圧縮するコンテンツ圧縮手段と、
検索キーワードの入力を受け付ける入力手段と、
前記入力手段によって入力された検索キーワードを構成する文字データ（以下、「検索文字データ」という）の前記各検索対象ファイルにおける存否情報を前記圧縮情報から抽出する存否情報抽出手段と、
前記存否情報抽出手段によって抽出された前記検索文字データごとの存否情報に基づいて、前記複数の検索対象ファイルの中から、前記検索文字データがすべて記述されている検索対象ファイルを特定する特定手段と、
前記複数の検索対象ファイルが前記コンテンツ圧縮手段によって圧縮された複数の圧縮ファイルの中から、前記特定手段によって特定された検索対象ファイルが前記コンテンツ圧縮手段によって圧縮された圧縮ファイルを抽出する圧縮ファイル抽出手段と、
前記ハフマン木を用いて前記検索キーワードを圧縮する検索キーワード圧縮手段と、
前記圧縮ファイル抽出手段によって抽出された圧縮ファイルに、前記検索キーワード圧縮手段によって圧縮された検索キーワード（以下、「圧縮検索キーワード」という）が含まれているか否かを判定する判定手段と、
前記判定手段によって前記圧縮検索キーワードが含まれていると判定された前記圧縮ファイルを、前記ハフマン木を用いて伸長する伸長手段と、
前記伸長手段により伸長することによって得られた検索対象ファイルの中から、前記検索キーワードと同一または関連する情報を検索する検索手段と、
備えることを特徴とする情報検索装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンテンツの圧縮、暗号化および検索をおこなう情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置に関するものである。
【背景技術】
【０００２】
従来、辞書などのコンテンツは、ＪＩＳ−Ｘ４０８１に従い、１６ビットコードの文字データによって記述された単一ファイルから構成されている。この辞書コンテンツは、たとえば、下記特許文献１の圧縮技術により圧縮される。
【０００３】
この特許文献１の圧縮技術では、コンテンツを圧縮した状態で検索や表示をおこなうことができる。すなわち、２ＫＢ毎にブロック化され、共通のハフマン木によって圧縮されており、読出し時にブロック単位で伸長される。また、ハフマン圧縮を基本としており、他の圧縮方式に比べ、伸長が最高速である。さらに、ハフマン木の縮小のため、１６ビットコードにおける出現頻度の低い文字は分割され、８ビットコードの２文字に置換して圧縮されている。また、文字だけでなく、アドレスポインタなどのバイナリデータも圧縮できる。
【０００４】
しかし、近年、インターネットの普及に伴い、急速にＨＴＭＬ形式のコンテンツが増加した。ＨＴＭＬ形式のコンテンツにはシフトＪＩＳコードなどが利用され、８ビットコード、１６ビットコードおよび３２ビットコードの文字データが混在しており、また、上述したような単一ファイルではなく、多ファイルで構成されている。また近年、このＨＴＭＬ形式のコンテンツに対して、検索効率の向上のため、見出し検索技術が確立されている。
【０００５】
しかし、この見出し検索技術についても、携帯電話機やＰＤＡなどの可搬型の携帯端末に大容量の検索対象コンテンツを格納し、圧縮形式のままで利用したいというニーズが高まっている。また、検索対象コンテンツ内のデータの改ざん防止や著作権保護のため、暗号化して欲しいというニーズも高まっている。さらに、全文検索の速度を高速化して欲しいというニーズも高まっている。
【０００６】
この全文検索においては、入力されたキーワードとコンテンツ内の各本文ファイルの文字列との比較により検索処理を行っているが、各本文ファイルのオープンとクローズの時間がかかり、高速化の弊害となっている。この弊害を克服するため、全文検索インデックを付加し、全文検索の高速化を図る方式が提案されている。また、ファイル結合によりファイル数を減少して高速化を図る方式も提案されている。なお、文字列との比較には、オートマトンを応用した高速比較エンジンなどが使用される。
【０００７】
また、下記特許文献２および３の従来技術には、検索対象のデータのそれぞれの文字の出現頻度とアドレスを抽出し、それを活用して、全文検索の高速化を実現する方法が開示されている。
【０００８】
さらに、下記特許文献４の従来技術には、登録すべき文書の本文の中から文字種毎に文字を抽出し、本文に現れる文字を１ビットの情報で表す文字成分表を作成し、検索時には、文字成分表を参照し、検索文字列中のすべての文字を含む文書のみを選び出し、選び出された文書のうち本文中に検索文字列を含む文書のみを抽出する全文検索方法が開示されている。
【０００９】
【特許文献１】国際公開第９９／２１０９２号パンフレット
【特許文献２】特許第２８１７１０３号公報
【特許文献３】特許第２８３５３３５号公報
【特許文献４】特開平４−２７４５５７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、辞書などのコンテンツのＨＴＭＬ化や多ファイル化に伴い、コンテンツの圧縮効率が低下するという問題があった。たとえば、上述した特許文献１の従来技術では、シフトＪＩＳコードのように８ビットコード、１６ビットコードおよび３２ビットコードの文字データが混在するファイルの圧縮に対応しておらず、シフトＪＩＳコードを用いた検索対象コンテンツの圧縮効率が低下するという問題があった。
【００１１】
また、コンテンツの各ファイルの圧縮において、偶数バイトの固定サイズでブロック化がされるため、ブロック境界において文字列の分離、いわゆる「泣き別れ」が発生してしまい、圧縮状態でのコンテンツの検索精度の低下を招くという問題があった。さらに、文字データの出現頻度を１６ビット固定で集計しているため、８ビットの文字データが含まれると文字データ毎の出現頻度が集計できなくなり、圧縮率が激減してしまうという問題があった。
【００１２】
また、英数字や仮名・カタカナなどの表音文字データが多量に混在していると、圧縮率の低下の原因になるという問題があった。
【００１３】
また、上述したように、コンテンツ内のデータの改ざん防止や著作権保護のため、暗号化して欲しいというニーズも高まっているが、検索対象コンテンツの各ファイルの全文検索や表示の時に復号化する処理および時間が必要となり、検索速度が低下するという問題があった。
【００１４】
また、従来では、上述したように全文検索インデックスを付加することにより、全文検索の高速化を図っているが、全文検索インデックスの容量が大きいため、コンテンツを高圧縮したとしても、大容量化してしまうという問題があった。同様に、上述したようにファイル結合により高速化を図る方式もあるが、却ってファイルサイズが膨大となり、検索に必要なメモリ等が大容量化してしまうという問題があった。
【００１５】
したがって、携帯電話機やＰＤＡなどの可搬型の携帯端末や、スタンドアロン型のパーソナルコンピュータに格納することは困難であるという問題があった。
【００１６】
また、検索対象コンテンツの各ファイルに英数字や仮名・カタカナなどの表音文字データが混在していると、全文検索の速度が低下してしまうという問題があった。
【００１７】
また、非圧縮データの文字列の照合は１バイト毎、もしくは文字単位ごとに比較されるが、圧縮データでは、文字の境界の識別が困難となるため、１ビット毎にシフトして比較することが必要である。しかしながら、コンピュータは圧縮ファイルのビット毎の操作は困難であり、上述した特許文献４の従来技術のように結果的に照合速度の低下を招くという問題があった。
【００１８】
また、多数ファイルの追加データや電子帳票（月間集計表）などの母集団が同じデータに関して、出現する顧客名や住所、および品名などに変化はなく、ハフマン圧縮のパラメータはほぼ類似している。また、電子帳票は処理量が多く、その圧縮・暗号化には、高速化が要望されている。
【００１９】
本発明は、上記に鑑みてなされたものであって、コンテンツについての圧縮率、セキュリティ、および全文検索速度の向上を図ることができる情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置を提供することを目的とする。
【課題を解決するための手段】
【００２０】
上述した課題を解決し、目的を達成するために、この発明の情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置は、複数の検索対象ファイルからなるコンテンツから前記複数の検索対象ファイルに記述されている文字データを抽出し、抽出された文字データの前記コンテンツにおける出現頻度を算出し、抽出された文字データの前記各検索対象ファイルにおける存否を検出し、前記文字データごとの前記コンテンツにおける出現頻度と前記文字データごとの前記各検索対象ファイルにおける存否情報とを含む前記コンテンツの圧縮情報を生成することを特徴とする。
【００２１】
この発明によれば、圧縮情報と検索に必要な存否情報を、複数の検索対象ファイルで共通化することができる。また、抽出を同時におこなうことで、処理の高速化を図ることができる。
【００２２】
また、上記発明において、前記複数の検索対象ファイルには、複数種類の文字データが混在しており、前記文字データの種類ごとに、前記文字データの前記コンテンツにおける出現頻度を算出し、前記文字データの種類ごとに、前記文字データの前記各検索対象ファイルにおける存否を検出することとしてもよい。
【００２３】
この発明によれば、シフトＪＩＳコードのように８ビットコード、１６ビットコードおよび３２ビットコードの文字データが混在する複数の検索対象ファイルを圧縮することができる。
【００２４】
また、上記発明において、前記複数の検索対象ファイルには、バイナリデータが含まれていることとしてもよい。
【００２５】
この発明によれば、アドレスポインタなどの値がランダムなバイナリデータを８ビットコードの文字データとみなしてコンテンツを圧縮することができる。
【００２６】
また、上記発明において、抽出された文字データが、所定の連続する表音文字列を示す連字データである場合、当該連字データを外字データに置換し、前記連字データから変換された外字データ（以下、「連字外字データ」という）の前記コンテンツにおける出現頻度を算出し、前記連字外字データの前記各検索対象ファイルにおける存否を検出することとしてもよい。
【００２７】
この発明によれば、圧縮率および全文検索速度の低下の原因となる表音文字に関し、高出現頻度の連字データを圧縮することができ、圧縮率を向上することができる。
【００２８】
また、上記発明において、生成された圧縮情報に基づいてハフマン木を生成し、生成されたハフマン木を用いて前記コンテンツを圧縮することとしてもよい。
【００２９】
この発明によれば、各検索対象ファイルにおいて共通化されている圧縮情報からハフマン木を生成しているため、コンテンツを構成する各検索対象ファイルの圧縮率の向上を図ることができる。
【００３０】
また、上記発明において、検索キーワードの入力を受け付け、入力された検索キーワードを構成する文字データ（以下、「検索文字データ」という）の前記各検索対象ファイルにおける存否情報を前記圧縮情報から抽出し、抽出された前記検索文字データごとの存否情報に基づいて、前記複数の検索対象ファイルの中から、前記検索対象文字データがすべて記述されている検索対象ファイルを特定し、特定された検索対象ファイルの中から、前記検索キーワードと同一または関連する情報を検索することとしてもよい。
【００３１】
この発明によれば、検索対象ファイルを圧縮した状態で絞り込むことができ、検索対象ファイルの無駄なオープン／クローズを低減することができる。
【００３２】
また、上記発明において、圧縮されたコンテンツを構成する複数の圧縮された検索対象ファイル（以下、「圧縮ファイル」という）の中から、特定された検索対象ファイルの圧縮ファイルを抽出し、前記ハフマン木を用いて前記検索キーワードを圧縮し、抽出された圧縮ファイルに、圧縮された検索キーワード（以下、「圧縮検索キーワード」という）が含まれているか否かを判定し、前記圧縮検索キーワードが含まれていると判定された圧縮ファイルを、前記ハフマン木を用いて伸長し、伸長することによって得られた検索対象ファイルの中から、前記検索キーワードと同一または関連する情報を検索することとしてもよい。
【００３３】
この発明によれば、圧縮ファイルを伸長する前に、検索キーワードが含まれていない圧縮ファイルを検索対象から除外することができ、検索速度の高速化を図ることができる。
【００３４】
また、上記発明において、抽出された文字データが、所定の連続する表音文字列を示す連字データである場合、当該連字データを外字データに置換し、圧縮ファイルを伸長することによって得られた検索対象ファイルに、前記連字データから変換された外字データ（以下、「連字外字データ」という）が含まれている場合、当該連字外字データを、元の連字データに置換することとしてもよい。
【００３５】
この発明によれば、圧縮率および全文検索速度の低下が原因となる表音文字列に関し、高出現頻度の連字データの存否情報により、検索速度の高速化を図ることができる。
【００３６】
また、上記発明において、抽出された文字データが、前記検索対象ファイルに含まれるタグである場合、当該タグを外字データに置換し、圧縮ファイルを伸長することによって得られた検索対象ファイルに、前記タグから変換された外字データが含まれている場合、当該外字データを、元のタグに置換することとしてもよい。
【００３７】
この発明によれば、コンテンツを構成する検索対象ファイルがＨＴＭＬやＸＭＬなどのマークアップ言語により記述されている場合、圧縮率をさらに向上させるとともに、タグを意識した付加価値の高い検索に利用することができる。
【００３８】
また、上記発明において、前記各検索対象ファイルは、所定の文字数ごとにブロック化された複数のブロックデータによって構成され、前記ハフマン木を用いて前記コンテンツの各検索対象ファイルを構成する複数のブロックデータごとに圧縮し、前記ハフマン木を用いて、圧縮された各ブロックデータを伸長することとしてもよい。
【００３９】
この発明によれば、所定バイトの固定サイズでブロック化した場合に発生するブロック境界の文字データの分離、いわゆる、「泣き別れ」を防止することができる。
【００４０】
また、上記発明において、前記圧縮情報を暗号化することとしてもよい。
【００４１】
この発明によれば、コンテンツ自体を暗号化しなくても、ハフマン木の生成元となる圧縮情報を暗号化しているため、圧縮情報を復号しない限り、圧縮コンテンツを伸長することができない。したがって、セキュリティの向上を図ることができる。
【００４２】
また、上記発明において、暗号化された圧縮情報を復号化し、復号化された圧縮情報に基づいて前記ハフマン木を再度生成し、検索キーワードの入力を受け付け、入力された検索キーワードを構成する文字データ（以下、「検索文字データ」という）の前記各検索対象ファイルにおける存否情報を前記圧縮情報から抽出し、抽出された前記検索文字データごとの存否情報に基づいて、前記複数の検索対象ファイルの中から、前記検索対象文字データがすべて記述されている検索対象ファイルを特定し、圧縮されたコンテンツを構成する複数の圧縮された検索対象ファイル（以下、「圧縮ファイル」という）の中から、前記特定工程によって特定された検索対象ファイルの圧縮ファイルを抽出し、生成されたハフマン木を用いて、前記検索キーワードを圧縮し、抽出された圧縮ファイルに、圧縮された検索キーワード（以下、「圧縮検索キーワード」という）が含まれているか否かを判定し、前記圧縮検索キーワードが含まれていると判定された圧縮ファイルを、前記ハフマン木を用いて伸長し、伸長することによって得られた検索対象ファイルの中から、前記検索キーワードと同一または関連する情報を検索することとしてもよい。
【００４３】
この発明によれば、検索時にコンテンツの復号の必要がなく、また、暗号化される圧縮情報は、コンテンツを含む全体のデータの１％未満であるため、暗号化／復号化の処理時間も短時間で済み、検索速度の向上を図ることができる。
【００４４】
また、上記発明において、前記圧縮キーワードと、当該圧縮キーワードを１ビットずつシフトさせた複数のビット列とを比較演算し、比較演算された比較演算結果から、前記ビット列ごとに一部の比較演算結果を抽出し、前記各ビット列のシフト数と一部の比較演算結果とを含む照合予測テーブルを生成し、照合予測テーブルを用いて、前記圧縮ファイルに、前記圧縮検索キーワードが含まれているか否かを判定することとしてもよい。
【００４５】
この発明によれば、照合予測により、圧縮ファイルをビット単位ではなくバイト単位でアクセスすることができる。
【００４６】
また、上記発明において、前記圧縮ファイル内の圧縮ブロックデータと前記圧縮キーワードとを比較演算し、その比較演算結果から一部の比較演算結果を抽出し、その一部の比較演算結果と、前記照合予測テーブルに含まれている前記一部の比較演算結果との不一致照合をおこなうこととしてもよい。
【００４７】
この発明によれば、圧縮状態での不一致照合により、検索速度の高速化を図ることができる。
【００４８】
また、上記発明において、不一致照合された場合、前記圧縮ファイル内においてバイト単位でシフトさせたあらたな圧縮ブロックデータと前記圧縮キーワードとを比較演算し、その比較演算結果から、一部の比較演算結果を抽出し、その一部の比較演算結果と、前記照合予測テーブルに含まれている前記一部の比較演算結果との不一致判定をおこなうこととしてもよい。
【００４９】
この発明によれば、圧縮ファイル内の圧縮ブロックデータと圧縮キーワードとが不一致であるという照合予測を、圧縮ブロックデータごとに高速で実現することができる。
【００５０】
また、上記発明において、不一致照合された場合、前記圧縮ファイル内において前記圧縮キーワードのビット長に応じたバイト単位でシフトさせた他の圧縮ブロックデータと前記圧縮キーワードとを比較演算することとしてもよい。
【００５１】
この発明によれば、圧縮ファイルとの照合間隔（シフト幅）を長くすることができ、不一致照合の高速化を図ることができる。
【００５２】
また、この発明の情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置は、複数の検索対象ファイルからなるコンテンツのうち一の検索対象ファイルに記述されている文字データを抽出し、抽出された文字データの前記一の検索対象ファイルにおける出現頻度を算出し、抽出された文字データの前記一の検索対象ファイルにおける存否を検出し、前記文字データごとの前記一の検索対象ファイルにおける出現頻度と前記文字データごとの前記一の検索対象ファイルにおける存否情報とを含む前記一の検索対象ファイルの圧縮情報を生成し、生成された圧縮情報に基づいてハフマン木を生成し、前記コンテンツから前記一の検索対象ファイル以外の他の検索対象ファイルに記述されている文字データを抽出し、抽出された文字データの前記他の検索対象ファイルにおける出現頻度を算出し、抽出された文字データの前記他の検索対象ファイルにおける存否を検出し、存否が検出された文字データを、生成されたハフマン木を用いて圧縮し、前記文字データごとの前記コンテンツにおける出現頻度と前記文字データごとの前記各検索対象ファイルにおける存否情報とを含む前記コンテンツの圧縮情報を生成し、前記コンテンツの圧縮情報を暗号化することを特徴とする。
【００５３】
この発明によれば、コンテンツが、電子帳票など母集団が同一のデータである場合、一の検索対象ファイルで生成されたハフマン木を用いて、他の検索対象ファイルをこれまでの２パスではなく１パスで圧縮・暗号化をおこなうことができる。
【発明の効果】
【００５４】
本発明にかかる情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置は、コンテンツについての圧縮率、セキュリティ、および全文検索速度の向上を図ることができるという効果を奏する。
【発明を実施するための最良の形態】
【００５５】
（実施の形態１）
（情報検索装置のハードウェア構成）
まず、この発明の実施の形態１にかかる情報検索装置のハードウェア構成について説明する。図１は、この発明の実施の形態１にかかる情報検索装置のハードウェア構成を示すブロック図である。
【００５６】
図１において、情報検索装置は、ＣＰＵ１０１と、ＲＯＭ１０２と、ＲＡＭ１０３と、ＨＤＤ（ハードディスクドライブ）１０４と、ＨＤ（ハードディスク）１０５と、ＦＤＤ（フレキシブルディスクドライブ）１０６と、着脱可能な記録媒体の一例としてのＦＤ（フレキシブルディスク）１０７と、ディスプレイ１０８と、Ｉ／Ｆ（インターフェース）１０９と、キーボード１１０と、マウス１１１と、スキャナ１１２と、プリンタ１１３と、を備えている。また、各構成部はバス１００によってそれぞれ接続されている。
【００５７】
ここで、ＣＰＵ１０１は、情報検索装置の全体の制御を司る。ＲＯＭ１０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ１０３は、ＣＰＵ１０１のワークエリアとして使用される。ＨＤＤ１０４は、ＣＰＵ１０１の制御にしたがってＨＤ１０５に対するデータのリード／ライトを制御する。ＨＤ１０５は、ＨＤＤ１０４の制御で書き込まれたデータを記憶する。
【００５８】
ＦＤＤ１０６は、ＣＰＵ１０１の制御にしたがってＦＤ１０７に対するデータのリード／ライトを制御する。ＦＤ１０７は、ＦＤＤ１０６の制御で書き込まれたデータを記憶したり、ＦＤ１０７に記憶されたデータを情報検索装置に読み取らせたりする。
【００５９】
また、着脱可能な記録媒体として、ＦＤ１０７のほか、ＣＤ−ＲＯＭ（ＣＤ−Ｒ、ＣＤ−ＲＷ）、ＭＯ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、メモリーカードなどであってもよい。ディスプレイ１０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ１０８は、たとえば、ＣＲＴ、ＴＦＴ液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００６０】
Ｉ／Ｆ１０９は、通信回線を通じてインターネットなどのネットワーク１１４に接続され、このネットワーク１１４を介して他の装置に接続される。そして、Ｉ／Ｆ１０９は、ネットワーク１１４と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ１０９には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００６１】
キーボード１１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス１１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００６２】
スキャナ１１２は、画像を光学的に読み取り、情報検索装置内に画像データを取り込む。なお、スキャナ１１２は、ＯＣＲ機能を持たせてもよい。また、プリンタ１１３は、画像データや文書データを印刷する。プリンタ１１３には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。
【００６３】
（情報検索装置の機能的構成）
つぎに、この発明の実施の形態１にかかる情報検索装置の機能的構成について説明する。図２は、この発明の実施の形態１にかかる情報検索装置２００の機能的構成を示すブロック図である。図２において、情報検索装置２００は、編集部２０１と検索処理部２０２とから構成されている。
【００６４】
まず、編集部２０１は、コンテンツ２１０と、見出しデータ生成部２１１と、文字出現頻度管理データ生成部２１２と、圧縮／暗号化部２１３と、から構成されている。コンテンツ２１０は検索対象となる電子データであり、たとえば、国語辞典、英和辞典、和英辞典、用語辞典などの辞書のコンテンツが挙げられる。
【００６５】
コンテンツ２１０は、複数の検索対象ファイルから構成される。コンテンツ２１０が辞書のコンテンツである場合、各検索対象ファイルは、たとえば、８ビットコード、１６ビットコード、または３２ビットコードなどの複数種類のビットコードの文字データが記述されている本文ＨＴＭＬファイルである。
【００６６】
また、文字データとしては、８ビット系（ＡＳＣＩＩ）である英数字、カタカナ、記号などの文字データ、１６ビット系（ＪＩＳ）の英数字、カタカナ、記号などの文字データ、１６ビット系（ＪＩＳ）の仮名や漢字の文字データが含まれている。これら英数字や、仮名、カタカナなどの８ビットコードが中心である表音文字および漢字の文字データを、本明細書において「標準文字データ」と称す。
【００６７】
また、文字データには、標準文字データのほか、外字データ、連字データが含まれる。連字データとは、２以上の文字列からなる文字データである。たとえば、１６ビットの２つの仮名の連字データである場合、当該連字データは、３２ビットコードの文字データからなる。また、非文字データではあるがアドレスポインタなどのバイナリデータも便宜的に上記「文字データ」に含めることとする。以下、特に断りがない限り、「文字データ」という用語には、バイナリデータも含まれる。
【００６８】
また、見出しデータ生成部２１１は、コンテンツ２１０内、すなわち複数の検索対象ファイルに記述されている単語や用語などの文字列に関する見出しデータ３００を生成する。文字出現頻度管理データ生成部２１２は、コンテンツ２１０から、複数の検索対象ファイルに記述されている文字データの出現頻度に関する文字出現頻度管理データ２３０を生成する。さらに、文字出現頻度管理データ生成部２１２は、複数の検索対象ファイルに記述されている連字データを外字データに置換する連字／外字置換テーブル２４０を生成する。
【００６９】
また、圧縮／暗号化部２１３は、コンテンツ２１０を圧縮して圧縮コンテンツ２５０を生成するとともに、文字出現頻度管理データ２３０および連字／外字置換テーブル２４０を暗号化して、暗号化文字出現頻度管理データ２６０および暗号化連字／外字置換テーブル２７０を生成する。
【００７０】
また、検索処理部２０２は、検索初期化部２２１と、全文検索部２２２と、検索結果表示部２２３とから構成されている。検索初期化部２２１は、圧縮情報である暗号化文字出現頻度管理データ２６０および暗号化連字／外字置換テーブル２７０を復号して、全文検索部２２２による検索の初期化を実行する。
【００７１】
また、全文検索部２２２は、検索キーワードの入力を受け付け、文字出現頻度管理データ２３０、連字／外字置換テーブル２４０、および見出しデータ３００を用いて、圧縮コンテンツ２５０の全文検索を実行して、検索候補一覧を生成する。検索結果表示部２２３は、全文検索部２２２による検索候補の中から、ユーザに選択された検索候補を伸長して、検索結果として表示する。
【００７２】
なお、上述したコンテンツ２１０、見出しデータ３００、文字出現頻度管理データ２３０、連字／外字置換テーブル２４０、圧縮コンテンツ２５０、暗号化文字出現頻度管理データ２６０および暗号化連字／外字置換テーブル２７０は、具体的には、たとえば、図１に示したＲＯＭ１０２、ＲＡＭ１０３、ＨＤ１０５などの記録媒体によって、その機能を実現する。また、編集部２０１（内部の機能的構成含む）および検索処理部２０２（内部の機能的構成含む）は、具体的には、たとえば、図１に示したＲＯＭ１０２、ＲＡＭ１０３、ＨＤ１０５などの記録媒体に記録されたプログラムを、ＣＰＵ１０１が実行することによって、その機能を実現する。
【００７３】
（見出しデータ生成部２１１の機能的構成）
つぎに、図２に示した見出しデータ生成部２１１の詳細な機能的構成について説明する。図３は、見出しデータ生成部２１１の詳細な機能的構成を示すブロック図である。図３において、見出しデータ生成部２１１は、ファイル抽出部３０１と、本文ＨＴＭＬリスト生成部３０２と、アンカー抽出部３０３と、見出し語抽出部３０４と、見出しデータ生成処理部３０５と、から構成されている。
【００７４】
ファイル抽出部３０１は、コンテンツ２１０から各検索対象ファイルである本文ＨＴＭＬファイルを抽出する。本文ＨＴＭＬリスト生成部３０２は、ファイル抽出部３０１によって抽出された各本文ＨＴＭＬファイルから、複数の項目データからなる本文ＨＴＭＬリストを生成する。また、アンカー抽出部３０３は、本文ＨＴＭＬリスト生成部３０２によって生成された本文ＨＴＭＬリストの各項目データからアンカーを抽出する。
【００７５】
また、見出し語抽出部３０４は、本文ＨＴＭＬリスト生成部３０２によって生成された本文ＨＴＭＬリストの各項目データから見出し語を抽出する。また、見出しデータ生成処理部３０５は、アンカー抽出部３０３によって抽出された各項目データのアンカーと、見出し語抽出部３０４によって抽出された各項目データの見出し語と、を対応付けて、全文検索に用いる見出しデータ３００を生成する。
【００７６】
つぎに、見出しデータ生成部２１１によって生成されるデータについて詳細に説明する。図４は、本文ＨＴＭＬリストの一例を示す説明図であり、図５は、本文ＨＴＭＬファイルのファイル構成データ５００を示す説明図であり、図６は、見出しデータ３００を示す説明図である。
【００７７】
まず、図４において、コンテンツフォルダ４００（フォルダ名：ｈｏｎｍｏｎ）は、先頭の本文ＨＴＭＬファイルｆ０（ファイル名：ｆｉｌｅ０．ｈｔｍｌ）から最終の本文ＨＴＭＬファイルｆｎ（ファイル名：ｆｉｌｅｎ．ｈｔｍｌ）までの本文ＨＴＭＬファイルｆを、コンテンツ２１０として格納している。
【００７８】
各本文ＨＴＭＬファイルｆ０〜ｆｎには、アンカー、見出し語およびその解説文からなる項目データが複数記述されている。アンカーはアンカー抽出部３０３によって抽出され、見出し語は見出し語抽出部３０４によって抽出される。
【００７９】
本文ＨＴＭＬリスト生成部３０２では、各本文ＨＴＭＬファイルｆ０〜ｆｎに記述されている項目データを抽出し、各項目データＫ１〜Ｋｋを結合することにより、本文ＨＴＭＬリスト４１０が生成される。本文ＨＴＭＬリスト４１０において、任意の項目データＫｉは、いずれかの本文ＨＴＭＬファイルに記述されている項目データである。なお、項目データＫｉにおいて、アンカーＫｉ−１は、『ａｉ１０１』であり、見出し語Ｋｉ−２は、『アイ−アイ［ａｙｅ  ａｙｅ］』である。なお、符号Ｋｉ−３は、解説文である。
【００８０】
また、図５において、ファイル構成データ５００は、各本文ＨＴＭＬファイルｆ０〜ｆｎのファイル番号（符号５０１）と、図４に示した各本文ＨＴＭＬファイルｆ０〜ｆｎのファイルパス（符号５０２）と、が関連付けられたデータである。ここで、ファイル番号は、本文ＨＴＭＬファイルｆに付されている数字に該当し、たとえば、本文ＨＴＭＬファイルｆ０の場合、『＃０』がファイル番号に相当する。また、コンテンツフォルダ４００のフォルダ名は『ｈｏｎｍｏｎ』であり、本文ＨＴＭＬファイルｆ０のファイル名は、『ｆｉｌｅ０．ｈｔｍｌ』であるため、ファイル番号＃０である本文ＨＴＭＬファイルｆ０のファイルパスは、『ｈｏｎｍｏｎ￥ｆｉｌｅ０．ｈｔｍｌ』となる。
【００８１】
また、図６において、見出しデータ３００は、本文ＨＴＭＬファイルの総ファイル数情報（ｎ個）６０１、本文ＨＴＭＬファイルｆ０〜ｆｎの総ブロックサイズ情報６０２、本文ＨＴＭＬリスト４１０の総項目データ数情報（Ｋ個）６０３、各本文ＨＴＭＬファイルｆ０〜ｆｎのファイルパスリスト６０４、および見出しリスト６０５から構成されている。
【００８２】
ファイルパスリスト６０４は、本文ＨＴＭＬファイルｆ０〜ｆｎごとに、ファイル番号と、ブロック数と、ファイルパスが記述されているリストである。また、見出しリスト６０５は、本文ＨＴＭＬファイルｆ０〜ｆｎごとに、ファイル番号と、オフセット値と、レングスと、アンカー(名)と、見出し語が記述されているリストである。
【００８３】
（文字出現頻度管理データ生成部２１２の機能的構成）
つぎに、図２に示した文字出現頻度管理データ生成部２１２の詳細な機能的構成について説明する。図７は、文字出現頻度管理データ生成部２１２の詳細な機能的構成を示すブロック図である。図７において、文字出現頻度管理データ生成部２１２は、文字データ抽出部７０１と、文字出現頻度集計部７０２と、ソート部７０３と、生成処理部７０４とから構成されている。
【００８４】
文字データ抽出部７０１は、コンテンツ２１０の各本文ＨＴＭＬファイルから文字データを順次抽出する。文字出現頻度集計部７０２は、文字データ抽出部７０１によって抽出された文字データのコンテンツ２１０における出現頻度を集計する。出現頻度とは、たとえば、文字データの出現回数や出現率であらわされる。また、文字出現頻度集計部７０２は、文字データの本文ＨＴＭＬファイルｆ０〜ｆｎごとの存否も検出する。
【００８５】
また、ソート部７０３は、出現頻度順に文字データをソートする。生成処理部７０４は、ソートされた各文字データの出現頻度と、存否検出結果である各文字データの存否情報（以下、「出現マップ」）とを用いて、文字出現頻度管理データ２３０を生成する。また、連字／外字置換テーブル２４０も生成する。文字出現頻度管理データ生成部２１２による文字出現頻度管理データ２３０および連字／外字置換テーブル２４０の生成処理を具体的に説明する。
【００８６】
図８は、文字出現頻度管理データ２３０の生成処理を示すデータ構成図である。図８において、（Ａ）は、文字出現頻度集計部７０２によって文字データが集計されたときの文字出現頻度管理データ２３０のデータ構成、（Ｂ）は、連字／外字置換処理後の文字出現頻度管理データ２３０のデータ構成、（Ｃ）は、標準文字データおよび外字データからなる混合データのソート後における文字出現頻度管理データ２３０のデータ構成、（Ｄ）は、低出現頻度の混合データのカット後における文字出現頻度管理データ２３０のデータ構成、（Ｅ）は、最終的に生成された文字出現頻度管理データ２３０のデータ構成を示している。
【００８７】
（Ａ）において、符号８０１は、文字出現頻度管理データ２３０の管理領域である。また符号８０２は、８ビット系（ＡＳＣＩＩ）である英数字、カタカナ、記号、１６ビット系（ＪＩＳ）の英数字、カタカナ、記号、１６ビット系（ＪＩＳ）のかなや漢字などの標準文字データの出現頻度、出現ファイル数、出現順位、出現マップを記憶する標準文字領域である。
【００８８】
また、符号８０３は、外字データの出現頻度、出現ファイル数、出現順位、出現マップを記憶する外字領域である。また、符号８０４は、連字データの出現頻度、出現ファイル数、出現順位、出現マップを記憶する連字領域である。また、符号８０５は、８ビットのバイナリデータの出現頻度、出現ファイル数、出現順位を記憶するバイナリ領域である。
【００８９】
（Ａ）のデータ構造において、連字領域８０４の連字データは、その出現頻度順にソートされる。そして、所定の出現頻度以上の連字データを、外字データと重複しないように、他の外字データ（以下、「連字外字データ」）に置換する。このように、出現頻度の高い複数の文字列からなる連字データを、単一文字データである外字データに置換することにより、データ量の削減を図ることができ、圧縮効率の向上を図ることができる。なお、所定の出現頻度未満の連字データは、低出現頻度の連字データであるため、単一の文字データに分解されて、該当する文字領域に割り当てられる。この結果、（Ｂ）連字／外字置換処理後の文字出現頻度管理データ２３０のデータ構成となる。
【００９０】
（Ｂ）のデータ構造についてより具体的に説明する。図９は、図８に示した（Ｂ）のデータ構成を示す説明図である。図９において、（Ｂ）のデータ構造では、文字データ領域９００、出現頻度領域９０１、出現ファイル数領域９０２、出現順位領域９０３、出現マップ９０４を有しており、それぞれ文字データ出現頻度、出現ファイル数、出現順位、および存否フラグが記憶されている。出現マップ９０４は、１６ビットを１セグメントとしている。
【００９１】
具体的には、その左端がファイル番号『＃０』の本文ＨＴＭＬファイルｆ０の存否フラグであり、順にファイル番号『＃１』の本文ＨＴＭＬファイルｆ１のフラグ、『＃２』の本文ＨＴＭＬファイルｆ２の存否フラグが立てられている。そして、右端がファイル番号『＃ｎ』の本文ＨＴＭＬファイルｆｎの存否フラグである。
【００９２】
また、（Ｂ）のデータ構造において、標準文字領域８０２の標準文字データおよび外字領域８０３の外字データを混合して高出現頻度順にソートした結果が、（Ｃ）のデータ構造である。（Ｃ）のデータ構造において、（Ｂ）に示した連字外字領域８１４の連字外字データおよびバイナリ領域８０５のバイナリデータは、ソートの対象外である。
【００９３】
（Ｃ）のデータ構造において、標準文字データと外字データとが混在する混合文字領域８１２において、低出現頻度、たとえば、出現回数０回の文字データはカットされる。このカットされたときのデータ構造が、（Ｄ）のデータ構造である。（Ｄ）において、管理領域８０１および混合文字領域８１２と、連字外字領域８１４と、バイナリ領域８０５とを結合することで、（Ｅ）のデータ構造で示したような、最終的な文字出現頻度管理データ２３０を生成することができる。この文字出現頻度管理データ２３０において、管理領域８０１には、ファイル・ブロック数と、出現文字データの種類の数（出現文字数（種類））と、連字外字データの数（連字数（２５６種））と、バイナリデータ数（バイナリ（２５６種））とが記録される。
【００９４】
図１０は、図８に示した（Ｅ）のデータ構成を示す説明図である。図１０において、文字出現頻度管理データ２３０は、バイナリデータを除く文字データごとに、出現頻度領域９０１と出現マップ９０４とが対応付けられている。文字データは高出現頻度順にソートされている。なお、後述するが、図１０中、文字データ領域９００の文字データと出現頻度領域９０１の出現頻度は、所定のマスタキーを用いた排他的論理和（ＸＯＲ）によって暗号化される。
【００９５】
この文字出現頻度管理データ２３０の出現マップ９０４によれば、出現マップ９０４の左端であるファイル番号『＃０』の本文ＨＴＭＬファイルｆ０には、文字データ『月』の存否フラグと文字データ『日』の存否フラグがともに「１」であり、そのＡＮＤ（論理積）が「１」となる。したがって、本文ＨＴＭＬファイルｆ０には、文字データ『月』および『日』が含まれており、入力キーワードに『月』と『日』が含まれている場合、本文ＨＴＭＬファイルｆ０は検索対象となる。
【００９６】
一方、ファイル番号『＃１』の本文ＨＴＭＬファイルｆ１では、文字データ『月』の存否フラグが「１」、文字データ『日』の存否フラグが「０」であり、そのＡＮＤ（論理積）が「０」となる。したがって、本文ＨＴＭＬファイルｆ１には、文字データ『月』が含まれているが『日』が含まれておらず、入力キーワードに『月』と『日』が含まれている場合、本文ＨＴＭＬファイルｆ１はその検索対象外となる。
【００９７】
つぎに、連字／外字置換処理について具体的に説明する。図１１は、連字／外字置換処理を示すデータ構成図である。図１１において、（Ｆ）は、文字出現頻度集計部７０２によって連字データが集計されたときの文字出現頻度管理データ２３０の連字領域のデータ構成、（Ｇ）は、連字データのソート後における連字領域８０４のデータ構成、（Ｈ）は、置換後におけるデータ構成を示している。
【００９８】
（Ｆ）のデータ構造において、連字領域８０４は、領域１１０１〜１１０７を有している。領域１１０１には、８ビット系（ＡＳＣＩＩ)の数字列データ（「００」〜「９９」
）の情報（当該数字列データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。
【００９９】
領域１１０２には、８ビット系（ＡＳＣＩＩ）の英字列データ（「ＡＡ」〜「ｚｚ」）の情報（当該英字列データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。また、領域１１０３には、８ビット系（ＡＳＣＩＩ）のカタカナ列データ（「アア」〜「ンン」、濁音・半濁音）の情報（当該英字列データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。
【０１００】
領域１１０４には、１６ビット系（ＪＩＳ)の数字列データ（「００」〜「９９」）の
情報（当該数字列データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。また、領域１１０５には、１６ビット系（ＪＩＳ）の英字列データ（「ＡＡ」〜「ｚｚ」）の情報（当該数字列データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。
【０１０１】
領域１１０６には、１６ビット系（ＪＩＳ）のカタカナ列データ（「アア」〜「ンン」、濁音・半濁音）の情報（当該カタカナ列データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。また、領域１１０７には、１６ビット系（ＪＩＳ）の仮名列データ（「ああ」〜「んん」、濁音・半濁音）の情報（当該仮名列データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。
【０１０２】
また、（Ｇ）のデータ構造は、（Ｆ）のデータ構造を、各連字データの高出現順にソートすることにより得られるデータ構造である。（Ｇ）のデータ構造において、領域１１１１は、高出現頻度の連字データの情報であり、外字データへの置換対象となる。一方、領域１１１２は、所定の出現頻度以下の連字データ（低出現頻度連字データ）の情報である。この低出現頻度連字データは、単一の文字データに分解される。これにより文字データの出現頻度と出現マップ９０４とが補正される。
【０１０３】
また、（Ｈ）のデータ構造は、（Ｇ）のデータ構造のうち高出現頻度の連字データを外字に置換することによって得られるデータ構造である。連字外字領域８１４には、置換された連字外字データの情報（当該連字外字データ、出現頻度、出現ファイル数、出現順位、出現マップ）が記憶されている。また、図１２は、最終的に生成された連字／外字置換テーブル２４０を示す説明図である。連字／外字置換テーブル２４０は、（Ｇ）のデータ構造の領域１１１１の連字データと、（Ｈ）のデータ構造の領域８１４の連字外字データとを対応させることによって生成される。
【０１０４】
（圧縮／暗号化部２１３の詳細な機能的構成）
つぎに、図２に示した圧縮／暗号化部２１３の詳細な機能的構成について説明する。図１３は、図２に示した圧縮／暗号化部２１３の詳細な機能的構成を示すブロック図である。図１３において、圧縮／暗号化部２１３は、低出現頻度文字データ分解部１３０１と、暗号化部１３０２と、生起確率演算部１３０３と、ハフマン木生成部１３０４と、圧縮部１３０５と、から構成されている。
【０１０５】
まず、低出現頻度文字データ分解部１３０１は、文字出現頻度管理データ生成部２１２によって生成された文字出現頻度管理データ２３０内における文字領域の文字データを高出現頻度順にソートする。そして、所定の出現頻度以下の残余の低出現頻度の文字データを８ビットコードに分解して、同じ８ビットコードであるバイナリデータが記憶されているバイナリ領域に記憶する。
【０１０６】
暗号化部１３０２は、低出現頻度文字データ分解部１３０１による分解によって得られた文字出現頻度管理データ２３０を、所定のマスタキーを用いてＸＯＲによる暗号化をおこない、暗号化文字出現頻度管理データ２６０を生成する。連字／外字置換テーブル２４０も同様に、所定のマスタキーを用いてＸＯＲによる暗号化をおこない、暗号化連字／外字置換テーブル２７０を生成することとしてもよい。
【０１０７】
また、生起確率演算部１３０３は、低出現頻度文字データ分解部１３０１による分解によって得られた文字出現頻度管理データ２３０における標準文字データ、連字外字データおよびバイナリデータを高出現順にソートして、これらの生起確率を演算する。また、ハフマン木生成部１３０４は、生起確率演算部１３０３によって演算された生起確率からハフマン木を生成する。
【０１０８】
また、圧縮部１３０５は、ハフマン木生成部１３０４によって生成されたハフマン木を用いてコンテンツ２１０を圧縮し、圧縮コンテンツ２５０を生成する。具体的には、各本文ＨＴＭＬファイルｆ０〜ｆｎに記述されている文字データに対して、出現頻度が高い順、すなわち生起確率が高い順に短いビットを割り当てて、コンテンツ２１０を圧縮する。なお、圧縮コンテンツ２５０内の本文ＨＴＭＬファイルを「圧縮ファイル」と称す。
【０１０９】
つぎに、圧縮／暗号化部２１３による具体的なハフマン木生成処理について説明する。図１４は、圧縮／暗号化部２１３による具体的なハフマン木生成処理を示す説明図である。図１４の（Ｉ）に示した文字出現頻度管理データ２３０を、低出現頻度文字データ分解部１３０１により、低出現頻度の文字データを分解して、バイナリデータが記憶されているバイナリ領域８１５に記憶する（図１４中（Ｊ））。
【０１１０】
つぎに、（Ｊ）のデータ構造において、混合文字領域８１２、連字外字領域８１４、およびバイナリ領域８１５内のすべての文字データを高出現頻度順にソートする（図１４中（Ｋ））。そして、（Ｋ）の領域１４００において、出現頻度をハフマンの圧縮パラメータとして各文字データの生起確率を演算する（図１４中（Ｌ））。最後に（Ｌ）において、各文字データの生起確率からハフマン木１４０１を生成する（図１４中（Ｍ））。
【０１１１】
つぎに、圧縮部１３０５によって圧縮された圧縮コンテンツ２５０のデータ構造について説明する。図１５は、圧縮部１３０５によって圧縮された圧縮コンテンツ２５０のデータ構造を示す説明図である。図１５では、任意の本文ＨＴＭＬファイルｆｊに着目して説明する。この本文ＨＴＭＬファイルｆｊは、ブロック数情報（ｍ個）を格納する領域１５０１と、ｍ個の各ブロックのアドレス情報（＃１〜＃ｍ）を格納する領域１５０２と、各ブロックの圧縮ブロックデータＣ１〜Ｃｍを格納する領域１５０３から構成される。
【０１１２】
また、図１６は、圧縮ブロックデータＣ１〜Ｃｍと、圧縮前の元のブロックデータとの比較を示す図表である。図１６を参照すると、圧縮ブロックデータＣ１〜Ｃｍのレングスが、対応する元のブロックデータのレングスの約半分に圧縮されていることがわかる。
【０１１３】
（検索初期化部２２１の詳細な機能的構成）
つぎに、図２に示した検索初期化部２２１の詳細な機能的構成について説明する。図１７は、図２に示した検索初期化部２２１の詳細な機能的構成を示すブロック図である。図１７において、検索初期化部２２１は、復号部１７０１と、低出現頻度文字データ分解部１７０２と、生起確率演算部１７０３と、ハフマン木生成部１７０４と、出現マップ設定部１７０５と、から構成されている。
【０１１４】
まず、復号部１７０１は、暗号化文字出現頻度管理データ２６０を復号する。具体的には、図１３で用いた暗号化のマスタキーを用いて排他的論理和（ＸＯＲ）による復号処理を実行する。同様に、暗号化連字／外字置換テーブル２７０も、元の連字／外字置換テーブルに戻す。また、低出現頻度文字データ分解部１７０２、生起確率演算部１７０３およびハフマン木生成部１７０４は、図１３に示した低出現頻度文字データ分解部１３０１、生起確率演算部１３０３およびハフマン木生成部１３０４と同一の処理を実行し、ハフマン木１７１０を生成する。
【０１１５】
また、出現マップ設定部１７０５は、復号された文字出現頻度管理データ２３０の出現マップ９０４を読み込んでメモリ展開し、区点対応テーブルとリンクする。区点は、ＪＩＳによって制定された全角文字向けの文字コードであり、区点対応テーブルは、各区点のアドレスを記憶したテーブルである。図１８は、区点対応テーブルと出現マップとの対応関係を示す説明図である。この区点対応テーブル１８００を用いて、文字出現頻度管理データ２３０の文字データと区点とを対応づけることにより、区点に対応する文字データの存否フラグ列を出現マップ９０４から呼び出すことができる。
【０１１６】
（全文検索部２２２の詳細な機能的構成）
つぎに、図２に示した全文検索部２２２の詳細な機能的構成について説明する。図１９は、図２に示した全文検索部２２２の詳細な機能的構成を示すブロック図である。図１９において、全文検索部２２２は、検索キーワード入力処理部１９０１と、検索キーワード圧縮部１９０２と、出現マップ読取部１９０３と、圧縮ファイル特定部１９０４と、圧縮ファイル抽出部１９０５と、判定部１９０６と、ブロック伸長部１９０７と、文字列比較部１９０８と、見出しデータ特定部１９０９と、検索候補一覧表示部１９１０と、検索候補選択部１９１１と、から構成されている。
【０１１７】
まず、検索キーワード入力処理部１９０１は、ユーザからの検索キーワードの入力を受け付ける。また、検索キーワードが複数ある場合、各検索キーワードの文字列を連結する。さらに、検索キーワードの連字が所定の連字に該当する場合、連字／外字置換テーブル２４０を用いて、連字を外字に置換する。このあと、検索キーワード入力処理部１９０１は、検索キーワードを単一文字に分解する。
【０１１８】
また、検索キーワード圧縮部１９０２は、検索キーワード入力処理部１９０１によって入力された検索キーワードを、検索初期化部２２１のハフマン木生成部１７０４によって生成されたハフマン木１７１０を用いて圧縮する。また、出現マップ読取部１９０３は、出現マップ設定部１７０５によって設定された出現マップ９０４を用いて、検索キーワードの各文字の各ＨＴＭＬファイルｆ０〜ｆｎにおける存否フラグ列を読み取る。具体的には、この出現マップ９０４における各文字データは、区点対応テーブルにより区点とリンクしているため、区点と一致する検索キーワードの各文字データの存否フラグ列を読み取ることができる。
【０１１９】
圧縮ファイル特定部１９０４は、出現マップ９０４から読み取られた各文字の各ＨＴＭＬファイルｆ０〜ｆｎにおける存否フラグ列の論理積を算出することにより、検索キーワードの各文字データがすべて存在する圧縮ファイルを特定することで、圧縮ファイルの絞込みをおこなう。ここで、絞込みの一例を、下記表１を用いて説明する。
【０１２０】
【表１】
0004644708.tif 000002
【０１２１】
上記表１においては、検索キーワードを『増殖細胞』とし、コンテンツ２１０に含まれている本文ＨＴＭＬファイルｆの数を４個、すなわち、ファイル番号＃０〜＃３までとする。表１において、たとえば、文字『増』の存否フラグ列は［１１００］である。この存否フラグ列は、ファイル番号＃０、＃１の本文ＨＴＭＬファイルｆ０、ｆ１には文字『増』が含まれており、ファイル番号＃２、＃３の本文ＨＴＭＬファイルｆ２、ｆ３には文字『増』が含まれていないことを示している。
【０１２２】
そして、表１において、絞込み結果は、ファイル番号ごとの存否フラグの論理積（ＡＮＤ）結果を示している。この絞込み結果によれば、ファイル番号＃１の本文ＨＴＭＬファイルｆ１のみが、存在を示すフラグ「１」となっているため、検索キーワードを構成するすべての文字『増』、『殖』、『細』および『胞』は、ファイル番号＃１の本文ＨＴＭＬファイルｆ１にのみ存在し、他のファイル番号（＃０、＃２、＃３）の本文ＨＴＭＬファイルｆ０、ｆ２、ｆ３には存在しないことがわかる。これにより、検索対象としてオープンするファイルを、ファイル番号＃１の本文ＨＴＭＬファイルｆ１のみに特定することができ、無駄なファイルのオープン／クローズ処理を防止して検索速度の向上を図ることができる。
【０１２３】
また、圧縮ファイル抽出部１９０５は、圧縮コンテンツ２５０内において圧縮されている本文ＨＴＭＬファイルの中から、圧縮ファイル特定部１９０４によって特定された本文ＨＴＭＬファイルを抽出する。上記表の例では、ファイル番号＃１の圧縮された本文ＨＴＭＬファイル（以下、「圧縮本文ＨＴＭＬファイル」）ｆ１を抽出する。
【０１２４】
また、判定部１９０６は、圧縮ファイル抽出部１９０５によって抽出された圧縮本文ＨＴＭＬファイルに、検索キーワード圧縮部１９０２によって圧縮された検索キーワード（以下、「圧縮キーワード」）が含まれているか否かを判定する。具体的には、圧縮本文ＨＴＭＬファイル内の圧縮ブロックデータごとに判定をおこなっている。
【０１２５】
この判定結果が不一致である場合、圧縮本文ＨＴＭＬファイルには、検索キーワードが含まれていないことがわかる。一方、判定結果が一致である場合、圧縮本文ＨＴＭＬファイルには、検索キーワードが含まれていることがわかる。たとえば、上記表においては、ファイル番号＃１の本文ＨＴＭＬファイルに、検索キーワード『増殖細胞』という文字列が含まれていることがわかる。
【０１２６】
また、ブロック伸長部１９０７は、判定部１９０６により一致すると判定された圧縮ＨＴＭＬファイルの圧縮ブロックデータのみ伸長する。この判定部１９０６およびブロック伸長部１９０７により、本文ＨＴＭＬファイルを圧縮した状態のまま判定をおこなうことができ、不一致であれば、圧縮本文ＨＴＭＬファイルを伸長する前に検索候補から外し、一致した本文ＨＴＭＬファイルのみ伸長することができる。また、ブロック伸長部１９０７において、伸長された本文ＨＴＭＬファイルに連字外字データが含まれている場合、復号部１７０１によって復号された連字／外字置換テーブル２４０を用いて、連字外字データを元の連字データに置換する。
【０１２７】
また、文字列比較部１９０８は、ブロック伸長部１９０７によって伸長されたブロックデータ内の文字列と、検索キーワード入力処理部１９０１によって入力された検索キーワードとを比較する。検索キーワードに一致する文字列の項目データがあった場合、当該項目データのファイル番号およびアンカー名を記録し、見出しデータ３００を特定する。なお、特定された見出しデータ３００を、「特定見出しデータ３００」と称す。
【０１２８】
検索候補一覧表示部１９１０は、特定見出しデータ３００における項目データのファイル番号とアンカーから、見出しデータ３００を編集して、見出し語が列挙された検索候補一覧を図１に示したディスプレイ１０８に表示する。また、検索候補選択部１９１１は、検索候補一覧表示部１９１０によって表示された検索候補一覧の中から、ユーザの操作によって選択された検索候補を受け付ける。
【０１２９】
（検索結果表示部２２３の詳細な機能的構成）
つぎに、図２に示した検索結果表示部２２３の詳細な機能的構成について説明する。図２０は、図２に示した検索結果表示部２２３の詳細な機能的構成を示すブロック図である。図２０において、検索結果表示部２２３は、読出し部２００１と、本文伸長部２００２と、本文表示部２００３と、から構成されている。
【０１３０】
まず、読出し部２００１は、検索候補選択部１９１１によって選択された検索候補である項目データを、圧縮コンテンツ２５０から読み出す。また、本文伸長部２００２は、読出し部２００１によって読み出された項目データを、ハフマン木１７１０によって伸長する。検索結果表示部２２３は、本文伸長部２００２によって伸長された項目データを検索結果として表示する。
【０１３１】
（情報検索処理手順）
つぎに、この発明の実施の形態１にかかる情報検索装置の情報検索処理手順について説明する。図２１は、この発明の実施の形態１にかかる情報検索装置の情報検索処理手順を示すフローチャートである。図２１において、まず、文字出現頻度管理データ生成部２１２により、文字出現頻度管理データ生成処理を実行する（ステップＳ２１０１）。
【０１３２】
そして、圧縮／暗号化部２１３により、圧縮／暗号化処理を実行する（ステップＳ２１０２）。このあと、検索初期化部２２１により、検索初期化処理を実行する（ステップＳ２１０３）。つぎに、全文検索部２２２により、全文検索処理を実行する（ステップＳ２１０４）。最後に、検索結果表示部２２３により、検索結果表示処理を実行する（ステップＳ２１０５）。なお、検索結果表示処理では、検索候補一覧から選択された検索候補（項目データ）を圧縮コンテンツ２５０から読み出して、ハフマン木にて伸長することにより、項目データの全文を検索結果として表示することができる。
【０１３３】
つぎに、図２１に示した文字出現頻度管理データ生成処理（ステップＳ２１０１）の詳細な処理手順について説明する。図２２は、図２１に示した文字出現頻度管理データ生成処理（ステップＳ２１０１）の詳細な処理手順を示すフローチャートである。図２２において、まず、初期化処理を実行する（ステップＳ２２０１）。具体的には、８，１６ビットの文字データ、連字データ、バイナリデータの区点対応の集計領域を確保し、出現頻度と出現マップのセグメント等を初期化する。また、文字データのコードをセットし、各種カウンタを初期化する。
【０１３４】
つぎに、文字出現頻度集計処理を実行する（ステップＳ２２０２）。この文字出現頻度集計処理の詳細な処理手順については後述する。この文字出現頻度修正処理のあと、文字出現頻度管理データ２３０の領域確保とその領域の初期化を実行し（ステップＳ２２０３）、８，１６ビットの文字データ、連字データ、バイナリデータの文字コードと出現頻度をセットする（ステップＳ２２０４）。
【０１３５】
そして、出現マップの各セグメントを連結し（ステップＳ２２０５）。連字領域の連字データを高出現頻度順にソートすることで、２５６種の連字データを選択する（ステップＳ２２０６）。これにより、連字データの削減を図ることができる。
【０１３６】
つぎに、連字／外字置換をおこなうととともに、連字／外字置換テーブル２４０を生成する（ステップＳ２２０７）。具体的には、高出現頻度順に連字データを外字データに置換することにより、連字外字データと連字／外字置換テーブル２４０を生成する。
【０１３７】
そして、低出現頻度の連字データ、すなわち外字に置換されなかった連字データを単一文字データに分解し、該当する文字領域に割り振る補正をおこなう（ステップＳ２２０８）。すなわち、低出現頻度の連字データを表音文字データに分割し、当該文字データの頻度の加算と出現マップのＯＲ演算を実行する。
【０１３８】
このあと、文字データを高出現頻度順にソートし（ステップＳ２２０９）、頻度０回の文字データをカットして、連字外字データとバイナリデータとを結合し（ステップＳ２２１０）、この結合によって得られた文字出現頻度管理データ２３０をファイルに出力する（ステップＳ２２１１）。これにより、ステップＳ２１０２に移行する。
【０１３９】
つぎに、上述した文字出現頻度集計処理（ステップＳ２２０２）の詳細な処理手順について説明する。図２３は、上述した文字出現頻度集計処理（ステップＳ２２０２）の詳細な処理手順を示すフローチャートである。図２３において、まず、先頭（ファイル番号＃０）の本文ＨＴＭＬファイルｆ０をオープンする（ステップＳ２３０１）。
【０１４０】
つぎに、オープンされた本文ＨＴＭＬファイルから順次データを抽出する。抽出されたデータがバイナリデータである場合（ステップＳ２３０２：Ｙｅｓ）、当該バイナリデータの出現頻度を１ポイント加算し、当該バイナリデータの出現マップの存否フラグを「１」に設定し、さらに、バイトカウンタを２ポイント加算する（ステップＳ２３０３）。
【０１４１】
一方、ステップＳ２３０２において、抽出されたデータがバイナリデータでない場合（ステップＳ２３０２：Ｎｏ）、連字データであるか否かを判定する（ステップＳ２３０４）。連字データである場合（ステップＳ２３０４：Ｙｅｓ）、当該連字データの出現頻度を１ポイント加算し、当該連字データの出現マップの存否フラグを「１」に設定し、さらに、バイトカウンタを２（または４）ポイント加算する（ステップＳ２３０５）。
【０１４２】
一方、ステップＳ２３０４において、抽出されたデータが連字データでない場合（ステップＳ２３０４：Ｎｏ）、漢字データであるか否かを判定する（ステップＳ２３０６）。漢字データでない場合（ステップＳ２３０６：Ｎｏ）、当該データは表音文字データであるため、その表音文字データの出現頻度を１ポイント加算し、当該表音文字データの出現マップの存否フラグを「１」に設定し、バイトカウンタを１（または２）ポイント加算する（ステップＳ２３０７）。
【０１４３】
一方、ステップＳ２３０６において、抽出されたデータが漢字データである場合（ステップＳ２３０６：Ｙｅｓ）、当該漢字データの出現頻度を１ポイント加算し、当該漢字データの出現マップの存否フラグを「１」に設定し、バイトカウンタを２ポイント加算する（ステップＳ２３０８）。
【０１４４】
つぎに、出現マップのセグメントのセグメントカウンタを１ポイント加算し（ステップＳ２３０９）、セグメント終了か否か、すなわちセグメントの集計が終了したか否かを判断する（ステップＳ２３１０）。セグメントの集計が終了した場合（ステップＳ２３１０：Ｙｅｓ）、出現マップのセグメントをファイルに追加出力し、セグメントカウンタをクリアする（ステップＳ２３１１）。そして、ステップＳ２３１２に移行する。
【０１４５】
一方、セグメントの集計が終了していない場合（ステップＳ２３１０：Ｎｏ）、またはステップＳ２３１１のあと、ブロック終了か否か、たとえば、集計した文字データ数が４０００文字に到達したか否かを判断する（ステップＳ２３１２）。
【０１４６】
そして、ブロック終了した場合（ステップＳ２３１２：Ｙｅｓ）、当該ブロックデータを有する本文ＨＴＭＬファイルのファイル番号、当該ブロックデータのブロック番号、オフセット、文字数、およびレングスからなるブロック情報を生成してファイルに追加出力するとともに、バイトカウンタをクリアする（ステップＳ２３１３）。そして、ステップＳ２３１４に移行する。
【０１４７】
一方、ブロック終了していない場合（ステップＳ２３１２：Ｎｏ）、またはステップＳ２３１３のあと、ファイル終了か否か、すなわち、現在オープンしている本文ＨＴＭＬファイルの集計が終了したか否かを判断する（ステップＳ２３１４）。現在オープンしている本文ＨＴＭＬファイルの集計が終了していない場合（ステップＳ２３１４：Ｎｏ）、ステップＳ２３０２に戻って次のデータを抽出し、抽出したデータの種類を特定して、集計する（ステップＳ２３０２〜Ｓ２３０８）。
【０１４８】
一方、ステップＳ２３１４において、現在オープンしている本文ＨＴＭＬファイルの集計が終了した場合（ステップＳ２３１４：Ｙｅｓ）、集計終了か否か、すなわち、現在オープンしている本文ＨＴＭＬファイルをクローズする（ステップＳ２３１５）。このあと、すべての本文ＨＴＭＬファイルからの集計が終了したか否かを判断する（ステップＳ２３１６）。
【０１４９】
すべての本文ＨＴＭＬファイルの集計が終了していない場合（ステップＳ２３１６：Ｎｏ）、つぎのファイル番号の本文ＨＴＭＬファイルをオープンし（ステップＳ２３１７）、ステップＳ２３０２に戻って次のデータを抽出し、抽出したデータの種類を特定して、集計する（ステップＳ２３０２〜Ｓ２３０８）。
【０１５０】
一方、ステップＳ２３１６においてすべての本文ＨＴＭＬファイルの集計が終了した場合（ステップＳ２３１６：Ｙｅｓ）、出現マップのセグメントをファイルに追加出力し（ステップＳ２３１８）、ステップＳ２２０３に移行することで一連の処理を終了する。
【０１５１】
つぎに、図２１に示した圧縮／暗号化処理（ステップＳ２１０２）の詳細な処理手順について説明する。図２４は、図２１に示した圧縮／暗号化処理（ステップＳ２１０２）の詳細な処理手順を示すフローチャートである。図２４において、まず、出現頻度順に混合文字領域８１２の文字データをソートする（ステップＳ２４０１）。
【０１５２】
つぎに、低出現頻度の文字データを８ビットに分解し、該当するバイナリデータの出現頻度に加算する（ステップＳ２４０２）。そして、混合文字領域８１２の文字データ、連字外字データ、バイナリデータを連結し、出現頻度順にソートする（ステップＳ２４０３）。このあと、ソートされた文字データごとに、出現頻度に基づいて生起確率を演算し（ステップＳ２４０４）、この生起確率に基づいて、８，１６ビットの文字データに共通のハフマン木を生成する（ステップＳ２４０５）。
【０１５３】
このあと、各本文ＨＴＭＬファイルを圧縮する（ステップＳ２４０６）。具体的には、コンテンツフォルダ４００配下の各本文ＨＴＭＬファイルを、たとえば４０００文字ごとにブロック化し、ハフマン木を用いて圧縮する。そして、文字出現頻度管理データ２３０を暗号化する（ステップＳ２４０７）。具体的には、文字出現頻度管理データ２３０の暗号化領域（文字データおよび出現頻度の領域）を、マスタキーを用いて排他的論理和（ＸＯＲ）により暗号化する。そして、連字／外字置換テーブル２４０を暗号化する（ステップＳ２４０８）。具体的には、連字／外字置換テーブル２４０の暗号化領域を、マスタキーを用いて排他的論理和（ＸＯＲ）により暗号化する。そして、検索初期化処理（ステップＳ２１０３）に移行し、一連の処理を終了する。
【０１５４】
つぎに、図２１に示した検索初期化処理（ステップＳ２１０３）の詳細な処理手順について説明する。図２５は、図２１に示した検索初期化処理（ステップＳ２１０３）の詳細な処理手順を示すフローチャートである。図２５において、まず、検索初期化処理の起動を待ち受け（ステップＳ２５０１：Ｎｏ）、起動した場合（ステップＳ２５０１：Ｙｅｓ）、圧縮／暗号化処理において暗号化された暗号化文字出現頻度管理データ２６０を復号化する（ステップＳ２５０２）。具体的には、暗号化文字出現頻度管理データ２６０の暗号化領域（文字データおよび出現頻度の領域）を、暗号化したときのマスタキーを用いて排他的論理和（ＸＯＲ）により復号する。つぎに、暗号化連字／外字置換テーブル２７０を復号化する（ステップＳ２５０３）。具体的には、暗号化連字／外字置換テーブル２７０の暗号化領域を、暗号化したときのマスタキーを用いて排他的論理和（ＸＯＲ）により復号する。
【０１５５】
つぎに、圧縮／暗号化処理で示したステップＳ２４０１〜Ｓ２４０５までの処理と同様の処理を実行する。すなわち、高出現頻度順に文字データをソートし（ステップＳ２５０４）、低出現頻度の文字データを８ビットに分解し、該当するバイナリデータの出現頻度に加算する（ステップＳ２５０５）。そして、文字データ、連字データ、バイナリデータを連結し、高出現頻度順にソートする（ステップＳ２５０６）。このあと、文字データごとに、出現頻度に基づいて生起確率を演算し（ステップＳ２５０７）、この生起確率に基づいて、８，１６ビットの文字データに共通のハフマン木を生成する（ステップＳ２５０８）。
【０１５６】
このあと、出現マップの設定処理を実行する（ステップＳ２５０９）。具体的には、区点対応テーブルの領域確保、各文字データの出現順位の区点対応テーブルへのセット、復号された文字出現頻度管理データ２３０の出現マップのメモリ展開、当該出現マップと区点対応テーブルとのリンクを実行する。このあと、全文検索処理（ステップＳ２１０４）に移行して、一連の処理を終了する。
【０１５７】
つぎに、図２１に示した全文検索処理（ステップＳ２１０４）の詳細な処理手順について説明する。図２６は、図２１に示した全文検索処理（ステップＳ２１０４）の詳細な処理手順を示すフローチャートである。検索初期化処理（ステップＳ２１０３）のあと、図２６において、まず、検索キーワードの入力を受け付ける（ステップＳ２６０１）。
【０１５８】
検索キーワードが複数でない場合（ステップＳ２６０２：Ｎｏ）、ステップＳ２６０４に移行する。一方、検索キーワードが複数である場合（ステップＳ２６０２：Ｙｅｓ）、各キーワードの文字列を連結して（ステップＳ２６０３）、ステップＳ２６０４に移行する。
【０１５９】
このあと、ステップＳ２６０４において、検索キーワード内に連字データがない場合（ステップＳ２６０４：Ｎｏ）、ステップＳ２６０６に移行する。一方、連字データがある場合（ステップＳ２６０４：Ｙｅｓ）、連字／外字置換テーブル２４０を用いて、その連字データを２文字の外字データに置換して（ステップＳ２６０５）、ステップＳ２６０６に移行する。
【０１６０】
このあと、ステップＳ２６０６において、検索キーワードを単一文字データに分解して、出現マップから各文字データの各本文ＨＴＭＬファイルにおける存否フラグ列を読み取る（ステップＳ２６０６）。そして、各文字データの存否フラグ列の論理積により、圧縮ファイルを特定（絞込み）する（ステップＳ２６０７）。また、検索キーワードを検索初期化処理（ステップＳ２１０３）において生成されたハフマン木で圧縮し（ステップＳ２６０８）、ファイルカウンタを初期化する（ステップＳ２６０９）。
【０１６１】
このあと、ステップＳ２６０７で特定された圧縮ファイル（特定圧縮ファイル）をオープンし（ステップＳ２６１０）、オープンされた特定圧縮ファイルの圧縮ブロックデータに、圧縮検索キーワードとの不一致判定をおこなう（ステップＳ２６１２）。不一致である場合（ステップＳ２６１２：Ｙｅｓ）、ステップＳ２６１５に移行する。
【０１６２】
一方、一致する場合（ステップＳ２６１２：Ｎｏ）、当該圧縮ブロックデータを、ハフマン木を用いて伸長する（ステップＳ２６１３）。そして、伸長されたブロックデータと検索キーワードとを比較し、検索キーワードに一致した項目データのファイル番号およびアンカーを記録して（ステップＳ２６１４）、ステップＳ２６１５に移行する。
【０１６３】
このあと、ステップＳ２６１５において、オープンしている特定圧縮ファイルをクローズし（ステップＳ２６１５）、ファイルカウンタを更新する（ステップＳ２６１６）。ファイルカウンタの更新により、未処理の特定圧縮ファイルがあると判断された場合（ステップＳ２６１７：Ｙｅｓ）、ステップＳ２６１０に移行して、つぎの特定圧縮ファイルをオープンする。
【０１６４】
一方、未処理の特定圧縮ファイルがないと判断された場合（ステップＳ２６１７：Ｎｏ）、検索候補一覧を表示し（ステップＳ２６１８）、ユーザからの選択入力を待ち受ける（ステップＳ２６１９）ことにより、検索結果表示処理（ステップＳ２１０５）に移行して、一連の処理を終了する。
【０１６５】
このように、上述した実施の形態１によれば、コンテンツ２１０が複数の検索対象ファイルから構成されていても、単一の圧縮情報（文字出現頻度管理データ２３０）により共通化することができる。
【０１６６】
また、サイズが大きい検索対象ファイルでは文字データ数に応じてブロック化をおこない、８ビットコード、１６ビットコードまたは３２ビットコードの文字データが混在する検索対象ファイルについてのハフマン圧縮技術を確立することができる。
【０１６７】
また、サイズ（容量）ではなく、文字データ数に応じたブロック化をおこない、検索対象ファイル内の各文字データの出現頻度の集計時に、文字データの種類（８ビットコード、１６ビットコードまたは３２ビットコード）を判定し、出現頻度を集計することができる。
【０１６８】
また、英和辞典での英字データなど出現頻度の高い８ビットコードの文字データに対しては、０ｘ’ＦＦ＊＊’など１６ビットコードの文字データに置換し、ハフマン圧縮をおこなう。これにより、低出現率の８ビットコードの文字データと区別して、効率的な圧縮をおこなうことができる。
【０１６９】
また、ポインタなどの非文字データはランダムな値であるため、８ビットコードに置換する。また、ハフマン木のサイズ縮小のため、出現頻度の低い１６ビットコードの文字データを分割し、８ビットコードの文字データに置換する。これにより、効率的な圧縮をおこなうことができる。
【０１７０】
また、上述した実施の形態１では、圧縮のためのハフマン木の生成元である文字出現頻度管理データ２３０またはその一部を暗号化する。すなわち、コンテンツや、コンテンツ圧縮のためのハフマン木を直接暗号化せず、ハフマン木の生成元を暗号化しているため、セキュリティの向上を図ることができる。
【０１７１】
また、上述した実施の形態１では、文字出現頻度管理データをもとに、全文検索の高速化を図ることができる。また、連続する表音文字データの出現頻度の高い２文字の連字データを外字データに置換した後、コンテンツ圧縮をおこなっているため、圧縮率の向上を図ることができる。
【０１７２】
また、連字データにより、オープン／クローズするファイル数を削減することができ、文字列の比較領域の縮小により全文検索の高速化を図ることができる。さらに、全文検索は伸長後に外字データのままで文字列比較を行うことで、さらに検索速度の向上を図ることができる。
【０１７３】
以上のことから、この発明の実施の形態１にかかる情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置によれば、圧縮処理について、文字出現頻度管理データ（ハフマン木）の共通化により、各検索対象ファイルの圧縮率の向上を図ることができる。また、圧縮された検索対象ファイルをブロック毎に伸長することで、圧縮されたままで検索や表示をおこなうことができ、検索速度の向上を図ることができる。また、ポインタなど非文字コードであるバイナリデータとテキストデータが混在するファイルも圧縮することができる。
【０１７４】
また、低出現頻度の文字データをカットしてハフマン木を生成することにより、ハフマン木を縮小することができる。したがって、使用メモリサイズが削減でき、ＰＤＡや携帯電話機などの可搬型携帯端末においても利用することができる。また、２パスのハフマン圧縮であるため、他の方式に比べ、最高速な圧縮と伸長が実現することができる。また、ハフマン圧縮の圧縮率は約５０％であり、伸長速度は他の圧縮方式に比べ最高速となる。
【０１７５】
また、暗号化処理においては、ハフマン木の生成元を暗号化しているため、全文検索や表示などにおいて、復号化が不要である。したがって、セキュリティの向上を図るとともに検索速度の向上も図ることができる。また、暗号化の領域も文字出現頻度管理データだけ（全体の１％未満）であり、で暗号化の処理時間を短くできるとともに、復号化もハフマン木の作成時の１回で済ませることができる。したがって、復号化処理が検索速度の妨げにならず、セキュリティの向上を図るとともに検索速度の向上も図ることができる。
【０１７６】
また、全文検索処理においては、オープン／クローズする検索対象ファイルの数を削減し、文字列の比較領域を縮小することにより、全文検索の高速化を図ることができる。また、検索速度の高速化のために付加する全文検索のための出現マップは数％以下であるため、全文検索のための出現マップの生成は、ファイル圧縮時間相当の短時間でおこなうことができる。また、英数字や仮名・カタカナなどの表音文字データが混在していても、圧縮効率と全文検索速度を改善することができる。
【０１７７】
また、文字出現頻度管理データにより、検索キーワードの文字を含まない検索対象ファイルのオープンを省くことができ、全文検索時のオープン・クローズ時間の削減、および文字列の比較領域の縮小による全文検索速度の高速化を図ることができる。具体的には、本文ファイル容量の数％の文字出現頻度管理データにより、検索対象ファイルのオープンと文字列比較を抑えることができ、数倍（表音文字２文字の検索）〜数百倍（漢字３文字の検索）の高速化を図ることができる。特に検索キーワードの文字数が多ければ多いほど、検索キーワードの文字を含まない検索対象ファイル数が増大して、そのオープンを省くことができるため、全文検索時のオープン・クローズ時間の削減、および文字列の比較領域の縮小による全文検索速度の高速化を図ることができる。
【０１７８】
（実施の形態２）
つぎに、この発明の実施の形態２について説明する。実施の形態１では、コンテンツ２１０として辞書のコンテンツを例に挙げて説明したが、実施の形態２では、コンテンツ２１０が日報、週報、月報などの電子帳票を例に挙げて説明する。電子帳票は母集団が同じデータに対して、出現する顧客名や住所、品名などに変化はなく、ハフマン圧縮のパラメータはほぼ類似する。一方で、電子帳票は処理量が膨大で、その圧縮・暗号化には高速化が望まれている。
【０１７９】
このため、実施の形態２では、複数の検索対象ファイルのうち任意の検索対象ファイルにおける文字データの文字出現頻度管理データを生成しておき、他の検索対象ファイルについては、先に生成された文字出現頻度管理データを用いることで、圧縮・暗号化の高速化を図ることとする。なお、実施の形態２にかかる情報検索装置のハードウェア構成は、図１に示した実施の形態１にかかる情報検索装置のハードウェア構成と同一であるため、その説明を省略する。また、以下の説明において、上述した実施の形態１と同一構成には同一符号を付し、その説明を省略する。
【０１８０】
（情報検索装置の機能的構成）
まず、この発明の実施の形態２にかかる情報検索装置の機能的構成について説明する。図２７は、この発明の実施の形態２にかかる情報検索装置の機能的構成を示すブロック図である。図２７では、編集部２０１において、図２に示した文字出現頻度管理データ生成部２１２および圧縮／暗号化部２１３に替えて、圧縮／暗号化／文字出現頻度管理データ生成部２７００を備えた構成である。
【０１８１】
（圧縮／暗号化／文字出現頻度管理データ生成部２７００の機能的構成）
つぎに、図２７に示した圧縮／暗号化／文字出現頻度管理データ生成部２７００の詳細な機能的構成について説明する。図２８は、圧縮／暗号化／文字出現頻度管理データ生成部２７００の詳細な機能的構成を示すブロック図である。図２８において、圧縮／暗号化／文字出現頻度管理データ生成部２７００は、文字出現頻度管理データ生成部２８０１と、ハフマン木生成部２８０２と、圧縮／集計部２８０３とから構成されている。
【０１８２】
文字出現頻度管理データ生成部２８０１は、文字データ抽出部７０１と、文字出現頻度集計部７０２と、ソート部７０３と、生成処理部７０４と、暗号化部２８１１とから構成されている。暗号化部２８１１は、生成処理部７０４によって生成された文字出現頻度管理データ２３０を所定のマスタキーを用いてＸＯＲによる暗号化をおこなう、暗号化文字出現頻度管理データ２６０を生成する。なお、暗号化部２８１１は、連字／外字置換テーブル２４０の暗号化もおこなう。
【０１８３】
ハフマン木生成部２８０２は、生成処理部７０４によって生成された一の検索対象ファイルの文字出現頻度管理データ、たとえば、ファイル番号＃ｉ（ｉ＝０〜ｎ）の文字出現頻度管理データ２３０−ｉに関するハフマン木２８２０を生成する。また、圧縮／集計部２８０３は、文字データ抽出部７０１によって抽出された文字データのコンテンツ２１０における出現頻度を計数するとともに、計数された文字データを、文字データの種類（漢字、表音文字、連字、バイナリ）ごとに、ハフマン木２８２０を用いて圧縮する。
【０１８４】
つぎに、ハフマン木生成部２８０２による具体的なハフマン木生成処理について説明する。図２９は、ハフマン木生成部２８０２による具体的なハフマン木生成処理を示す説明図である。図２９において、（Ａ）には文字出現頻度管理データ２３０−ｉが示されている。
【０１８５】
（Ａ）に示した文字出現頻度管理データ２３０−ｉにおいて、符号２９０１は、文字出現頻度管理データ２３０の管理領域である。管理領域２９０１には、ファイル・ブロック数と、出現文字データの種類の数（出現文字数（種類））と、連字外字データの数（連字数（２５６種））と、バイナリデータ数（バイナリ（２５６種）、不図示）とが記録される。
【０１８６】
また、符号２９０２は、８ビット系（ＡＳＣＩＩ）である英数字、カタカナ、記号、１６ビット系（ＪＩＳ）の英数字、カタカナ、記号、１６ビット系（ＪＩＳ）のかなや漢字などの標準文字データや外字データの出現頻度、出現ファイル数（不図示）、出現順位（不図示）、出現マップを記憶する混合文字領域である。
【０１８７】
また、符号２９０３は、連字データの出現頻度、出現ファイル数（不図示）、出現順位（不図示）、出現マップを記憶する連字領域である。また、符号２９０４は、８ビットのバイナリデータの出現頻度、出現ファイル数（不図示）、出現順位（不図示）を記憶するバイナリ領域である。
【０１８８】
（Ａ）に示した文字出現頻度管理データ２３０−ｉを、（Ｂ）に示すようにメモリ上に展開する。そして、（Ｂ）に示した文字出現頻度管理データ２３０−ｉ内の混合文字領域２９０２から低出現頻度の文字データを分解して、バイナリデータが記憶されているバイナリ領域２９０３に記憶する（図２９中（Ｃ））。
【０１８９】
つぎに、（Ｃ）のデータ構造において、混合文字領域２９０２、連字領域２９０３、およびバイナリ領域２９０４内のすべての文字データを高出現頻度順にソートする（図２９中（Ｄ））。そして、（Ｄ）の領域２９００において、出現頻度をハフマンの圧縮パラメータとして各文字データの生起確率を演算する（図２９中（Ｅ））。最後に（Ｅ）において、各文字データの生起確率からハフマン木２８２０を生成する（図２９中（Ｆ））。
【０１９０】
図３０は、圧縮／集計部２８０３による圧縮処理と出現マップ生成処理とを示す説明図である。図３０において、コンテンツ２１０、具体的にはコンテンツ２１０内の複数の検索対象ファイルをハフマン木２８２０を用いて圧縮して圧縮コンテンツ２５０を生成する処理と、コンテンツ２１０から図９に示した出現マップと同様の出現マップ３０００を生成する処理とを、圧縮／集計部２８０３において並行して実行している。
【０１９１】
図３１は、ソート部７０３、生成処理部７０４および暗号化部２８１１による具体的な処理を示す説明図である。図３１において、生成処理部７０４によって生成された全検索対象ファイルに関する文字出現頻度管理データ２３０を用いて、ソート部７０３により、出現マップの文字データを出現頻度順にソートすることで、出現マップ３１００を生成する。一方、文字出現頻度管理データ２３０は、所定のマスタキーを用いて暗号化される。
【０１９２】
（情報検索処理手順）
つぎに、この発明の実施の形態２にかかる情報検索装置の情報検索処理手順について説明する。図３２は、この発明の実施の形態２にかかる情報検索装置の情報検索処理手順を示すフローチャートである。図３２において、圧縮／暗号化／文字出現頻度管理データ生成部２７００により、圧縮／暗号化／文字出現頻度管理データ生成処理（ｉパス処理を実行する（ステップＳ３２０１）。
【０１９３】
つぎに、検索初期化部２２１により、検索初期化処理を実行する（ステップＳ３２０２）。この検索初期化処理は、図２１に示した検索初期化処理（ステップＳ２１０３）と同一処理である。そして、全文検索部２２２により、全文検索処理を実行する（ステップＳ３２０３）。この全文検索処理は、図２１に示した全文検索処理（ステップＳ２１０４）と同一処理である。最後に、検索結果表示部２２３により、検索結果表示処理を実行する（ステップＳ３２０４）。この検索結果表示処理は、図２１に示した検索結果表示処理（ステップＳ２１０５）と同一処理である。
【０１９４】
つぎに、図３２に示した圧縮／暗号化／文字出現頻度管理データ生成処理（ステップＳ３２０１）の詳細な処理手順について説明する。図３３は、図３２に示した圧縮／暗号化／文字出現頻度管理データ生成処理（ステップＳ３２０１）の詳細な処理手順を示すフローチャートである。
【０１９５】
図３３において、まず、文字出現頻度管理データ生成部２８０１により、ファイル番号＃ｉの本文ＨＴＭＬファイルの文字出現頻度管理データ生成処理を実行する（ステップＳ３３０１）。これにより、上述した文字出現頻度管理データ２３０−ｉを生成する。なお、ｉ＝１とすることにより、先頭本文ＨＴＭＬファイルに関する文字出現頻度管理データ２３０−ｉを生成する。
【０１９６】
つぎに、ハフマン木生成部２８０２により、ハフマン木生成処理を実行する（ステップＳ３３０２）。これにより、上述したハフマン木２８２０を生成する。最後に、全本文ＨＴＭＬファイルに関する圧縮／暗号化／文字出現頻度管理データ生成処理（以下、「１パス処理」という）を実行する（ステップＳ３３０３）。これにより、文字出現頻度管理データ２３０を生成して暗号化することにより、暗号化文字出現頻度管理データ２６０を生成する。また、連字／外字置換テーブル２４０を生成して暗号化することにより、暗号化連字／外字置換テーブル２７０を生成する。また、文字出現頻度管理データ２３０を生成する際、ハフマン木２８２０を用いてコンテンツ２１０を圧縮することにより、圧縮コンテンツ２５０を生成する。
【０１９７】
つぎに、図３３に示した文字出現頻度管理データ生成処理（ステップＳ３３０１）について具体的に説明する。図３４は、図３３に示した文字出現頻度管理データ生成処理（ステップＳ３３０１）を示すフローチャートである。図３４において、まず、初期化処理を実行する（ステップＳ３４００）。具体的には、８，１６ビットの文字データ、連字データ、バイナリデータの区点対応の集計領域を確保し、出現頻度と出現マップのセグメント等を初期化する。また、文字データのコードをセットし、各種カウンタを初期化する。
【０１９８】
つぎに、先頭（ファイル番号＃０）の本文ＨＴＭＬファイルｆ０をオープンする（ステップＳ３４０１）。そして、オープンされた本文ＨＴＭＬファイルから順次データを抽出する。抽出されたデータがバイナリデータである場合（ステップＳ３４０２：Ｙｅｓ）、当該バイナリデータの出現頻度を１ポイント加算し、当該バイナリデータの出現マップの存否フラグを「１」に設定し、さらに、バイトカウンタを２ポイント加算する（ステップＳ３４０３）。
【０１９９】
一方、ステップＳ３４０２において、抽出されたデータがバイナリデータでない場合（ステップＳ３４０２：Ｎｏ）、連字データであるか否かを判定する（ステップＳ３４０４）。連字データである場合（ステップＳ３４０４：Ｙｅｓ）、当該連字データの出現頻度を１ポイント加算し、当該連字データの出現マップの存否フラグを「１」に設定し、さらに、バイトカウンタを２（または４）ポイント加算する（ステップＳ３４０５）。
【０２００】
一方、ステップＳ３４０４において、抽出されたデータが連字データでない場合（ステップＳ３４０４：Ｎｏ）、漢字データであるか否かを判定する（ステップＳ３４０６）。漢字データでない場合（ステップＳ３４０６：Ｎｏ）、当該データは表音文字データであるため、その表音文字データの出現頻度を１ポイント加算し、当該表音文字データの出現マップの存否フラグを「１」に設定し、バイトカウンタを１（または２）ポイント加算する（ステップＳ３４０７）。
【０２０１】
一方、ステップＳ３４０６において、抽出されたデータが漢字データである場合（ステップＳ３４０６：Ｙｅｓ）、当該漢字データの出現頻度を１ポイント加算し、当該漢字データの出現マップの存否フラグを「１」に設定し、バイトカウンタを２ポイント加算する（ステップＳ３４０８）。
【０２０２】
つぎに、出現マップのセグメントのセグメントカウンタを１ポイント加算し（ステップＳ３４０９）、セグメント終了か否か、すなわちセグメントの集計が終了したか否かを判断する（ステップＳ３４１０）。セグメントの集計が終了した場合（ステップＳ３４１０：Ｙｅｓ）、出現マップのセグメントをファイルに追加出力し、セグメントカウンタをクリアする（ステップＳ３４１１）。そして、ステップＳ３４１２に移行する。
【０２０３】
一方、セグメントの集計が終了していない場合（ステップＳ３４１０：Ｎｏ）、またはステップＳ３４１１のあと、ブロック終了か否か、たとえば、集計した文字データ数が４０００文字に到達したか否かを判断する（ステップＳ３４１２）。
【０２０４】
そして、ブロック終了した場合（ステップＳ３４１２：Ｙｅｓ）、当該ブロックデータを有する本文ＨＴＭＬファイルのファイル番号、当該ブロックデータのブロック番号、オフセット、文字数、およびレングスからなるブロック情報を演算してファイルに追加出力するとともに、バイトカウンタをクリアする（ステップＳ３４１３）。そして、ステップＳ３４１４に移行する。
【０２０５】
一方、ブロック終了していない場合（ステップＳ３４１２：Ｎｏ）、またはステップＳ３４１３のあと、ファイル終了か否か、すなわち、現在オープンしている本文ＨＴＭＬファイルの集計が終了したか否かを判断する（ステップＳ３４１４）。現在オープンしている本文ＨＴＭＬファイルの集計が終了していない場合（ステップＳ３４１４：Ｎｏ）、ステップＳ３４０２に戻って次のデータを抽出し、抽出したデータの種類を特定して、集計する（ステップＳ３４０２〜Ｓ３４０８）。
【０２０６】
一方、ステップＳ３４１４において、現在オープンしている先頭本文ＨＴＭＬファイルの集計が終了した場合（ステップＳ３４１４：Ｙｅｓ）、集計終了か否か、すなわち、先頭本文ＨＴＭＬファイルをクローズする（ステップＳ３４１５）。このあと、出現マップのセグメントをファイルに追加出力し（ステップＳ３４１６）、ステップＳ３３０２に移行することで一連の処理を終了する。
【０２０７】
つぎに、図３３に示したハフマン木生成処理（ステップＳ３３０２）について具体的に説明する。図３５は、図３３に示したハフマン木生成処理（ステップＳ３３０２）を示すフローチャートである。図３５において、まず、出現頻度順に混合文字領域２９０２（図２９を参照）の文字データをソートする（ステップＳ３５０１）。
【０２０８】
つぎに、低出現頻度の文字データを８ビットに分解し、該当するバイナリデータの出現頻度に加算する（ステップＳ３５０２）。そして、混合文字領域２９０２の文字データ、連字外字データ、バイナリデータを連結し、出現頻度順にソートする（ステップＳ３５０３）。このあと、ソートされた文字データごとに、出現頻度に基づいて生起確率を演算し（ステップＳ３５０４）、この生起確率に基づいて、８，１６ビットの文字データに共通のハフマン木２８２０を生成する（ステップＳ３５０５）。このあと、ステップＳ３３０３に移行することで一連の処理を終了する。
【０２０９】
つぎに、図３３に示した１パス処理（ステップＳ３３０３）について具体的に説明する。図３６−１〜図３６−３は、図３３に示した１パス処理（ステップＳ３３０３）を示すフローチャートである。
【０２１０】
図３６−１において、まず、先頭（ファイル番号＃０）の本文ＨＴＭＬファイルｆ０をオープンする（ステップＳ３６０１）。つぎに、オープンされた本文ＨＴＭＬファイルから順次データを抽出する。抽出されたデータがバイナリデータである場合（ステップＳ３６０２：Ｙｅｓ）、当該バイナリデータの出現頻度を１ポイント加算し、当該バイナリデータの出現マップの存否フラグを「１」に設定し、さらに、バイトカウンタを２ポイント加算する（ステップＳ３６０３）。そして、当該バイナリデータをハフマン木２８２０を用いて圧縮する（ステップＳ３６０４）。このあと、図３６−２のステップＳ３６１３に移行する。
【０２１１】
一方、ステップＳ３６０２において、抽出されたデータがバイナリデータでない場合（ステップＳ３６０２：Ｎｏ）、連字データであるか否かを判定する（ステップＳ３６０５）。連字データである場合（ステップＳ３６０５：Ｙｅｓ）、当該連字データの出現頻度を１ポイント加算し、当該連字データの出現マップの存否フラグを「１」に設定し、さらに、バイトカウンタを２（または４）ポイント加算する（ステップＳ３６０６）。そして、当該連字データをハフマン木２８２０を用いて圧縮する（ステップＳ３６０７）。このあと、図３６−２のステップＳ３６１３に移行する。
【０２１２】
一方、ステップＳ３６０５において、抽出されたデータが連字データでない場合（ステップＳ３６０５：Ｎｏ）、漢字データであるか否かを判定する（ステップＳ３６０８）。漢字データでない場合（ステップＳ３６０８：Ｎｏ）、当該データは表音文字データであるため、その表音文字データの出現頻度を１ポイント加算し、当該表音文字データの出現マップの存否フラグを「１」に設定し、バイトカウンタを１（または２）ポイント加算する（ステップＳ３６０９）。そして、当該表音文字データをハフマン木２８２０を用いて圧縮する（ステップＳ３６１０）。このあと、図３６−２のステップＳ３６１３に移行する。
【０２１３】
一方、ステップＳ３６０８において、抽出されたデータが漢字データである場合（ステップＳ３６０８：Ｙｅｓ）、当該漢字データの出現頻度を１ポイント加算し、当該漢字データの出現マップの存否フラグを「１」に設定し、バイトカウンタを２ポイント加算する（ステップＳ３６１１）。そして、当該漢字データをハフマン木２８２０を用いて圧縮する（ステップＳ３６１２）。このあと、図３６−２のステップＳ３６１３に移行する。
【０２１４】
つぎに、図３６−２において、出現マップのセグメントのセグメントカウンタを１ポイント加算し（ステップＳ３６１３）、セグメント終了か否か、すなわちセグメントの集計が終了したか否かを判断する（ステップＳ３６１４）。セグメントの集計が終了した場合（ステップＳ３６１４：Ｙｅｓ）、出現マップのセグメントをファイルに追加出力し、セグメントカウンタをクリアする（ステップＳ３６１５）。そして、ステップＳ３６１６に移行する。
【０２１５】
一方、セグメントの集計が終了していない場合（ステップＳ３６１４：Ｎｏ）、またはステップＳ３６１５のあと、ブロック終了か否か、たとえば、集計した文字データ数が４０００文字に到達したか否かを判断する（ステップＳ３６１６）。
【０２１６】
そして、ブロック終了した場合（ステップＳ３６１６：Ｙｅｓ）、当該ブロックデータを有する本文ＨＴＭＬファイルのファイル番号、当該ブロックデータのブロック番号、オフセット、文字数、およびレングスからなるブロック情報を生成してファイルに追加出力するとともに、バイトカウンタをクリアする（ステップＳ３６１７）。そして、ステップＳ３６１８に移行する。
【０２１７】
一方、ブロック終了していない場合（ステップＳ３６１６：Ｎｏ）、またはステップＳ３６１７のあと、ファイル終了か否か、すなわち、現在オープンしている本文ＨＴＭＬファイルの集計が終了したか否かを判断する（ステップＳ３６１８）。現在オープンしている本文ＨＴＭＬファイルの集計が終了していない場合（ステップＳ３６１８：Ｎｏ）、図３６−１のステップＳ３６０２に戻る。
【０２１８】
一方、ステップＳ３６１８において、現在オープンしている本文ＨＴＭＬファイルの集計が終了した場合（ステップＳ３６１８：Ｙｅｓ）、現在オープンしている本文ＨＴＭＬファイルをクローズする（ステップＳ３６１９）。このあと、すべての本文ＨＴＭＬファイルからの集計が終了したか否かを判断する（ステップＳ３６２０）。
【０２１９】
すべての本文ＨＴＭＬファイルの集計が終了していない場合（ステップＳ３６２０：Ｎｏ）、つぎのファイル番号の本文ＨＴＭＬファイルをオープンし（ステップＳ３６２１）、図３６−１のステップＳ３６０２に戻る。
【０２２０】
一方、ステップＳ３６２０において、すべての本文ＨＴＭＬファイルの集計が終了した場合（ステップＳ３６２０：Ｙｅｓ）、出現マップのセグメントをファイルに追加出力し（ステップＳ３６２２）、図３６−３のステップＳ３６２３に移行する。
【０２２１】
つぎに、図３６−３において、文字出現頻度管理データ２３０の領域確保とその領域の初期化を実行し（ステップＳ３６２３）、８，１６ビットの文字データ、連字データ、バイナリデータの文字コードと出現頻度をセットする（ステップＳ３６２４）。
【０２２２】
そして、出現マップの各セグメントを連結し（ステップＳ３６２５）。連字領域２９０３の連字データを高出現頻度順にソートすることで、２５６種の連字データを選択する（ステップＳ３６２６）。これにより、連字データの削減を図ることができる。
【０２２３】
つぎに、連字／外字置換をおこなうととともに、連字／外字置換テーブル２４０を生成する（ステップＳ３６２７）。具体的には、高出現頻度順に連字データを外字データに置換することにより、連字外字データと連字／外字置換テーブル２４０を生成する。
【０２２４】
そして、低出現頻度の連字データ、すなわち外字に置換されなかった連字データを単一文字データに分解し、該当する文字領域に割り振る補正をおこなう（ステップＳ３６２８）。すなわち、低出現頻度の連字データを表音文字データに分割し、当該文字データの頻度の加算と出現マップのＯＲ演算を実行する。
【０２２５】
このあと、文字データを高出現頻度順にソートし（ステップＳ３６２９）、頻度０回の文字データをカットして、連字外字データとバイナリデータとを結合し（ステップＳ３６３０）、この結合によって得られた文字出現頻度管理データ２３０をファイルに出力する（ステップＳ３６３１）。このあと、文字出現頻度管理データ２３０を所定のマスタキーで暗号化する（ステップＳ３６３２）。これにより、検索初期化処理（ステップＳ３２０２、図２５を参照）を実行し、全文検索処理（ステップＳ３２０３、図２６を参照）を実行する。
【０２２６】
この実施の形態２によれば、ファイル番号＃ｉ（たとえばｉ＝１）の本文ＨＴＭＬファイルｆｉについて生成されたハフマン圧縮のパラメータ（ハフマン木２８２０）を、他の本文ＨＴＭＬファイルｆｊ（ｉ≠ｊ）に流用して圧縮および暗号化を１パスでおこなう。また、この１パスの圧縮／暗号化に並行して、各本文ＨＴＭＬファイル中の文字データの出現マップ３１００を生成する。
【０２２７】
本文ＨＴＭＬファイルが電子帳票などのファイルである場合、出現する顧客名や住所、および品名などに変化はなく、ハフマン圧縮のパラメータはほぼ類似している。また、電子帳票は処理量が多く、その圧縮・暗号化には、高速化が要望されている。したがって、１パスの圧縮／暗号化処理を用いることにより、圧縮・暗号化の速度の向上を図ることができる。
【０２２８】
（実施の形態３）
つぎに、実施の形態３について説明する。実施の形態１における全文検索の文字列の不一致照合方式は、圧縮・暗号化されたデータを伸長せず、検索キーワードを圧縮し不一致照合をおこなうこととしている。非圧縮データの文字列の照合は１バイト毎、もしくは文字単位に比較されるが、圧縮データでは、文字の境界の識別が困難であり、１ビット毎にシフトを行い比較することが必要である。実施の形態３では、この点に着目して、圧縮ファイルに対して、コンピュータのＣＰＵ１０１が得意であるバイト毎の操作をもとにした不一致照合処理を全文検索部２２２において実行する。なお、上述した実施の形態１および実施の形態２で説明した構成と同一構成には同一符号を付し、その説明を省略する。
【０２２９】
図３７は、実施の形態３における不一致照合処理を示す説明図である。図１９に示した検索キーワード入力処理部１９０１により入力された検索キーワードは、検索キーワード圧縮部１９０２によりハフマン木１７１０を用いてｎビットの圧縮キーワード３７０２に圧縮され、レジスタＲａにセットされる。
【０２３０】
一方、圧縮ファイル抽出部１９０５によって抽出された特定圧縮ファイル（圧縮本文ＨＴＭＬファイル）３７１１内の圧縮ブロックデータ３７１２をレジスタＲｂにセットして、レジスタＲａにセットされた圧縮キーワード３７０２と比較する。具体的には、レジスタＲｂには、所定バイトずつシフトされた圧縮ブロックデータ３７１２がセットされ、順次圧縮キーワード３７０２と比較される。具体的には、圧縮キーワード３７０２と圧縮ブロックデータ３７１２とのＸＯＲ演算により比較結果３７２０を出力する。そして、比較結果３７２０における末尾８ビット（図３７中、網掛け表示）のビット列３７３０を抽出して、不一致照合をおこなう。
【０２３１】
図３８は、図３７に示した圧縮ブロックデータのシフト操作を示す図表である。このシフト操作では、圧縮キーワード３７０２の圧縮サイズ（圧縮キーワード長）に応じた照合間隔分シフトする。なお、圧縮キーワード長が１６ビット以上である場合、照合判定のビット長は８ビットとなるが、１１ビット以上１５ビット以下の場合、３〜７ビットとして、末尾のビットを調整する。また、圧縮キーワード長が１〜１０ビットの場合、圧縮形式の不一致照合はおこなわず、伸長後に検索キーワード３７０１を照合する。
【０２３２】
図３９は、照合予測テーブルの生成処理を示す説明図である。図３９において、レジスタＲａに圧縮キーワード３７０２をセットする。レジスタＲａ内の「＊」（末尾８ビット）は、圧縮キーワード３７０２が保持されていないビットである。図３９では、そして、レジスタＲａ内の圧縮キーワード３７０２を１ビットごとシフトして、シフトテーブル３９００を生成する。すなわち、圧縮キーワード３７０２はｎビットであるため、シフト数０ビットからｎ−８ビットまでのシフトビット列によりシフトテーブル３９００を生成する。
【０２３３】
そして、レジスタＲａにセットされている圧縮キーワード３７０２とシフトテーブルとを照合予測する。具体的には、ＸＯＲ演算を施すことにより、ＸＯＲテーブル３９０１を生成する。そして、ＸＯＲテーブルの各シフトビット列において、「＊」が含まれていない１７ビット目から２４ビット目までの８ビット分の部分ビット列（図中網掛け表示）と対応するシフトビット列のシフト数とを連結して部分判定テーブル３９０２を生成する。
【０２３４】
つぎに、高速判定するための照合予測テーブル３９０３を生成する。照合予測テーブル３９０３は、部分判定テーブル３９０２を参照して、８ビットのアドレスに、シフト数を割り当てる。なお、シフト数が重複するビット列が出現した場合、当該ビット列には「６４」がセットされ、照合の際、部分判定テーブル３９０２を参照する。また、部分判定テーブル３９０２とは一致しないアドレスには、シフト数として「−１」を割り当てる。この照合予測テーブル３９０３と不一致照合用のビット列３７３０とを比較することで、不一致照合を実行する。
【０２３５】
図４０は、全ビット不一致照合処理を示す説明図である。図４０において、現在のシフト数を８で除算することにより、その除数および余りを算出する。そして、特定圧縮ファイル３７１１の現在のポインタに除数を加算することで、加算後のポインタに応じた圧縮ブロックデータ３７１２を再取得してレジスタＲｂにセットする。そして、セットされた圧縮ブロックデータ３７１２を余りの値分シフトする。
【０２３６】
また、圧縮キーワード３７０２をレジスタＲａにセットする。両レジスタＲａ、Ｒｂにおいて照合対象外となるビットのマスクをＯＦＦにし、両レジスタＲａ、Ｒｂを比較する。そして、全ビットが一致した場合に、その一致したアドレスを記録することとする。
【０２３７】
（全文検索処理手順）
つぎに、この発明の実施の形態３にかかる情報検索装置の全文検索処理について説明する。図４１は、この発明の実施の形態３にかかる情報検索装置の全文検索処理手順を示すフローチャートである。図４１では、図２６に示したステップＳ２６０８とステップＳ２６０９との間に、照合予測テーブル生成処理（ステップＳ４１０１）を実行する。また、ステップＳ２６１１に替えて、圧縮ブロックデータと圧縮キーワードとの不一致判定処理（ステップＳ４１０２）を実行する。なお、図４１において、図２６に示したステップ番号と同一処理については同一ステップ番号を付し、その説明を省略する。
【０２３８】
ここで、上述した照合予測テーブル生成処理（ステップＳ４１０１）について詳細に説明する。図４２は、照合予測テーブル生成処理手順を示すフローチャートである。図４２において、まず、圧縮キーワード３７０２の総シフト数を演算する（ステップＳ４２０１）。具体的には、圧縮キーワード長とレジスタＲａのビット長とから圧縮キーワード３７０２が保持されていないビット長（図３９の「＊」）を総シフト数として算出する。
【０２３９】
つぎに、図３８に示したシフト操作の図表を参照して、照合間隔（バイト数）を演算する（ステップＳ４２０２）。そして、圧縮キーワード３７０２を、上記総シフト分１ビットずつシフトして、シフトテーブル３９００を作成する（ステップＳ４２０３）。このシフトテーブル３９００の各ビット列と圧縮キーワード３７０２とをＸＯＲ演算してＸＯＲテーブル３９０１を作成する（ステップＳ４２０４）。
【０２４０】
そして、作成されたＸＯＲテーブル３９０１とＸＯＲテーブル３９０１を構成する各ビット列のシフト数からなる部分判定テーブル３９０２を作成する（ステップＳ４２０５）。そして、部分判定テーブル３９０２を用いて、照合予測テーブル３９０３を作成し（ステップＳ４２０６）、ステップＳ２６０９へ移行する。
【０２４１】
つぎに、上述した圧縮ブロックデータと圧縮キーワードとの不一致判定処理（ステップＳ４１０２）について説明する。図４３は、圧縮ブロックデータと圧縮キーワードとの不一致判定処理手順を示すフローチャートである。図４３において、まず、圧縮キーワード３７０２をレジスタＲａにセットする（ステップＳ４３０１）。
【０２４２】
つぎに、圧縮ブロックデータ３７１２をシフトさせる照合間隔（バイト数）をセットし（ステップＳ４３０２）、特定圧縮ファイル３７１１のポインタを初期化する（ステップＳ４３０３）。このあと、現在のポインタにしたがって、圧縮ブロックデータ３７１２をレジスタＲｂにセットする（ステップＳ４３０４）。そして、レジスタＲａとレジスタＲｂとをＸＯＲ演算して（ステップＳ４３０５）、下位８ビットのビット列３７３０を抽出する（ステップＳ４３０６）。
【０２４３】
つぎに、抽出された下位８ビットのビット列３７３０と照合予測テーブル３９０３とを照合して、照合予測テーブル３９０３内のビット列のうち、下位８ビットのビット列３７３０と一致するビット列のシフト数を検出し、検出されたシフト数が「−１」であるか否か、すなわち不一致であるか否かを判断する（ステップＳ４３０７）。
【０２４４】
そして、シフト数が「−１」である場合（ステップＳ４３０７：Ｙｅｓ）、特定圧縮ファイル３７１１のポインタを照合間隔分加算する（ステップＳ４３０８）。そして、圧縮ブロックデータ３７１２がないか否かを判断する（ステップＳ４３０９）。圧縮ブロックデータ３７１２がある場合（ステップＳ４３０９：Ｎｏ）、ステップＳ４３０４に戻る。一方、圧縮ブロックデータ３７１２がない場合（ステップＳ４３０９：Ｙｅｓ）、ステップＳ２６１２に移行する。このステップＳ４３０４〜ステップＳ４３０９：Ｎｏのループにより、不一致であることを高速で照合することができ、検索速度の高速化を実現することができる。
【０２４５】
また、ステップＳ４３０７において、シフト数が「−１」でない場合（ステップＳ４３０７：Ｎｏ）、シフト数が０〜６３である場合（ステップＳ４３１０：０〜６３）、すなわち、部分一致となる場合、当該シフト数を取得して（ステップＳ４３１１）、全ビット不一致照合処理を実行する（ステップＳ４３１２）。全ビット不一致照合処理（ステップＳ４３１２）については後述する。この全ビット不一致照合処理を実行する（ステップＳ４３１２）。このあと、ステップＳ４３０８に移行する。
【０２４６】
また、ステップＳ４３１０において、シフト数が６４である場合（ステップＳ４３１０：６４）、すなわち、重複部分一致となる場合、部分判定テーブル３９０２のポインタを初期化し（ステップＳ４３１３）、現在のポインタに対応する部分判定テーブル３９０２のＸＯＲ結果を取得する（ステップＳ４３１４）。そして、対応するビット列と、現在のポインタに対応する部分判定テーブル３９０２のＸＯＲ結果とが一致するか否かを判断する（ステップＳ４３１５）。不一致の場合（ステップＳ４３１５：Ｎｏ）、ステップＳ４３１８に移行する。
【０２４７】
一方、一致する場合（ステップＳ４３１５：Ｙｅｓ）、そのＸＯＲ結果に対応するシフト数を部分判定テーブル３９０２から取得して（ステップＳ４３１６）、全ビット不一致照合処理を実行する（ステップＳ４３１７）。この全ビット不一致照合処理（ステップＳ４３１７）は、全ビット不一致照合処理（ステップＳ４３１２）と同一であるため後述する。
【０２４８】
そして、全ビット不一致照合処理（ステップＳ４３１７）のあと、部分判定テーブル３９０２のポインタを加算する（ステップＳ４３１８）。部分判定テーブル３９０２の現在のポインタが最終ポインタでない場合（ステップＳ４３１９：Ｎｏ）、ステップＳ４３１４に戻る。一方、部分判定テーブル３９０２の現在のポインタが最終ポインタである場合（ステップＳ４３１９：Ｙｅｓ）、ステップＳ４３０８に移行する。
【０２４９】
つぎに、上述した全ビット不一致照合処理（ステップＳ４３１２およびステップＳ４３１７）について詳細に説明する。図４４は、全ビット不一致照合処理（ステップＳ４３１２およびステップＳ４３１７）を示すフローチャートである。図４４において、シフト数を８で除算することにより、その除数および余りを取得する（ステップＳ４４０１）。
【０２５０】
つぎに、特定圧縮ファイル３７１１の現在のポインタに除数を加算し（ステップＳ４４０２）、圧縮ブロックデータ３７１２をレジスタＲｂにセットする（ステップＳ４４０３）。そして、セットされた圧縮ブロックデータ３７１２を余りの値分シフトする（ステップＳ４４０４）。
【０２５１】
つぎに、圧縮キーワード３７０２をレジスタＲａにセットし（ステップＳ４４０５）、両レジスタＲａ、Ｒｂにおいて照合対象外となるビットのマスクをＯＦＦにする（ステップＳ４４０６）。そして、全ビットが一致する場合（ステップＳ４４０７：Ｙｅｓ）、一致したアドレスを記録し（ステップＳ４４０８）、ステップＳ４３０８（またはＳ４３１７）に移行する。一方、全ビットが一致しない場合（ステップＳ４４０７：Ｎｏ）、ステップＳ４３０８（またはステップＳ４３１８）に移行する。
【０２５２】
この実施の形態３によれば、特定圧縮ファイル３７１１に対して、コンピュータのＣＰＵ１０１が得意であるバイト毎の操作をもとにした不一致照合の方式を実現することができる。すなわち、ビット毎の照合予測を目的に、入力された検索キーワード３７０１を圧縮した圧縮キーワード３７０２とその圧縮キーワード３７０２を１ビット毎シフトしたデータの集合であるシフトテーブル３９００とのＸＯＲ演算をおこない、その演算結果をもとに不一致照合をおこなう。そして、圧縮キーワード長に応じて、特定圧縮ファイル３７１１との照合間隔を長くすることにより不一致照合の高速化を図ることができる。
【０２５３】
なお、上述したいずれの実施の形態においても、検索対象ファイルとしてＨＴＭＬのファイルを例に挙げて説明したが、ＨＴＭＬに限定されることはなく、ＸＭＬなど他のマークアップ言語によって記述されたファイルであってもよい。また、連字を外字に置換することとしているが、連字に限らず、検索対象ファイルに含まれているＨＴＭＬやＸＭＬのタグを外字に置換することとして、連字外字置換テーブルに含めることとしてもよい。これにより、検索対象ファイルの圧縮率をさらに向上することができる。
【０２５４】
以上のことから、この発明の実施の形態にかかる情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置によれば、コンテンツについての圧縮率、セキュリティ、および全文検索速度の向上を図ることができるという効果を奏する。
【０２５５】
（付記１）複数の検索対象ファイルからなるコンテンツから前記複数の検索対象ファイルに記述されている文字データを抽出させる文字データ抽出工程と、
前記文字データ抽出工程によって抽出された文字データの前記コンテンツにおける出現頻度を算出させる算出工程と、
前記文字データ抽出工程によって抽出された文字データの前記各検索対象ファイルにおける存否を検出させる検出工程と、
前記算出工程によって算出された前記文字データごとの前記コンテンツにおける出現頻度と前記検出工程によって検出された前記文字データごとの前記各検索対象ファイルにおける存否情報とを含む前記コンテンツの圧縮情報を生成させる圧縮情報生成工程と、
をコンピュータに実行させることを特徴とする情報検索プログラム。
【０２５６】
（付記２）前記複数の検索対象ファイルには、複数種類の文字データが混在しており、
前記算出工程は、
前記文字データの種類ごとに、前記文字データの前記コンテンツにおける出現頻度を算出させ、
前記検出工程は、
前記文字データの種類ごとに、前記文字データの前記各検索対象ファイルにおける存否を検出させることを特徴とする付記１に記載の情報検索プログラム。
【０２５７】
（付記３）前記複数の検索対象ファイルには、バイナリデータが含まれていることを特徴とする付記１または２に記載の情報検索プログラム。
【０２５８】
（付記４）前記圧縮情報生成工程によって生成された圧縮情報に基づいてハフマン木を生成させるハフマン木生成工程と、
前記ハフマン木生成工程によって生成されたハフマン木を用いて前記コンテンツを圧縮させるコンテンツ圧縮工程と、
をコンピュータに実行させることを特徴とする付記１に記載の情報検索プログラム。
【０２５９】
（付記５）検索キーワードの入力を受け付けさせる入力工程と、
前記入力工程によって入力された検索キーワードを構成する文字データ（以下、「検索文字データ」という）の前記各検索対象ファイルにおける存否情報を前記圧縮情報から抽出させる存否情報抽出工程と、
前記存否情報抽出工程によって抽出された前記検索文字データごとの存否情報に基づいて、前記複数の検索対象ファイルの中から、前記検索文字データがすべて記述されている検索対象ファイルを特定させる特定工程と、
前記特定工程によって特定された検索対象ファイルの中から、前記検索キーワードと同一または関連する情報を検索させる検索工程と、
をコンピュータに実行させることを特徴とする付記４に記載の情報検索プログラム。
【０２６０】
（付記６）前記コンテンツ圧縮工程によって圧縮されたコンテンツを構成する複数の圧縮された検索対象ファイル（以下、「圧縮ファイル」という）の中から、前記特定工程によって特定された検索対象ファイルの圧縮ファイルを抽出させる圧縮ファイル抽出工程と、
前記ハフマン木を用いて前記検索キーワードを圧縮させる検索キーワード圧縮工程と、
前記圧縮ファイル抽出工程によって抽出された圧縮ファイルに、前記検索キーワード圧縮工程によって圧縮された検索キーワード（以下、「圧縮検索キーワード」という）が含まれているか否かを判定させる判定工程と、
前記判定工程によって前記圧縮検索キーワードが含まれていると判定された圧縮ファイルを、前記ハフマン木を用いて伸長させる伸長工程と、
をコンピュータに実行させ、
前記検索工程は、
前記伸長工程により伸長することによって得られた検索対象ファイルの中から、前記検索キーワードと同一または関連する情報を検索させることを特徴とする付記５に記載の情報検索プログラム。
【０２６１】
（付記７）前記文字データ抽出工程によって抽出された文字データが、所定の連続する表音文字列を示す連字データである場合、当該連字データを外字データに置換させる第１の置換工程と、
前記伸長工程により伸長することによって得られた検索対象ファイルに、前記第１の置換工程によって前記連字データから変換された外字データ（以下、「連字外字データ」という）が含まれている場合、当該連字外字データを、元の連字データに置換させる第２の置換工程と、をコンピュータに実行させることを特徴とする付記６に記載の情報検索プログラム。
【０２６２】
（付記８）前記文字データ抽出工程によって抽出された文字データが、前記検索対象ファイルに含まれるタグである場合、当該タグを外字データに置換させる第１の置換工程と、
前記伸長工程により伸長することによって得られた検索対象ファイルに、前記第１の置換工程によって前記タグから変換された外字データが含まれている場合、当該外字データを、元のタグに置換させる第２の置換工程と、
をコンピュータに実行させることを特徴とする付記６または７に記載の情報検索プログラム。
【０２６３】
（付記９）前記各検索対象ファイルは、所定の文字数ごとにブロック化された複数のブロックデータによって構成され、
前記コンテンツ圧縮工程は、
前記ハフマン木を用いて前記コンテンツの各検索対象ファイルを構成する複数のブロックデータごとに圧縮させ、
前記伸長工程は、
前記ハフマン木を用いて前記コンテンツ圧縮工程によって圧縮された各ブロックデータを伸長させることを特徴とする付記７に記載の情報検索プログラム。
【０２６４】
（付記１０）前記圧縮情報を暗号化させる暗号化工程をコンピュータに実行させることを特徴とする付記４に記載の情報検索プログラム。
【０２６５】
（付記１１）前記暗号化工程によって暗号化された圧縮情報を復号化させる復号化工程と、
前記復号化工程によって復号化された圧縮情報に基づいて前記ハフマン木を再度生成させるハフマン木再生成工程と、
検索キーワードの入力を受け付けさせる入力工程と、
前記入力工程によって入力された検索キーワードを構成する文字データ（以下、「検索文字データ」という）の前記各検索対象ファイルにおける存否情報を前記圧縮情報から抽出させる存否情報抽出工程と、
前記存否情報抽出工程によって抽出された前記検索文字データごとの存否情報に基づいて、前記複数の検索対象ファイルの中から、前記検索対象文字データがすべて記述されている検索対象ファイルを特定させる特定工程と、
前記コンテンツ圧縮工程によって圧縮されたコンテンツを構成する複数の圧縮された検索対象ファイル（以下、「圧縮ファイル」という）の中から、前記特定工程によって特定された検索対象ファイルの圧縮ファイルを抽出させる圧縮ファイル抽出工程と、
前記ハフマン木再生成工程によって生成されたハフマン木を用いて、前記検索キーワードを圧縮させる検索キーワード圧縮工程と、
前記圧縮ファイル抽出工程によって抽出された圧縮ファイルに、前記検索キーワード圧縮工程によって圧縮された検索キーワード（以下、「圧縮検索キーワード」という）が含まれているか否かを判定させる判定工程と、
前記判定工程によって前記圧縮検索キーワードが含まれていると判定された圧縮ファイルを、前記ハフマン木を用いて伸長させる伸長工程と、
前記伸長工程により伸長することによって得られた検索対象ファイルの中から、前記検索キーワードと同一または関連する情報を検索させる検索工程と、
をコンピュータに実行させることを特徴とする付記１０に記載の情報検索プログラム。
【０２６６】
（付記１２）前記判定工程は、
前記圧縮キーワードと、当該圧縮キーワードを１ビットずつシフトさせた複数のビット列とを比較演算させる圧縮キーワード／ビット列比較演算工程と、
前記圧縮キーワード／ビット列比較演算工程によって比較演算された比較演算結果から、前記ビット列ごとに一部の比較演算結果を抽出させる圧縮キーワード／ビット列比較演算結果抽出工程と、
前記各ビット列のシフト数と前記圧縮キーワード／ビット列比較演算結果抽出工程によって抽出された一部の比較演算結果とを含む照合予測テーブルを生成させる照合予測テーブル生成工程と、を含み、
前記照合予測テーブル生成工程によって生成された照合予測テーブルを用いて、前記圧縮ファイルに、前記圧縮検索キーワードが含まれているか否かを判定させることを特徴とする付記１１に記載の情報検索プログラム。
【０２６７】
（付記１３）前記判定工程は、
前記圧縮ファイル内の圧縮ブロックデータと前記圧縮キーワードとを比較演算させる第１の圧縮キーワード／圧縮ブロックデータ比較演算工程と、
前記第１の圧縮キーワード／圧縮ブロックデータ比較演算工程によって比較演算された比較演算結果から、一部の比較演算結果を抽出させる第１の圧縮キーワード／圧縮ブロックデータ比較演算結果抽出工程と、
前記第１の圧縮キーワード／圧縮ブロックデータ比較演算結果抽出工程によって抽出された一部の比較演算結果と、前記照合予測テーブルに含まれている前記一部の比較演算結果との不一致照合をおこなわせる第１の不一致照合工程と、
を含んだことを特徴とする付記１２に記載の情報検索プログラム。
【０２６８】
（付記１４）前記判定工程は、
前記第１の不一致照合工程によって不一致照合された場合、前記圧縮ファイル内においてバイト単位でシフトさせたあらたな圧縮ブロックデータと前記圧縮キーワードとを比較演算させる第２の圧縮キーワード／圧縮ブロックデータ比較演算工程と、
前記第２の圧縮キーワード／圧縮ブロックデータ比較演算工程によって比較演算された比較演算結果から、一部の比較演算結果を抽出させる第２の圧縮キーワード／圧縮ブロックデータ比較演算結果抽出工程と、
前記第２の圧縮キーワード／圧縮ブロックデータ比較演算結果抽出工程によって抽出された一部の比較演算結果と、前記照合予測テーブルに含まれている前記一部の比較演算結果との不一致判定をおこなわせる第２の不一致照合工程と、
を含んだことを特徴とする付記１３に記載の情報検索プログラム。
【０２６９】
（付記１５）前記第２の圧縮キーワード／圧縮ブロックデータ比較演算工程は、
前記第１の不一致照合工程によって不一致照合された場合、前記圧縮ファイル内において前記圧縮キーワードのビット長に応じたバイト単位でシフトさせた他の圧縮ブロックデータと前記圧縮キーワードとを比較演算させることを特徴とする付記１４に記載の情報
検索プログラム。
【０２７０】
（付記１６）複数の検索対象ファイルからなるコンテンツのうち一の検索対象ファイルに記述されている文字データを抽出させる第１の文字データ抽出工程と、
前記第１の文字データ抽出工程によって抽出された文字データの前記一の検索対象ファイルにおける出現頻度を算出させる第１の算出工程と、
前記第１の文字データ抽出工程によって抽出された文字データの前記一の検索対象ファイルにおける存否を検出させる第１の検出工程と、
前記第１の算出工程によって算出された前記文字データごとの前記一の検索対象ファイルにおける出現頻度と前記第１の検出工程によって検出された前記文字データごとの前記一の検索対象ファイルにおける存否情報とを含む前記一の検索対象ファイルの圧縮情報を生成させる第１の圧縮情報生成工程と、
前記第１の圧縮情報生成工程によって生成された圧縮情報に基づいてハフマン木を生成させるハフマン木生成工程と、
前記コンテンツから前記一の検索対象ファイル以外の他の検索対象ファイルに記述されている文字データを抽出させる第２の文字データ抽出工程と、
前記第２の文字データ抽出工程によって抽出された文字データの前記他の検索対象ファイルにおける出現頻度を算出させる第２の算出工程と、
前記第２の文字データ抽出工程によって抽出された文字データの前記他の検索対象ファイルにおける存否を検出させる第２の検出工程と、
前記第２の検出工程によって存否が検出された文字データを、前記ハフマン木生成工程によって生成されたハフマン木を用いて圧縮させる文字データ圧縮工程と、
前記第１および第２の算出工程によって算出された前記文字データごとの前記コンテンツにおける出現頻度と前記第１および第２の検出工程によって検出された前記文字データごとの前記各検索対象ファイルにおける存否情報とを含む前記コンテンツの圧縮情報を生成させる第２の圧縮情報生成工程と、
前記コンテンツの圧縮情報を暗号化させる暗号化工程と、
をコンピュータに実行させることを特徴とする情報検索プログラム。
【０２７１】
（付記１７）付記１または１６に記載の情報検索プログラムを記録したコンピュータに読み取り可能な記録媒体。
【０２７２】
（付記１８）複数の検索対象ファイルからなるコンテンツから前記複数の検索対象ファイルに記述されている文字データを抽出する文字データ抽出工程と、
前記文字データ抽出工程によって抽出された文字データの前記コンテンツにおける出現頻度を算出する算出工程と、
前記文字データ抽出工程によって抽出された文字データの前記各検索対象ファイルにおける存否を検出する検出工程と、
前記算出工程によって算出された前記文字データごとの前記コンテンツにおける出現頻度と前記検出工程によって検出された前記文字データごとの前記各検索対象ファイルにおける存否情報とを含む前記コンテンツの圧縮情報を生成する圧縮情報生成工程と、
含んだことを特徴とする情報検索方法。
【０２７３】
（付記１９）複数の検索対象ファイルからなるコンテンツから前記複数の検索対象ファイルに記述されている文字データを抽出する文字データ抽出手段と、
前記文字データ抽出手段によって抽出された文字データの前記コンテンツにおける出現頻度を算出する算出手段と、
前記文字データ抽出手段によって抽出された文字データの前記各検索対象ファイルにおける存否を検出する検出手段と、
前記算出手段によって算出された前記文字データごとの前記コンテンツにおける出現頻
度と前記検出手段によって検出された前記文字データごとの前記各検索対象ファイルにおける存否情報とを含む前記コンテンツの圧縮情報を生成する圧縮情報生成手段と、
備えることを特徴とする情報検索装置。
【産業上の利用可能性】
【０２７４】
以上のように、本発明にかかる情報検索プログラム、該プログラムを記録した記録媒体、情報検索方法、および情報検索装置は、コンテンツの検索に有用であり、特に、複数種類の文字データが混在した多ファイルの辞書コンテンツに適している。
【図面の簡単な説明】
【０２７５】
【図１】図１は、この発明の実施の形態１にかかる情報検索装置のハードウェア構成を示すブロック図である。
【図２】図２は、この発明の実施の形態１にかかる情報検索装置の機能的構成を示すブロック図である。
【図３】図３は、見出しデータ生成部の詳細な機能的構成を示すブロック図である。
【図４】図４は、本文ＨＴＭＬリストの一例を示す説明図である。
【図５】図５は、本文ＨＴＭＬファイルのファイル構成データを示す説明図である。
【図６】図６は、見出しデータを示す説明図である。
【図７】図７は、文字出現頻度管理データ生成部の詳細な機能的構成を示すブロック図である。
【図８】図８は、文字出現頻度管理データの生成処理を示すデータ構成図である。
【図９】図９は、図８に示した（Ｂ）のデータ構成を示す説明図である。
【図１０】図１０は、図８に示した（Ｅ）のデータ構成を示す説明図である。
【図１１】図１１は、連字／外字置換処理を示すデータ構成図である。
【図１２】図１２は、最終的に生成された連字／外字置換テーブルを示す説明図である。
【図１３】図１３は、図２に示した圧縮／暗号化部の詳細な機能的構成を示すブロック図である。
【図１４】図１４は、圧縮／暗号化部による具体的なハフマン木生成処理を示す説明図である。
【図１５】図１５は、圧縮部によって圧縮された圧縮コンテンツのデータ構造を示す説明図である。
【図１６】図１６は、圧縮ブロックデータと、圧縮前の元のブロックデータとの比較を示す図表である。
【図１７】図１７は、図２に示した検索初期化部の詳細な機能的構成を示すブロック図である。
【図１８】図１８は、区点対応テーブルと出現マップとの対応関係を示す説明図である。
【図１９】図１９は、図２に示した全文検索部の詳細な機能的構成を示すブロック図である。
【図２０】図２０は、図２に示した検索結果表示部の詳細な機能的構成を示すブロック図である。
【図２１】図２１は、この発明の実施の形態１にかかる情報検索装置の情報検索処理手順を示すフローチャートである。
【図２２】図２２は、図２１に示した文字出現頻度管理データ生成処理の詳細な処理手順を示すフローチャートである。
【図２３】図２３は、上述した文字出現頻度集計処理の詳細な処理手順を示すフローチャートである。
【図２４】図２４は、図２１に示した圧縮／暗号化処理の詳細な処理手順を示すフローチャートである。
【図２５】図２５は、図２１に示した検索初期化処理の詳細な処理手順を示すフローチャートである。
【図２６】図２６は、図２１に示した全文検索処理の詳細な処理手順を示すフローチャートである。
【図２７】図２７は、この発明の実施の形態２にかかる情報検索装置の機能的構成を示すブロック図である。
【図２８】図２８は、圧縮／暗号化／文字出現頻度管理データ生成部の詳細な機能的構成を示すブロック図である。
【図２９】図２９は、ハフマン木生成部による具体的なハフマン木生成処理を示す説明図である。
【図３０】図３０は、圧縮／集計部による圧縮処理と出現マップ生成処理とを示す説明図である。
【図３１】図３１は、ソート部、生成処理部および暗号化部による具体的な処理を示す説明図である。
【図３２】図３２は、この発明の実施の形態２にかかる情報検索装置の情報検索処理手順を示すフローチャートである。
【図３３】図３３は、図３２に示した圧縮／暗号化／文字出現頻度管理データ生成処理の詳細な処理手順を示すフローチャートである。
【図３４】図３４は、図３３に示した文字出現頻度管理データ生成処理を示すフローチャートである。
【図３５】図３５は、図３３に示したハフマン木生成処理を示すフローチャートである。
【図３６−１】図３６−１は、図３３に示した全本文ＨＴＭＬファイルの文字出現頻度管理データ生成／暗号化処理およびコンテンツ圧縮／暗号化処理を示すフローチャート（その１）である。
【図３６−２】図３６−２は、図３３に示した全本文ＨＴＭＬファイルの文字出現頻度管理データ生成／暗号化処理およびコンテンツ圧縮／暗号化処理を示すフローチャート（その２）である。
【図３６−３】図３６−３は、図３３に示した全本文ＨＴＭＬファイルの文字出現頻度管理データ生成／暗号化処理およびコンテンツ圧縮／暗号化処理を示すフローチャート（その３）である。
【図３７】図３７は、実施の形態３における不一致照合処理を示す説明図である。
【図３８】図３８は、図３７に示した圧縮ブロックデータのシフト操作を示す図表である。
【図３９】図３９は、照合予測テーブルの生成処理を示す説明図である。
【図４０】図４０は、全ビット不一致照合処理を示す説明図である。
【図４１】図４１は、この発明の実施の形態３にかかる情報検索装置の全文検索処理手順を示すフローチャートである。
【図４２】図４２は、照合予測テーブル生成処理手順を示すフローチャートである。
【図４３】図４３は、圧縮ブロックデータと圧縮キーワードとの不一致判定処理手順を示すフローチャートである。
【図４４】図４４は、全ビット不一致照合処理手順を示すフローチャートである。
【符号の説明】
【０２７６】
２００  情報検索装置
２０１  編集部
２０２  検索処理部
２１０  コンテンツ
２１１  見出しデータ生成部
２１２  文字出現頻度管理データ生成部
２１３  圧縮／暗号化部
２２１  検索初期化部
２２２  全文検索部
２２３  検索結果表示部
２３０  文字出現頻度管理データ（圧縮情報）
２４０  連字／外字置換テーブル
２５０  圧縮コンテンツ
２６０  暗号化文字出現頻度管理データ
２７０  暗号化連字／外字置換テーブル
【図１】
0004644708.tif 000003
【図２】
0004644708.tif 000004
【図３】
0004644708.tif 000005
【図４】
0004644708.tif 000006
【図５】
0004644708.tif 000007
【図６】
0004644708.tif 000008
【図７】
0004644708.tif 000009
【図８】
0004644708.tif 000010
【図９】
0004644708.tif 000011
【図１０】
0004644708.tif 000012
【図１１】
0004644708.tif 000013
【図１２】
0004644708.tif 000014
【図１３】
0004644708.tif 000015
【図１４】
0004644708.tif 000016
【図１５】
0004644708.tif 000017
【図１６】
0004644708.tif 000018
【図１７】
0004644708.tif 000019
【図１８】
0004644708.tif 000020
【図１９】
0004644708.tif 000021
【図２０】
0004644708.tif 000022
【図２１】
0004644708.tif 000023
【図２２】
0004644708.tif 000024
【図２３】
0004644708.tif 000025
【図２４】
0004644708.tif 000026
【図２５】
0004644708.tif 000027
【図２６】
0004644708.tif 000028
【図２７】
0004644708.tif 000029
【図２８】
0004644708.tif 000030
【図２９】
0004644708.tif 000031
【図３０】
0004644708.tif 000032
【図３１】
0004644708.tif 000033
【図３２】
0004644708.tif 000034
【図３３】
0004644708.tif 000035
【図３４】
0004644708.tif 000036
【図３５】
0004644708.tif 000037
【図３６−１】
0004644708.tif 000038
【図３６−２】
0004644708.tif 000039
【図３６−３】
0004644708.tif 000040
【図３７】
0004644708.tif 000041
【図３８】
0004644708.tif 000042
【図３９】
0004644708.tif 000043
【図４０】
0004644708.tif 000044
【図４１】
0004644708.tif 000045
【図４２】
0004644708.tif 000046
【図４３】
0004644708.tif 000047
【図４４】
0004644708.tif 000048