(57)【特許請求の範囲】
【請求項１】
コンピュータに、
検索文字列による検索要求を受け付け、
前記検索要求に対応して、検索対象の符号化データを順次伸長する際に、符号情報の伸長結果と前記検索文字列の先頭文字が一致する場合に、前記符号情報の伸長結果に含まれる各文字に対応づけられる管理領域の部分領域のうち、前記符号情報の伸長結果に含まれる文字であって、前記検索文字列の先頭文字と一致する文字に対応する記憶部内の領域に所定値のフラグを付加し、
伸長処理における伸長対象の符号情報の伸長結果に含まれる文字であって、前記検索文字列の前記先頭文字と一致する文字に対応した前記記憶部内の領域に所定値のフラグが付加されている場合に、前記符号情報の伸長結果のデータに対応した文字列情報と、前記検索文字列との照合処理を実行する、
処理を実行させることを特徴とする照合制御プログラム。 
【請求項２】
前記コンピュータに、さらに、
前記照合処理の結果に応じて、前記伸長対象の符号情報と対応付けられた文字列情報を、前記符号情報と対応付けられた入力文字情報に変換し、
変換された前記入力文字情報に強調表示させる旨を示す表示指定情報を関連付ける、
処理を実行させることを特徴とする請求項１に記載の照合制御プログラム。 
【請求項３】
前記コンピュータに、
前記符号情報の伸長結果に含まれる文字であって、前記検索文字列の前記先頭文字と一致する文字に対応した前記記憶部内の領域に所定値のフラグが付加されていない場合に、前記照合処理を実行しない、
処理を実行させることを特徴とする請求項１又は２に記載の照合制御プログラム。 
【請求項４】
コンピュータに、
検索文字列による検索要求を受け付け、
前記検索要求に対応して、検索対象の符号化データを順次伸長する際に、符号情報の伸長結果と前記検索文字列の先頭文字が一致する場合に、前記符号情報の伸長結果に含まれる各文字に対応づけられる管理領域の部分領域のうち、前記符号情報の伸長結果に含まれる文字であって、前記検索文字列の先頭文字と一致する文字に対応する記憶部内の領域に所定値のフラグを付加し、
伸長処理における伸長対象の符号情報の伸長結果に含まれる文字であって、前記検索文字列の前記先頭文字と一致する文字に対応した前記記憶部内の領域に所定値のフラグが付加されている場合に、前記符号情報の伸長結果のデータに対応した文字列情報と、前記検索文字列との照合処理を実行する、
処理を実行させることを特徴とする照合制御方法。 
【請求項５】
検索文字列による検索要求を受け付ける受付部と、
前記検索要求に対応して、検索対象の符号化データを順次伸長する際に、符号情報の伸長結果と前記検索文字列の先頭文字が一致する場合に、前記符号情報の伸長結果に含まれる各文字に対応づけられる管理領域の部分領域のうち、前記符号情報の伸長結果に含まれる文字であって、前記検索文字列の先頭文字と一致する文字に対応する記憶部内の領域に所定値のフラグを付加する付加部と、
伸長処理における伸長対象の符号情報の伸長結果に含まれる文字であって、前記検索文字列の前記先頭文字と一致する文字に対応した前記記憶部内の領域に所定値のフラグが付加されている場合に、前記符号情報の伸長結果のデータに対応した文字列情報と、前記検索文字列との照合処理を実行する照合制御部と、
を含むことを特徴とする照合制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、照合制御プログラム、照合制御装置および照合制御方法に関する。
【背景技術】
【０００２】
従来、デジタルコンテンツを圧縮し、圧縮したデジタルコンテンツを送信する装置がある。例えば、従来の装置は、Ｅｌｅｃｔｏｒｏｎｉｃ  Ｐｕｂｌｉｃａｔｉｏｎ（ＥＰＵＢ）形式で圧縮されたデジタルコンテンツを、ＰＣ（Personal  Computer）や携帯電話などの利用者端末に送信する。なお、デジタルコンテンツの一例としては、動画、音楽、書籍や辞書などが挙げられる。また、利用者端末では、圧縮されたデジタルコンテンツが伸張される。そして、利用者端末では、伸張されたデジタルコンテンツの再生が行われる。利用者端末では、デジタルコンテンツに含まれる各項目のうち、所定の検索文字列が含まれる項目を利用者が閲覧したい場合には、デジタルコンテンツに対して検索文字列の検索が行われる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１１−１１０１８７号公報
【特許文献２】特開２０００−２１６６８５号公報
【特許文献３】国際公開第２００６／１２３４４８号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、圧縮されたデジタルコンテンツなどのデータに対して検索処理を行なう場合には、伸張処理と検索処理とを行うことになり、処理時間が長くなるという問題がある。【０００５】
１つの側面では、本発明は、圧縮データに対する検索処理の処理時間を抑制することを目的とする。
【課題を解決するための手段】
【０００６】
本願の開示する照合制御プログラムは、一つの態様において、コンピュータに符号情報と関連付けて記憶部に記憶された文字情報が、入力された入力文字情報に含まれる場合に、制御情報を符号情報に関連付けて記憶部に記憶する処理を実行させる。また、照合制御プログラムは、コンピュータに符号化されたデータに含まれるある符号情報が、制御情報と関連付けて記憶部に記憶されている場合に、符号化されたデータ内のある符号情報を含むデータと入力文字情報との照合処理を実行する処理を実行させる。
【発明の効果】
【０００７】
１態様によれば、圧縮データに対する検索処理の処理時間を抑制することができる。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施例１に係るシステムの構成の一例を示す図である。
【図２】図２は、コンテンツＤＢの一例を示す図である。
【図３】図３は、トライの木の一例を示す図である。
【図４】図４は、トライの木の葉の構造体の一例を示す図である。
【図５】図５は、頻度データの一例を示す図である。
【図６】図６は、置換テーブルの一例を示す図である。
【図７】図７は、トライの木の葉の構造体の一例を示す図である。
【図８】図８は、利用者端末が実行する処理を説明するための図である。
【図９】図９は、利用者端末の処理の一例を説明するための図である。
【図１０】図１０は、実施例１に係るシステムのシーケンス図である。
【図１１】図１１は、実施例１に係る圧縮処理の手順を示すフローチャートである。
【図１２】図１２は、実施例１に係る伸張・検索処理の手順を示すフローチャートである。
【図１３】図１３は、実施例２に係るシステムの構成の一例を示す図である。
【図１４】図１４は、利用者端末の処理で用いられるデータの一例を示す図である。
【図１５】図１５は、利用者端末が実行する処理を説明するための図である。
【図１６】図１６は、実施例２に係る圧縮処理の手順を示すフローチャートである。
【図１７】図１７は、実施例２に係る伸張・検索処理の手順を示すフローチャートである。
【図１８】図１８は、検索プログラムを実行するコンピュータを示す図である。
【図１９】図１９は、ＲＡＭ内のデータの関係について説明する図である。
【発明を実施するための形態】
【０００９】
以下に、本願の開示する検索プログラム、検索装置および検索方法の各実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。なお、検索プログラム、検索装置、検索方法のそれぞれは、照合制御プログラム、照合制御装置、照合制御方法の一例である。
【実施例１】
【００１０】
［システム１の構成例］
実施例１に係るシステムについて説明する。図１は、実施例１に係るシステムの構成の一例を示す図である。本実施例に係るシステム１は、サーバ２と、利用者端末３とを有する。サーバ２と、利用者端末３とは、データの送受信が可能なように接続される。図１の例では、サーバ２と、利用者端末３とは、インターネット４を介して接続されている。なお、サーバ２と、利用者端末３とは、無線で接続されてもよい。サーバ２は、複数の辞書や電子書籍などのデジタルコンテンツのファイルのデータを圧縮する。サーバ２は、暗号化された複数のデジタルコンテンツのファイルのデータを、インターネット４を介して利用者端末３に送信する。利用者端末３は、受信した複数の電子書籍のファイルのデータを伸張しつつ、各ファイルに含まれる検索文字列を検索し、検索文字列の出現頻度、出現ファイル数を計数し、また、各ファイルの検索文字列が含まれる項目を表示する。【００１１】
サーバ２は、入力部５と、出力部６と、送受信部７と、記憶部８と、制御部９とを有する。【００１２】
入力部５は、各種の情報を制御部９に入力する。例えば、入力部５は、ユーザから、デジタルコンテンツを受け付けて、受け付けたデジタルコンテンツを制御部９に入力する。また、入力部５は、ユーザから、後述の圧縮処理を実行する指示を受け付けて、受け付けた指示を制御部９に入力する。入力部５のデバイスの一例としては、マウスやキーボードなどの操作受付デバイスが挙げられる。【００１３】
出力部６は、各種の情報を出力する。例えば、出力部６は、サーバ２の稼働状況を表示する。出力部６のデバイスの一例としては、ＬＣＤ（Liquid  Crystal  Display）やＣＲＴ（Cathode  Ray  Tube）などの表示デバイスなどが挙げられる。【００１４】
送受信部７は、サーバ２と利用者端末３との通信を行うための通信インタフェースである。例えば、送受信部７は、利用者端末３からインターネット４を介して、コンテンツデータベース（Data  Base）に登録されたデジタルコンテンツのファイルの送信要求を受信すると、受信した送信要求を制御部９へ送信する。なお、以下では、データベースを「ＤＢ」と略記する。また、送受信部７は、制御部９から後述のコンテンツＤＢ８ａに登録されたデジタルコンテンツのファイルを受信すると、受信したデジタルコンテンツのファイルを、インターネット４を介して利用者端末３へ送信する。【００１５】
記憶部８は、各種情報を記憶する。例えば、記憶部８は、コンテンツＤＢ８ａ、辞書８ｂを記憶する。【００１６】
コンテンツＤＢ８ａには、圧縮されたデジタルコンテンツのファイルが登録される。例えば、コンテンツＤＢ８ａには、後述の圧縮部９ａにより圧縮されたデジタルコンテンツのファイルが登録される。図２は、コンテンツＤＢの一例を示す図である。図２の例では、コンテンツＤＢ８ａに、圧縮されたデジタルコンテンツＡ〜Ｋの各ファイルが登録されている場合が示されている。コンテンツＤＢ８ａに登録されたデジタルコンテンツのファイルは、利用者端末３からの指示に応じて、利用者端末３へ送信される。【００１７】
辞書８ｂは、ＬＺ７８の圧縮方式で用いられる動的辞書である。ＬＺ７８の圧縮方式では、トライの木で表される動的辞書が用いられて、ファイルの圧縮および伸張が行われる。トライの木の葉および節点には、文字の文字コードと参照番号とが格納されている。図３は、トライの木の一例を示す図である。図３の例では、文字列「ｂｉｔ」の参照番号は、１６進数で「１０４」である。図３の例では、文字列「ｂｉｔ」の圧縮符号列として参照番号「１０４」を用いることで、文字列「ｂｉｔ」の圧縮を行うことができる。また、図３の例では、圧縮されたファイルのデータ「１０４」を、文字列「ｂｉｔ」に置き換えることで、伸張を行うことができる。【００１８】
記憶部８は、例えば、フラッシュメモリなどの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部８は、上記の種類の記憶装置に限定されるものではなく、ＲＡＭ（Random  Access  Memory)、ＲＯＭ（Read  Only  Memory)であってもよい。【００１９】
制御部９は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。図１に示すように、制御部９は、圧縮部９ａを有する。【００２０】
圧縮部９ａは、入力部５から入力されたデジタルコンテンツのファイルを圧縮する。例えば、圧縮部９ａは、ＬＺ７８の圧縮方式により、辞書８ｂを用いて複数のデジタルコンテンツのファイルのそれぞれを圧縮しつつ、辞書８ｂを更新し、圧縮したファイルをデジタルコンテンツごとに、コンテンツＤＢ８ａに登録する。【００２１】
利用者端末３は、入力部１０と、出力部１１と、送受信部１２と、記憶部１３と、制御部１４とを有する。【００２２】
入力部１０は、各種情報を制御部１４に入力する。例えば、入力部１０は、ユーザから検索文字列、および後述の伸張・検索処理を実行する指示を受け付けて、受け付けた検索文字列および指示を制御部１４に入力する。例えば、入力部１０は、「ｂｉｔ」などの文字列や、「兎」などの文字を検索文字列として受け付けることができる。入力部１０のデバイスの一例としては、マウスやキーボードなどの操作受付デバイスが挙げられる。【００２３】
出力部１１は、各種の情報を出力する。例えば、出力部１１は、後述の表示制御部１４ｅによって、置換文字列を含む項目、後述の頻度データ１３ｄが示す文字ごとの出現回数および出現ファイル数を表示する。出力部１１のデバイスの一例としては、ＬＣＤ（Liquid  Crystal  Display）やＣＲＴ（Cathode  Ray  Tube）などの表示デバイスが挙げられる。【００２４】
送受信部１２は、利用者端末３とサーバ２との通信を行うための通信インタフェースである。例えば、送受信部１２は、制御部１４から、コンテンツＤＢに登録されたデジタルコンテンツのファイルの送信要求を受信すると、受信した送信要求を、インターネット４を介してサーバ２へ送信する。また、送受信部１２は、サーバ２からコンテンツＤＢ８ａに登録されたデジタルコンテンツのファイルを受信すると、受信したファイルを制御部１４へ送信する。【００２５】
記憶部１３は、各種情報を記憶する。例えば、記憶部１３は、コンテンツＤＢ１３ａ、辞書１３ｂ、伸張領域１３ｃ、頻度データ１３ｄ、置換テーブル１３ｅを記憶する。【００２６】
コンテンツＤＢ１３ａには、後述の伸張部１４ａにより伸張されたデジタルコンテンツの各ファイルが登録される。【００２７】
辞書１３ｂは、ＬＺ７８の圧縮方式で用いられる、トライの木で表される動的辞書である。辞書１３ｂは、後述の伸張部１４ａにより更新される。ここで、本実施例のトライの木の葉の構造体の一例について説明する。図４は、トライの木の葉の構造体の一例を示す図である。図４の例では、トライの木の葉の構造体は、親の節点へのポインタ、子の葉または節点へのポインタ、同世代である兄弟の葉または節点へのポインタを有する。また、図４の例では、トライの木の葉の構造体は、文字コード、トライの木のルートから葉までの文字列の圧縮符号列、照合フラグ、置換フラグ、置換テーブルへのポインタの各項目を有する。【００２８】
このうち、照合フラグは、照合済みであることを示すためのフラグである。照合フラグには、トライの木のルートから葉までの文字列が検索文字列である場合に、後述の格納部１４ｂにより、フラグがＯＮであることを示す値、例えば「１」が登録される。また、照合フラグには、初期状態では、フラグがＯＦＦであることを示す値、例えば「０」が登録される。【００２９】
置換フラグは、トライの木のルートから、伸張対象の圧縮されたデータが圧縮符号列として格納された葉までの文字列が検索文字列である場合に、伸張対象の圧縮されたデータを置換文字列に置換するためのフラグである。置換フラグには、特定されたトライの木のルートから葉までの文字列が検索文字列である場合に、後述の格納部１４ｂにより、フラグがＯＮであることを示す値、例えば「１」が登録される。また、置換フラグには、初期状態では、フラグがＯＦＦであることを示す値、例えば「０」が登録される。また、置換テーブルへのポインタの項目には、後述の置換テーブル１３ｅに登録された置換文字列が登録された位置を指すポインタが格納部１４ｂにより登録される。また、照合フラグおよび置換フラグがＯＮである場合は、トライの木の葉に登録された圧縮符号列を伸張させた場合の文字列が検索文字列であることを示す。すなわち、照合フラグおよび置換フラグがＯＮである場合は、検索文字列に対応する圧縮符号列がトライの木の葉に登録されていることを示す。【００３０】
伸張領域１３ｃは、後述の伸張部１４ａにより伸張されたデータが格納される記憶領域である。記憶部１３の伸張領域１３ｃが示す記憶領域は、伸張バッファとも称される。【００３１】
頻度データ１３ｄは、後述の更新部１４ｃにより文字ごとの出現回数および出現ファイル数が登録されて更新される。図５は、頻度データの一例を示す図である。図５の例では、文字「Ａ」について、複数のデジタルコンテンツの全ファイルの出現回数が「１２３８」であり、出現したファイルの数が「２３０」である場合が示されている。【００３２】
置換テーブル１３ｅには、後述の格納部１４ｂにより検索文字列を所定の文字列に変換した置換文字列が登録される。図６は、置換テーブルの一例を示す図である。図６の例では、置換テーブル１３ｅに、検索文字列「ｂｉｔ」にタグ「<color>」、「</color>」が付与された置換文字列が登録された場合が示されている。なお、タグ「<color>」、「</color>」の間の文字列は、所定の色、例えば赤色などで表示される。すなわち、図６の例に示す「ｂｉｔ」は、表示デバイスに赤色で強調表示される。【００３３】
記憶部１３は、例えば、フラッシュメモリなどの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部１３は、上記の種類の記憶装置に限定されるものではなく、ＲＡＭ（Random  Access  Memory)、ＲＯＭ（Read  Only  Memory)であってもよい。【００３４】
制御部１４は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。図１に示すように、制御部１４は、伸張部１４ａと、格納部１４ｂと、更新部１４ｃと、検索部１４ｄと、表示制御部１４ｅとを有する。【００３５】
伸張部１４ａは、トライの木の葉で表される辞書１３ｂを用いて、伸張対象の圧縮された文字列を伸張するとともに、辞書１３ｂの登録内容および伸張された文字列に応じて、新たに伸張された文字列を含む文字列であって辞書１３ｂに未登録の文字列と、圧縮符号列との組み合わせが登録された新たな葉をトライの木に追加して辞書１３ｂを更新する。【００３６】
具体例を挙げて説明する。伸張部１４ａは、まず、辞書１３ｂを初期化する。ここで、初期化が行われると、辞書１３ｂには、所定数の種類、例えば２５６種類の文字と、文字に対応する圧縮符号列とが登録される。【００３７】
伸張部１４ａは、サーバ２から送信された複数のデジタルコンテンツを取得する。伸張部１４ａは、取得した複数のデジタルコンテンツのファイルの中から未選択のファイルを伸張対象のファイルとして選択する。そして、伸張部１４ａは、辞書１３ｂを参照して、伸張対象のファイルの未処理の圧縮データが、「圧縮符号列」の項目に登録されたトライの木の葉を特定する。図７は、トライの木の葉の構造体の一例を示す図である。図７の例では、圧縮符号列「１０４ｈ」が、「圧縮符号列」の項目に登録されたトライの木の葉の構造体が示されている。図７の例において、伸張対象のファイルの未処理の圧縮データが「１０４ｈ」である場合には、伸張部１４ａは、図７に示すトライの木の葉の構造体を、圧縮符号列「１０４ｈ」が、「圧縮符号列」の項目に登録されたトライの木の葉の構造体として特定する。なお、図７の例に示す構造体は、先の図３に示すトライの木における文字「ｔ」に対応する構造体である。図３の例では、文字「ｔ」に対応する葉に対して、文字「ｉ」に対応する節点が「親」となるため、図７の例では、「親へのポインタ」の項目に、文字「ｉ」に対応する節点へのポインタが登録されている。また、図３の例では、文字「ｔ」に対応する葉に対して、「子」となる葉または節点が存在しないため、図７の例では、「子へのポインタ」の項目には、ポインタが登録されていない。また、図３の例では、文字「ｔ」に対応する葉に対して、文字「ｇ」に対応する節点が「兄弟」となるため、図７の例では、「兄弟へのポインタ」の項目に、文字「ｇ」に対応する葉へのポインタが登録されている。【００３８】
なお、図７の例では、文字「ｔ」の文字コードが「７４ｈ」であるため、「文字コード」の項目に「７４ｈ」が登録されている。また、図７の例では、「照合フラグ」の項目には、初期状態のため、「０」が登録されている。また、図７の例では、「置換フラグ」の項目には、初期状態のため、「０」が登録されている。また、図７の例では、「置換テーブルへのポインタ」の項目には、ポインタが登録されていない。【００３９】
そして、伸張部１４ａは、後述の検索部１４ｄにより置換フラグの値が「１」でないと判定、すなわち「０」であると判定された場合には、辞書１３ｂを参照して、トライの木のルートから、特定したトライの木の葉までの各文字列の文字コードを文字列の順番に連結したデータを伸張データとして取得する。続いて、伸張部１４ａは、取得した伸張データを伸張領域１３ｃに格納する。【００４０】
また、伸張部１４ａは、後述の検索部１４ｄにより、置換フラグの値が「１」であると判定された場合には、辞書１３ｂを参照して、特定したトライの木の葉に登録された置換テーブルへのポインタを取得する。図８は、利用者端末が実行する処理を説明するための図である。図８の例の葉１５は、図７の例が示す葉の構造体において、後述の格納部１４ｂにより、照合フラグの項目に「１」、置換フラグの項目に「１」、置換テーブルへのポインタの項目に「Ｐ１」が登録された場合を示す。伸張部１４ａは、図８の例に示す葉１５を特定した場合には、置換テーブルへのポインタとして「Ｐ１」を取得する。そして、伸張部１４ａは、取得した置換テーブルへのポインタが示す置換テーブル１３ｅの置換文字列を取得する。図８の例において、伸張部１４ａは、置換テーブルへのポインタ「Ｐ１」を取得した場合には、「Ｐ１」が示す置換テーブル１３ｅに登録された置換文字列「<color>ｂｉｔ</color>」を取得する。続いて、伸張部１４ａは、取得した置換文字列を伸張領域１３ｃに格納する。図８の例において、伸張部１４ａは、置換文字列「<color>ｂｉｔ</color>」を取得した場合には、「<color>ｂｉｔ</color>」を伸張領域１３ｃに格納する。このように、伸張部１４ａは、置換フラグの値が「１」である場合、すなわち圧縮符号列を伸張させた場合の文字列が検索文字列である場合には、圧縮符号列の伸張を行わずに、圧縮符号列を置換文字列に置換する。【００４１】
上述したように、置換フラグの値が「１」であると後述の検索部１４ｄにより判定された場合に、伸張部１４ａは、圧縮符号列を伸張せずに、圧縮符号列を置換文字列に置換する。そのため、利用者端末３によれば、置換フラグの値が「１」である場合、すなわち圧縮符号列を伸張させた場合の文字列が検索文字列である場合には、圧縮符号列を伸張せずに、圧縮符号列を置換文字列に置換するので、検索処理の速度が高速となる。【００４２】
また、伸張部１４ａは、ＬＺ７８の圧縮方式により、辞書１３ｂの登録内容および伸張された文字列に応じて、新たに伸張した文字列を含む文字列であって辞書１３ｂに未登録の文字列と、圧縮符号列との組み合わせが登録された新たな葉をトライの木に追加して辞書１３ｂを更新する。【００４３】
そして、伸張部１４ａは、新たな葉がトライの木に追加されるたびに、新たな葉に登録された文字列と、入力部１０から入力された検索文字列とが一致するか否かを判定する。入力部１０から入力された検索文字列が複数である場合には、伸張部１４ａは、複数の検索文字列のそれぞれに対して、新たな葉に登録された文字列が一致するか否かを判定する。かかる判定の結果に応じて、格納部１４ｂにより後述する処理が実行される。【００４４】
また、伸張部１４ａは、伸張領域１３ｃに伸張されたデジタルコンテンツのファイルをファイルごとにコンテンツＤＢ１３ａに格納する。【００４５】
格納部１４ｂは、各種の情報を格納する。例えば、格納部１４ｂは、検索文字列が入力部１０から入力されるたびに、入力された検索文字列を強調させた置換文字列を生成し、生成した置換文字列を置換テーブル１３ｅに格納する。格納部１４ｂによる置換文字列の生成方法の一例としては、例えば、検索文字列にタグ「<color>」、「</color>」を付与する方法が挙げられる。【００４６】
また、格納部１４ｂは、新たな葉がトライの木に追加された場合に、新たな葉に登録された新たな文字列が検索文字列と一致する場合には、検索文字列に対応する圧縮符号列が登録されていることを示す情報を記憶部１３に格納する。かかる情報の一例としては、照合フラグおよび置換フラグに設定される「１」が挙げられる。例えば、格納部１４ｂは、新たな葉に登録された文字列と、入力部１０から入力された検索文字列とが一致すると伸張部１４ａにより判定された場合に、特定したトライの木の葉の構造体の照合フラグの項目に「１」を設定する。また、格納部１４ｂは、新たな葉に登録された文字列と、入力部１０から入力された検索文字列とが一致すると伸張部１４ａにより判定された場合に、次のような処理を行う。すなわち、格納部１４ｂは、置換フラグの項目に「１」、特定したトライの木の葉の構造体の置換テーブルへのポインタの項目に、検索文字列に対応する、置換テーブル１３ｅに登録された置換文字列を指すポインタを設定する。【００４７】
図９は、利用者端末の処理に用いられるデータを説明するための図である。図９の例は、伸張部１４ａにより図７に示すトライの木の葉の構造体が特定された場合に、格納部１４ｂが、照合フラグに「１」を設定した場合を示す。また、図９の例は、伸張部１４ａにより図７に示すトライの木の葉の構造体が特定された場合に、格納部１４ｂが、置換フラグに「１」を設定した場合を示す。また、図９の例は、伸張部１４ａにより図７に示すトライの木の葉の構造体が特定された場合に、格納部１４ｂが、置換テーブルへのポインタに「Ｐ１」を設定した場合を示す。【００４８】
更新部１４ｃは、頻度データ１３ｄを更新する。例えば、更新部１４ｃは、特定されたトライの木の葉の照合フラグの値が「１」であると後述の検索部１４ｄにより判定された場合に、未処理の圧縮データを伸張した文字列は検索文字列であるため、次の処理を行う。すなわち、更新部１４ｃは、頻度データ１３ｄの検索文字列の出現回数の値を１つインクリメントし、伸張対象のファイルの検索文字列の出現ファイル数の値を１つインクリメントする。ただし、それぞれの文字について、照合フラグの値が「１」であるとの判定が１回目の判定である場合には、更新部１４ｃは、頻度データ１３ｄの検索文字列の出現回数の値を２つインクリメントし、伸張対象のファイルの検索文字列の出現ファイル数の値を２つインクリメントする。これは、照合フラグの値が「１」であるか否かの判定は、伸張される前の検索文字列の圧縮データに対して行われるが、照合フラグの値が「１」であると判定された時点ですでに、検索文字列が伸張されているためである。すなわち、照合フラグの値が「１」であるという１回目の判定がなされた時点で、検索文字列は２つ出現するからである。【００４９】
検索部１４ｄは、伸張部１４ａにより特定されたトライの木の葉の構造体の照合フラグの値を取得する。そして、検索部１４ｄは、照合フラグの値が「１」であるか否かを判定する。なお、照合フラグの値が「１」である場合には、デジタルコンテンツのファイルから検索文字列が検索され、照合済みであると判断される。すなわち、検索部１４ｄは、伸張対象のファイルの未処理の圧縮データに、照合フラグの値が「１」であるトライの木の葉に登録された圧縮符号列があるか否かを検索する。上述したように、照合フラグの値が「１」であると検索部１４ｄにより判定された場合に、更新部１４ｃにより検索文字列がファイルに含まれる個数を示す頻度データ１３ｄが更新される。そのため、利用者端末３によれば、圧縮されたデジタルコンテンツのファイルを伸張し、伸張したファイルのデータを所定数の文字ずつ走査して検索文字列を検索する場合と比較して、検索処理の速度が高速となる。【００５０】
また、検索部１４ｄは、伸張部１４ａにより特定されたトライの木の葉の構造体の置換フラグの値を取得する。そして、検索部１４ｄは、置換フラグの値が「１」であるか否かを判定する。なお、置換フラグの値が「１」である場合には、特定されたトライの木の葉の圧縮符号列を置換文字列に置換すると判断される。上述したように、置換フラグの値が「１」であると検索部１４ｄにより判定された場合に、伸張部１４ａは、圧縮符号列を伸張せずに、圧縮符号列を置換文字列に置換する。このように、利用者端末３によれば、伸張対象の圧縮データを伸張させた場合の文字列が検索文字列である場合には、圧縮符号列を伸張する処理を省略して、圧縮符号列を置換文字列に置換するので、検索処理の速度が高速となる。【００５１】
表示制御部１４ｅは、出力部１１の表示デバイスに表示される表示画面を制御する。例えば、表示制御部１４ｅは、伸張領域１３ｃに格納された置換文字列を含む項目を出力部１１の表示デバイスに表示させる。また、表示制御部１４ｅは、頻度データ１３ｄが示す文字毎の出現回数および出現ファイル数を出力部１１の表示デバイスに表示させる。【００５２】
制御部１４は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路を有する。なお、制御部１４は、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などの電子回路を有してもよい。【００５３】
［処理の流れ］
次に、本実施例に係るシステム１の処理の流れを説明する。図１０は、実施例１に係るシステムのシーケンス図である。【００５４】
図１０に示すように、サーバ２は、後述する圧縮処理を実行する（ステップＳ１０１）。サーバ２は、圧縮されたデジタルコンテンツのファイルをコンテンツＤＢ８ａに登録する（ステップＳ１０２）。【００５５】
一方、利用者端末３は、ユーザから検索文字列、および後述の伸張・検索処理を実行する指示を受け付けると（ステップＳ１０３）、デジタルコンテンツのファイルの送信要求をサーバ２に送信する（ステップＳ１０４）。サーバ２は、デジタルコンテンツのファイルの送信要求を受信すると、コンテンツＤＢ８ａに登録されたデジタルコンテンツのファイルを利用者端末３に送信する（ステップＳ１０５）。【００５６】
利用者端末３は、デジタルコンテンツのファイルを受信する（ステップＳ１０６）と、後述する伸張・検索処理を実行する（ステップＳ１０７）。利用者端末３は、伸張されたデジタルコンテンツのファイルをコンテンツＤＢ１３ａに登録する（ステップＳ１０８）。利用者端末３は、記憶部１３から頻度データを取得する（ステップＳ１０９）。利用者端末３は、伸張領域１３ｃに格納された置換文字列を含む項目、頻度データが示す文字ごとの出現回数および出現ファイル数を表示デバイスに表示させる（ステップＳ１１０）。【００５７】
次に、本実施例に係るサーバ２の処理の流れを説明する。図１１は、実施例１に係る圧縮処理の手順を示すフローチャートである。この圧縮処理の実行タイミングとしては様々なタイミングが考えられる。例えば、圧縮処理は、入力部５からデジタルコンテンツが入力された場合に実行されるようにしてもよい。【００５８】
図１１に示すように、圧縮部９ａは、辞書８ｂを初期化する（ステップＳ２０１）。圧縮部９ａは、入力部５から入力されたデジタルコンテンツのファイルを１つ選択する（ステップＳ２０２）。圧縮部９ａは、選択したデジタルコンテンツのファイルのデータのうち圧縮処理が未処理のデータがあるか否かを判定する（ステップＳ２０３）。圧縮処理が未処理のデータがある場合（ステップＳ２０３肯定）には、圧縮部９ａは、辞書８ｂを参照し、ＬＺ７８の圧縮方式で圧縮する（ステップＳ２０４）。圧縮部９ａは、辞書８ｂを更新し（ステップＳ２０５）、ステップＳ２０３へ戻る。【００５９】
圧縮処理が未処理のデータがない場合（ステップＳ２０３否定）には、圧縮部９ａは、ステップＳ２０２で未選択のファイルがあるか否かを判定する（ステップＳ２０６）。未選択のファイルがある場合（ステップＳ２０６肯定）には、ステップＳ２０２に戻り、圧縮部９ａは、未選択のファイルを選択して、以降の処理を再び行う。一方、未選択のファイルがない場合（ステップＳ２０６否定）には、処理結果を制御部９の内部メモリに格納し、リターンする。【００６０】
次に、本実施例に係る利用者端末３の処理の流れを説明する。図１２は、実施例１に係る伸張・検索処理の手順を示すフローチャートである。【００６１】
図１２に示すように、伸張部１４ａは、辞書１３ｂを初期化する（ステップＳ３０１）。伸張部１４ａは、圧縮された複数のデジタルコンテンツのファイルの中から未選択のファイルを伸張対象のファイルとして選択する（ステップＳ３０２）。伸張部１４ａは、辞書１３ｂを参照して、伸張対象のファイルの未処理の圧縮データが、「圧縮符号列」の項目に登録されたトライの木の葉を特定する（ステップＳ３０３）。【００６２】
検索部１４ｄは、伸張部１４ａにより特定されたトライの木の葉の構造体の照合フラグおよび置換フラグの値を取得する（ステップＳ３０４）。検索部１４ｄは、照合フラグの値が「１」であるか否かを判定する（ステップＳ３０５）。照合フラグの値が「１」である場合（ステップＳ３０５肯定）には、更新部１４ｃは、頻度データ１３ｄの検索文字列の出現回数の値、出現ファイル数の値を更新する（ステップＳ３０６）。【００６３】
検索部１４ｄは、置換フラグの値が「１」であるか否かを判定する（ステップＳ３０７）。置換フラグの値が「１」である場合（ステップＳ３０７肯定）には、伸張部１４ａは、辞書１３ｂを参照して、特定したトライの木の葉の置換テーブルへのポインタを取得する（ステップＳ３０８）。伸張部１４ａは、取得した置換テーブルへのポインタが指す置換文字列を置換テーブル１３ｅから取得する（ステップＳ３０９）。伸張部１４ａは、取得した置換文字列を伸張領域１３ｃに格納し（ステップＳ３１０）、ステップＳ３１３へ進む。【００６４】
一方、置換フラグの値が「１」でない場合（ステップＳ３０７否定）には、伸張部１４ａは、次のような処理を行う。すなわち、伸張部１４ａは、辞書１３ｂを参照して、トライの木のルートから、特定したトライの木の葉までの各文字列の文字コードを文字列の順番に連結したデータを伸張データとして取得する（ステップＳ３１１）。伸張部１４ａは、取得した伸張データを伸張領域１３ｃに格納する（ステップＳ３１２）。伸張部１４ａは、辞書１３ｂを更新する（ステップＳ３１３）。【００６５】
伸張部１４ａは、検索文字列のうち未選択の検索文字列を１つ選択する（ステップＳ３１４）。伸張部１４ａは、新たに辞書１３ｂに追加された文字列を特定する（ステップＳ３１５）。伸張部１４ａは、新たに辞書１３ｂに追加された文字列と、検索文字列とが一致するか否かを判定する（ステップＳ３１６）。【００６６】
一致する場合（ステップＳ３１６肯定）には、格納部１４ｂは、伸張部１４ａにより特定されたトライの木の葉の構造体の照合フラグの項目に「１」、置換フラグの項目に「１」、置換テーブルへのポインタの項目にポインタを設定する（ステップＳ３１７）。そして、ステップＳ３１８へ進む。一方、一致しない場合（ステップＳ３１６否定）には、伸張部１４ａは、検索文字列のうち未選択の検索文字列があるか否かを判定する（ステップＳ３１８）。未選択の検索文字列がある場合（ステップＳ３１８肯定）には、ステップＳ３１４へ戻る。一方、未選択の検索文字列がない場合（ステップＳ３１８否定）には、伸張部１４ａは、伸張対象のファイルに未処理の圧縮データがあるか否かを判定する（ステップＳ３１９）。伸張対象のファイルに未処理の圧縮データがある場合（ステップＳ３１９肯定）には、ステップＳ３０３へ戻る。一方、伸張対象のファイルに未処理の圧縮データがない場合（ステップＳ３１９否定）には、伸張部１４ａは、圧縮された複数のデジタルコンテンツのファイルの中に、未選択のファイルがあるか否かを判定する（ステップＳ３２０）。未選択のファイルがある場合（ステップＳ３２０肯定）には、ステップＳ３０２へ戻る。一方、未選択のファイルがない場合（ステップＳ３２０否定）には、処理結果を制御部１４の内部メモリに格納し、リターンする。【００６７】
上述してきたように、本実施例に係る利用者端末３は、圧縮された文字列をトライの木の葉で表される辞書１３ｂを用いて伸張する。また、本実施例に係る利用者端末３は、辞書１３ｂの登録内容および伸張された文字列に応じて、新たに伸張された文字列を含む文字列であって辞書１３ｂに未登録の文字列と、圧縮符号列との組合せが登録された新たな葉をトライの木に追加して辞書１３ｂを更新する。また、本実施例に係る利用者端末３は、トライの木の葉の新たな葉に登録された文字列が、検索文字列と一致する場合に、検索文字列に対応する圧縮符号列が登録されている葉を識別する情報，例えば「１」を照合フラグ、置換フラグに設定する。また、本実施例に係る利用者端末３は、照合フラグ、置換フラグを参照して、伸張対象の圧縮データに、検索文字列に対応する圧縮符号列があるか検索する。このように、本実施例に係る利用者端末３は、伸張対象の圧縮データに、検索文字列に対応する圧縮符号列がある場合には、検索に成功したと判定する。したがって、本実施例に係る利用者端末３によれば、伸張対象の圧縮データを伸張せずに、検索文字列の検索を行うことができるため、検索速度をより高速化することができる。すなわち、圧縮データに対する検索処理の処理時間を抑制することができる。【００６８】
また、本実施例に係る利用者端末３によれば、伸張開始前には、辞書１３ｂの登録内容が、初期化の状態であるにも関わらず、検索文字列に対応する圧縮符号列が登録されている葉を識別する情報を、辞書１３ｂを成長させながら登録することができる。【００６９】
また、本実施例に係る利用者端末３は、伸張対象の圧縮符号列が格納されたトライの木の葉の照合フラグの値が「１」である場合に、検索文字列が検索されたと判定し、検索文字列がファイルに含まれる個数を示す頻度データ１３ｄを更新する。そのため、本実施例に係る利用者端末３によれば、圧縮されたデジタルコンテンツのファイルを伸張し、伸張したファイルのデータを所定数の文字ずつ走査して検索文字列を検索する場合と比較して、検索処理の速度が高速となる。【００７０】
ここで、例えば、利用者端末３で処理対象となるデジタルコンテンツが、ＥＰＵＢ形式のデジタルコンテンツである場合を想定する。ＥＰＵＢ形式のデジタルコンテンツは、予めＺＩＰ形式で圧縮されていることがある。このような予め圧縮されたデジタルコンテンツについて、検索文字列の検索処理の高速化を図るために、国際公開第２００６／１２３４４８号などに記載されている出現マップを生成し、圧縮時に用いることが考えられる。本実施例に係る利用者端末３によれば、検索処理の速度がより高速となる結果、出現マップを生成する際に用いられる頻度データ１３ｂも高速に生成される。そのため、利用者端末３によれば、予め圧縮されたデジタルコンテンツから出現マップを生成する時間を短縮することができる。そして、利用者端末３は、頻度データ１３ｂを用いて出現マップを生成し、生成した出現マップを用いて、検索文字列を含むデジタルコンテンツのファイルを絞り込んだ上で、検索文字列の全文検索を行うことで、より一層の検索の高速化を図ることができる。【００７１】
また、本実施例に係る利用者端末３によれば、伸張対象の圧縮データを伸張させた場合の文字列が検索文字列である場合には、圧縮データを伸張する処理を省略して、圧縮データを置換文字列に置換するので、検索処理の速度が高速となる。
【実施例２】
【００７２】
さて、上記の実施例１では、圧縮方式としてＬＺ７８を採用した場合を例示したが、開示の装置はこれに限定されない。そこで、実施例２では、圧縮方式としてＬＺ７７を採用する場合について説明する。【００７３】
［システム２１の構成例］
実施例２に係るシステムについて説明する。図１３は、実施例２に係るシステムの構成の一例を示す図である。本実施例に係るシステム２１は、サーバ２２と、利用者端末２３とを有する。サーバ２１は、実施例１に係る記憶部８、制御部９に代えて記憶部２４、制御部２５を有する点が、実施例１と異なる。利用者端末２３は、実施例１に係る記憶部１３、制御部１４に代えて記憶部２６、制御部２７を有する点が、実施例１と異なる。なお、以下では、上記の実施例１と同様の機能を果たす各部や各機器については図１と同様の符号を付し、その説明は省略する場合がある。サーバ２２は、複数のデジタルコンテンツのファイルのデータのそれぞれを圧縮する。サーバ２２は、暗号化された複数のデジタルコンテンツのファイルのデータを、インターネット４を介して利用者端末２３に送信する。利用者端末２３は、受信した複数の電子書籍のファイルのデータを伸張しつつ、各ファイルに含まれる検索文字列を検索し、検索文字列の出現頻度、出現ファイル数を計数し、また、各ファイルの検索文字列が含まれる項目を表示する。【００７４】
サーバ２２は、入力部５と、出力部６と、送受信部７と、記憶部２４と、制御部２５とを有する。【００７５】
入力部５は、ユーザから、デジタルコンテンツを受け付けて、受け付けたデジタルコンテンツを制御部２５に入力する。また、入力部５は、ユーザから、後述の圧縮処理を実行する指示を受け付けて、受け付けた指示を制御部２５に入力する。出力部６は、サーバ２２の稼働状況を出力する。送受信部７は、サーバ２２と利用者端末２３との通信を行うための通信インタフェースである。例えば、送受信部７は、利用者端末２３からインターネット４を介して、コンテンツデータＤＢに登録されたデジタルコンテンツのファイルの送信要求を受信すると、受信した送信要求を制御部２５へ送信する。また、送受信部７は、制御部２５から後述のコンテンツＤＢ８ａに登録されたデジタルコンテンツのファイルを受信すると、受信したデジタルコンテンツのファイルを、インターネット４を介して利用者端末２３へ送信する。【００７６】
記憶部２４は、各種情報を記憶する。例えば、記憶部２４は、コンテンツＤＢ８ａを記憶する。コンテンツＤＢ８ａには、圧縮されたデジタルコンテンツのファイルが登録される。例えば、コンテンツＤＢ８ａには、後述の圧縮部２５ａにより圧縮されたデジタルコンテンツのファイルが登録される。コンテンツＤＢ８ａに登録されたデジタルコンテンツのファイルは、利用者端末２３からの指示に応じて、利用者端末２３へ送信される。【００７７】
記憶部２４は、例えば、フラッシュメモリなどの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部２４は、上記の種類の記憶装置に限定されるものではなく、ＲＡＭ（Random  Access  Memory)、ＲＯＭ（Read  Only  Memory)であってもよい。【００７８】
制御部２５は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。図１３に示すように、制御部２５は、圧縮部２５ａを有する。【００７９】
圧縮部２５ａは、入力部５から入力されたデジタルコンテンツのファイルを圧縮する。例えば、圧縮部２５ａは、ＬＺ７７の圧縮方式により、参照部および符号化部を有するスライド窓を用いて複数のデジタルコンテンツのファイルのそれぞれを圧縮する。圧縮部２５ａは、圧縮したファイルをデジタルコンテンツごとに、コンテンツＤＢ８ａに登録する。【００８０】
利用者端末２３は、入力部１０と、出力部１１と、送受信部１２と、記憶部２６と、制御部２７とを有する。【００８１】
入力部１０は、各種情報を制御部２７に入力する。例えば、入力部１０は、ユーザから検索文字列、および後述の伸張・検索処理を実行する指示を受け付けて、受け付けた検索文字列および指示を制御部２７に入力する。【００８２】
出力部１１は、後述の表示制御部２７ｅによって、置換文字列を含む項目、頻度データ１３ｄが示す文字ごとの出現回数および出現ファイル数を表示する。【００８３】
送受信部１２は、利用者端末２３とサーバ２２との通信を行うための通信インタフェースである。例えば、送受信部１２は、制御部２７から、コンテンツＤＢに登録されたデジタルコンテンツのファイルの送信要求を受信すると、受信した送信要求を、インターネット４を介してサーバ２２へ送信する。また、送受信部１２は、サーバ２２からコンテンツＤＢ８ａに登録されたデジタルコンテンツのファイルを受信すると、受信したファイルを制御部２７へ送信する。【００８４】
記憶部２６は、各種情報を記憶する。例えば、記憶部２６は、コンテンツＤＢ１３ａ、伸張領域１３ｃ、頻度データ１３ｄ、照合／置換テーブル２６ａ、照合フラグ２６ｂ、置換フラグ２６ｃ、アクセスポインタ２６ｄを記憶する。【００８５】
コンテンツＤＢ１３ａには、後述の伸張部２７ａにより伸張されたデジタルコンテンツの各ファイルが登録される。【００８６】
伸張領域１３ｃは、後述の伸張部２７ａにより伸張されたデータが格納される記憶領域である。記憶部２６の伸張領域１３ｃが示す記憶領域は、伸張バッファとも称される。【００８７】
照合／置換テーブル２６ａには、後述の格納部２７ｂにより、照合に用いられる照合文字列、および検索文字列を所定の文字列に変換した置換文字列が登録される。図１４は、利用者端末の処理で用いられるデータの一例を示す図である。図１４の例では、照合／置換テーブル２６ａに、照合文字列「ｂｉｔ」、検索文字列「ｂｉｔ」にタグ「<color>」、「</color>」が付与された置換文字列が登録された場合が示されている。【００８８】
照合フラグ２６ｂは、伸張された文字列の各文字に対応付けられたフラグである。すなわち、照合フラグ２６ｂには、伸張された文字ごとのフラグが設けられる。図１４の例では、照合フラグ２６ｂには、デジタルコンテンツのファイルの伸張された文字列「ａｃｄｂｂｉｂｉｔ・・・ｂｉｔ・・・」のそれぞれの文字ごとにフラグが設けられている。このように、各デジタルコンテンツのファイルが伸張された場合の文字列の各文字に対応付けられるため、照合フラグ２６ｂのサイズは、デジタルコンテンツのファイルが伸張されるにしたがって、大きくなる。照合フラグ２６ｂの各フラグは、ＯＮである場合には、参照部の対応する文字を起点とする文字列であって検索文字列の文字数分の文字列と、検索文字列とを照合させる照合命令を示す。照合フラグ２６ｂの各フラグには、スライド窓が移動した場合に、検索文字列の先頭文字と、参照部内の文字とが一致するときに、後述の格納部２７ｂにより、フラグがＯＮであることを示す値、例えば「１」が登録される。また、照合フラグ２６ｂの各フラグには、初期状態では、フラグがＯＦＦであることを示す値、例えば「０」が登録される。【００８９】
置換フラグ２６ｃは、伸張された文字列の各文字に対応付けられたフラグである。すなわち、置換フラグ２６ｃには、伸張された文字ごとのフラグが設けられる。図１４の例では、置換フラグ２６ｃには、デジタルコンテンツのファイルの伸張された文字列「ａｃｄｂｂｉｂｉｔ・・・ｂｉｔ・・・」のそれぞれの文字ごとにフラグが設けられている。このように、各デジタルコンテンツのファイルが伸張された場合の文字列の各文字に対応付けられるため、置換フラグ２６ｃのサイズは、デジタルコンテンツのファイルが伸張されるにしたがって、大きくなる。置換フラグ２６ｃの各フラグは、ＯＮである場合には、参照部内の文字列であって検索文字列の文字数分の文字列と、検索文字列との照合結果が一致である場合に、伸張対象の圧縮データであるポインタを置換文字列に置換させる置換命令を示す。置換フラグ２６ｃの各フラグには、スライド窓が移動した場合に、検索文字列の先頭文字と、参照部内の文字とが一致するときに、後述の格納部１４ｂにより、フラグがＯＮであることを示す値、例えば「１」が登録される。また、置換フラグ２６ｃの各フラグには、初期状態では、フラグがＯＦＦであることを示す値、例えば「０」が登録される。【００９０】
アクセスポインタ２６ｄには、スライド窓が移動した場合に、検索文字列の先頭文字と、参照部内の文字とが一致するときに、照合／置換テーブル２６ａに登録された置換文字列を指すポインタが格納部２７ｂにより登録される。アクセスポインタ２６ｄは、伸張された文字列の各文字に対応付けられた領域を有する。すなわち、アクセスポインタ２６ｄには、伸張された文字ごとに、ポインタを登録可能である。図１４の例では、アクセスポインタ２６ｄには、デジタルコンテンツのファイルの伸張された文字列「ａｃｄｂｂｉｂｉｔ・・・ｂｉｔ・・・」のそれぞれの文字ごとに、ポインタが登録される領域が設けられている。このように、アクセスポインタ２６ｄの各領域は、各デジタルコンテンツのファイルが伸張された場合の文字列の各文字に対応付けられるため、アクセスポインタ２６ｄのサイズは、デジタルコンテンツのファイルが伸張されるにしたがって、大きくなる。【００９１】
記憶部２６は、例えば、フラッシュメモリなどの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部２６は、上記の種類の記憶装置に限定されるものではなく、ＲＡＭ（Random  Access  Memory)、ＲＯＭ（Read  Only  Memory)であってもよい。【００９２】
制御部２７は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。図１に示すように、制御部２７は、伸張部２７ａと、格納部２７ｂと、更新部２７ｃと、検索部２７ｄと、表示制御部２７ｅとを有する。【００９３】
伸張部２７ａは、ＬＺ７７の圧縮方式により、スライド窓を用いて、デジタルコンテンツのファイルを伸張する。例えば、伸張部２７ａは、スライド窓の参照部内の伸張された文字列の中から、スライド窓の符号化部内のポインタが示す文字列を取得する。そして、伸張部２７ａは、ポインタを取得した文字列に置換することで、符号化部に位置するポインタを伸張する。そして、伸張部２７ａは、伸張した文字列が参照部に含まれるように、デジタルコンテンツのファイルのデータ上を移動させる。すなわち、伸張部２７ａは、圧縮された文字列を伸張された文字列を用いて伸張する。【００９４】
具体例を挙げて説明する。伸張部２７ａは、サーバ２２から送信された複数のデジタルコンテンツを取得する。伸張部２７ａは、取得した複数のデジタルコンテンツのファイルの中から未選択のファイルを伸張対象のファイルとして選択する。そして、伸張部２７ａは、スライド窓の符号化部に伸張対象のファイルを設定する。続いて、伸張部２７ａは、スライド窓の符号化部に位置する未処理の圧縮データを参照部のデータを辞書として参照して伸張する。【００９５】
なお、符号化部に存在するデータとしては、圧縮されていないデータである生データと、圧縮されたデータであるポインタが存在する。そこで、生データとポインタとを識別可能なように、生データの先頭には「０」が付加され、ポインタの先頭には「１」が付加される。例えば、文字「Ａ」が生データとして符号化部に存在する場合には、符号化部に存在するデータは、「<0,0x41>」で表される。また、ポインタは、「<1,m,l>」で表される。ここで、「m」は、最長一致系列のスライド窓の先頭からの位置を示す。「l」は、最長一致系列の長さを示す。すなわち、ポインタは、参照部のｍ番目の文字からｌ個までの文字の文字列を示す。【００９６】
伸張部２７ａは、符号化部内のデータのうち、先頭の値が「０」であるデータについては、生データであるため、「０」以降のデータをそのまま伸張データとして取得する。また、伸張部２７ａは、符号化部内のデータのうち、先頭の値が「１」であるデータについては、ポインタであるため、ポインタが示す参照部の文字列のデータを伸張データとして取得する。伸張部２７ａは、伸張データを伸張領域１３ｃに格納する。【００９７】
また、伸張部２７ａは、伸張処理が行われた文字列の文字数分、伸張対象のファイルのデータ上のスライド窓の位置を移動させる。そして、伸張部２７ａは、伸張対象のファイルにおけるスライド窓の総移動量を計算する。例えば、伸張処理を行う前のスライド窓の総移動量は「０」であるが、１回目の伸張におけるスライド窓の移動量が「ｑ」である場合には、総移動量は「ｑ」となる。これに加えて、２回目の伸張における移動量が「ｕ」である場合には、総移動量は、「ｑ＋ｕ」となる。【００９８】
そして、伸張部２７ａは、スライド窓が移動された場合に、移動後の参照部に位置する文字列の中に、検索文字列の先頭文字と一致する文字が存在するか否かを判定する。図１５は、利用者端末が実行する処理を説明するための図である。図１５の例では、参照部５１および符号化部５２を有するスライド窓５０の参照部５１内に「ａｃｄｂｂｉｔｉｔ」の文字列が含まれている。図１５の例において、伸張部２７ａは、検索文字列が「ｂｉｔ」である場合には、参照部５１の文字列の中に文字「ｂ」が存在するか否かを判定すると、「一致する文字「ｂ」が存在する」と判定する。なお、実際には、符号化部５２内には、生データおよびポインタが存在するが、図１５の例では、符号化部５２内に模式的にポインタなどを伸張した場合の文字列「・・・ｂｉｔ」が示されている。【００９９】
そして、移動後の参照部に位置する文字列の中に、検索文字列の先頭文字と一致する文字が存在すると判定した場合には、伸張部２７ａは、一致すると判定された参照部５１の文字のスライド窓の先頭からの位置を特定する。例えば、検索文字列が「ｂｉｔ」であり、参照部５１の文字列の中に文字「ｂ」が存在し、文字「ｂ」のスライド窓の先頭からの位置が「１２６」である場合には、伸張部２７ａは、文字「ｂ」の位置として「１２６」を特定する。【０１００】
そして、伸張部２７ａは、一致すると判定された参照部の文字に対応する、照合フラグ２６ｂのフラグの位置、置換フラグ２６ｃのフラグの位置、アクセスポインタ２６ｄのポインタが格納される領域の位置を特定する。以下、「一致すると判定された参照部の文字に対応するフラグや領域の位置」を「格納位置」と表記する。伸張部２７ａは、格納位置を以下の式（１）に従って特定することができる。
格納位置＝「一致すると判定された参照部の文字のスライド窓の先頭からの位置」−（「スライド窓の参照部の長さ」−「総スライド量」）・・式（１）【０１０１】
例えば、図１４の例では、伸張部２７ａは、検索文字列「ｂｉｔ」の先頭文字「ｂ」と一致すると判定された参照部内の文字「ｂ」のそれぞれについて、格納位置として、「３」、「４」、「６」、「Ｍ」を特定した場合が示されている。このようにして特定された格納位置は、後述の格納部２７ｂにより、照合フラグ２６ｂのフラグ、置換フラグ２６ｃのフラグに「１」を設定する際や、アクセスポインタ２６ｄの領域にポインタを設定する際に用いられる。【０１０２】
また、伸張部２７ｅは、後述の検索部２７ｄにより、特定した格納位置が示す置換フラグ２６ｂのフラグの値が「１」であると判定された場合には、次のような処理を行う。すなわち、伸張部２７ａは、符号化部のポインタを伸張するのではなく、アドレスポインタ２６ｄのポインタを取得し、取得したポインタが示す置換文字列を照合／置換テーブル２６ａから取得し、取得した置換文字列を伸張領域１３ｃに格納する。【０１０３】
格納部２７ｂは、スライド窓の位置が移動された場合に、移動後の参照部に位置する文字列の中に、検索文字列の先頭文字と一致する文字が存在するときには、かかる先頭文字と一致する参照部内の文字に対応する照合フラグ２６ｂのフラグに「１」を設定する。例えば、図１４および図１５の例において、参照部内に、検索文字列「ｂｉｔ」の先頭文字「ｂ」が存在すると伸張部２７ａにより判定された場合には、格納部２７ｂは、次のような処理を行う。すなわち、格納部２７ｂは、参照部内の文字「ｂ」のそれぞれについて特定された格納位置が示す照合フラグ２６ｂのフラグに、「１」を設定する。【０１０４】
また、格納部２７ｂは、スライド窓の位置が移動された場合に、移動後の参照部に位置する文字列の中に、検索文字列の先頭文字と一致する文字が存在するときには、かかる先頭文字と一致する参照部内の文字に対応する置換フラグ２６ｃのフラグに「１」を設定する。例えば、図１４および図１５の例において、参照部内に、検索文字列「ｂｉｔ」の先頭文字「ｂ」が存在すると伸張部２７ａにより判定された場合には、格納部２７ｂは、次のような処理を行う。すなわち、格納部２７ｂは、参照部内の文字「ｂ」のそれぞれについて特定された格納位置が示す置換フラグ２６ｃのフラグに、「１」を設定する。【０１０５】
また、格納部２７ｂは、スライド窓の位置が移動された場合に、移動後の参照部に位置する文字列の中に、検索文字列の先頭文字と一致する文字が存在するときには、かかる先頭文字と一致する参照部内の文字に対応するアクセスポインタ２６ｄの領域にポインタを設定する。例えば、図１４および図１５の例において、参照部内に、検索文字列「ｂｉｔ」の先頭文字「ｂ」が存在すると伸張部２７ａにより判定された場合には、格納部２７ｂは、次のような処理を行う。すなわち、格納部２７ｂは、参照部内の文字「ｂ」のそれぞれについて特定された格納位置が示すアクセスポインタ２６ｄの領域に、照合／置換テーブル２６ａの検索文字列「ｂｉｔ」を指すポインタ「Ｐ１」を登録する。【０１０６】
更新部２７ｃは、頻度データ１３ｄを更新する。例えば、更新部２７ｃは、後述の検索部２７ｄによる照合の結果、参照部から取得した文字列と、照合文字列とが一致すると判定された場合には、未処理の圧縮データを伸張した文字列が検索文字列であるため、次の処理を行う。すなわち、更新部２７ｃは、頻度データ１３ｄの検索文字列の出現回数の値を１つインクリメントし、伸張対象のファイルの検索文字列の出現ファイル数の値を１つインクリメントする。【０１０７】
検索部２７ｄは、スライド窓が移動された場合に、符号化部の伸張対象のポインタが示す参照部内の文字列の中に、照合フラグ２６ａのフラグに「１」が設定された文字があるか否かを判定する。例えば、検索部２７ｄは、まず、符号化部の伸張対象のポインタが示す参照部内の文字列の文字それぞれについて、上記の式（１）を用いて、格納位置を特定する。そして、検索部２７ｄは、特定した格納位置が示す照合フラグ２６ｂのフラグの値が「１」であるか否かを判定する。【０１０８】
そして、符号化部の伸張対象のポインタが示す参照部内の文字列の中に、照合フラグ２６ａのフラグに「１」が設定された文字がある場合には、検索部２７ｄは、アクセスポインタ２６ｄのポインタが示す照合用文字列を照合／置換テーブル２６ａから取得する。そして、検索部２７ｄは、照合フラグ２６ａのフラグに「１」が設定された参照部の文字を起点とした、検索文字列の文字数分の文字列を取得する。そして、検索部２７ｄは、取得した文字列と、取得した照合用文字列とを照合する。すなわち、検索部２７ｄは、圧縮されたデータを伸張させた場合の文字列のうち、照合フラグ２６ａのフラグに「１」が設定された文字が登場する箇所ごとに検索文字列を検索する。【０１０９】
また、検索部２７ｄは、スライド窓が移動された場合に、符号化部の伸張対象のポインタが示す参照部内の文字列の中に、置換フラグ２６ｂのフラグに「１」が設定された文字があるか否かを判定する。例えば、検索部２７ｄは、まず、符号化部の伸張対象のポインタが示す参照部内の文字列の文字それぞれについて、上記の式（１）を用いて、格納位置を特定する。そして、検索部２７ｄは、特定した格納位置が示す置換フラグ２６ｂのフラグの値が「１」であるか否かを判定する。【０１１０】
表示制御部２７ｅは、伸張領域１３ｃに格納された置換文字列を含む項目を出力部１１の表示デバイスに表示させる。また、表示制御部２７ｅは、頻度データ１３ｄが示す文字毎の出現回数および出現ファイル数を出力部１１の表示デバイスに表示させる。【０１１１】
制御部２７は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などの集積回路を有する。なお、制御部２７は、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などの電子回路を有してもよい。【０１１２】
［処理の流れ］
次に、本実施例に係るサーバ２２の処理の流れを説明する。図１６は、実施例２に係る圧縮処理の手順を示すフローチャートである。この圧縮処理の実行タイミングとしては様々なタイミングが考えられる。例えば、圧縮処理は、入力部５からデジタルコンテンツが入力された場合に実行されるようにしてもよい。なお、本実施例に係るシステム１の処理の流れは、実施例１に係るシステムのシーケンス図で示す処理の流れと同様であるので、説明を省略する。【０１１３】
図１６に示すように、圧縮部２５ａは、スライド窓を初期化して、デジタルコンテンツのファイルをスライド窓に設定する（ステップＳ４０１）。圧縮部２５ａは、入力部５から入力されたデジタルコンテンツのファイルを１つ選択する（ステップＳ４０２）。圧縮部２５ａは、選択したデジタルコンテンツのファイルのデータのうち圧縮処理が未処理のデータがあるか否かを判定する（ステップＳ４０３）。圧縮処理が未処理のデータがある場合（ステップＳ４０３肯定）には、圧縮部２５ａは、スライド窓を用いて、ＬＺ７７の圧縮方式で圧縮する（ステップＳ４０４）。圧縮部２５ａは、スライド窓を移動させて（ステップＳ４０５）、ステップＳ４０３へ戻る。【０１１４】
圧縮処理が未処理のデータがない場合（ステップＳ４０３否定）には、圧縮部２５ａは、ステップＳ４０２で未選択のファイルがあるか否かを判定する（ステップＳ４０６）。未選択のファイルがある場合（ステップＳ４０６肯定）には、ステップＳ４０２に戻り、圧縮部２５ａは、未選択のファイルを選択して、以降の処理を再び行う。一方、未選択のファイルがない場合（ステップＳ４０６否定）には、処理結果を制御部２５の内部メモリに格納し、リターンする。【０１１５】
次に、本実施例に係る利用者端末２３の処理の流れを説明する。図１７は、実施例２に係る伸張・検索処理の手順を示すフローチャートである。【０１１６】
図１７に示すように、伸張部２７ａは、スライド窓を初期化して、未選択のデジタルコンテンツの圧縮ファイルを処理対象のファイルとして選択し、処理対象のファイルをスライド窓に設定する（ステップＳ５０１）。伸張部２７ａは、処理対象のファイルのデータのうち伸張処理が未処理のデータがあるか否かを判定する（ステップＳ５０２）。未処理のデータがない場合（ステップＳ５０２否定）には、伸張部２７ａは、全てのデジタルコンテンツのファイルを処理対象のファイルとして選択したか否かを判定する（ステップＳ５０３）。全てのデジタルコンテンツのファイルを選択していない場合（ステップＳ５０３否定）には、ステップＳ５０１に戻る。一方、全てのデジタルコンテンツのファイルを選択した場合（ステップＳ５０３肯定）には、処理結果を制御部２７の内部メモリに格納し、リターンする。【０１１７】
また、未処理のデータがある場合（ステップＳ５０２肯定）には、伸張部２７ａは、スライド窓の符号化部内の未処理の圧縮データを参照部のデータを辞書として参照して伸張し、伸張領域１３ｃに格納する（ステップＳ５０４）。伸張部２７ａは、スライド窓をスライドさせることでスライド窓の参照部内の文字列が示す辞書を更新する（ステップＳ５０５）。伸張部２７ａは、伸張対象のファイルにおけるスライド窓の総移動量を計算する（ステップＳ５０６）。伸張部２７ａは、検索文字列のうち未選択の検索文字列を１つ選択する（ステップＳ５０７）。伸張部２７ａは、参照部に位置する文字列の中に、検索文字列の先頭文字と一致する文字が存在するか否かを判定する（ステップＳ５０８）。【０１１８】
一致する文字が存在する場合（ステップＳ５０８肯定）には、伸張部２７ａは、参照部内の検索文字列の先頭文字と一致する文字について、スライド窓の先頭からの位置を特定する（ステップＳ５０９）。伸張部２７ａは、格納位置を特定する（ステップＳ５１０）。格納部２７ｂは、検索文字列の先頭文字と一致する参照部内の文字に対応する照合フラグ２６ｂのフラグに「１」を設定する（ステップＳ５１１）。格納部２７ｂは、検索文字列の先頭文字と一致する参照部内の文字に対応する置換フラグ２６ｃのフラグに「１」を設定する（ステップＳ５１２）。格納部２７ｂは、検索文字列の先頭文字と一致する参照部内の文字に対応するアドレスポインタ２６ｃの領域に、検索文字列を置換するための置換文字列を指すポインタを設定する（ステップＳ５１３）。伸張部２７ａは、ステップＳ５０７で未選択の検索文字列があるか否かを判定する（ステップＳ５１４）。未選択の検索文字列がある場合（ステップＳ５１４肯定）には、ステップＳ５０７へ戻る。【０１１９】
一方、未選択の検索文字列がない場合（ステップＳ５１４否定）には、検索部２７ｄは、次のような処理を行う。すなわち、検索部２７ｄは、符号化部の伸張対象のポインタが示す参照部内の文字列の中に、照合フラグ２６ａのフラグに「１」が設定された文字があるか否かを判定する（ステップＳ５１６）。文字がない場合（ステップＳ５１６否定）には、後述のステップ５２５へ進む。一方、文字がある場合（ステップＳ５１６肯定）には、検索部２７ｄは、アクセスポインタ２６ｄのポインタが示す照合用文字列を照合／置換テーブル２６ａから取得する（ステップＳ５１７）。【０１２０】
検索部２７ｄは、照合フラグ２６ａのフラグに「１」が設定された参照部の文字を起点とした、検索文字列の文字数分の文字列を取得する（ステップＳ５１８）。検索部２７ｄは、取得した文字列と、取得した照合用文字列とを照合する（ステップＳ５１９）。照合の結果一致した場合（ステップＳ５２０肯定）には、更新部２７ｃは、頻度データ１３ｄを更新する（ステップＳ５２１）。検索部２７ｄは、符号化部の伸張対象のポインタが示す参照部内の文字列の中に、置換フラグ２６ｂのフラグに「１」が設定された文字があるか否かを判定する（ステップＳ５２２）。一方、照合の結果一致していない場合（ステップＳ５２０否定）には、伸張部２７ａは、伸張データを取得し（ステップＳ５２５）、ステップＳ５２７へ進む。【０１２１】
符号化部の伸張対象のポインタが示す参照部内の文字列の中に、置換フラグ２６ｂのフラグに「１」が設定された文字がある場合（ステップＳ５２２肯定）には、伸張部２７ａは、次のような処理を行う。すなわち、伸張部２７ａは、ポインタをアドレスポインタ２６ｄから取得し、取得したポインタが示す置換文字列を照合／置換テーブル２６ａから取得する（ステップＳ５２３）。伸張部２７ａは、取得した置換文字列を伸張領域１３ｃに格納し（ステップＳ５２４）、ステップＳ５０２に戻る。【０１２２】
一方、符号化部の伸張対象のポインタが示す参照部内の文字列の中に、置換フラグ２６ｂのフラグに「１」が設定された文字がない場合（ステップＳ５２２否定）には、伸張部２７ａは、次のような処理を行う。伸張部２７ａは、伸張データを取得する（ステップＳ５２６）。伸張部２７ａは、伸張データを伸張領域１３ｃに格納し（ステップＳ５２７）、ステップＳ５０２に戻る。【０１２３】
上述してきたように、本実施例に係る利用者端末２３は、圧縮された文字列を伸張された文字列を用いて伸張する。また、本実施例に係る利用者端末２３は、伸張された文字が、検索文字列の一部と一致する場合に、一致する文字に対応する照合フラグ、置換フラグに「１」を設定する。また、本実施例に係る利用者端末２３は、圧縮された文字列を伸張させた場合の文字列のうち、照合フラグ、置換フラグに「１」が設定された文字が登場する箇所ごとに検索文字列があるか検索する。このように、本実施例に係る利用者端末２３は、伸張対象の圧縮データを伸張させた場合の文字列のうち、照合フラグ、置換フラグに「１」が設定された文字が登場する箇所ごとに検索文字列があるか検索する。本実施例に係る利用者端末２３は、検索文字列がある場合には、検索に成功したと判定する。したがって、本実施例に係る利用者端末２３によれば、伸張対象の圧縮データを伸張せずに、検索文字列の検索を行うことができるため、検索速度をより高速化することができる。すなわち、圧縮データに対する検索処理の処理時間を抑制することができる。【０１２４】
また、本実施例に係る利用者端末２３によれば、伸張開始前には、スライド窓が示す辞書の登録内容が、空の状態であるにも関わらず、検索文字列の一部と一致する文字に係る情報を、スライド窓が示す辞書を成長させながら登録することができる。【０１２５】
また、本実施例に係る利用者端末２３は、伸張対象の圧縮データを伸張させた場合の文字列のうち、照合フラグ、置換フラグに「１」が設定された文字が登場する箇所ごとに検索文字列があるか検索する。そのため、本実施例に係る利用者端末２３によれば、伸張された文字全てについて検索文字列の検索を行わないため、圧縮されたデジタルコンテンツのファイルを伸張し、伸張したファイルのデータを所定数の文字ずつ走査して全てのデータについて検索文字列を検索する場合と比較して、検索処理の速度が高速となる。【０１２６】
ここで、例えば、利用者端末２３で処理対象となるデジタルコンテンツが、ＥＰＵＢ形式のデジタルコンテンツである場合を想定する。ＥＰＵＢ形式のデジタルコンテンツは、予めＺＩＰ形式で圧縮されていることがある。このような予め圧縮されたデジタルコンテンツについて、検索文字列の検索処理の高速化を図るために、国際公開第２００６／１２３４４８号などに記載されている出現マップを生成し、圧縮時に用いることが考えられる。本実施例に係る利用者端末２３によれば、検索処理の速度がより高速となる結果、出現マップを生成する際に用いられる頻度データ１３ｂも高速に生成される。そのため、利用者端末２３によれば、予め圧縮されたデジタルコンテンツから出現マップを生成する時間を短縮することができる。そして、利用者端末２３は、頻度データ１３ｂを用いて出現マップを生成し、生成した出現マップを用いて、検索文字列を含むデジタルコンテンツのファイルを絞り込んだ上で、検索文字列の全文検索を行うことで、より一層の検索の高速化を図ることができる。【０１２７】
また、本実施例に係る利用者端末２３によれば、検索文字列がある箇所については、圧縮データを伸張する処理を省略して、置換文字列に置換するので、検索処理の速度が高速となる。【０１２８】
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。【０１２９】
例えば、実施例１では、検索文字列に対応する圧縮符号列が登録された葉を特定した後も、伸張処理を行ってトライの木で表される辞書１３ｂを拡大する場合を例示したが、開示の装置はこれに限られない。例えば、開示の装置は、検索文字列に対応する圧縮符号列が登録された葉を特定した後は、伸張処理を行わずに、伸張されていない圧縮データに対して、特定した葉に登録された圧縮符号列があるか検索を行うことで、より高速に検索を行うこともできる。【０１３０】
また、実施例１において説明した処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。また、実施例１において説明した処理のうち、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。例えば、ステップＳ３１４、ステップＳ５０７において、人間が検索文字列を選択してもよい。【０１３１】
また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理を任意に細かくわけたり、あるいはまとめたりすることができる。また、ステップを省略することもできる。ステップＳ５１１〜Ｓ５１３の処理をまとめることもできる。【０１３２】
また、各種の負荷や使用状況などに応じて、各実施例において説明した各処理の各ステップでの処理の順番を変更できる。【０１３３】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、更新部１４ｃと検索部１４ｄとが統合されてもよい。また、更新部２７ｃと検索部２７ｄとが統合されてもよい。
【実施例３】
【０１３４】
［検索プログラム］
また、上記の実施例１、２で説明した利用者端末の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。そこで、以下では、図１８を用いて、上記の実施例で説明した利用者端末と同様の機能を有する検索プログラムを実行するコンピュータの一例を説明する。図１８は、検索プログラムを実行するコンピュータを示す図である。【０１３５】
図１８に示すように、コンピュータ３００は、ＣＰＵ（Central  Processing  Unit）３１０、ＲＯＭ（Read  Only  Memory）３２０、ＨＤＤ（Hard  Disk  Drive）３３０、ＲＡＭ（Random  Access  Memory）３４０を有する。また、コンピュータ３００は、入力装置３５０、出力装置３６０、インターネット４に接続された通信インタフェース３７０を有する。これら３１０〜３７０の各部は、バス３８０を介して接続される。【０１３６】
入力装置３５０は、各種の入力デバイスを含み、例えば、キーボードやマウスを含む。入力装置３５０は、各実施例のサーバが有する入力部５に対応する。【０１３７】
出力装置３６０は、各種の出力デバイスを含み、例えば、液晶ディスプレイを含む。出力装置３６０は、各実施例のサーバが有する出力部６に対応する。【０１３８】
通信インタフェース３７０は、各実施例のサーバが有する送受信部７に対応する。【０１３９】
ＲＯＭ３２０には、上記の実施例で示す伸張部、格納部、検索部と同様の機能を発揮する検索プログラム３２０ａが予め記憶される。なお、検索プログラム３２０ａについては、適宜分離しても良い。【０１４０】
そして、ＣＰＵ３１０が、検索プログラム３２０ａをＲＯＭ３２０から読み出して実行する。【０１４１】
そして、ＨＤＤ３３０には、コンテンツＤＢや、辞書および置換テーブル、または照合／置換テーブル、照合フラグ、置換フラグ、アクセスポインタが設けられる。これらのうち、ンテンツＤＢ、辞書、置換テーブルのそれぞれは、コンテンツＤＢ１３ａ、辞書１３ｂ，置換テーブル１３ｅのそれぞれに対応する。また、照合／置換テーブル、照合フラグ、置換フラグ、アクセスポインタのそれぞれは、照合／置換テーブル２６ａ、照合フラグ２６ｂ、置換フラグ２６ｃ、アクセスポインタ２６ｄに対応する。【０１４２】
そして、ＣＰＵ３１０は、コンテンツＤＢや、辞書および置換テーブル、または照合／置換テーブル、照合フラグ、置換フラグ、アクセスポインタを読み出してＲＡＭ３４０に格納する。さらに、ＣＰＵ３１０は、ＲＡＭ３４０に格納されたコンテンツＤＢや、辞書および置換テーブル、または照合／置換テーブル、照合フラグ、置換フラグ、アクセスポインタを用いて、検索プログラムを実行する。なお、ＲＡＭ３４０に格納される各データは、常に全てのデータがＲＡＭ３４０に格納される必要はなく、処理に必要なデータのみがＲＡＭ３４０に格納されれば良い。【０１４３】
なお、上記した検索プログラムについては、必ずしも最初からＲＯＭに記憶させておく必要はない。【０１４４】
例えば、コンピュータに挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」にプログラムを記憶させておく。そして、コンピュータがこれらからプログラムを読み出して実行するようにしてもよい。  【０１４５】
さらには、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータに接続される「他のコンピュータ（またはサーバ）」などにプログラムを記憶させておく。そして、コンピュータがこれらからプログラムを読み出して実行するようにしてもよい。
【実施例４】
【０１４６】
実施例４について図１９を用いて説明する。実施例４も例えば図１８に示すコンピュータを用いて実行可能である。【０１４７】
図１９は、ＲＡＭ３４０内のデータの関係について説明する図である。メモリ領域１０００は、実施例４の処理に用いられるデータを格納するメモリ領域である。メモリ領域１００１は、入力インタフェースを介して入力された入力文字情報を格納するメモリ領域である。メモリ領域１００２は、伸張処理に用いられる辞書データと、照合制御に用いる制御情報と、を格納するメモリ領域である。メモリ領域１００３は、伸張処理を実行するためのメモリ領域である。メモリ領域１００４は、伸張されたデータを格納するメモリ領域である。【０１４８】
辞書データベース１０１０は、辞書データを格納する記憶部であり、例えば、図１８のＨＤＤ３３０などにより実現される。伸張処理を開始する場合に、辞書データが、辞書データベース１０１０からメモリ領域１００２に読み出される。辞書データは、符号情報と文字情報とを関連付けるための情報である。符号情報と文字情報とは、予め辞書データベース１０１０内で関連付けられていても良いし、辞書データベース内には符号情報と文字情報とを関連付けるアルゴリズムを格納しておき、アルゴリズムに基づいてメモリ領域１００２内で符号情報と文字情報とを関連付けても良い。【０１４９】
コンテンツデータベース１０２０は、符号化されたコンテンツデータを格納する記憶部であり、例えば、図１８のＨＤＤ３３０などにより実現される。コンテンツデータベース１０２０に格納されたコンテンツデータに対して入力文字情報の検索処理を行なう場合には、コンテンツデータに含まれる複数の符号情報が順次読み出され、メモリ領域１００３に格納される。【０１５０】
次に、図１９に示すデータに対して図１８に示すＣＰＵ３１０が実行する処理の流れについて説明する。まず、ＣＰＵ３１０は、入力文字情報を受け付けた場合に、受け付けた入力文字情報をメモリ領域１００１に格納する。ＣＰＵ３１０は、メモリ領域１００１に入力文字情報が格納された場合に、辞書データベース１０１０から辞書情報を読み出し、メモリ領域１００２に符号情報と文字情報とを関連付けて格納する。【０１５１】
次に、ＣＰＵ３１０は、メモリ領域１００２に格納された文字情報のうち、入力文字情報に含まれる文字情報を抽出する。ＣＰＵ３１０は、メモリ領域１００２に格納された制御情報のうち、抽出された文字情報に対応する制御情報を１に書き換える。ＣＰＵ３１０が書き換える前は、メモリ領域１００２内の制御情報は０であるものとする。例えば、入力文字情報が「ＡＰＰＬＥ」である場合には、図１９に示すとおり、「Ａ」に対応する制御情報を「１」となる。ちなみに、「Ｂ」は「ＡＰＰＬＥ」に含まれないため、「Ｂ」に対応する制御情報は「０」となる。【０１５２】
次に、ＣＰＵ３１０は、コンテンツデータベースから符号情報を順次メモリ領域１００３に読み出す。ＣＰＵ３１０は、メモリ領域１００２に格納された辞書データを参照して、読み出した符号情報に対応する文字情報をメモリ領域１００３に読み出すことで、伸張処理を行なう。ＣＰＵ３１０は、辞書データを参照する際に、コンテンツデータベース１０２０から読み出した符号情報に対応する制御情報も併せて読み出す。ちなみに伸張処理は、付加的な処理であり、制御情報「１」と対応する符号情報を読み出した場合に伸張処理が開始されるなどの制御を行なっても良い。【０１５３】
ＣＰＵ３１０は、読み出した制御情報が「０」である場合には、入力文字情報との照合処理を開始しない。ＣＰＵ３１０は、読み出した制御情報が「０」である場合には、入力文字情報との照合処理を開始する。例えば、コンテンツデータベース１０２０から読み出した符号情報が、文字情報「Ａ」に対応する符号情報「０１」であった場合には、照合処理が開始される。【０１５４】
照合処理を開始した場合は、ＣＰＵ３１０は、制御情報「１」に対応した符号情報（例えば、符号情報「０１」）に連続する符号情報を、コンテンツデータベース１０２０から読み出す。読み出した符号情報について、メモリ領域１００２を参照して伸張処理を行なう。次に、ＣＰＵは、メモリ領域１００１を参照して、伸張処理によって得られた文字情報が入力文字情報に含まれているかを判断する。伸張処理によって得られた文字情報が入力文字に含まれており、且つ入力文字情報に照合されていない文字情報が存在する場合には、ＣＰＵ３１０は、照合処理を繰り返し行なう。そのほかの場合は、ＣＰＵ３１０は、照合処理を終了する。【０１５５】
例えば、符号情報「０１」の後に読み出した符号情報が文字情報「Ｐ」に対応する符号情報である場合は、次に連続する符号情報についての照合処理を開始する。【０１５６】
上述の流れで処理を行なうことで、入力文字列と照合処理を行なう回数が抑制されるため、圧縮データに対する検索処理の処理時間を抑制することができる。また、上述の照合処理制御が行われるため、圧縮されたデータを全て伸張した後に、所定の検索文字列を含む項目を検索する制御によって、伸張処理に用いられる伸張バッファの容量を圧縮されたデータを全て伸張した場合のデータのサイズよりも小さくできないという事態になることが抑制される。
【符号の説明】
【０１５７】
１３ａ      コンテンツＤＢ
１３ｄ      頻度データ
２１        システム
２２        サーバ
２３        利用者端末
２６        記憶部
２６ａ      照合／置換テーブル
２６ｂ      照合フラグ
２６ｃ      置換フラグ
２６ｄ      アクセスポインタ
２７        制御部
２７ａ      伸張部
２７ｂ      格納部
２７ｃ      更新部
２７ｄ      検索部
【図１】
0005939259.tif 000002
【図２】
0005939259.tif 000003
【図３】
0005939259.tif 000004
【図４】
0005939259.tif 000005
【図５】
0005939259.tif 000006
【図６】
0005939259.tif 000007
【図７】
0005939259.tif 000008
【図８】
0005939259.tif 000009
【図９】
0005939259.tif 000010
【図１０】
0005939259.tif 000011
【図１１】
0005939259.tif 000012
【図１２】
0005939259.tif 000013
【図１３】
0005939259.tif 000014
【図１４】
0005939259.tif 000015
【図１５】
0005939259.tif 000016
【図１６】
0005939259.tif 000017
【図１７】
0005939259.tif 000018
【図１８】
0005939259.tif 000019
【図１９】
0005939259.tif 000020