(57)【特許請求の範囲】
【請求項１】
コンピュータに、
入力テキストデータから少なくとも日付または時刻を表記する日時表記文字列を検索し、
日時表記文字列の検索該当に応じて、前記日時表記文字列を特定の日時表記フォーマットに変換した正規化日時表記と、前記日時表記文字列の表記パターンを識別する識別符号とを含む変換日時符号を生成し、
前記変換日時符号および前記日時表記文字列を対応づけた変換情報に基づき、前記入力テキストデータを変換し出力する
処理を実行させることを特徴とする符号化プログラム。 
【請求項２】
前記正規化日時表記は、前記日付または時刻を一意に特定可能に表記される絶対日時表記である
ことを特徴とする請求項１に記載の符号化プログラム。 
【請求項３】
前記正規化日時表記は、基準となる日付または時刻からの相対日時で表記される相対日時表記である
ことを特徴とする請求項１に記載の符号化プログラム。 
【請求項４】
前記生成する処理は、前記正規化日時表記に対応し、日時順の付与されたコードを含む変換日時符号を生成する
ことを特徴とする請求項１に記載の符号化プログラム。 
【請求項５】
コンピュータに、
前記入力テキストデータの出現した日時表記文字列に対して動的に圧縮符号を割り当て、日時表記文字列の正規化日時表記に対応付けて当該日時表記文字列の圧縮符号を辞書に登録する処理をさらに実行させ、
前記出力する処理は、前記入力テキストデータの日時表記文字列を前記辞書に登録された当該日時表記文字列の圧縮符号に変換して出力する
ことを特徴とする請求項１〜３の何れか１項に記載の符号化プログラム。 
【請求項６】
入力テキストデータから少なくとも日付または時刻を表記する日時表記文字列を検索し、
日時表記文字列の検索該当に応じて、前記日時表記文字列を特定の日時表記フォーマットに変換した正規化日時表記と、前記日時表記文字列の表記パターンを識別する識別符号とを含む変換日時符号を生成し、
前記変換日時符号および前記日時表記文字列を対応づけた変換情報に基づき、前記入力テキストデータを変換し出力する
処理をコンピュータが実行することを特徴とする符号化方法。 
【請求項７】
入力テキストデータから少なくとも日付または時刻を表記する日時表記文字列を検索する検索部と、
前記検索部により検索された日時表記文字列の検索該当に応じて、前記日時表記文字列を特定の日時表記フォーマットに変換した正規化日時表記と、前記日時表記文字列の表記パターンを識別する識別符号とを含む変換日時符号を生成する生成部と、
前記生成部により生成された前記変換日時符号および前記日時表記文字列を対応づけた変換情報に基づき、前記入力テキストデータを変換し出力する出力部と、
を有することを特徴とする符号化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、符号化プログラム、符号化方法および符号化装置に関する。
【背景技術】
【０００２】
日付や時刻を表記する日時表記には、複数の表記形式がある。例えば、日時表記には、基準となる日時から相対的に指定する日時を示した相対日時表記と、絶対的に指定する日時を示した絶対日時表記とがある。また、日時表記には、１日の時刻を２４時間で表記する２４時制の表記と、１日の時刻を午前と午後に分けて１２時間で表記する１２時制の表記とがある。また、日時表記には、日付や時刻を表す単語を用いた表記や漢字を用いた表記、数字を用いた表記がある。
【０００３】
このため、例えば、テキストファイルに対して日時を検索する際は、検索したい日時に該当する複数の表記形式の日時表記文字列でそれぞれ検索が行われる。例えば、15：00を検索する際は、「15:00」に加え、「午後三時」、「3:00pm」でそれぞれ検索する。
【０００４】
そこで、例えば、文書データから日時を表す日時表記文字列を検索し、検索された日時表記文字列が相対日時表現である場合、文書データの相対日時表現の日時表記文字列に絶対日時表現の日時表記文字列を併記する技術がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−５０７９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、文書の検索では、元の文書に変更を加えず、かつ、検索されたテキストを検索者に提示する必要があり、従来技術のように相対日時表現の日時表記文字列に絶対日時表現の日時表記文字列を併記することには問題がある。
【０００７】
一つの側面では、検索対象のテキストデータに変更を加えることなく、異なる日時表現の文字列をまとめて検索できる符号化プログラム、符号化方法および符号化装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
第１の案では、符号化プログラムは、コンピュータに、入力テキストデータから少なくとも日付または時刻を表記する日時表記文字列を検索する処理を実行させる。符号化プログラムは、コンピュータに、日時表記文字列の検索該当に応じて、日時表記文字列を特定の日時表記フォーマットに変換した正規化日時表記および前記日時表記文字列を識別する識別符号を含む変換日時符号を生成する処理を実行させる。符号化プログラムは、コンピュータに、変換日時符号および日時表記文字列を対応づけた変換情報に基づき、前記入力テキストデータを変換し出力する処理を実行させる。
【発明の効果】
【０００９】
本発明の１実施態様によれば、検索対象のテキストデータに変更を加えることなく、異なる日時表現の文字列をまとめて検索できるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、日時表記文字列の圧縮の流れを概略的に示した図である。
【図２】図２は、日時検索の流れを概略的に示した図である。
【図３】図３は、符号化装置の構成の一例を示す図である。
【図４Ａ】図４Ａは、ビットフィルタの単語部の一例を示す図である。
【図４Ｂ】図４Ｂは、ビットフィルタの日時部の一例を示す図である。
【図５Ａ】図５Ａは、年表記パターンのコード体系の一例を示す図である。
【図５Ｂ】図５Ｂは、月日表記パターンのコード体系の一例を示す図である。
【図５Ｃ】図５Ｃは、時刻表記パターンのコード体系の一例を示す図である。
【図５Ｄ】図５Ｄは、相対日時表記パターンのコード体系の一例を示す図である。
【図６】図６は、相対日時表記パターンのコードに絶対日時のコードを連続させる一例を示す図である。
【図７】図７は、動的辞書のデータ構造の一例を示す図である。
【図８】図８は、ビットマップインデックスのデータ構造の一例を示す図である。
【図９】図９は、範囲指定での日時検索の流れを概略的に示した図である。
【図１０Ａ】図１０Ａは、圧縮処理の手順の一例を示すフローチャートである。
【図１０Ｂ】図１０Ｂは、圧縮処理の手順の一例を示すフローチャートである。
【図１１】図１１は、検索処理の手順の一例を示すフローチャートである。
【図１２】図１２は、符号化装置のハードウェア構成を示す図である。
【図１３】図１３は、コンピュータで動作するプログラムの構成例を示す図である。
【図１４】図１４は、実施形態のシステムにおける装置の構成例を示す図である。
【発明を実施するための形態】
【００１１】
以下に、本願の開示する符号化プログラム、符号化方法および符号化装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの権利範囲が限定されるものではない。各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１２】
［圧縮処理］
最初に、図１を用いて、実施例１にかかる符号化装置１０が実施する日時表記文字列の圧縮処理の概要について説明する。図１は、日時表記文字列の圧縮の流れを概略的に示した図である。図１の例では、符号化装置１０が、圧縮処理の対象である対象ファイル１に含まれる「He  went  out  at  yesterday  3:00pm」を圧縮する場合を例に説明する。符号化装置１０は、対象ファイル１から日付や時刻を表記する日時表記文字列を検索する。ここで、日時表記には、複数の表記形式がある。そこで、例えば、符号化装置１０は、様々な表記形式で日時の表記に使用される記号、数値、単語、文字等を検索し、該当箇所の前後の文字列の表記形式を判別して日時表記文字列を検索する。日時の表記に使用される記号としては、例えば、日付の区切り使用される「/」や時刻の区切り使用される「:」などが挙げられる。日時の表記に使用される単語としては、「yesterday」や「tomorrow」、「ago」、「am」、「pm」などが挙げられる。図１の例では、符号化装置１０は、「pm」や「yesterday」を検索して、「yesterday」および「3:00pm」の日時表記文字列を検索する。
【００１３】
符号化装置１０は、検索された日時表記文字列を抽出して、ビットフィルタ３０の日時部３０Ｂと照合する。図１の例では、符号化装置１０は、「yesterday」および「3:00pm」の日時表記文字列を抽出してビットフィルタ３０の日時部３０Ｂと照合する。ビットフィルタ３０の日時部３０Ｂは、日時表記文字列に対して単語コードと、圧縮符号とを対応付ける変換情報を保持したデータである。ビットフィルタ３０の日時部３０Ｂは、各種の日時表記文字列に対応する単語コードが予め登録されている。例えば、ビットフィルタ３０の日時部３０Ｂには、「yesterday」に対応して単語コード「CA1001h」が登録され、「3:00pm」に対応して単語コード「C8F001h」が登録されている。単語コードの最後に付した「h」は、コードが１６進数で表記されていることを示す符号である。日時表記文字列に対応して予め登録する単語コードは、日時表記文字列を特定の日時表記フォーマットに変換した正規化日時表記での日時の順のコードが付与されており、日時表記文字列の表記形式を識別する識別符号を含んでいる。単語コードの詳細は、後述する。また、ビットフィルタ３０の日時部３０Ｂのデータ構造に関する詳細も、後述する。
【００１４】
符号化装置１０は、ビットフィルタ３０の日時部３０Ｂとの照合により、日時表記文字列に対応する単語コードを取得し、日時表記文字列のコードを生成する。図１の例では、「yesterday」に対応して単語コード「CA1001h」が取得され、「3:00pm」に対応して単語コード「C8F001h」が取得される。ここで、日時表記には、基準となる日時から相対的に指定する日時を示した相対日時表記と、絶対的に指定する日時を示した絶対日時表記とがある。符号化装置１０は、相対日時表記の日時表記文字列について、所定の基準日時を基準に日時表記文字列が示す絶対日時を算出する。この基準日時は、例えば、対象ファイル１が作成された日時とし、次のように特定する。例えば、対象ファイル１が、作成日時や更新日時などの日時情報を含む場合、基準日時は、日時情報の日時とする。また、例えば、対象ファイル１が電子メールのようにメールの送信日時を含む場合、基準日時は、メールの送信日時とする。なお、基準日時は、符号化装置１０の現在の日時としてもよい。基準日時として用いる対象は、動的に変更してもよい。例えば、対象ファイル１が日時情報を含む場合は、基準日時を日時情報の日時とし、対象ファイル１が日時情報を含まない場合は、基準日時を符号化装置１０の現在の日時としてもよい。図１の例では、基準日時を「02/15」とした場合、相対日時表記「yesterday」の絶対日時は、「02/14」と算出される。
【００１５】
符号化装置１０は、ビットフィルタ３０の日時部３０Ｂを参照して、算出された絶対日時に対応する単語コードを取得し、絶対日時のコードを求める。図１の例では、「02/14」に対応して単語コード「C720E1h」が取得されている。
【００１６】
符号化装置１０は、日時表記文字列を示すコードを生成する。符号化装置１０は、絶対日時表記の日時表記文字列については、取得された単語コードを日時表記文字列を示すコードとする。一方、符号化装置１０は、相対日時表記の日時表記文字列については、取得された相対日時表記の日時表記文字列の単語コードに、絶対日時のコードを付加してコードとする。図１の例では、「3:00pm」のコードが「C8F001h」と生成され、「yesterday」のコードが「CA1101C720E1h」と生成される。なお、「yesterday」のコード「CA1001h」は、絶対日時のコードを付加したことを示す継続フラグをオンしたため、「CA1101h」と変更されている。継続フラグの詳細は、後述する。
【００１７】
符号化装置１０は、生成したコードに新たな圧縮符号を割り当て、コードと圧縮符号を対応付けて動的辞書３１に登録する。図１の例では、コード「C8F001h」と圧縮符号「A004h」、および、コード「CA1101C720E1h」と圧縮符号「A005h」がそれぞれ対応づけて動的辞書３１に登録されている。また、符号化装置１０は、新たな圧縮符号を照合した単語に対応する圧縮符号として、ビットフィルタ３０に登録する。そして、符号化装置１０は、割り当てた新たな圧縮符号を圧縮ファイル２に出力する。以降、符号化装置１０は、ビットフィルタ３０に圧縮符号が登録されている文字列については、登録された圧縮符号を圧縮ファイル２に出力して、対象ファイル１を圧縮する。例えば、符号化装置１０は、対象ファイル１に次に「3:00pm」が出現した場合、既にビットフィルタ３０に登録されている圧縮符号「A004h」を取得し、圧縮ファイル２に出力する。
【００１８】
符号化装置１０は、照合した単語が対象ファイル１に含まれていたことをビットマップインデックス３２に記録する。ビットマップインデックス３２では、ファイルに対して一意のファイル番号が定められる。ビットマップインデックス３２には、ファイル番号のファイルに、圧縮符号に対応する文字列が出現した場合、「1」が記録され、圧縮符号に対応する文字列が出現しない場合、「0」が記録される。図１の例では、対象ファイル１のファイル番号を「2」としており、ビットマップインデックス３２には、ファイル番号が「2」の行の圧縮符号「A004h」、「A005h」でそれぞれ「1」が記録されている。
【００１９】
なお、対象ファイル１の日時表記文字列以外の部分について、符号化装置１０は、単語ごとに区切って各単語を取得し、後述するビットフィルタ３０の単語部３０Ａを用いて各単語を圧縮符号に変換して、圧縮ファイル２に出力する。図１の例では、「He」、「went」、「out」、「at」の各単語は、後述するビットフィルタ３０の単語部３０Ａを用いて圧縮される。
【００２０】
［検索処理］
次に、図２を用いて、実施例１にかかる符号化装置１０が実施する日時の検索処理の概要について説明する。図２は、日時検索の流れを概略的に示した図である。図２の例では、符号化装置１０のファイル検索部５０が検索対象の日付の入力を受け付ける。図２の例では、「2/14」の入力を受け付けている。ファイル検索部５０は、入力された日付に対応する単語コードをビットフィルタ３０の日時部３０Ｂから取得する。なお、ファイル検索部５０は、入力された日付の表記を正規化して単語コードを取得する。例えば、「2/14」を「02/14」と表記を正規化して単語コードを取得する。図２の例では、「2/14」に対応する単語コード「C720E1h」が取得されている。ファイル検索部５０は、動的辞書３１を参照し、単語コード「C720E1h」をコードに含む圧縮符号を検索する。図２の例では、圧縮符号「A005h」のコード「CA1101C720E1h」が「C720E1h」を含んでいる。このコード「CA1101C720E1h」の「CA1101」部分は、相対日時「yesterday」に対応するコードである。「CA1101C720E1h」の「C720E1」部分は、絶対日時「02/14」に対応するコードである。図２の例では、圧縮符号「A005h」が検索される。ファイル検索部５０は、ビットマップインデックス３２を参照して、検索された圧縮符号を含むファイルを特定する。図２の例では、圧縮符号「A005h」がインデックスの値が「2」のファイルに含まれると特定される。すなわち、符号化装置１０は、相対日時表現で日時が記録されたファイルを絶対日時表現の日時で検索できる。
【００２１】
［装置構成］
次に、符号化装置１０の構成について説明する。図３は、符号化装置の構成の一例を示す図である。符号化装置１０は、対象ファイル１の圧縮などの符号化を行う装置である。符号化装置１０は、例えば、パーソナルコンピュータ、サーバコンピュータなどのコンピュータや、タブレット端末、スマートフォンなどの情報処理装置である。符号化装置１０は、１台のコンピュータとして実装してもよく、また、複数台のコンピュータによるクラウドとして実装することもできる。なお、本実施例では、符号化装置１０を１台のコンピュータとした場合を例として説明する。図３に示すように、符号化装置１０は、記憶部２０と、制御部２１とを有する。なお、符号化装置１０は、コンピュータや情報処理装置が有する上記の機器以外の他の機器を有してもよい。
【００２２】
記憶部２０は、ハードディスク、ＳＳＤ（Solid  State  Drive）、光ディスクなどの記憶装置である。なお、記憶部２０は、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ、ＮＶＳＲＡＭ（Non  Volatile  Static  Random  Access  Memory）などのデータを書き換え可能な半導体メモリであってもよい。
【００２３】
記憶部２０は、制御部２１で実行されるＯＳ（Operating  System）や各種プログラムを記憶する。例えば、記憶部２０は、入力の支援に用いる各種のプログラムを記憶する。さらに、記憶部２０は、制御部２１で実行されるプログラムで用いられる各種データを記憶する。例えば、記憶部２０は、ビットフィルタ３０と、動的辞書３１と、ビットマップインデックス３２とを記憶する。
【００２４】
ビットフィルタ３０は、単語や日時表記文字列と、単語コードと、圧縮符号を対応付ける変換情報を保持したデータである。ビットフィルタ３０は、単語に関する各種の情報を記憶する単語部３０Ａと、日時表記に関する各種の情報を記憶する日時部３０Ｂとが設けられている。なお、ビットフィルタ３０は、単語部３０Ａと日時部３０Ｂを統合して１つの構成としてもよい。
【００２５】
図４Ａおよび４Ｂを用いて、ビットフィルタ３０について説明する。図４Ａは、ビットフィルタの単語部の一例を示す図である。図４Ｂは、ビットフィルタの日時部の一例を示す図である。図４Ａおよび４Ｂの例のようにビットフィルタ３０は、「２グラム」、「ビットマップ」、「基礎単語へのポインタ」、「基礎単語」、「圧縮符号」、「単語コード」、「登録番号」の各項目を有する。図４Ａに示すビットフィルタ３０の単語部３０Ａには、基礎単語として、各種の単語が登録される。図４Ｂに示すビットフィルタ３０の日時部３０Ｂには、基礎単語として、各種の日時表記文字列が登録される。
【００２６】
「２グラム」の項目は、各単語に含まれる２グラム文字を記憶する領域である。例えば、図４Ａに示すように、「able」は、「ab」「bl」「le」に対応する２グラム文字を含む。「ビットマップ」の項目は、２グラム文字が含まれる基礎単語の位置を表すビット列を記憶する領域である。例えば、２グラム「ab」のビットマップが「１＿０＿０＿０＿０」の場合、ビットマップは基礎単語の先頭２文字が「ab」であることを表す。ビットマップは、基礎単語へのポインタによってそれぞれ基礎単語に対応付けられる。例えば、２グラム「ab」のビットマップ「１＿０＿０＿０＿０」は、「able」および「above」に対応付けられる。
【００２７】
「基礎単語」の項目は、基礎単語として予め登録された単語を記憶する領域である。例えば、図４Ａに示すビットフィルタ３０の単語部３０Ａでは、所定の母集団から抽出した各単語が、それぞれ基礎単語として登録されている。例えば、辞書などに登録された約１９万語の単語が基礎単語として登録される。一方、図４Ｂに示すビットフィルタ３０の日時部３０Ｂでは、様々な表記形式の表記された日時表記文字列を、それぞれ基礎単語として登録する。例えば、図４Ｂの例では、２月１４日を表記した「02/14」が登録されている。「圧縮符号」の項目は、割り当てられた圧縮符号を記憶する領域である。ここで、本実施例では、ビットフィルタ３０の単語部３０Ａに登録する基礎単語を、出現頻度が相対的に高い高頻度単語と、出現頻度が相対的に低い低頻度単語とに分けている。本実施例では、出現頻度の高い順に８０００位までの基礎単語を高頻度単語とし、８００１位以降の基礎単語を低頻度単語としている。高頻度単語については、短い圧縮符号を予め割り当てて、割り当てた圧縮符号を「圧縮符号」の項目に予め記憶させる。低頻度単語については、出現した際に圧縮符号を動的に割り当てて、割り当てた圧縮符号を「圧縮符号」の項目に予め記憶させる。すなわち、圧縮符号は、高頻度単語については予め登録され、低頻度単語については初期状態では未登録とされている。一方、ビットフィルタ３０の日時部３０Ｂでは、出現した際に圧縮符号を動的に割り当てて、割り当てた圧縮符号を「圧縮符号」の項目に予め記憶させる。すなわち、圧縮符号は、初期状態では未登録とされている。
【００２８】
「単語コード」の項目は、各基礎単語に一意に割り当てられる単語コードを記憶する領域である。単語コードの詳細は、後述する。「登録番号」の項目は、動的辞書３１に登録した登録番号を記憶する領域である。登録番号は、動的辞書３１に登録した順に昇順で番号が割り当てられる。
【００２９】
ここで、単語コードについて説明する。本実施例では、日付や時刻を絶対日時で表記する日時表記文字列を、年を表記する年表記パターン、月日を表記する月日表記パターン、時間を表記する時間表記パターンに分けて、それぞれごとに単語コードが日時順となるようにコード体系を定めている。
【００３０】
年表記パターン、月日表記パターン、時間表記パターンのそれぞれで使用する単語コードの範囲を以下に示す。
【００３１】
年表記パターン：３バイト（C0000*h〜C6FFF*h)
月日表記パターン：３バイト（C7000*h〜C7FFF*h)
時刻表記パターン：４バイト（C80000**h〜C9FFFF**h)
「*」は、日時表記文字列の表記形式により定まる。
【００３２】
年表記パターン、月日表記パターン、時間表記パターンのコード体系について説明する。図５Ａは、年表記パターンのコード体系の一例を示す図である。年表記パターンは、全体で３バイト（２４ビット）とされている。先頭の５ビットは、「11000」固定とされている。先頭６ビット目から２０ビット目の範囲は、年を記憶する領域であり、0〜9999年の範囲で年が記憶される。後端から４ビットの範囲のうち上位３ビットの範囲は、年の表記パターンを記憶する領域である。後端の１ビットは、年の値が紀元前（ＢＣ）、紀元後（ＡＣ）の何れか示すかを記憶する領域である。年の表記パターンには、半角数字による表記や、全角数字による表記、桁数を示すカンマの有無、日本語の「年」の有無、漢字表記など様々ある。各種の年の表記パターンには、予め表記パターンを示す値を割り当てる。図５Ａには、各種の年の表記パターンに割り当てる値の一例が示されている。例えば、「2013」のように半角、カンマ無しの表記パターンには、「0」を割り当てる。また、例えば、「2013年」のように日本語の「年」を含む半角の表記パターンには、「4」を割り当てる。後端から４ビットの範囲のうち上位３ビットの範囲には、年の表記パターンに対応した値を設定する。後端の１ビットには、年が紀元前の場合、「1」を設定し、紀元後の場合、「0」を設定する。なお、図５Ａに示した年の表記パターンは、一例であり、これに限定されるものではない。また、図５Ａに示した年表記パターンのコード体系も、一例であり、これに限定されるものではない。
【００３３】
図５Ｂは、月日表記パターンのコード体系の一例を示す図である。月日表記パターンは、全体で３バイト（２４ビット）とされている。先頭の８ビットは、「11000111」固定とされている。先頭９ビット目から１２ビット目の範囲は、月を記憶する領域であり、1〜12月の範囲で月が記憶される。先頭１３ビット目から１５ビット目の範囲は、「000」固定とされている。先頭１６ビット目から２０ビット目の範囲は、日を記憶する領域であり、1〜31日の範囲で日が記憶される。なお、年月を記憶する領域は、一例であり、他の範囲を用いてもよい。後端から４ビットの範囲は、月日の表記パターンを記憶する領域である。月日の表記パターンには、文字とカンマを用いた表記や、数字とスラッシュを用いた表記、半角、全角、日本語の「月」、「日」の有無、漢字表記など様々ある。各種の月日の表記パターンには、予め表記パターンを示す値を割り当てる。図５Ｂには、各種の年の表記パターンに割り当てる値の一例が示されている。例えば、「Apr.1st」のように文字とカンマを用いた表記パターンには、「0」を割り当てる。また、例えば、「4月1日」のように日本語の「月」、「日」を含む半角の表記パターンには、「4」を割り当てる。後端から４ビットの範囲には、年の表記パターンに対応した値を設定する。なお、図５Ｂに示した年の表記パターンは、一例であり、これに限定されるものではない。また、図５Ｂに示した月日表記パターンのコード体系も、一例であり、これに限定されるものではない。
【００３４】
図５Ｃは、時刻表記パターンのコード体系の一例を示す図である。時刻表記パターンは、全体で４バイト（３２ビット）とされている。先頭の７ビットは、「1011100」固定とされている。先頭８ビット目から１２ビット目の範囲は、時間を記憶する領域であり、0〜23時の範囲で時間が記憶される。先頭１３ビット目から１８ビット目の範囲は、分を記憶する領域であり、0〜59分の範囲で分が記憶される。先頭１９ビット目から２３ビット目の範囲は、秒を記憶する領域であり、0〜59秒の範囲で秒が記憶される。なお、時分秒を記憶する領域は、一例であり、他の範囲を用いてもよい。後端から４ビットの範囲は、月日の表記パターンを記憶する領域である。時刻の表記パターンには、２４時制の表記や、１２時制の表記、時分秒をピリオドで区切った表記、半角、全角、日本語の「時」、「分」、「秒」の有無、漢字表記など様々ある。各種の時刻の表記パターンには、予め表記パターンを示す値を割り当てる。図５Ｃには、各種の時刻の表記パターンに割り当てる値の一例が示されている。例えば、「9：30」のように半角のピリオドを用いた２４時制の表記パターンには、「0」を割り当てる。また、例えば、「午前９時３０分」のように１２時制の日本語の「時」、「分」を含む全角の表記パターンには、「5」を割り当てる。後端から４ビットの範囲には、時刻の表記パターンに対応した値を設定する。なお、図５Ｃに示した時刻の表記パターンは、一例であり、これに限定されるものではない。また、図５Ｃに示した時刻表記パターンのコード体系も、一例であり、これに限定されるものではない。
【００３５】
さらに、本実施例では、相対的に日付や時刻を指定する相対日時表記パターンについて次のように単語コードを定めている。
【００３６】
図５Ｄは、相対日時表記パターンのコード体系の一例を示す図である。相対日時表記パターンは、３バイト（２４ビット）単位としてコードが定められている。先頭の８ビットは、「11001010」固定とされている。先頭９ビット目から１２ビット目の範囲は、指定された日時の種類を記憶する領域である。相対日時表記で使用される日時の種類には、予め種類パターンを示す値を割り当てる。図５Ｄには、相対日時表記で使用される日時の種類と割り当てる値の一例が示されている。例えば、「年」には、「0」を割り当てる。先頭１５ビット目は、相対指定のコードが継続する否かを示す継続フラグを記憶する領域である。継続する場合は、継続フラグに「1」が設定され、継続しない場合は、継続フラグに「0」が設定される。先頭１７ビット目から２４ビット目の範囲は、相対日時表記で指定された値を記憶する領域であり、-127〜+127の範囲で値が記憶される。なお、図５Ｄに示した種類パターンは、一例であり、これに限定されるものではない。また、図５Ｄに示した相対日時表記パターンのコード体系も、一例であり、これに限定されるものではない。
【００３７】
相対日時表記では、時間や分などを複数組み合わせて相対日時が指定される場合がある。複数組み合わせて相対日時が指定された場合、継続フラグを用いて相対日時表記パターンのコードを連続させる。例えば、「１時間１０分後」と相対日時のコードは、１時間後のコード「CA3001h」と１０分後のコード「CA400Ah」と連続させる。この際、「CA3001h」の継続フラグを「1」に変更する。このため、「１時間１０分後」のコードは、「CA3101CA400Ah」となる。継続フラグは、絶対日時のコードを連続される場合も利用する。
【００３８】
図６は、相対日時表記パターンのコードに絶対日時のコードを連続させる一例を示す図である。例えば、基準日時を「13:30」に対する「１時間１０分後」は、「14：40」である。この「14：40」の時刻表記パターンのコードは、「C8EA00h」となる。
【００３９】
相対日時「１時間１０分後」のコード「CA3101CA400Ah」に絶対日時のコード「C8EA00h」を連続させる場合、「CA400Ah」の継続フラグを「1」に変更する。このため、「CA3101CA400Ah」に「C8EA00h」を連続させたコードは、「CA3101CA410AC8EA00h」となる。図１の例でも、「yesterday」に対応して単語コード「CA1001h」に「2/14」に対応する単語コード「C720E1h」を継続する場合、「CA1001h」の継続フラグを「1」に変更している。このため、「CA1001h」に「C720E1h」を連続させたコードは、「CA1101C720E1h」となっている。
【００４０】
継続フラグは、相対日時表記パターンのコードを継続させることを示すビットであり、日時表記を表すものではない。このため、相対日時表記パターンのコードを比較する場合、継続フラグは、比較対象から除外する。例えば、相対日時表記パターンのコードを比較する場合、継続フラグは、「0」として比較を行う。例えば、コード「CA1101C720E1h」の「CA1101」部分は、「CA1001」として比較を行う。これにより、例えば、「yesterday」に対応して単語コード「CA1001h」を検索する場合、「CA1101C720E1h」が該当するようになる。
【００４１】
図３に戻り、動的辞書３１は、基礎単語に動的に割り当てられた圧縮符号を記憶する。図７は、動的辞書のデータ構造の一例を示す図である。図７の例のように、動的辞書３１は、「登録番号」、「圧縮符号」、「コード」の各項目を有する。
【００４２】
「登録番号」の項目は、登録番号を記憶する領域である。「圧縮符号」の項目は、コードに対応づけて登録された圧縮符号を記憶する領域である。「コード」の項目は、圧縮符号に対応づけて登録されたコードを記憶する領域である。図７の例では、登録番号「３」として、圧縮符号「A003h」とコード「A001A7h」が記憶されている。
【００４３】
図３に戻り、ビットマップインデックス３２は、単語毎に、当該単語が出現したか否かを記憶するインデックスである。インデックスとは、各単語が含まれるファイルを表す情報ビット列である。ビットマップインデックス３２は、単語毎に各ファイルにおける単語の出現の有無を保持する。
【００４４】
図８は、ビットマップインデックスのデータ構造の一例を示す図である。ビットマップインデックス３２には、高頻度単語がファイルに出現したか否かを記憶する第１記憶領域３２Ａと、低頻度単語および日時表記文字列がファイルに出現したか否かを記憶する第２記憶領域３２Ｂとが設けられている。第１記憶領域３２Ａは、各高頻度単語がファイルに出現したか否かを記憶するため、予め設けられる。すなわち、第１記憶領域３２Ａは、高頻度単語の分だけ記憶領域が予め確保される。例えば、図８の例では、第１記憶領域３２Ａに、ｎ個のファイルに、それぞれの８０００種の高頻度単語が出現したか否かを記憶する記憶領域が予め設けられている。第２記憶領域３２Ｂは、ファイルに低頻度単語および日時表記文字列が出現した際に、出現した低頻度単語および日時表記文字列がファイルに出現したか否かを記憶する記憶領域が追加で設けられる。すなわち、第２記憶領域３２Ｂは、ファイルに新たな低頻度単語および日時表記文字列が出現する毎に、記憶領域が確保される。例えば、図８の例では、第２記憶領域３２Ｂに、ｎ個のファイルに、それぞれの２４０００種の高頻度単語および日時表記文字列が出現したか否かを記憶する記憶領域が予め設けられている。
【００４５】
ビットマップインデックス３２には、ファイル番号のファイルに、圧縮符号に対応する文字列が出現した場合、「1」が記録され、圧縮符号に対応する文字列が出現しない場合、「0」が記録される。図８の例では、ファイル番号「1」の「Apr.1st」、「The」、「aardvark」、「eats」に対応して「1」が記録されている。ビットマップインデックス３２は、各ファイル番号に対応するビットを確認することにより、単語や日時表記文字列を含むファイルを絞りこむことができる。図８の例では、ファイル番号「1」の「Apr.1st」、「The」、「aardvark」、「eats」に対応して「1」が記録されてため、「Apr.1st」、「The」、「aardvark」、「eats」を含むファイルをファイル番号「1」のファイルと絞りこむことができる。
【００４６】
図３に戻り、制御部２１は、符号化装置１０を制御するデバイスである。制御部２１としては、ＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）等の電子回路や、ＡＳＩＣ（Application  Specific  Integrated  Circuit）、ＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路を採用できる。制御部２１は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部２１は、各種のプログラムが動作することにより各種の処理部として機能する。例えば、制御部２１は、圧縮部４０と、ファイル検索部５０とを有する。
【００４７】
圧縮部４０は、圧縮対象のファイルから単語や日時表記文字列を抽出し、単語や日時表記文字列の単位に圧縮符号を対応させた圧縮ファイル２を生成する。圧縮部４０は、検索部４１と、生成部４２と、登録部４３と、格納部４４と、ファイルライト部４５とを有する。以下、圧縮部４０の各構成について詳細に説明する。
【００４８】
検索部４１は、圧縮を行う対象ファイル１を読み出し、少なくとも日付または時刻を表記する日時表記文字列を検索する。例えば、検索部４１は、日付および／または時刻を表記する日時表記文字列を検索する。すなわち、検索部４１は、日付、時刻の何れか一方または両方を表記する日時表記文字列を検索する。例えば、検索部４１は、様々な表記形式で日時の表記に使用される記号、数値、単語、文字等を検索し、該当箇所の前後の文字列の表記形式を判別して日時表記文字列を検索する。また、検索部４１は、日時表記文字列以外の部分から単語を抽出する。例えば、英語のように、文章の単語がスペースなどの所定の区切り文字で区切られる場合、検索部４１は、文字列中の区切り文字によって文字列を単語毎に区切ることで、文字列から各単語を抽出する。一方、例えば、日本語のように、文章の単語が特定の区切り文字で区切られていない場合、検索部４１は、文字列に形態素解析、構文解析など、文章の言語に応じた自然言語処理を行うことで、文字列から各単語を抽出する。
【００４９】
生成部４２は、検索された日時表記文字列をビットフィルタ３０の日時部３０Ｂと照合して、日時表記文字列に対応する単語コードを取得し、日時表記文字列を示すコードを生成する。例えば、生成部４２は、日時表記文字列が絶対日時表記である場合、ビットフィルタ３０の日時部３０Ｂと照合して、日時表記文字列に対応する単語コードを取得し、取得された単語コードを日時表記文字列を示すコードとする。一方、生成部４２は、日時表記文字列が相対日時表記である場合、所定の基準日時を基準に日時表記文字列が示す絶対日時を算出する。生成部４２は、ビットフィルタ３０の日時部３０Ｂと照合して、相対日時表記の日時表記文字列に対応する単語コードと、絶対日時に対応する単語コードとを取得する。そして、生成部４２は、相対日時表記の日時表記文字列の単語コードに、絶対日時のコードを付加したコードを日時表記文字列を示すコードとする。生成部４２は、日時表記文字列が絶対日時表記であるか、相対日時表記であるかを表記形式から判定してもよい。また、例えば、ビットフィルタ３０の日時部３０Ｂに、日時表記文字列ごとに、日時表記文字列が絶対日時表記であるか、相対日時表記であるかを示すフラグを記憶させる。生成部４２が、ビットフィルタ３０の日時部３０Ｂに記憶されたフラグから日時表記文字列が絶対日時表記であるか、相対日時表記であるかを判定してもよい。
【００５０】
登録部４３は、対象ファイル１から検索された日時表記文字列および単語の圧縮符号を動的辞書３１に登録する。例えば、登録部４３は、検索された日時表記文字列や単語に対応するビットフィルタ３０の単語部３０Ａおよび日時部３０Ｂのレコードを参照する。登録部４３は、レコードの圧縮符号の項目に圧縮符号が登録されているか否かに基づいて、対象ファイル１から検索された日時表記文字列や単語の圧縮符号が動的辞書３１に登録されているか否かを判定する。
【００５１】
登録部４３は、対象ファイル１から検索された日時表記文字列や単語の圧縮符号がビットフィルタ３０に登録されている場合、格納部４４に処理を移行させる。
【００５２】
一方、登録部４３は、対象ファイル１から検索された日時表記文字列や単語の圧縮符号がビットフィルタ３０に登録されていない場合、検索された日時表記文字列や単語に圧縮符号を割り当てる。そして、登録部４３は、新たな動的番号を採番し、動的番号に対応付けてコードと圧縮符号を動的辞書３１に登録する。また、登録部４３は、動的辞書３１に登録した圧縮符号をビットフィルタ３０の圧縮符号の項目に登録する。
【００５３】
格納部４４は、ビットマップインデックス３２に情報を格納する。ビットマップインデックス３２は、対象ファイル１から検索された日時表記文字列および単語毎に、当該日時表記文字列および単語が出現したか否かを記憶するインデックスである。格納部４４は、対象ファイル１から検索された日時表記文字列および単語毎の圧縮符号がビットマップインデックス３２に登録されているか否かを判定する。
【００５４】
格納部４４は、圧縮符号が登録されていると判定した場合、圧縮符号のレコードの対象ファイル１に対応するファイル番号に日時表記文字列や単語が出現したことを記録する。
【００５５】
一方、格納部４４は、圧縮符号が登録されていないと判定した場合、ビットマップインデックス３２の第２記憶領域３２Ｂに、圧縮符号のレコードを追加し、対象ファイル１に対応するファイル番号に日時表記文字列や単語が出現したことを記録する。
【００５６】
ファイルライト部４５は、ビットフィルタ３０に基づき、対象ファイル１を変換し出力する。例えば、ファイルライト部４５は、対象ファイル１から検索された日時表記文字列および単語に対応する圧縮符号をビットフィルタ３０から取得する。そして、ファイルライト部４５は、取得した圧縮符号を圧縮ファイル２に出力する。
【００５７】
ファイル検索部５０は、指定された検索条件に従い、ファイルを検索する。ファイル検索部５０は、受付部５１と、取得部５２と、特定部５３とを有する。以下、ファイル検索部５０の各構成について詳細に説明する。
【００５８】
受付部５１は、検索条件とする日付の入力を受け付ける。例えば、受付部５１は、日付の入力を受け付ける操作画面などの入力インタフェースを提供しており、検索条件とする日付の入力を受け付ける。
【００５９】
取得部５２は、入力された日付に対応する単語コードを取得する。例えば、取得部５２は、ビットフィルタ３０の日時部３０Ｂを参照し、入力された日付に対応する単語コードを取得する。
【００６０】
特定部５３は、入力された日付に対応する日時表記文字列を含んだファイルを特定する。例えば、特定部５３は、動的辞書３１を参照し、取得された単語コードをコードに含む圧縮符号を検索する。そして、特定部５３は、ビットマップインデックス３２を参照して、検索された圧縮符号を含むファイルを特定する。
【００６１】
なお、受付部５１は、日時の範囲指定で検索条件の入力を受け付けてもよい。範囲指定で検索条件が入力された場合、取得部５２は、範囲の開始日時と終了日時に対応する単語コードを取得する。特定部５３は、動的辞書３１を参照し、日時に関するビットの示す値が開始日時の単語コードと終了日時の単語コードの間となる単語コードをコードに含む圧縮符号を検索する。そして、特定部５３は、ビットマップインデックス３２を参照して、検索された圧縮符号を含むファイルを特定する。
【００６２】
図９は、範囲指定での日時検索の流れを概略的に示した図である。図９の例は、検索条件として「2/13〜2/15」範囲が指定された場合を示している。ファイル検索部５０は、範囲の開始日時と終了日時に対応する単語コードをビットフィルタ３０の日時部３０Ｂから取得する。図９の例では、範囲の開始日時「2/13」に対応する単語コード「C720D1h」と、範囲の終了日時「2/15」に対応する単語コード「C720F1h」が取得されている。ファイル検索部５０は、動的辞書３１を参照し、「C720D1h」と「C720F1h」の間の単語コードをコードに含む圧縮符号を検索する。図９の例では、圧縮符号「A005h」のコード「CA1101C720E1h」が「C720E1h」を含んでいる。このコード「CA1101C720E1h」の「CA1101」部分は、相対日時「yesterday」に対応するコードである。「CA1101C720E1h」の「C720E1」部分は、絶対日時「2/14」に対応するコードである。図９の例では、圧縮符号「A005h」が検索される。ファイル検索部５０は、ビットマップインデックス３２を参照して、検索された圧縮符号を含むファイルを特定する。図９の例では、圧縮符号「A005h」がインデックスの値が「2」のファイルに含まれると特定される。すなわち、符号化装置１０は、範囲が指定された場合でも指定された範囲の日時が記録されたファイルを検索できる。また、符号化装置１０は、相対日時表現で日時が記録された場合でも絶対日時表現の日時で検索できる。
【００６３】
このように、符号化装置１０は、対象ファイル１に変更を加えることなく、異なる日時表現の文字列をまとめて検索させることができる。また、符号化装置１０は、圧縮ファイル２を解凍することなく、指定された日時や指定された範囲の日時を含む圧縮ファイル２を特定できる。
【００６４】
［処理の流れ］
本実施例に係る符号化装置１０が実行する各種の処理について説明する。最初に、本実施例に係る符号化装置１０が対象ファイル１を符号化して圧縮する圧縮処理の流れについて説明する。図１０Ａおよび図１０Ｂは、圧縮処理の手順の一例を示すフローチャートである。この圧縮処理は、所定のタイミング、例えば、対象ファイル１を指定して圧縮開始を指示する所定操作が行われたタイミングで実行される。
【００６５】
図１０Ａに示すように、検索部４１は、対象ファイル１から文字列を順に読み出す（Ｓ１０）。検索部４１は、読み出した文字列が日時表記文字列であるか判定する（Ｓ１１）。文字列が日時表記文字列である場合（Ｓ１１肯定）、生成部４２は、日時表記文字列をビットフィルタ３０の日時部３０Ｂと照合して、日時表記文字列に対応する単語コードを取得し、日時表記文字列を示すコードを生成する（Ｓ１２）。登録部４３は、日時表記文字の圧縮符号がビットフィルタ３０の日時部３０Ｂに登録されているか判定する（Ｓ１３）。圧縮符号が登録されている場合（Ｓ１３肯定）、後述するＳ１６へ移行する。
【００６６】
一方、圧縮符号が登録されていない場合（Ｓ１３否定）、登録部４３は、日時表記文字列に圧縮符号を割り当て、新たな動的番号を採番し、動的番号に対応付けてコードと圧縮符号を動的辞書３１に登録する（Ｓ１４）。また、登録部４３は、動的辞書３１に登録した圧縮符号をビットフィルタ３０の圧縮符号の項目に登録する（Ｓ１５）。
【００６７】
格納部４４は、日時表記文字列の圧縮符号がビットマップインデックス３２に登録されているか否かを判定する（Ｓ１６）。圧縮符号が登録されている場合（Ｓ１６肯定）、格納部４４は、圧縮符号のレコードの対象ファイル１に対応するファイル番号に日時表記文字列が出現したことを記録する（Ｓ１７）。一方、圧縮符号が登録されていない場合（Ｓ１６否定）、格納部４４は、ビットマップインデックス３２の第２記憶領域３２Ｂに、圧縮符号のレコードを追加し、対象ファイル１に対応するファイル番号に日時表記文字列が出現したことを記録する（Ｓ１８）。
【００６８】
ファイルライト部４５は、日時表記文字列に対応する圧縮符号を圧縮ファイル２に出力する（Ｓ１９）。
【００６９】
検索部４１は、対象ファイル１の読み出しが完了したか否かを判定する（Ｓ２０）。読み出しが完了した場合（Ｓ２０肯定）、処理を終了する。一方、読み出しが完了していない場合（Ｓ２０否定）、上述のＳ１０へ移行する。
【００７０】
一方、文字列が日時表記文字列ではない場合（Ｓ１１否定）、図１０Ｂに示すように、検索部４１は、読み出した文字列が単語であるか判定する（Ｓ２５）。文字列が単語ではない場合（Ｓ２５否定）、図１０Ａに示した、上述のＳ１０へ移行してさらに文字列を読み出す。一方、文字列が単語である場合（Ｓ２５肯定）、生成部４２は、単語をビットフィルタ３０の単語部３０Ａと照合して、単語に対応する単語コードを取得する（Ｓ２６）。登録部４３は、単語の圧縮符号がビットフィルタ３０の単語部３０Ａに登録されているか判定する（Ｓ２７）。圧縮符号が登録されている場合（Ｓ２７肯定）、後述するＳ３０へ移行する。
【００７１】
一方、圧縮符号が登録されていない場合（Ｓ２７否定）、登録部４３は、単語に圧縮符号を割り当て、新たな動的番号を採番し、動的番号に対応付けてコードと圧縮符号を動的辞書３１に登録する（Ｓ２８）。また、登録部４３は、動的辞書３１に登録した圧縮符号をビットフィルタ３０の圧縮符号の項目に登録する（Ｓ２９）。
【００７２】
格納部４４は、単語の圧縮符号がビットマップインデックス３２に登録されているか否かを判定する（Ｓ３０）。圧縮符号が登録されている場合（Ｓ３０肯定）、格納部４４は、圧縮符号のレコードの対象ファイル１に対応するファイル番号に単語が出現したことを記録する（Ｓ３１）。一方、圧縮符号が登録されていない場合（Ｓ３０否定）、格納部４４は、ビットマップインデックス３２の第２記憶領域３２Ｂに、圧縮符号のレコードを追加し、対象ファイル１に対応するファイル番号に単語が出現したことを記録し（Ｓ３２）、図１０Ａに示すＳ１９へ移行する。
【００７３】
次に、本実施例に係る符号化装置１０が入力された日付に対応する日時表記文字列を含んだファイル検索する検索処理の流れについて説明する。図１１は、検索処理の手順の一例を示すフローチャートである。この検索処理は、所定のタイミング、例えば、日付を指定して検索開始を指示する所定操作が行われたタイミングで実行される。
【００７４】
図１１に示すように、取得部５２は、ビットフィルタ３０の日時部３０Ｂを参照し、入力された日付に対応する単語コードを取得する（Ｓ４０）。特定部５３は、動的辞書３１を参照し、取得された単語コードをコードに含む圧縮符号を検索する（Ｓ４１）。特定部５３は、ビットマップインデックス３２を参照して、検索された圧縮符号を含むファイルを特定する（Ｓ４２）。特定部５３は、特定されたファイルを検索結果として出力し（Ｓ４３）、処理を終了する。この検索結果の出力は、ファイルへの出力であってもよく、ディスプレイなどの表示部への出力であってもよく、外部装置への出力であってもよい。
【００７５】
［効果］
上述してきたように、本実施例に係る符号化装置１０は、対象ファイル１から少なくとも日付または時刻を表記する日時表記文字列を検索する。符号化装置１０は、日時表記文字列の検索該当に応じて、日時表記文字列を特定の日時表記フォーマットに変換した正規化日時表記および日時表記文字列を識別する識別符号を含む変換日時符号を生成する。符号化装置１０は、変換日時符号および日時表記文字列を対応づけたビットフィルタ３０に基づき、対象ファイル１を変換し出力する。これにより、符号化装置１０は、検索対象のテキストデータに変更を加えることなく、異なる日時表現の文字列をまとめて検索させることができる。
【００７６】
また、本実施例に係る符号化装置１０は、正規化日時表記に、日付または時刻を一意に特定可能に表記される絶対日時表記を用いる。これにより、符号化装置１０は、正規化日時表記の比較により異なる日時表現の文字列をまとめて比較できる。
【００７７】
また、本実施例に係る符号化装置１０は、正規化日時表記に対応し、日時順の付与されたコードを含む変換日時符号を生成する。これにより、符号化装置１０は、変換日時符号に含まれるコードの比較により日時の順番を判別できる。
【００７８】
また、本実施例に係る符号化装置１０は、対象ファイル１の出現した日時表記文字列に対して動的に圧縮符号を割り当て、日時表記文字列の正規化日時表記に対応付けて当該日時表記文字列の圧縮符号を辞書に登録する。符号化装置１０は、対象ファイル１の日時表記文字列を辞書に登録された当該日時表記文字列の圧縮符号に変換して出力する。これにより、符号化装置１０は、対象ファイル１を解凍することなく日時表現の日時をまとめて検索可能な形式に圧縮できる。
【実施例２】
【００７９】
さて、これまで開示の装置に関する実施例について説明したが、開示の技術は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
【００８０】
例えば、上記の実施例では、日時表記文字列を、年、月日、時間に分けて、それぞれごとに単語コードが日時順となるようにコード体系を定めた場合について説明したが、これに限定されない。例えば、年および月日や、月日および時間、年、月日および時間で日時順となるように単語コードを定めてもよい。
【００８１】
また、上記の実施例では、年表記パターン、月日表記パターン、時間表記パターンのそれぞれで使用する単語コードに含める正規化日時表記のコードを年、月日、日時など日時を直接的に示した絶対日時表記とする場合について説明したが、これに限定されない。例えば、単語コードに含める正規化日時表記のコードは、例えば、基準となる日時または時刻からの相対日時で表記される相対日時表記のコードであってもよい。例えば、正規化日時表記のコードは、ユーザが指定した特定の日時や基準となるイベントが発生した日時を基準として相対日時表記のコードを用いてもよい。
【００８２】
また、上記の実施例では、様々な表記形式での日時表記文字列の単語コードを予めビットフィルタ３０の日時部３０Ｂに登録しておく場合について説明したが、これに限定されない。例えば、日時表記文字列が検索された場合、生成部４２が、日時表記文字列が示す日時および表記形式に応じて、単語コードを生成して日時表記文字列を示すコードを生成してもよい。
【００８３】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、圧縮部４０（検索部４１、生成部４２、登録部４３、格納部４４、ファイルライト部４５）、ファイル検索部５０（受付部５１、取得部５２、特定部５３）の各処理部が適宜統合されてもよい。また、各処理部の処理が適宜複数の処理部の処理に分離されてもよい。さらに、各処理部にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００８４】
（符号化装置のハードウェア構成）
図１２は、符号化装置のハードウェア構成を示す図である。図１２の例が示すように、コンピュータ４００は、各種演算処理を実行するＣＰＵ４０１と、ユーザからのデータ入力を受け付ける入力装置４０２と、モニタ４０３とを有する。また、コンピュータ４００は、記憶媒体からプログラム等を読み取る媒体読取装置４０４と、他の装置と接続するためのインターフェース装置４０５と、他の装置と無線により接続するための無線通信装置４０６とを有する。また、コンピュータ４００は、各種情報を一時記憶するＲＡＭ４０７と、ハードディスク装置４０８とを有する。また、各装置４０１〜４０８は、バス４０９に接続される。
【００８５】
ハードディスク装置４０８には、例えば図３に示した圧縮部４０、ファイル検索部５０の各処理部と同様の機能を有する符号化プログラムが記憶される。また、ハードディスク装置４０８には、符号化プログラムを実現するための各種データが記憶される。
【００８６】
ＣＰＵ４０１は、ハードディスク装置４０８に記憶された各プログラムを読み出して、ＲＡＭ４０７に展開して実行することで各種の処理を行う。これらのプログラムは、コンピュータ４００を、例えば図３に示した圧縮部４０およびファイル検索部５０として機能させることができる。
【００８７】
なお、上記の符号化プログラムは、必ずしもハードディスク装置４０８に記憶されている必要はない。例えば、コンピュータ４００が読み取り可能な記憶媒体に記憶されたプログラムを、コンピュータ４００が読み出して実行するようにしてもよい。コンピュータ４００が読み取り可能な記憶媒体は、例えば、ＣＤ−ＲＯＭやＤＶＤディスク、ＵＳＢ（Universal  Serial  Bus）メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、ＬＡＮ（Local  Area  Network）等に接続された装置にこのプログラムを記憶させておき、コンピュータ４００がこれらからプログラムを読み出して実行するようにしてもよい。
【００８８】
図１３は、コンピュータで動作するプログラムの構成例を示す図である。コンピュータ４００において、図１２に示すハードウェア群５００（４０１〜４０９）の制御を行なうＯＳ５０１が動作する。ＯＳ５０１に従った手順でＣＰＵ４０１が動作して、ハードウェア群５００の制御・管理が行なわれることにより、アプリケーションプログラム５０３やミドルウェア５０２に従った処理がハードウェア群５００で実行される。さらに、コンピュータ４００において、ミドルウェア５０２またはアプリケーションプログラム５０３が、ＲＡＭ４０７に読み出されてＣＰＵ４０１により実行される。
【００８９】
ＣＰＵ４０１により圧縮機能が呼び出された場合、ミドルウェア５０２またはアプリケーションプログラム５０３の少なくとも一部に基づく処理を行なうことで、（それらの処理をＯＳ５０１に基づいてハードウェア群５００を制御して）圧縮部４０およびファイル検索部５０の機能が実現される。圧縮機能は、それぞれアプリケーションプログラム５０３自体に含まれてもよいし、アプリケーションプログラム５０３に従って呼び出されることで実行されるミドルウェア５０２の一部であってもよい。
【００９０】
アプリケーションプログラム５０３（またはミドルウェア５０２）の圧縮機能により得られる圧縮ファイル２は、部分的に伸張することも可能である。圧縮ファイル２の途中を伸張する場合には、伸張対象の部分までの圧縮データの伸張処理が抑制されるため、ＣＰＵ４０１の負荷が抑制される。また、伸張対象の圧縮データを部分的にＲＡＭ４０７上に展開するので、ワークエリアも削減される。
【００９１】
図１４は、実施形態のシステムにおける装置の構成例を示す図である。図１４のシステムは、コンピュータ４００ａ、コンピュータ４００ｂ、基地局４２０およびネットワーク４３０を含む。コンピュータ４００ａは、無線または有線の少なくとも一方により、コンピュータ４００ｂと接続されたネットワーク４３０に接続している。
【符号の説明】
【００９２】
１    対象ファイル
２    圧縮ファイル
１０  符号化装置
２０  記憶部
２１  制御部
３０  ビットフィルタ
３０Ａ  単語部
３０Ｂ  日時部
３１  動的辞書
３２  ビットマップインデックス
４０  圧縮部
４１  検索部
４２  生成部
４３  登録部
４４  格納部
４５  ファイルライト部
５０  ファイル検索部
５１  受付部
５２  取得部
５３  特定部
【図１】
0006507682.tif 000002
【図２】
0006507682.tif 000003
【図３】
0006507682.tif 000004
【図４Ａ】
0006507682.tif 000005
【図４Ｂ】
0006507682.tif 000006
【図５Ａ】
0006507682.tif 000007
【図５Ｂ】
0006507682.tif 000008
【図５Ｃ】
0006507682.tif 000009
【図５Ｄ】
0006507682.tif 000010
【図６】
0006507682.tif 000011
【図７】
0006507682.tif 000012
【図８】
0006507682.tif 000013
【図９】
0006507682.tif 000014
【図１０Ａ】
0006507682.tif 000015
【図１０Ｂ】
0006507682.tif 000016
【図１１】
0006507682.tif 000017
【図１２】
0006507682.tif 000018
【図１３】
0006507682.tif 000019
【図１４】
0006507682.tif 000020