(57)【特許請求の範囲】
【請求項１】
コンピュータに、
対象ファイルを静的辞書および動的辞書を用いて符号化する際に、前記動的辞書に登録される単語のうち、特定の単語群と符合群とを対応づけた外部辞書に含まれる単語を抽出し、
該抽出される単語の前記外部辞書における符号と、動的に割り当てられる動的符号とを対応付け、前記動的辞書に登録する
処理を行わせる符号化プログラム。
【請求項２】
前記符号化の際に、複数のファイルのそれぞれについて複数の所定の単語がそれぞれ存在するか否かを示す存否情報に、符号化対象のファイルに該抽出される単語が存在することを示すインデックス情報を生成する
ことを特徴とする請求項１に記載の符号化プログラム。
【請求項３】
対象ファイルを静的辞書および動的辞書を用いて符号化する際に、前記動的辞書に登録される単語のうち、特定の単語群と符合群とを対応づけた外部辞書に含まれる単語を抽出する抽出部と、
前記抽出部によって抽出される単語の前記外部辞書における符号と、動的に割り当てられる動的符号とを対応付け、前記動的辞書に登録する登録部と、
を有することを特徴とする符号化装置。
【請求項４】
コンピュータが、
対象ファイルを静的辞書および動的辞書を用いて符号化する際に、前記動的辞書に登録される単語のうち、特定の単語群と符合群とを対応づけた外部辞書に含まれる単語を抽出し、
該抽出される単語の前記外部辞書における符号と、動的に割り当てられる動的符号とを対応付け、前記動的辞書に登録する
処理を実行する符号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、符号化プログラムなどに関する。
【背景技術】
【０００２】
単一のファイルの圧縮においては、高頻度の単語に対する静的辞書と、静的辞書に含まれず、且つ、当該ファイルにおいて複数回出現する単語について生成された動的辞書とを用いた符号化が行われている（例えば、特許文献１参照）。ここでいう静的辞書は、母集団となるファイル群やデータで高頻度に出現する単語と符号とを対応づけた辞書であり、動的辞書は、圧縮対象データ中で複数回出現する単語についてその単語と符号とを対応づける辞書である。
【０００３】
複数のファイルの圧縮を行う際に、複数のファイルのいずれが所定の文字情報を含むかを示すインデックス情報を生成する技術が知られている（例えば、特許文献３参照）。インデックス情報は、複数のファイルのいずれが検索対象の文字情報を含むか否かを示すインデックスとして用いられる。文字情報とは、例えば、１グラムの文字コードが連接する文字列のことをいう。
【０００４】
一方、単語に対応付けられたポインタテーブル型のインデックス情報を生成する技術が知られている（例えば、非特許文献１参照）。かかる技術について、図１を参照して説明する。図１は、ポインタテーブル型インデックスの生成処理の参考例を示す図である。図１に示すように、かかる技術では、文書ファイルごとに単語を抽出し、文書ＩＤと単語ＩＤとその出現位置に対応づけられたインデックス情報を生成し、それを収集し、単語ＩＤについてソートする。これにより、単語ＩＤをもとに文書ＩＤと出現位置とを対応づけた転置インデックス、すなわちポインタテーブル型インデックス情報を生成する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平９−２１４３５２号公報
【特許文献２】特開２００８−２７８２５８号公報
【特許文献３】国際公開第２０１３／０３８５２７号
【非特許文献】
【０００６】
【非特許文献１】西田圭介著「Googleを支える技術」技術評論社、2008年4月25日
【非特許文献２】関口宏司著「ApacheLucene入門」技術評論社、2006年6月25日
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来の技術では、動的辞書に登録される単語がある場合、複数のファイルのいずれが当該単語を含むかを示すインデックス情報を容易に生成できないという問題がある。一方、別の観点では、動的辞書に登録される単語がある場合、複数のファイルのいずれが当該単語を含むかを示すインデックス情報を複数の小規模なシステムにおいて容易に分散して生成することができないという問題がある。
【０００８】
例えば、複数のファイルの圧縮を行う際には、静的辞書に含まれる単語については、インデックス情報を生成することができる。ところが、動的辞書として登録された単語については、ファイルごとに符号がばらばらである場合に、複数のファイル全てに関するインデックス情報を容易に生成できない。
【０００９】
また、インデックス情報を生成する従来の技術では、文字情報についてのインデックス情報であり、そもそも単語についてのインデックス情報ではない。さらに、新語や流行語と呼ばれる単語は静的辞書には含まれない。したがって、インデックス情報を生成する従来の技術では、複数のファイルのいずれが当該単語を含むかを示すインデックス情報を容易に生成できない。
【００１０】
一方、単語に対応づけられたポインタテーブル型のインデックス情報を生成する従来の技術では、文書ファイルごとに含まれる単語が異なるので、複数の文書ファイルに含まれる単語の単語ＩＤをもとにしたポインタテーブル型インデックスを容易に生成できない。さらに、更新や追加された文書ファイルに新語や流行語などが含まれることがあり、再度、インデックス情報の収集処理、ソート処理および転置処理が繰り返される。そうすると、かかる従来の技術では、インデックス情報の収集処理と転置処理に膨大な資源が必要であり、小規模な資源にて容易に分散してインデックス情報を生成できない。
【００１１】
１つの側面では、動的辞書に登録される単語であっても、複数のファイルに関するインデックス情報を容易に生成することを目的とする。また、１つの側面では、動的辞書に登録される単語であっても、複数のファイルに関するインデックス情報を複数の小規模なシシテムにおいても容易に分散して生成することを目的とする。
【課題を解決するための手段】
【００１２】
第１の案では、符号化プログラムは、コンピュータに、対象ファイルを静的辞書および動的辞書を用いて符号化する際に、前記動的辞書に登録される単語のうち、特定の単語群と符合群とを対応づけた外部辞書に含まれる単語を抽出し、該抽出される単語の前記外部辞書における符号と、動的に割り当てられる動的符号とを対応付け、前記動的辞書に登録する、処理を実行させる。
【発明の効果】
【００１３】
１つの態様によれば、動的辞書に登録される単語であっても、複数のファイルに関するインデックス情報を生成することができる。また、動的辞書に登録される単語であっても、複数のファイルに関するインデックス情報を複数の小規模なシステムにおいて容易に分散して生成することができる。
【図面の簡単な説明】
【００１４】
【図１】図１は、ポインタテーブル型インデックスの生成処理の参考例を示す図である。
【図２】図２は、実施例１に係るビットマップ型インデックスの生成処理の流れの一例を示す図である。
【図３】図３は、実施例１に係る動的辞書の一例を示す図である。
【図４】図４は、ビットマップ型インデックスの構成の一例を示す図である。
【図５】図５は、符号化ファイルの構成例を示す図である。
【図６】図６は、実施例１に係る符号化装置の構成の一例を示す機能ブロック図である。
【図７】図７は、実施例１に係る符号化処理のフローチャートの一例を示す図である。
【図８】図８は、実施例２に係るビットマップ型インデックスの階層化の一例を示す図である。
【図９】図９は、階層化されたセグメント群を用いたファイルの絞込み例を示す図である。
【図１０】図１０は、階層化されたセグメント群を実装したコンピュータシステムの構成例を示す図である。
【図１１】図１１は、コンピュータのハードウェア構成例を示す図である。
【図１２】図１２は、コンピュータで動作するプログラムの構成例を示す図である。
【図１３】図１３は、実施形態のシステムにおける装置の構成例を示す図である。
【発明を実施するための形態】
【００１５】
以下に、本願の開示する符号化プログラム、符号化装置および符号化方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００１６】
［実施例１に係るビットマップ型インデックスの生成処理］
図２は、実施例１に係るビットマップ型インデックスの生成処理の流れの一例を示す図である。図２に示すように、符号化装置は、特定のファイルに含まれる単語を静的辞書Ｓ０および動的辞書Ｄ０を用いて符号化する際に、特定のファイルから静的辞書に含まれない単語のうち外部辞書Ｅ０に含まれる単語を抽出する。符号化装置は、抽出される単語の外部辞書Ｅ０における符号と、動的に割り当てられる動的符号とを対応付けて動的辞書Ｄ０に登録する。これにより、符号化装置は、特定のファイルを符号化する際に動的辞書Ｄ０に登録された単語であっても、外部辞書Ｅ０に対応付けられた符号をともに登録することで、当該符号を複数のファイルで共通して用いることができる。この結果、符号化装置は、複数のファイルそれぞれの単語に関するビットマップ型インデックスを容易に生成できる。
【００１７】
ここでいう静的辞書Ｓ０とは、一般的な英語辞典、国語辞典や教科書などを基にして、文書中に出現する単語の出現頻度を特定し、出現頻度のより高い単語に対して、より短い符号を割り当てた辞書のことをいう。静的辞書Ｓ０には、それぞれの単語に対応する符号である静的コードがあらかじめ登録されている。
【００１８】
ここでいう動的辞書Ｄ０とは、静的辞書Ｓ０に登録されず、且つ、外部辞書Ｅ０に登録されている単語と、外部辞書Ｅ０における符号と、動的に付された動的コードとを対応付けた辞書である。静的辞書Ｓ０に登録されていない単語には、一例として、出現頻度の低い単語（低頻度単語）が挙げられる。かかる単語（低頻度単語）には、専門単語、新語、未知語などがある。ここでいう専門単語とは、ある特定の学問の分野や業界などの間で通用する単語であり、符号化する文書の中で繰り返し出現する特長がある単語のことをいう。新語とは、流行語などの新しく作られた単語であり、符号化する文書の中で繰り返し出現する特長がある単語のことをいう。未知語とは、専門単語でなく、新語でない単語であり、符号化する文書の中で繰り返し出現する特長がある単語のことをいう。なお、動的辞書Ｄ０には、静的辞書Ｓ０に登録されていない単語の出現順に、動的コードに対応付けられた単語がバッファ部に登録される。動的辞書Ｄ０に関する詳しい説明は後述する。
【００１９】
ここでいう外部辞書Ｅ０とは、例えば、静的辞書Ｓ０に登録されていない単語を専門ごとに単語コードと対応付けた辞書などの、単語と符号とを対応づけた共通辞書である。外部辞書Ｅ０には、一例として、専門辞書、新語辞書および未知語辞書などがある。専門辞書には、専門単語が記憶される。新語辞書には、新語が記憶される。未知語辞書には、未知語が記憶される。低頻度単語に付される動的コードは、同一の単語であっても符号化対象のファイルごとに異なるが、外部辞書Ｅ０における単語コードは、例えば、同一の単語であれば符号化対象のファイルごとに共通化されたり、複数の符号化作業において共通化される。
【００２０】
符号化装置の符号化処理の一例を、以下に説明する。例えば、符号化装置は、符号化対象のファイルｆ３を記憶領域にロードする。なお、ファイルｆ３の「３」は、ファイルＩＤが「３」であることを示す。
【００２１】
符号化装置は、符号化対象のファイルｆ３を記憶領域から読み出し、読み出したファイルｆ３に対して字句解析を行う。ここでいう字句解析とは、符号化されていない状態のファイルを単語に分割することをいう。
【００２２】
符号化装置は、静的辞書Ｓ０と単語の文字列とを比較して、静的辞書Ｓ０に単語の文字列に対応する符号があるか否かを判定する。なお、かかる判定処理は、静的辞書Ｓ０を用いて符号化可能な単語の文字列を特定するビットフィルタと単語の文字列とを比較して、単語の文字列がビットフィルタにヒットするか否かを判定しても良い。ここでいうビットフィルタとは、静的辞書Ｓ０を用いて符号化可能な単語の文字列を特定するフィルタのことをいう。符号化装置は、静的辞書Ｓ０に単語の文字列に対応する符号がある場合には、静的辞書Ｓ０に基づいて単語の文字列を、当該単語の文字列に対応する符号（静的コード）に符号化し、静的コードを出力する。
【００２３】
符号化装置は、静的辞書Ｓ０に単語の文字列に対応する符号がない場合には、外部辞書Ｅ０から、単語の文字列に対応する符号（単語コード）および当該単語が登録された外部辞書Ｅ０のＩＤを取得する。なお、符号化装置は、外部辞書Ｅ０における符号を、自装置にて割り当てても良いし、単語コードを割り当てるマスタ装置に問い合わせても良い。実施例では、符号化装置は、外部辞書Ｅ０における符号を、マスタ装置に問い合わせる場合を説明する。
【００２４】
符号化装置は、単語の文字列と、外部辞書Ｅ０における符号（単語コード）と、動的に付された動的コードとを動的辞書Ｄ０に登録する。符号化装置は、動的辞書Ｄ０に基づいて、登録した単語の文字列を、当該登録した単語の文字列に対応する単語コードに符号化し、単語コードを出力する。なお、符号化装置は、単語の文字列が動的辞書Ｄ０に登録されている場合には、動的辞書Ｄ０に基づいて、当該単語の文字列を、当該単語の文字列に対応する単語コードに符号化し、単語コードを出力すれば良い。
【００２５】
符号化装置は、静的コードおよび動的辞書Ｄ０に基づいた単語コードそれぞれを、単語の出現順に、符号化データｃ３のエリアに出力する。符号化データｃ３のエリアは、ファイルｆ３に対応する符号化ファイルの符号化データのエリアである。
【００２６】
そして、符号化装置は、複数の単語コードそれぞれについて、ファイルｆ３内の存否をビットマップ型インデックスＢＩに設定する。
【００２７】
ここでいうビットマップ型インデックスＢＩとは、全文検索のためのインデックスであり、単語を指定するポインタと単語の各対象ファイルでの存否を示すビットを連結したビット列である。すなわち、ビットマップ型インデックスＢＩとは、ファイルに含まれる単語について、ファイルごとの存否をインデックス化したビットマップのことをいう。検索処理時には、このビットマップを、ビットのＯＮ・ＯＦＦに応じて検索対象の単語を含むか否かを示すインデックスとして用いることができる。単語を指定するポインタとしては、例えば、単語の符号が採用される。単語の符号は、静的コードおよび単語コードのことをいい、単語ＩＤと同義である。なお、単語を指定するポインタは、例えば、単語そのものを用いても良い。すなわち、ビットマップ型インデックスＢＩは、単語を指定するポインタで示される単語ごとのビットマップを纏めたものである。図２に示すように、ビットマップ型インデックスＢＩのＸ軸はファイルＩＤを表し、ビットマップ型インデックスＢ１のＹ軸は単語ＩＤを表す。つまり、ビットマップ型インデックスＢＩは、単語ＩＤが示す単語の、複数のファイルＩＤが示すファイルごとの存否を表す。
【００２８】
一例として、「Ｂａｋｅｒ」の単語ＩＤ「Ａ００２ｈ」に対応するビットマップが示されている。単語ＩＤ「Ａ００２ｈ」が示す単語「Ｂａｋｅｒ」がファイルに存在する場合には、当該単語のファイルの存否としてＯＮ、すなわち２進数の「１」が設定され、当該単語がファイルに存在しない場合には、当該単語のファイルの存否としてＯＦＦ、すなわち２進数の「０」が設定される。ここでは、ファイルｆ３には、単語「Ｂａｋｅｒ」が存在するので、「Ｂａｋｅｒ」の単語ＩＤ「Ａ００２ｈ」に対応するビットマップには、ファイルＩＤ「３」に対応するビットに「１」が設定される。
【００２９】
［動的辞書の一例］
図３は、実施例１に係る動的辞書の一例を示す図である。図３に示される動的辞書Ｄ０は、バッファ部Ｄ１とアドレステーブルＤ２とを含む。バッファ部Ｄ１は、文字列を記憶する。アドレステーブルＤ２は、動的コードと、格納位置と、データ長と、外部辞書ＩＤと、単語コードとを対応付けて保持する。動的コードは、あらかじめ定められた固定長のコードであり、単語の文字列が登録された順に割り当てられる。ここでは、動的コードは、１６進数「Ｆ」で始まる固定長３バイトのコードである。格納位置は、バッファ部Ｄ１に格納された文字列の位置を示す。データ長は、バッファ部Ｄ１に格納された文字列の長さ（バイト長）を示す。外部辞書ＩＤは、単語が登録されている外部辞書のＩＤを示す。単語コードは、単語に割り当てられたコードであり、例えば圧縮符号である。かかる単語コードは、動的辞書Ｄ０に登録された単語であっても、同じ単語であれば、複数のファイルで共通して用いられる。
【００３０】
例えば、単語の文字列「Ｂａｋｅｒ」に動的コードが割り当てられる場合について説明する。
【００３１】
符号化装置は、単語の文字列「Ｂａｋｅｒ」をバッファ部Ｄ１に格納する。符号化装置は、単語の文字列を格納した格納位置および格納したデータ長をアドレステーブルＤ２に登録する。さらに、符号化装置は、単語の文字列「Ｂａｋｅｒ」に割り当てられた単語コードおよび外部辞書ＩＤをアドレステーブルＤ２に登録する。ここでは、符号化装置は、格納位置として「１６」、データ長として「６」、外部辞書ＩＤとして「５３」、単語コードとして「ＣＤ０００９ｈ」をアドレステーブルＤ２に登録する。
【００３２】
符号化装置は、単語の文字列を、当該単語の文字列に対応付けられたアドレステーブルＤ２の単語コードに符号化する。ここでは、符号化装置は、単語の文字列「Ｂａｋｅｒ」を当該単語の文字列に対応付けられた動的コード「Ａ００２ｈ」に符号化する。
【００３３】
［ビットマップ型インデックスの構成の一例］
図４は、ビットマップ型インデックスの構成の一例を示す図である。図４に示すように、ビットマップ型インデックスＢＩは、超高頻度の単語、高頻度の単語および低頻度の単語に係る単語ＩＤごとにビットマップを対応づける。ビットマップの各ビットが、当該ビットマップに対応する単語ＩＤが示す単語が含まれているか否かを表す。
【００３４】
超高頻度の単語の単語ＩＤおよび高頻度の単語の単語ＩＤは、静的辞書Ｓ０に登録される。低頻度の単語の単語ＩＤは、外部辞書Ｅ０に登録される。すなわち、低頻度の単語の単語ＩＤは、専門辞書、新語辞書や未知語辞書により共通化される。そして、低頻度の単語の単語ＩＤは、動的辞書Ｄ０に動的コードとともに登録される。
【００３５】
例えば、低頻度の単語の単語ＩＤについて、単語ＩＤｘのビットマップが「・・・０１１０」となっている。ビットマップ「・・・０１１０」は、１ビット目に「０」が格納されているのでファイル１に単語ＩＤｘが示す単語が含まれず、２ビット目に「１」が格納されているのでファイル２に単語ＩＤｘが示す単語が含まれ、３ビット目に「１」が格納されているのでファイル３に単語ＩＤｘが示す単語が含まれることを表す。また、４ビット目に「０」が格納されているのでファイル４に単語ＩＤｘが示す単語が含まれていないことを表す。なお、ビットマップ「・・・０１１０」は、ファイル５以降の他の各ファイルに単語ＩＤｘが含まれるか否かについても表す。
【００３６】
［符号化ファイルの構成例］
図５は、符号化ファイルの構成例を示す図である。図５に示すように、符号化ファイルＦ２は、ヘッダ部と、符号化データと、トレーラ部とを有する。符号化データは、複数のファイルそれぞれの符号化された単語コード群を記憶する。トレーラ部は、各ファイルのアドレス、各ファイルの動的辞書Ｄ０の情報、ビットマップ型インデックスＢＩなどを記憶する。各ファイルのアドレスは、複数のファイルが符号化された各符号化データを格納するアドレスを示す。各ファイルのアドレスは、一例として、符号化データの先頭からの相対アドレスである。各ファイルの動的辞書Ｄ０の情報は、各ファイルについて、図３に示した動的辞書の情報に対応する。ビットマップ型インデックスＢＩは、複数のファイルに対応するビットマップ型インデックスを示す。ヘッダ部には、各ファイルのアドレスへのポインタやトレーラ部に格納された動的辞書Ｄ０へのポインタが格納される。符号化装置は、複数のファイルを符号化すると、符号化された結果である各符号化データを符号化ファイルＦ２に格納し、格納した各アドレスを各ファイルのアドレスに格納する。復号化処理では、ヘッダ部の各ファイルのアドレスへのポインタを利用して、トレーラ部の各ファイルのアドレスから復号化対象のファイルのアドレスを参照する。復号化処理は、ヘッダ部の動的辞書Ｄ０へのポインタを利用し、動的辞書Ｄ０を参照する。
【００３７】
［実施例１に係る符号化装置の構成］
図６は、実施例１に係る符号化装置の構成の一例を示す機能ブロック図である。図６に示すように、符号化装置１００は、マスタ装置２００と接続する。
【００３８】
マスタ装置２００は、単語コード割当部２１１および外部辞書部２２１を有する。
【００３９】
外部辞書部２２１は、静的辞書部１２１に登録されていない単語を専門ごとに単語コードと対応付けた辞書である。外部辞書部２２１には、例えば、専門辞書、新語辞書および未知語辞書が含まれる。一例として、外部辞書部２２１は、辞書ごとに、単語の文字列および単語コードが対応付けられている。なお、外部辞書部２２１は、外部辞書Ｅ０に対応する。
【００４０】
単語コード割当部２１１は、符号化装置１００から単語の文字列に対応する単語コードの問い合わせを受け付けると、外部辞書部２２１を用いて、単語の文字列に対応する単語コードを割り当てる。そして、単語コード割当部２１１は、割り当てた単語コードおよび単語が登録された辞書のＩＤを含む応答を符号化装置１００に送信する。
【００４１】
符号化装置１００は、符号化部１１０および記憶部１２０を有する。
【００４２】
符号化部１１０は、図２に示したビットマップ型インデックスの生成処理を実行する処理部である。符号化部１１０は、ファイルリード部１１１、判定部１１２、第１符号化部１１３、第２符号化部１１４、更新部１１５、インデックス設定部１１６およびファイルライト部１１７を有する。
【００４３】
記憶部１２０は、例えばフラッシュメモリ（Flash  Memory）やＦＲＡＭ（登録商標）（Ferroelectric  Random  Access  Memory）などの不揮発性の半導体メモリ素子などの記憶装置に対応する。記憶部１２０は、静的辞書部１２１、動的辞書部１２２およびビットマップ型インデックス部１２３を有する。
【００４４】
静的辞書部１２１は、一般的な英語辞典、国語辞典や教科書などを基にして、文書中に出現する単語の出現頻度を特定し、出現頻度のより高い単語に対して、より短い符号を割り当てた辞書である。なお、静的辞書部１２１は、静的辞書Ｓ０に対応する。
【００４５】
動的辞書部１２２は、静的辞書部１２１に登録されていない単語と動的に付された動的コードおよび単語コードとを対応付けた辞書である。なお、動的辞書部１２２は、動的辞書Ｄ０に対応する。動的辞書部１２２の説明は、図３と同様であるので、その説明を省略する。
【００４６】
ファイルリード部１１１は、符号化対象のファイルＦ１に含まれる１つの対象ファイルを記憶領域に読み出す。ファイルリード部１１１は、対象ファイルを記憶領域から読み出し、読み出した対象ファイルに対して字句解析を行う。ファイルリード部１１１は、字句解析した結果の各単語を順次判定部１１２に出力する。
【００４７】
判定部１１２は、単語が静的辞書部１２１に登録されているか否かを判定する。例えば、判定部１１２は、ファイルリード部１１１から出力された単語の文字列が静的辞書部１２１のビットフィルタにヒットするか否かを判定する。判定部１１２は、静的辞書部１２１のビットフィルタにヒットしないと判定した場合には、単語の文字列を第１符号化部１１３に出力する。判定部１１２は、静的辞書部１２１のビットフィルタにヒットすると判定した場合には、単語の文字列を第２符号化部１１４に出力する。
【００４８】
第１符号化部１１３は、単語の文字列を動的辞書部１２２に基づいて符号化する。例えば、第１符号化部１１３は、単語の文字列が動的辞書部１２２のバッファ部Ｄ１に既に格納されているか否かを判定する。第１符号化部１１３は、単語の文字列が動的辞書部１２２のバッファ部Ｄ１に既に格納されていない場合には、当該単語の文字列に対応する単語コードをマスタ装置２００に問い合わせる。第１符号化部１１３は、マスタ装置２００から問い合わせの応答を受け付けると、当該応答に含まれる単語コードおよび単語が登録された辞書のＩＤを、アドレステーブルＤ２の新たな動的コードに対応するレコードに格納する。加えて、第１符号化部１１３は、単語の文字列をバッファ部Ｄ１に格納するとともに、アドレステーブルＤ２の新たな動的コードに対応するレコードに、当該単語の文字列を格納した格納位置および格納したデータ長を格納する。第１符号化部１１３は、単語の文字列を、当該単語の文字列に対応付けられた、アドレステーブルＤ２の単語コードに符号化する。第１符号化部１１３は、符号化された単語コードを更新部１１５に出力する。
【００４９】
第２符号化部１１４は、単語の文字列を静的辞書部１２１に基づいて符号化する。例えば、第２符号化部１１４は、静的辞書部１２１の静的辞書に基づいて、単語の文字列を、当該単語の文字列に対応する静的コード（単語コード）に符号化する。第２符号化部１１４は、符号化された単語コードを更新部１１５に出力する。
【００５０】
更新部１１５は、第１符号化部１１３および第２符号化部１１４から単語コードを取得し、取得した順に、取得した単語コードを対象ファイルに対応する符号化データの記憶領域に蓄積することで、当該記憶領域を更新する。
【００５１】
インデックス設定部１１６は、符号化された単語コードについて、対象ファイルの存否をビットマップ型インデックス部１２３に設定する。例えば、インデックス設定部１１６は、符号化された単語コードに対応するビットマップの、対象ファイルにおけるファイルＩＤに対応するビットに存在することを示す「１」を設定する。
【００５２】
ファイルライト部１１７は、符号化対象のファイルＦ１の複数の対象ファイルを全て符号化した後、記憶領域に書き込まれたそれぞれの符号化データ（単語コード）を符号化ファイルＦ２に格納する。ファイルライト部１１７は、各対象ファイルの動的辞書部１２２の情報、各対象ファイルを符号化した結果である各符号化データのアドレスおよびビットマップ型インデックス部１２３を符号化ファイルＦ２のトレーラ部に書き込む。
【００５３】
［実施例１に係る符号化処理の処理手順］
次に、図６に示した符号化部１１０の処理手順について、図７を参照して説明する。図７は、実施例１に係る符号化処理のフローチャートの一例を示す図である。
【００５４】
図７に示すように、符号化部１１０は、前処理を実行する（ステップＳ１１）。例えば、符号化部１１０は、各種記憶領域を記憶部１２０に確保する。そして、符号化部１１０は、符号化対象のファイルＦ１内の複数の対象ファイルのうち１つの対象ファイルの文字列を読み出し、読出用の記憶領域に格納する（ステップＳ１２）。
【００５５】
符号化部１１０は、読出用の記憶領域から、１つの対象ファイルの単語の文字列を読み出す（ステップＳ１３）。例えば、符号化部１１０は、１つの対象ファイルに対して字句解析を行い、字句解析した結果の単語の文字列を先頭から読み出す。
【００５６】
符号化部１１０は、静的辞書部１２１に単語の文字列が登録済みであるか否かを判定する（ステップＳ１４）。静的辞書部１２１に単語の文字列が登録済みであると判定した場合には（ステップＳ１４；Ｙｅｓ）、符号化部１１０は、静的辞書部１２１に登録されている静的コード（単語コード）を出力する（ステップＳ１５）。そして、符号化部１１０は、ステップＳ２１に移行する。
【００５７】
一方、静的辞書部１２１に単語の文字列が登録済みでないと判定した場合には（ステップＳ１４；Ｎｏ）、符号化部１１０は、動的辞書部１２２を参照する（ステップＳ１６）。符号化部１１０は、動的辞書部１２２に単語の文字列が登録済みであるか否かを判定する（ステップＳ１７）。例えば、符号化部１１０は、単語の文字列が動的辞書部１２２のバッファ部Ｄ１に既に格納されているか否かを判定する。
【００５８】
動的辞書部１２２に単語の文字列が登録済みであると判定した場合には（ステップＳ１７；Ｙｅｓ）、符号化部１１０は、ステップＳ２０に移行する。
【００５９】
一方、動的辞書部１２２に単語の文字列が登録済みでないと判定した場合には（ステップＳ１７；Ｎｏ）、符号化部１１０は、当該単語に対する単語コードをマスタ装置２００に問い合わせる（ステップＳ１８）。符号化部１１０は、マスタ装置２００からの問い合わせの応答に含まれる単語コードを動的辞書部１２２に登録する（ステップＳ１９）。例えば、符号化部１１０は、問い合わせの応答に含まれる単語コードおよび単語が登録された辞書のＩＤを、アドレステーブルＤ２の新たな動的コードに対応するレコードに格納する。加えて、符号化部１１０は、単語の文字列をバッファ部Ｄ１に格納するとともに、アドレステーブルＤ２の新たな動的コードに対応するレコードに、当該単語の文字列を格納した格納位置および格納したデータ長を格納する。そして、符号化部１１０は、ステップＳ２０に移行する。
【００６０】
ステップＳ２０において、符号化部１１０は、動的辞書部１２２に登録されている動的コードを出力する（ステップＳ２０）。例えば、符号化部１１０は、単語の文字列を、当該単語の文字列に対応付けられた、アドレステーブルＤ２の単語コードに符号化する。符号化部１１０は、符号化した単語コードを出力する。そして、符号化部１１０は、ステップＳ２１に移行する。
【００６１】
ステップＳ２１において、符号化部１１０は、出力された単語コードを、対象ファイルに対応する符号化データ用の記憶領域に書き込む（ステップＳ２１）。符号化部１１０は、単語コードに対応するビットマップに「１」を書きこむ（ステップＳ２２）。すなわち、符号化部１１０は、単語コードに対応するビットマップの、対象ファイルにおけるファイルＩＤに対応するビットに存在することを示す「１」を設定する。
【００６２】
符号化部１１０は、対象ファイルの終点か否かを判定する（ステップＳ２３）。対象ファイルの終点でないと判定した場合には（ステップＳ２３；Ｎｏ）、符号化部１１０は、対象ファイルの次の単語を読み出すべく、ステップＳ１３に移行する。
【００６３】
一方、対象ファイルの終点であると判定した場合には（ステップＳ２３；Ｙｅｓ）、符号化部１１０は、符号化されていない対象ファイルがあるか否かを判定する（ステップＳ２４）。符号化されていない対象ファイルがあると判定した場合には（ステップＳ２４；Ｙｅｓ）、符号化部１１０は、次の対象ファイルを符号化すべく、ステップＳ１２に移行する。
【００６４】
符号化されていない対象ファイルがないと判定した場合には（ステップＳ２４；Ｎｏ）、符号化部１１０は、符号化データ用の記憶領域に記憶された符号化データを符号化ファイルＦ２に書き込む（ステップＳ２５）。このとき、符号化部１１０は、各対象ファイルの動的辞書部１２２の情報、各対象ファイルの符号化データのアドレスおよびビットマップ型インデックス部１２３を符号化ファイルＦ２のトレーラ部に書き込む。そして、符号化部１１０は、符号化処理を終了する。
【００６５】
これにより、符号化装置１００は、符号化対象のファイルに含まれる単語を静的辞書部１２１および動的辞書部１２２を用いて符号化する際に、当該ファイルから、静的辞書部１２１に含まれない単語のうち外部辞書部２２１に含まれる単語を抽出する。符号化装置１００は、外部辞書部２２１に、抽出される単語に対応付けられた符号を、動的に割り当てられる動的符号と対応付け、動的辞書部１２２に登録する。かかる構成によれば、符号化装置１００は、動的辞書部１２２に登録された単語であっても、外部辞書部２２１に対応付けられた符号をともに登録することで、当該符号を複数の符号化対象のファイルで共通して用いることができる。すなわち、符号化装置１００は、例えば専門用語、新語や未知語に対する符号の共通化を実現できる。この結果、符号化装置１００は、複数の符号化対象のファイルそれぞれの単語ごとの存否情報を容易に生成できる。
【実施例２】
【００６６】
ところで、実施例１では、符号化装置１００は、符号化対象の複数のファイルそれぞれの単語ごとの存否情報を表すビットマップ型インデックスＢＩを１つ生成する場合を説明した。しかしながら、符号化装置１００は、これに限定されず、符号化対象の複数のファイルそれぞれの単語ごとの存否情報を表すビットマップ型インデックスＢＩを複数生成し、ビットマップ型インデックスＢＩを階層化しても良い。
【００６７】
そこで、実施例２では、符号化装置１００は、符号化対象の複数のファイルそれぞれの単語ごとの存否情報を表すビットマップ型インデックスＢＩを複数生成し、ビットマップ型インデックスＢＩを階層化する場合を説明する。
【００６８】
［実施例２に係るビットマップ型インデックスの階層化］
図８は、実施例２に係るビットマップ型インデックスの階層化の一例を示す図である。図８に示すように、ビットマップ型インデックスＢＩは、所定のファイル数ｎ単位で分割されている。ｎは例えば２５６である。分割されたそれぞれを、セグメントと称す。
【００６９】
セグメントｓｇ０（１）は、符号化対象のファイルｆ１〜ｆｎまでのビットマップ型インデックスＢＩを有するセグメントである。セグメントｓｇ０（２）は、ファイルｆ（ｎ＋１）〜ｆ（２ｎ）までのビットマップ型インデックスＢＩを有するセグメントである。セグメントｓｇ０（３）は、ファイルｆ（２ｎ＋１）〜ｆ（３ｎ）までのビットマップ型インデックスＢＩを有するセグメントである。
【００７０】
セグメントは初期状態では、セグメントｓｇ０（１）のみが存在し、ファイル追加によりファイル数がｎを超えると、セグメントｓｇ０（２）が生成され、ファイル数が２ｎを超えると、セグメントｓｇ０（３）が生成される。
【００７１】
各セグメントのビットマップ型インデックスＢＩは、単語が同じであるビットマップを有するが、担当するファイルＩＤが異なる。各セグメントのビットマップ型インデックスＢＩにおいて担当するファイルＩＤは、自セグメントが保持する符号化ファイルＦ２のファイルＩＤとなる。例えば、セグメントｓｇ０（１）のビットマップ型インデックスＢＩでは、各単語のビットマップについてファイルＩＤ１〜ｎの存否を示すビット列を有することになる。セグメントｓｇ０（ｍ）のビットマップ型インデックスＢＩでは、各単語のビットマップについてファイルＩＤ（ｍ−１）ｎ〜ｍｎの存否を示すビット列を有することになる。
【００７２】
動的辞書Ｄ０は、静的辞書Ｓ０に登録されず、且つ、外部辞書Ｅ０に登録されている単語と、外部辞書Ｅ０における符号と、動的に付された動的コードとを対応付けた辞書である。すなわち、符号化装置は、静的辞書Ｓ０に単語の文字列に対応する符号がない場合には、外部辞書Ｅ０から、単語の文字列に対応する符号（単語コード）および当該単語コードが登録された外部辞書Ｅ０のＩＤを取得する。符号化装置は、単語の文字列と、外部辞書Ｅ０から取得された符号（単語コード）と、動的に付された動的コードとを動的辞書Ｄ０に登録する。なお、動的辞書Ｄ０は、実施例１ではファイル単位に生成されたが、ファイル単位に生成されても、セグメント単位に生成されても良い。図９では、動的辞書Ｄ０は、セグメント単位に生成される場合である。
【００７３】
ここで、セグメント数が増加すると、単語ＩＤごとにビットマップが冗長化する。冗長化した場合、単語ＩＤごとに、全ファイル数について存否を示すビットのＯＮ／ＯＦＦを確認する必要があるが、存在しない（ＯＦＦの）箇所について確認作業をするのは無駄である。そこで、単語ＩＤごとに、セグメントがｍ＋１個生成されたら、ｍ個単位でビットマップを集約することにする。
【００７４】
図９では、例えば、単語ｘが示す単語ＩＤｘのビットマップを上位階層に集約する場合を例に挙げて説明する。なお、「ｓｇＸ（Ｙ）」のＸは、階層番号を示しており、Ｙはセグメント番号を示している。したがって、ｓｇＸ（Ｙ）の場合は、第Ｘ階層のＹ番目のセグメントとなる。また、これまで説明してきたセグメントｓｇ０（１）〜ｓｇ０（ｍ）は、基本階層である第０階層のセグメントとなる。
【００７５】
まず、基本階層である第０階層から上位階層である第１階層への集約例について説明する。集約のルールとしては、対象階層のセグメントのビットマップであるビット列がオール０、すなわち、単語ｘがそのセグメント内の対象ファイル群に存在しない場合、上位階層のインデックスとして「０」に集約する。一方、対象階層のセグメントのビットマップであるビット列に１個でも「１」がある場合、すなわち、単語ｘがそのセグメント内の対象ファイル群の少なくともいずれか１つに存在する場合、上位階層のインデックスとして「１」に集約する。
【００７６】
例えば、セグメントｓｇ０（１）については、「１」が存在するため、上位階層のセグメントｓｇ１（１）には、「１」が設定される。同様に、セグメントｓｇ０（ｍ）については、オール０であるため、上位階層のセグメントｓｇ１（１）には、「０」が設定される。この上位階層のセグメントｓｇ１（１）のビットマップのビット位置は、下位のセグメントｓｇ０（１）〜ｓｇ０（ｍ）の位置を示している。このように、上位階層のセグメントのビットの値により下位のセグメントのビットマップの状態を特定することができる。
【００７７】
また、このような集約は第０階層と第１階層との間だけではなく、最上位階層のセグメント数がｍ個になると、新たに上位階層のセグメントが生成されることとなる。例えば、第１階層でセグメントがセグメントｓｇ１（ｍ）まで生成されると、第２階層のセグメントｓｇ２（１）が生成されることとなる。なお、図９では、第２階層までの例を示したが、データの規模が増加するにしたがって、第３階層以上の階層に集約されることになる。
【００７８】
［階層化されたセグメント群を用いたファイルの絞込み例］
図９は、階層化されたセグメント群を用いたファイルの絞込み例を示す図である。図９では、説明を単純化するため、第０階層のセグメントのファイル数ｎを４とし、ｍを４とする。したがって、第０階層セグメントｓｇ０（１）〜ｓｇ０（１６）まで存在することになるが、図示されていないセグメントについては説明を省略する。また、図９では、最上位階層を第２階層として説明する。また、図９において、実線矢印はＡＮＤ結果にしたがって下位階層のセグメントを指定していることを示しており、点線矢印は実際には指定されないが、指定されたセグメントと対比するため図示している。また、図９では、検索文字列として「Ｓｈｅｒｌｏｃｋ△Ｂａｋｅｒ」が入力された場合とする。なお、Ｐ（ｓ）は、単語ｓの単語ＩＤを示すものとする。また、図９における削除マップは、ファイルごとに削除されたか否かを示すビットマップを示し、「１」である場合には削除されたことを示し、「０」である場合には削除されていないことを示す。なお、検索において、削除マップは反転された後に、他のビットマップとのＡＮＤ演算が行われる。
【００７９】
（Ａ）において、最上位階層である第２階層のセグメントｓｇ２（１）について、単語「Ｓｈｅｒｌｏｃｋ」の単語ＩＤを示すＰ（Ｓｈｅｒｌｏｃｋ）のビットマップと、単語「Ｂａｋｅｒ」の単語ＩＤを示すＰ（Ｂａｋｅｒ）のビットマップと、集約削除マップと、のＡＮＤ演算を行う。ＡＮＤ結果は「１１００」となり、下位階層である第１階層のセグメントｓｇ１（１）、ｓｇ１（２）に、単語「Ｓｈｅｒｌｏｃｋ」および「Ｂａｋｅｒ」が存在する可能性があることがわかる。
【００８０】
また、最上位階層である第２階層のセグメントｓｇ２（１）について、下位セグメント番号３、４についてはＡＮＤ結果が「０」である。したがって、セグメントｓｇ１（３）、ｓｇ１（４）の各ＡＮＤ演算を行うまでもなく、セグメントｓｇ１（３）、ｓｇ１（４）の各ＡＮＤ結果がオール０になることがわかる。
【００８１】
（Ｂ）では、第２階層のＡＮＤ結果から第１階層のセグメントｓｇ１（１）、ｓｇ１￥（２）が指定されたため、セグメントｓｇ１（１）、ｓｇ１（２）について、（Ａ）と同様ＡＮＤ演算を実行する。これにより、セグメントｓｇ１（１）からはセグメントｓｇ０（１）が指定され、セグメントｓｇ１（２）からはセグメントｓｇ０（５）が指定されることになる。セグメントｓｇ１（２）に着目すると、下位セグメント番号６〜８についてはＡＮＤ結果が「０」である。したがって、セグメントｓｇ０（６）〜ｓｇ０（８）の各ＡＮＤ演算を行うまでもなく、セグメントｓｇ０（６）〜ｓｇ０（８）の各ＡＮＤ結果がオール０になることがわかる。
【００８２】
（Ｃ）では、第１階層のＡＮＤ結果から第０階層のセグメントｓｇ０（１）、ｓｇ０（５）が指定されたため、セグメントｓｇ０（１）、ｓｇ０（５）について、（Ａ）、（Ｂ）と同様ＡＮＤ演算を実行する。これにより、セグメントｓｇ０（１）からはファイルＩＤ３が指定され、セグメントｓｇ０（５）からはファイルＩＤ１９が指定されることになる。したがって、ファイルｆ３、ｆ１９に、単語「Ｓｈｅｒｌｏｃｋ」および「Ｂａｋｅｒ」の両方が存在することがわかる。
【００８３】
これにより、符号化装置は、符号化ファイルＦ２内の符号化データのうちファイルｆ３のアドレスにある符号化データを、静的辞書Ｓ０および動的辞書Ｄ０を用いて復号化することで、検索単語を有するファイルｆ３を取得できる。ここで言う符号化ファイルＦ２は、セグメントｓｇ０（１）に対応する符号化ファイルである。ここでいう動的辞書Ｄ０は、セグメントｓｇ０（１）に対応する動的辞書である。また、符号化装置は、符号化ファイルＦ２内の符号化データのうちファイルｆ１９のアドレスにある符号化データを、静的辞書Ｓ０および動的辞書Ｄ０を用いて復号化することで、検索単語を有するファイルｆ１９を取得できる。ここで言う符号化ファイルＦ２は、セグメントｓｇ０（５）に対応する符号化ファイルである。ここでいう動的辞書Ｄ０は、セグメントｓｇ０（５）に対応する動的辞書である。
【００８４】
［階層化されたセグメント群を実装したコンピュータシステムの構成例］
図１０は、階層化されたセグメント群を実装したコンピュータシステムの構成例を示す図である。図１０では、ｍ個のセグメントを１アーカイブファイルとする。なお、「ＡＸ（Ｙ）」は、アーカイブファイルの符号であり、Ｘは階層番号を示しており、Ｙはアーカイブ番号を示している。したがって、ＡＸ（Ｙ）の場合は、第Ｘ階層のＹ番目のアーカイブファイルとなる。例えば、アーカイブファイルＡ０（１）は、第０階層のセグメントｓｇ０（１）〜ｓｇ０（ｍ）の集合である。
【００８５】
図１０の例では、マスタサーバＭＳは、第１階層以上のアーカイブファイルを格納している。また、スレーブサーバＳ１、Ｓ２、・・・、Ｓ（２ｍ＋１）、・・・は、マスタサーバＭＳにより割り当てられた１個のアーカイブファイルを格納している。なお、個々のスレーブサーバは、例えば、それぞれ符号化装置１００に対応する。図１０のアーカイブファイルの割り当ては１個であり、マスタサーバＭＳが第１階層以上のアーカイブファイルをすべて担当する必要はなく、他のサーバに分散させても良い。また、スレーブサーバＳ１、Ｓ２、・・・、Ｓ（２ｍ＋１）、・・・についても１アーカイブファイルだけではなく、複数のアーカイブファイルを担当することとしても良い。
【００８６】
これにより、符号化装置１００を含むコンピュータシステムは、例えば専門用語、新語や未知語に対する符号（単語コード）をもとに、符号化および階層化を行うことで、容易にスレーブサーバ全体のパフォーマンスを向上させることができる。すなわち、コンピュータシステムは、スケールアウトすることができる。具体的には、マスタサーバＭＳは、担当しているアーカイブファイル内のＡＮＤ結果を参照して、負荷が均一となるように、セグメントにスレーブサーバを割り当てることができる。
【００８７】
［実施例に関連する他の態様］
以下、上述の実施形態における変形例の一部を説明する。下記の変形例のみでなく、本発明の本旨を逸脱しない範囲の設計変更は適宜行われうる。
【００８８】
また、実施例に示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００８９】
［情報処理装置のハードウェア構成］
下記に、上述の実施形態に用いられるハードウェア及びソフトウェアについて説明する。図１１は、コンピュータ１のハードウェア構成例を示す図である。コンピュータ１は、例えば、プロセッサ３０１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０２、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０３、ドライブ装置３０４、記憶媒体３０５、入力インターフェース（Ｉ／Ｆ）３０６、入力デバイス３０７、出力インターフェース（Ｉ／Ｆ）３０８、出力デバイス３０９、通信インターフェース（Ｉ／Ｆ）３１０、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）インターフェース（Ｉ／Ｆ）３１１およびバス３１２などを含む。それぞれのハードウェアはバス３１２を介して接続されている。
【００９０】
ＲＡＭ３０２は読み書き可能なメモリ装置であって、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）やＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）などの半導体メモリ、またはＲＡＭでなくてもフラッシュメモリなどが用いられる。ＲＯＭ３０３は、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）なども含む。ドライブ装置３０４は、記憶媒体３０５に記録された情報の読み出しか書き込みかの少なくともいずれか一方を行なう装置である。記憶媒体３０５は、ドライブ装置３０４によって書き込まれた情報を記憶する。記憶媒体３０５は、例えば、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）などのフラッシュメモリ、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、ブルーレイディスクなどの記憶媒体である。また、例えば、コンピュータ１は、複数種類の記憶媒体それぞれについて、ドライブ装置３０４及び記憶媒体３０５を設ける。
【００９１】
入力インターフェース３０６は、入力デバイス３０７と接続されており、入力デバイス３０７から受信した入力信号をプロセッサ３０１に伝達する回路である。出力インターフェース３０８は、出力デバイス３０９と接続されており、出力デバイス３０９に、プロセッサ３０１の指示に応じた出力を実行させる回路である。通信インターフェース３１０はネットワーク３を介した通信の制御を行なう回路である。通信インターフェース３１０は、例えばネットワークインターフェースカード（ＮＩＣ）などである。ＳＡＮインターフェース３１１は、ストレージエリアネットワークによりコンピュータ１と接続された記憶装置との通信の制御を行なう回路である。ＳＡＮインターフェース３１１は、例えばホストバスアダプタ（ＨＢＡ）などである。
【００９２】
入力デバイス３０７は、操作に応じて入力信号を送信する装置である。入力信号は、例えば、キーボードやコンピュータ１の本体に取り付けられたボタンなどのキー装置や、マウスやタッチパネルなどのポインティングデバイスである。出力デバイス３０９は、コンピュータ１の制御に応じて情報を出力する装置である。出力デバイス３０９は、例えば、ディスプレイなどの画像出力装置（表示デバイス）や、スピーカーなどの音声出力装置などである。また、例えば、タッチスクリーンなどの入出力装置が、入力デバイス３０７及び出力デバイス３０９として用いられる。また、入力デバイス３０７及び出力デバイス３０９は、コンピュータ１と一体になっていても良いし、コンピュータ１に含まれず、例えば、コンピュータ１に外部から接続する装置であっても良い。
【００９３】
例えば、プロセッサ３０１は、ＲＯＭ３０３や記憶媒体３０５に記憶されたプログラムをＲＡＭ３０２に読み出し、読み出されたプログラムの手順に従って符号化部１１０の処理を行なう。その際にＲＡＭ３０２はプロセッサ３０１のワークエリアとして用いられる。記憶部１２０の機能は、ＲＯＭ３０３および記憶媒体３０５がプログラムファイル（後述のアプリケーションプログラム２４、ミドルウェア２３およびＯＳ２２など）やデータファイル（例えば、静的辞書部１２１、動的辞書部１２２、ビットマップ型インデックス部１２３など）を記憶し、ＲＡＭ３０２がプロセッサ３０１のワークエリアとして用いられることによって実現される。プロセッサ３０１が読み出すプログラムについては、図１２を用いて説明する。
【００９４】
図１２は、コンピュータで動作するプログラムの構成例を示す図である。コンピュータ１において、図１２に示すハードウェア群ＨＷ２１（３０１〜３１２）の制御を行なうＯＳ（オペレーティング・システム）２２が動作する。ＯＳ２２に従った手順でプロセッサ３０１が動作して、ハードウェア群ＨＷ２１の制御・管理が行なわれることにより、アプリケーションプログラムＡＰ２４やミドルウェアＭＷ２３に従った処理がハードウェア群２１で実行される。さらに、コンピュータ１において、ミドルウェアＭＷ２３またはアプリケーションプログラムＡＰ２４が、ＲＡＭ３０２に読み出されてプロセッサ３０１により実行される。
【００９５】
プロセッサ３０１が、符号化機能が呼び出された場合に、ミドルウェア２３またはアプリケーションプログラム２４の少なくとも一部に基づく処理を行なうことにより、（それらの処理をＯＳ２２に基づいてハードウェア群２１を制御して）符号化部１１０の機能が実現される。符号化機能は、アプリケーションプログラム２４自体に含まれても良いし、アプリケーションプログラム２４に従って呼び出されることで実行されるミドルウェア２３の一部であっても良い。
【００９６】
図１３は、実施形態のシステムにおける装置の構成例を示す。図１３のシステムは、コンピュータ１ａ、コンピュータ１ｂ、基地局２およびネットワーク３を含む。コンピュータ１ａは、無線または有線の少なくとも一方により、コンピュータ１ｂと接続されたネットワーク３に接続している。
【００９７】
図６に示す符号化装置１００とマスタ装置２００とは、図１３に示すコンピュータ１ａとコンピュータ１ｂとのいずれに含まれても良い。コンピュータ１ｂが符号化装置１００の機能を含み、コンピュータ１ａがマスタ装置２００の機能を含んでも良いし、コンピュータ１ａが符号化装置１００の機能を含み、コンピュータ１ｂがマスタ装置２００の機能を含んでも良い。また、コンピュータ１ａとコンピュータ１ｂとの双方が、符号化装置１００の機能およびマスタ装置２００の機能を備えても良い。
【符号の説明】
【００９８】
１００  符号化装置
１１０  符号化部
１１１  ファイルリード部
１１２  判定部
１１３  第１符号化部
１１４  第２符号化部
１１５  更新部
１１６  インデックス設定部
１１７  ファイルライト部
１２０  記憶部
１２１  静的辞書部
１２２  動的辞書部
１２３  ビットマップ型インデックス部
２００  マスタ装置
２１１  単語コード割当部
２２１  外部辞書部
【図１】
0006648620.tif 000002
【図２】
0006648620.tif 000003
【図３】
0006648620.tif 000004
【図４】
0006648620.tif 000005
【図５】
0006648620.tif 000006
【図６】
0006648620.tif 000007
【図７】
0006648620.tif 000008
【図８】
0006648620.tif 000009
【図９】
0006648620.tif 000010
【図１０】
0006648620.tif 000011
【図１１】
0006648620.tif 000012
【図１２】
0006648620.tif 000013
【図１３】
0006648620.tif 000014