(57)【要約】【課題】文書データから検索条件が示す文字列を高速に検索する。【解決手段】情報処理装置１００は、対象テキストデータに対する検索文字列を受け付け、対象テキストデータに出現する文字または単語それぞれについての当該対象テキストデータにおける出現位置をビットマップデータとして対応づけたビットマップ型インデックス１３２と、検索文字列を構成する各文字または各単語の当該検索文字列における出現順序に対応づけて生成される検索ビットマップデータとの論理演算により、当該検索文字列を検索する。【選択図】図５
2018067264.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
対象テキストデータに対する検索文字列を受け付け、
前記対象テキストデータに出現する文字または単語それぞれについての前記対象テキストデータにおける出現位置をビットマップデータとして対応づけたインデックス情報と、前記検索文字列を構成する各文字または各単語の前記検索文字列における出現順序に対応づけて生成される検索ビットマップデータとの論理演算により、前記検索文字列を検索する
処理を実行させるデータ検索プログラム。
【請求項２】
該受け付けた検索文字列に文字と単語とが混在する場合には、予め定められた文字と単語との混在ルールに基づき、前記検索文字列を分解し、
前記検索する処理は、前記インデックス情報と、該分解された各文字および各単語の前記検索文字列における出現順序に対応づけて生成される検索ビットマップデータとの論理演算により、前記検索文字列を検索する
処理を特徴とする請求項１に記載のデータ検索プログラム。
【請求項３】
前記対象テキストデータを受け付け、
前記対象テキストデータに出現する文字または単語それぞれについての前記インデックス情報を生成するとともに、前記文字の単位または前記単語の単位で符号化し、
前記検索文字列を受け付ける処理は、符号化された前記対象テキストデータに対する検索文字列を受け付け、
前記検索する処理は、該生成された前記インデックス情報と、前記検索文字列を構成する各文字または各単語の前記検索文字列における出現順序に対応づけて生成される検索ビットマップデータとの論理演算により、前記検索文字列を検索する
処理を実行させる請求項１に記載のデータ検索プログラム。
【請求項４】
前記検索する処理は、
前記インデックス情報に対応づけられた、前記検索文字列を構成する第１の文字のビットマップデータを左シフトし、左シフトした結果を示すビットマップデータと、前記インデックス情報に対応づけられた、前記検索文字列を構成する前記第１の文字に連続する第２の文字のビットマップデータとをＡＮＤ演算し、
ＡＮＤ演算した結果を示す、連続する前記第１の文字と前記第２の文字における出現順序に対応づけて生成された前記検索ビットマップデータに前記連続する前記第１の文字と前記第２の文字の出現位置が設定されていれば、前記検索ビットマップデータを左シフトし、左シフトした結果を示す前記検索ビットマップデータと、前記検索文字列を構成する前記第２の文字に連続する第３の文字のビットマップデータとをＡＮＤ演算することにより、前記検索文字列を検索する
処理を特徴とする請求項１から請求項３のいずれか１つに記載のデータ検索プログラム。
【請求項５】
対象テキストデータに対する検索文字列を受け付ける受付部と、
前記対象テキストデータに出現する文字または単語それぞれについての前記対象テキストデータにおける出現位置をビットマップデータとして対応づけたインデックス情報と、
前記受付部によって受け付けられた検索文字列を構成する各文字または各単語の前記検索文字列における出現順序に対応づけて生成される検索ビットマップデータとの論理演算により、前記検索文字列を検索する検索部と、
を有することを特徴とするデータ検索装置。
【請求項６】
コンピュータが、
対象テキストデータに対する検索文字列を受け付け、
前記対象テキストデータに出現する文字または単語それぞれについての前記対象テキストデータにおける出現位置をビットマップデータとして対応づけたインデックス情報と、前記検索文字列を構成する各文字または各単語の前記検索文字列における出現順序に対応づけて生成される検索ビットマップデータとの論理演算により、前記検索文字列を検索する
各処理を実行するデータ検索方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ検索プログラムなどに関する。
【背景技術】
【０００２】
英文字による文書では、空白やカンマ、ピリオードなどの区切りにより単語が表記されるため、検索に用いられるインデックスは、単語単位で生成される。一方、ＣＪＫ文字による文書では、文字の区切りが表記されないため、単語単位にインデックスを生成しようとすると、字句解析による単語抽出のコストや精度が課題となる。
【０００３】
そこで、検索対象の文書に出現する文字や文字列につき、ｎグラム文字に対応付けてインデックスを生成する場合に加え、文字と、その出現位置を対応づけたインデックスを生成する技術が知られている（例えば、特許文献１参照）。かかる技術では、情報処理装置は、検索条件を入力し、入力した検索条件に含まれる日本語の各文字の位置に関する日本語文字位置情報をインデックスとして生成する。また、情報処理装置は、検索条件に含まれる日本語以外の言語の単語の位置を示す単語位置情報をインデックスとして生成する。そして、情報処理装置は、作成されたインデックスに基づいて、検索条件に該当する文書データを検索する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−２８３３６８号公報
【特許文献２】特開平１１−８５４５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の検索技術では、文書データから検索条件が示す文字列を高速に検索することができないという問題がある。
【０００６】
例えば、従来の検索技術では、情報処理装置は、文字ごとに生成されたインデックスを用いて、文字に対応づけられた位置に関する情報から個別の文字の検索を高速に行うことができる。しかしながら、通常、検索条件に該当する文字列（検索文字列）は、連続する文字の列である。そうすると、情報処理装置が、検索文字列に含まれる文字の順序を含めて検索するには、検索文字列を構成する各文字の位置が連続しているかについて、改めて検証する必要がある。したがって、従来の検索技術では、文書データから検索文字列を高速に検索することができない。
【０００７】
１つの側面では、文書データから検索条件が示す文字列を高速に検索することを目的とする。
【課題を解決するための手段】
【０００８】
第１の案では、データ検索プログラムは、コンピュータに、対象テキストデータに対する検索文字列を受け付け、前記対象テキストデータに出現する文字または単語それぞれについての前記対象テキストデータにおける出現位置をビットマップデータとして対応づけたインデックス情報と、前記検索文字列を構成する各文字または各単語の前記検索文字列における出現順序に対応づけて生成される検索ビットマップデータとの論理演算により、前記検索文字列を検索する、処理を実行させる。
【発明の効果】
【０００９】
１つの態様によれば、文書データから検索条件が示す文字列を高速に検索することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施例に係る符号化処理の流れの一例を示す図（１）である。
【図２】図２は、実施例に係る符号化処理の流れの一例を示す図（２）である。
【図３】図３は、実施例に係る検索処理の流れの一例を示す図である。
【図４】図４は、実施例に係る符号化ファイルの構成例を示す図である。
【図５】図５は、実施例に係る情報処理装置の構成の一例を示す機能ブロック図である。
【図６】図６は、実施例に係る符号化処理のフローチャートの一例を示す図である。
【図７】図７は、実施例に係る検索処理のフローチャートの一例を示す図である。
【図８】図８は、実施例に係る文字列検索処理のフローチャートの一例を示す図である。
【図９】図９は、コンピュータのハードウェア構成例を示す図である。
【図１０】図１０は、コンピュータで動作するプログラムの構成例を示す図である。
【図１１】図１１は、実施形態のシステムにおける装置の構成例を示す図である。
【発明を実施するための形態】
【００１１】
以下に、本願の開示するデータ検索プログラム、データ検索装置およびデータ検索方法の実施例を図面に基づいて詳細に説明する。なお、この実施例では、データ検索処理を含む装置を情報処理装置として説明する。この実施例によりこの発明が限定されるものではない。
【実施例】
【００１２】
［実施例に係る符号化処理］
図１および図２は、実施例に係る符号化処理の流れの一例を示す図である。図１に示すように、符号化処理は、符号化対象のテキストデータＦ１が日本語である場合に、ＣＪＫ文字とＣＪＫ文字の出現位置に対応づけられたビットマップ型インデックスＢＩを生成するとともに、ＣＪＫ文字の単位で符号化する。図２に示すように、符号化処理は、符号化対象のテキストデータＦ１が英語である場合に、英単語と英単語の出現位置に対応づけられたビットマップ型インデックスＢＩを生成するとともに、英単語の単位で符号化する。なお、実施例では、ＣＪＫ文字を単に「文字」というものとする。英単語を単に「単語」というものとする。
【００１３】
ここでいうビットマップ型インデックスＢＩとは、符号化対象のテキストデータＦ１に含まれる文字または単語を指定するポインタと、文字または単語のテキストデータ内の各オフセット（出現位置）での存否を示すビットを連結したビット列である。すなわち、ビットマップ型インデックスＢＩとは、符号化対象のテキストデータＦ１に含まれる文字または単語について、オフセット（出現位置）ごとの存否をインデックス化したビットマップのことをいう。
【００１４】
一例として、図１および図２に示すように、文字または単語がテキストデータＦ１内のある出現位置に存在する場合には、出現位置に対応するオフセット（出現位置）の存否としてＯＮ、すなわち２進数の「１」を示す出現ビットが設定される。文字または単語がテキストデータＦ１内のある出現位置に存在しない場合には、出現位置に対応するオフセット（出現位置）の存否としてＯＦＦ、すなわち２進数の「０」が設定される。文字または単語を指定するポインタとしては、例えば、文字または単語を一意に表す単語ＩＤが採用される。単語ＩＤは、文字または単語そのものであっても良いし、文字または単語の符号であっても良い。文字または単語の符号とは、符号化されたコード（符号化コード）のことをいい、後述する静的コードに対応する。
【００１５】
図１および図２に示すように、ビットマップ型インデックスＢＩのＸ軸はオフセット（出現位置）を表し、Ｙ軸は単語ＩＤを表す。つまり、ビットマップ型インデックスＢＩに含まれる各ビットマップは、単語ＩＤが示す文字または単語の、オフセット（出現位置）ごとの存否を表す。
【００１６】
図１に示すように、符号化対象のテキストデータＦ１が日本語である場合に、情報処理装置が行う符号化処理は、例えば、符号化対象のテキストデータＦ１を記憶領域にロードする。そして、符号化処理は、符号化対象のテキストデータＦ１を記憶領域から読み出し、読み出したテキストデータＦ１に対して字句解析を行う。ここでいう字句解析とは、符号化されていない状態のテキストデータＦ１を文字単位に分割することをいう。
【００１７】
符号化処理は、字句解析された文字を先頭から順番に取り出し、取り出した文字に対応するビットマップの、出現位置に対するビットに出現ビットを設定する。そして、符号化処理は、静的辞書Ｓ０を用いて、取り出した文字を、文字に対応する静的コードに符号化する。
【００１８】
ここでいう静的辞書Ｓ０とは、一般的な英語辞典、国語辞典や教科書などを基にして、文書中に出現する文字または単語の出現頻度を特定し、出現頻度のより高い文字または単語に対して、より短い符号を割り当てた辞書である。静的辞書Ｓ０には、それぞれの文字または単語に対応する符号である静的コードがあらかじめ登録されている。
【００１９】
例えば、図１には、符号化対象のテキストデータＦ１として「・・昨日と今日・・・明日や未来・・・」が表わされている。「昨」は、テキストデータＦ１内の１０番目の位置に出現する。「日」は、テキストデータＦ１内の１１番目の位置に出現する。「と」は、テキストデータＦ１内の１２番目の位置に出現する。「今」は、テキストデータＦ１内の１３番目の位置に出現する。「日」は、テキストデータＦ１内の１４番目の位置に出現する。
【００２０】
符号化処理は、このテキストデータＦ１に対して字句解析を行う。ここでは、「昨」「日」「と」「今」「日」・・・「明」「日」「や」「未」「来」・・・が字句解析結果となる。
【００２１】
そして、符号化処理は、一例として、１０番目の位置に出現する文字「昨」について、文字「昨」に対応するビットマップの、出現位置「１０」に対するビットに出現ビット「１」を書き込む。そして、符号化処理は、静的辞書Ｓ０を用いて、文字「昨」を、文字「昨」に対応する静的コード「８ｘｘｘ」に符号化し、符号化データに書き込む。
【００２２】
そして、符号化処理は、一例として、１１番目の位置に出現する文字「日」について、文字「日」に対応するビットマップの、出現位置「１１」に対するビットに出現ビット「１」を書き込む。そして、符号化処理は、静的辞書Ｓ０を用いて、文字「日」を、文字「日」に対応する静的コード「８ｙｙｙ」に符号化し、符号化データに書き込む。
【００２３】
そして、符号化処理は、一例として、１４番目の位置に出現する文字「日」について、文字「日」に対応するビットマップの、出現位置「１４」に対するビットに出現ビット「１」を書き込む。そして、符号化処理は、静的辞書Ｓ０を用いて、文字「日」を、文字「日」に対応する静的コード「８ｙｙｙ」に符号化し、符号化データに書き込む。
【００２４】
また、図２に示すように、符号化対象のテキストデータＦ１が英語である場合に、情報処理装置が行う符号化処理は、例えば、符号化対象のテキストデータＦ１を記憶領域にロードする。そして、符号化処理は、符号化対象のテキストデータＦ１を記憶領域から読み出し、読み出したテキストデータＦ１に対して字句解析を行う。ここでいう字句解析とは、符号化されていない状態のテキストデータＦ１を単語単位に分割することをいう。一例として、符号化処理は、終端記号（例えば、スペース）を区切りとして、テキストデータＦ１を単語に分割する。
【００２５】
符号化処理は、字句解析された単語を先頭から順番に取り出し、取り出した単語に対応するビットマップの、出現位置に対するビットに出現ビットを設定する。そして、符号化処理は、静的辞書Ｓ０を用いて、取り出した単語を、単語に対応する静的コードに符号化する。
【００２６】
例えば、図２には、符号化対象のテキストデータＦ１として「・・in  front  of  the・・・」が表わされている。「ｉｎ」は、テキストデータＦ１内の１００番目の位置に出現する。「ｆｒｏｎｔ」は、テキストデータＦ１内の１０１番目の位置に出現する。「ｏｆ」は、テキストデータＦ１内の１０２番目の位置に出現する。「ｔｈｅ」は、テキストデータＦ１内の１０３番目の位置に出現する。
【００２７】
符号化処理は、このテキストデータＦ１に対して字句解析を行う。ここでは、「ｉｎ」「ｆｒｏｎｔ」「ｏｆ」「ｔｈｅ」・・・が字句解析結果となる。
【００２８】
そして、符号化処理は、一例として、１００番目の位置に出現する単語「ｉｎ」について、単語「ｉｎ」に対応するビットマップの、出現位置「１００」に対するビットに出現ビット「１」を書き込む。そして、符号化処理は、静的辞書Ｓ０を用いて、単語「ｉｎ」を、単語「ｉｎ」に対応する静的コード「２７」に符号化し、符号化データに書き込む。
【００２９】
そして、符号化処理は、一例として、１０１番目の位置に出現する単語「ｆｒｏｎｔ」について、単語「ｆｒｏｎｔ」に対応するビットマップの、出現位置「１０１」に対するビットに出現ビット「１」を書き込む。そして、符号化処理は、静的辞書Ｓ０を用いて、単語「ｆｒｏｎｔ」を、単語「ｆｒｏｎｔ」に対応する静的コード「ａａ」に符号化し、符号化データに書き込む。
【００３０】
そして、符号化処理は、一例として、１０２番目の位置に出現する単語「ｏｆ」について、単語「ｏｆ」に対応するビットマップの、出現位置「１０２」に対するビットに出現ビット「１」を書き込む。そして、符号化処理は、静的辞書Ｓ０を用いて、単語「ｏｆ」を、単語「ｏｆ」に対応する静的コード「２３」に符号化し、符号化データに書き込む。
【００３１】
このようにして、符号化処理は、英単語について、英単語単位で符号化することで、符号化の高速化を図ることができる。また、符号化処理は、ＣＪＫ文字について、単語と同様に、ＣＪＫ文字単位に符号化することで、符号化の高速化を図ることができる。つまり、符号化処理は、テキストデータＦ１が日本語である場合には、テキストデータＦ１を形態素解析して符号化すると、時間を要するところ、形態素解析しないでＣＪＫ文字単位に符号化することで、符号化の高速化を図ることができる。ここでいう形態素解析とは、意味を持つ最小限の単位である文字列に分解することをいう。なお、英語と日本語の部分が混在する、英和辞典などの解説文のテキストデータに対しても、この符号化処理を適用することができる。
【００３２】
［実施例に係る検索処理］
図３は、実施例に係る検索処理の流れの一例を示す図である。図３に示すように、検索処理は、ビットマップ型インデックスＢＩに含まれるビットマップと、検索条件の文字列を構成する各文字の出現順序に対応づけて生成される検索ビットマップとの論理演算により、当該検索条件の文字列を検索する。なお、検索条件の文字列は、「検索文字列」と同義であるとする。また、以降の検索処理の説明は、図１のビットマップ型インデックスＢＩを参照するものとする。
【００３３】
図３に示すように、情報処理装置が行う検索処理は、検索文字列を受け付ける。ここでは、検索文字列は、「昨日と今日」である。
【００３４】
検索処理は、ビットマップ型インデックスＢＩを参照し、検索文字列が存在するか否かを判定する。
【００３５】
例えば、検索処理は、ビットマップ型インデックスＢＩから検索文字列に含まれる先行する文字に対応するビットマップを抽出し、抽出したビットマップを１ビットだけ左シフトする（ｓ１）。ここでは、検索処理は、検索文字列「昨日と今日」に含まれる先行する文字「昨」に対応するビットマップをビットマップ型インデックスＢＩから抽出する。このビットマップの１０ビット目に「１」が設定されている。検索処理は、このビットマップを１ビットだけ左シフトする。このビットマップの１１ビット目に「１」が設定される。
【００３６】
そして、検索処理は、ビットマップ型インデックスＢＩから検索文字列に含まれる後続する文字に対応するビットマップを抽出し、抽出したビットマップと、先行する文字に対応する、シフトした結果のビットマップとをＡＮＤ演算する（ｓ２）。ここでは、検索処理は、検索文字列「昨日と今日」に含まれる後続する２番目の文字「日」に対応するビットマップをビットマップ型インデックスＢＩから抽出する。このビットマップの１１，１４，２１ビット目に「１」が設定されている。検索処理は、先行する文字「昨」に対応する、シフトした結果のビットマップと、後続する文字「日」に対応するビットマップとをＡＮＤ演算する。このＡＮＤ演算した結果のビットマップｂ１が、検索文字列を構成する「昨日」における出現順序に対応づけて生成される検索ビットマップに対応する。そして、検索処理は、演算の結果、ビットマップｂ１の全てのビットが「０」であるか否かを判定する。ここでは、ビットマップｂ１の１１ビット目が「１」として算出されるので、全てのビットが「０」であるとはいえないと判定される。すなわち、検索処理は、今回の文字と次の文字とを含む文字列「昨日」が存在すると判定する。
【００３７】
そして、検索処理は、検索文字列に未処理の文字が有るので、今回ＡＮＤ演算した結果のビットマップを１ビットだけ左シフトする（ｓ３）。ここでは、検索処理は、文字列「昨日」に対応する演算結果を示すビットマップｂ１を１ビットだけ左シフトし、ビットマップｂ１´を生成する。このビットマップの１２ビット目に「１」が設定される。
【００３８】
そして、検索処理は、ビットマップ型インデックスＢＩから検索文字列に含まれる後続する文字に対応するビットマップを抽出し、抽出したビットマップと、先行する文字列に対応する、シフトした結果のビットマップとをＡＮＤ演算する（ｓ４）。ここでは、検索処理は、検索文字列「昨日と今日」に含まれる後続する３番目の文字「と」に対応するビットマップをビットマップ型インデックスＢＩから抽出する。このビットマップの１２ビット目に「１」が設定されている。検索処理は、先行する文字列「昨日」に対応する、シフトした結果のビットマップｂ１´と、後続する文字「と」に対応するビットマップとをＡＮＤ演算する。このＡＮＤ演算した結果のビットマップｂ２が、検索文字列を構成する「昨日と」における出現順序に対応づけて生成される検索ビットマップに対応する。そして、検索処理は、演算の結果、ビットマップｂ２の全てのビットが「０」であるか否かを判定する。ここでは、ビットマップｂ２の１２ビット目が「１」として算出されるので、全てのビットが「０」であるとはいえないと判定される。すなわち、検索処理は、今回の文字列と次の文字とを含む文字列「昨日と」が存在すると判定する。
【００３９】
そして、検索処理は、検索文字列に未処理の文字が有るので、今回ＡＮＤ演算した結果のビットマップを１ビットだけ左シフトする（ｓ５）。ここでは、検索処理は、文字列「昨日と」に対応する演算結果を示すビットマップｂ２を１ビットだけ左シフトし、ビットマップｂ２´を生成する。このビットマップの１３ビット目に「１」が設定される。
【００４０】
そして、検索処理は、ビットマップ型インデックスＢＩから検索文字列に含まれる後続する文字に対応するビットマップを抽出し、抽出したビットマップと、先行する文字列に対応する、シフトした結果のビットマップとをＡＮＤ演算する（ｓ６）。ここでは、検索処理は、検索文字列「昨日と今日」に含まれる後続する４番目の文字「今」に対応するビットマップをビットマップ型インデックスＢＩから抽出する。このビットマップの１３ビット目に「１」が設定されている。検索処理は、先行する文字列「昨日と」に対応する、シフトした結果のビットマップｂ２´と、後続する文字「今」に対応するビットマップとをＡＮＤ演算する。このＡＮＤ演算した結果のビットマップｂ３が、検索文字列を構成する「昨日と今」における出現順序に対応づけて生成される検索ビットマップに対応する。そして、検索処理は、演算の結果、ビットマップｂ３の全てのビットが「０」であるか否かを判定する。ここでは、ビットマップｂ３の１３ビット目が「１」として算出されるので、全てのビットが「０」であるとはいえないと判定される。すなわち、検索処理は、今回の文字列と次の文字とを含む文字列「昨日と今」が存在すると判定する。
【００４１】
そして、検索処理は、検索文字列に未処理の文字が有るので、今回ＡＮＤ演算した結果のビットマップを１ビットだけ左シフトする（ｓ７）。ここでは、検索処理は、文字列「昨日と今」に対応する演算結果を示すビットマップｂ３を１ビットだけ左シフトし、ビットマップｂ３´を生成する。このビットマップの１４ビット目に「１」が設定される。
【００４２】
そして、検索処理は、ビットマップ型インデックスＢＩから検索文字列に含まれる後続する文字に対応するビットマップを抽出し、抽出したビットマップと、先行する文字列に対応する、シフトした結果のビットマップとをＡＮＤ演算する（ｓ８）。ここでは、検索処理は、検索文字列「昨日と今日」に含まれる後続する５番目の文字「日」に対応するビットマップをビットマップ型インデックスＢＩから抽出する。このビットマップの１１，１４，２１ビット目に「１」が設定されている。検索処理は、先行する文字列「昨日と今」に対応する、シフトした結果のビットマップｂ３´と、後続する文字「日」に対応するビットマップとをＡＮＤ演算する。このＡＮＤ演算した結果のビットマップｂ４が、検索文字列を構成する「昨日と今日」における出現順序に対応づけて生成される検索ビットマップに対応する。そして、検索処理は、演算の結果、ビットマップｂ４の全てのビットが「０」であるか否かを判定する。ここでは、ビットマップの１４ビット目が「１」として算出されるので、全てのビットが「０」であるとはいえないと判定される。すなわち、検索処理は、今回の文字列と次の文字とを含む文字列「昨日と今日」が存在すると判定する。
【００４３】
そして、検索処理は、検索文字列に未処理の文字が無いので、検索文字列が存在するか否かを判定する。ここでは、検索文字列「昨日と今日」が存在するので、検索処理は、検索文字列「昨日と今日」が存在する旨を検索結果として出力する。
【００４４】
このようにして、検索処理は、実体照合をしないで、ビットマップ型インデックスＢＩを利用し、全文検索をすることで、検索の高速化を図ることができる。また、検索処理は、検索文字列を構成する各文字の位置の連続性を考慮しながら、ビットマップ型インデックスＢＩを利用して全文検索をすることで、検索の高速化を図ることができる。なお、検索処理は、検索条件を文字列として説明したが、検索条件を単語列としても同様の効果を得ることができる。また、検索処理は、検索条件を文字と単語とが混在した単語列としても同様の効果を得ることが可能となる。例えば、検索処理は、文字と単語との混在ルールに基づき、検索条件の単語列を文字と単語とに分解し、ビットマップ型インデックスＢＩを利用し、全文検索をすれば良い。例えば、文字と単語との混在ルールとして、文字と単語とが混在していても、単語は終端記号（例えば、スペース）で区切られるという混在ルールが挙げられる。
【００４５】
［符号化ファイルの構成例］
図４は、実施例に係る符号化ファイルの構成例を示す図である。図４に示すように、符号化ファイルＦ２は、ヘッダ部と、符号化データと、トレーラ部とを有する。符号化データは、テキストデータＦ１の符号化された符号化コード群を記憶する。テキストデータＦ１が複数のファイルを含む場合には、符号化データは、例えば、ファイル１用の符号化データ、ファイル２用の符号化データなどそれぞれのファイル用の符号化データを含む。トレーラ部は、各ファイルのアドレスや全文インデックスなどを記憶する。全文インデックスは、図１および図２で示したビットマップ型インデックスＢＩに対応する。各ファイルのアドレスは、テキストデータＦ１が複数のファイルを含む場合には、複数のファイルに対応する符号化データ内のアドレスを示す。各ファイルのアドレスは、一例として、符号化データの先頭からの相対アドレスである。ヘッダ部は、例えば、符号化ファイルＦ２の生成に用いられた符号化アルゴリズムを識別する情報や、符号化に用いられたパラメータなどの情報を記憶し、例えば、トレーラ部に格納された各情報へのポインタなどが格納される。
【００４６】
［実施例に係る情報処理装置の構成］
図５は、実施例に係る情報処理装置の構成の一例を示す機能ブロック図である。図５に示すように、情報処理装置１００は、符号化部１１０、検索部１２０および記憶部１３０を有する。
【００４７】
符号化部１１０は、図１および図２で示した符号化処理を実行する処理部である。符号化部１１０は、ファイルリード部１１１、文字／単語取得部１１２、インデックス生成部１１３、符号化処理部１１４およびファイルライト部１１５を有する。
【００４８】
検索部１２０は、図３で示した検索処理を実行する処理部である。検索部１２０は、検索条件受付部１２１、文字列／単語列検索部１２２および検索結果出力部１２３を有する。
【００４９】
記憶部１３０は、例えばフラッシュメモリ（Ｆｌａｓｈ  Ｍｅｍｏｒｙ）やＦＲＡＭ（登録商標）（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの不揮発性の半導体メモリ素子などの記憶装置に対応する。記憶部１３０は、静的辞書１３１およびビットマップ型インデックス１３２を有する。
【００５０】
静的辞書１３１は、一般的な英語辞典、国語辞典や教科書などを基にして、文書中に出現する文字または単語の出現頻度を特定し、出現頻度のより高い文字または単語に対して、より短い符号を割り当てた辞書である。静的辞書１３１には、それぞれの文字または単語に対応する符号である静的コードがあらかじめ登録されている。なお、静的辞書１３１は、静的辞書Ｓ０に対応する。
【００５１】
ビットマップ型インデックス１３２は、テキストデータＦ１に含まれる単語または文字について、オフセット（出現位置）ごとの存否をインデックス化したビットマップの集合である。なお、ビットマップ型インデックス１３２は、ビットマップ型インデックスＢＩに対応する。ビットマップ型インデックス１３２の説明は、図１および図２と同様であるので、その説明を省略する。
【００５２】
ファイルリード部１１１は、符号化対象のテキストデータＦ１を記憶領域に読み出す。
【００５３】
文字／単語取得部１１２は、テキストデータＦ１から文字または単語を取得する。例えば、文字／単語取得部１１２は、記憶領域に読み出したテキストデータＦ１に対して字句解析を行う。文字／単語取得部１１２は、字句解析した結果の文字または単語を、テキストデータＦ１の先頭から順番に取得する。文字／単語取得部１１２は、取得した文字または単語と、それぞれのテキストデータＦ１内の出現位置とを対応づけてインデックス生成部１１３に出力する。文字／単語取得部１１２は、取得した文字または単語を符号化処理部１１４に出力する。
【００５４】
インデックス生成部１１３は、ビットマップ型インデックス１３２を生成する。例えば、インデックス生成部１１３は、文字／単語取得部１１２から出力された文字について、当該文字に対応するビットマップを、ビットマップ型インデックス１３２から抽出する。インデックス生成部１１３は、抽出したビットマップに、テキストデータＦ１内の出現位置に対応する出現ビットを設定する。インデックス生成部１１３は、文字／単語取得部１１２から出力された単語について、当該単語に対応するビットマップを、ビットマップ型インデックス１３２から抽出する。インデックス生成部１１３は、抽出したビットマップに、テキストデータＦ１内の出現位置に対応する出現ビットを設定する。
【００５５】
符号化処理部１１４は、文字または単語を符号化する。例えば、符号化処理部１１４は、文字／単語取得部１１２から出力された文字を、静的辞書１３１に登録されている静的コードに符号化する。符号化処理部１１４は、文字／単語取得部１１２から出力された単語を、静的辞書１３１に登録されている静的コードに符号化する。
【００５６】
ファイルライト部１１５は、符号化処理部１１４によって符号化された符号化コードをファイル単位に符号化ファイルＦ２の符号化データに格納する。ファイルライト部１１５は、ビットマップ型インデックス１３２を符号化ファイルＦ２のトレーラ部に書き込む。ファイルライト部１１５は、符号化データ内の各ファイルのアドレスを符号化ファイルＦ２のトレーラ部に書き込む。
【００５７】
検索条件受付部１２１は、検索条件を受け付ける。例えば、検索条件受付部１２１は、検索条件として検索対象の文字列または検索対象の単語列を受け付ける。なお、検索条件受付部１２１は、検索条件として文字と単語とが混在した単語列を受け付けても良い。
【００５８】
文字列／単語列検索部１２２は、検索条件が検索対象の文字列である場合には、ビットマップ型インデックス１３２を参照し、テキストデータＦ１に検索対象の文字列が存在するか否かを判定する。文字列／単語列検索部１２２は、検索条件が検索対象の単語列である場合には、ビットマップ型インデックス１３２を参照し、テキストデータＦ１に検索対象の単語列が存在するか否かを判定する。なお、文字列／単語列検索部１２２は、検索条件が文字と単語とが混在した単語列である場合には、ビットマップ型インデックス１３２を参照し、テキストデータＦ１に検索対象の単語列が存在するか否かを判定する。
【００５９】
例えば、文字列／単語列検索部１２２は、検索条件が検索対象の文字列である場合には、以下の処理を行う。文字列／単語列検索部１２２は、検索対象の文字列に含まれる各文字に対応するビットマップを、ビットマップ型インデックス１３２から抽出する。文字列／単語列検索部１２２は、検索対象の文字列に含まれる先行する文字に対応するビットマップを１ビットだけ左シフトする。文字列／単語列検索部１２２は、先行する文字に対応する、シフトした結果のビットマップと、検索対象の文字列に含まれる後続する文字に対応するビットマップとをＡＮＤ演算する。このＡＮＤ演算した結果のビットマップが、検索対象の文字列の中の連続する先行する文字と後続する文字とにおける出現順序に対応づけて生成された検索ビットマップである。文字列／単語列検索部１２２は、演算の結果、全てのビットが「０」であるか否かを判定する。文字列／単語列検索部１２２は、全てのビットが「０」であるとはいえない場合には、先行する文字と後続する文字との文字列が存在すると判定する。そして、文字列／単語列検索部１２２は、検索対象の文字列に未処理の文字が有る場合には、さらに、現に処理された文字列と後続する文字とを含む文字列の検索処理を繰り返す。文字列／単語列検索部１２２は、検索対象の文字列に未処理の文字が無い場合には、演算処理を終了し、演算の結果、全てのビットが「０」であるとはいえない場合には、検索対象の文字列が存在すると判定する。すなわち、文字列／単語列検索部１２２は、検索対象の文字列が存在すると判定する。文字列／単語列検索部１２２は、演算の結果、全てのビットが「０」である場合には、先行する文字（または文字列）と後続する文字との文字列が存在しないと判定する。すなわち、文字列／単語列検索部１２２は、検索対象の文字列が存在しないと判定する。
【００６０】
検索結果出力部１２３は、検索結果を出力する。例えば、検索結果出力部１２３は、文字列／単語列検索部１２２によって検索対象が存在すると判定された場合には、検索結果として検索対象が存在する旨を出力する。検索結果出力部１２３は、文字列／単語列検索部１２２によって検索対象が存在しないと判定された場合には、検索結果として検索対象が存在しない旨を出力する。
【００６１】
［実施例に係る符号化処理の処理手順］
図５に示した符号化部１１０の処理手順について、図６を参照して説明する。図６は、実施例に係る符号化処理のフローチャートの一例を示す図である。
【００６２】
図６に示すように、符号化部１１０は、前処理を実行する（ステップＳ１１）。例えば、符号化部１１０は、各種記憶領域を記憶部１３０に確保する。そして、符号化部１１０は、符号化対象のファイルを読み出し、読出用の記憶領域にテキストデータＦ１を格納する（ステップＳ１２）。
【００６３】
そして、符号化部１１０は、読出用の記憶領域から文字または単語を取得する（ステップＳ１３）。例えば、符号化部１１０は、読出用の記憶領域に格納されたテキストデータＦ１を字句解析し、字句解析した結果の文字または単語を、テキストデータＦ１の先頭から順番に取得する。
【００６４】
符号化部１１０は、取得対象は文字であるか否かを判定する（ステップＳ１４）。取得対象は文字であると判定した場合には（ステップＳ１４；Ｙｅｓ）、符号化部１１０は、取得した文字に対応するビットマップの、出現位置に対するビットに「１」を書き込む（ステップＳ１５）。例えば、符号化部１１０は、取得した文字に対応するビットマップをビットマップ型インデックス１３２から抽出する。符号化部１１０は、抽出したビットマップに、テキストデータＦ１内の、取得した文字の出現位置に対応する出現ビットを設定する。
【００６５】
符号化部１１０は、取得した文字を、静的辞書１３１に登録されている静的コードに符号化する（ステップＳ１６）。そして、符号化部１１０は、ステップＳ１９に移行する。
【００６６】
一方、取得対象は文字でないと判定した場合には（ステップＳ１４；Ｎｏ）、符号化部１１０は、取得対象は単語であると判定し、単語に対応するビットマップの、出現位置に対するビットに「１」を書き込む（ステップＳ１７）。例えば、符号化部１１０は、取得した単語に対応するビットマップをビットマップ型インデックス１３２から抽出する。符号化部１１０は、抽出したビットマップに、テキストデータＦ１内の、取得した単語の出現位置に対応する出現ビットを設定する。
【００６７】
符号化部１１０は、取得した単語を、静的辞書１３１に登録されている静的コードに符号化する（ステップＳ１８）。そして、符号化部１１０は、ステップＳ１９に移行する。
【００６８】
ステップＳ１９において、符号化部１１０は、ファイルの終点か否かを判定する（ステップＳ１９）。ファイルの終点でないと判定した場合には（ステップＳ１９；Ｎｏ）、符号化部１１０は、次の文字または単語を取得すべく、ステップＳ１３に移行する。
【００６９】
一方、ファイルの終点であると判定した場合には（ステップＳ１９；Ｙｅｓ）、符号化部１１０は、符号化処理を終了する。
【００７０】
［実施例に係る検索処理の処理手順］
図５に示した検索部１２０の処理手順について、図７を参照して説明する。図７は、実施例に係る検索処理のフローチャートの一例を示す図である。なお、検索部１２０の処理手順の一例として、文字列を検索条件とした場合を説明するものとする。
【００７１】
図７に示すように、検索部１２０は、検索対象の文字列を受け付けたか否かを判定する（ステップＳ２１）。検索対象の文字列を受け付けていないと判定した場合には（ステップＳ２１；Ｎｏ）、検索部１２０は、検索対象の文字列を受け付けるまで、判定処理を繰り返す。
【００７２】
一方、検索対象の文字列を受け付けたと判定した場合には（ステップＳ２１；Ｙｅｓ）、検索部１２０は、検索対象の文字列の先頭の文字を対象文字とし、当該対象文字に対応するビットマップをビットマップ型インデックス１３２から抽出する（ステップＳ２２）。
【００７３】
検索部１２０は、対象文字または文字列と次の文字とを含む文字列の検索処理を実行する（ステップＳ２３）。なお、文字列の検索処理のフローチャートは、後述する。
【００７４】
文字列の検索処理を実行した結果、検索部１２０は、文字列が存在するか否かを判定する（ステップＳ２４）。文字列が存在しないと判定した場合には（ステップＳ２４；Ｎｏ）、検索部１２０は、ステップＳ２９に移行する。
【００７５】
一方、文字列が存在すると判定した場合には（ステップＳ２４；Ｙｅｓ）、検索部１２０は、検索対象の文字列に未処理の文字が有るか否かを判定する（ステップＳ２５）。検索対象の文字列に未処理の文字が有ると判定した場合には（ステップＳ２５；Ｙｅｓ）、検索部１２０は、未処理の文字を次の文字とする（ステップＳ２６）。そして、検索部１２０は、次の文字を含む文字列を検索すべく、ステップＳ２３に移行する。
【００７６】
一方、検索対象の文字列に未処理の文字が無いと判定した場合には（ステップＳ２５；Ｎｏ）、検索部１２０は、検索対象の文字列が存在するか否かを判定する（ステップＳ２７）。検索対象の文字列が存在すると判定した場合には（ステップＳ２７；Ｙｅｓ）、検索部１２０は、検索対象が存在する旨を検索結果として出力する（ステップＳ２８）。そして、検索部１２０は、検索処理を終了する。
【００７７】
一方、検索対象の文字列が存在しないと判定した場合には（ステップＳ２７；Ｎｏ）、検索部１２０は、ステップＳ２９に移行する。ステップＳ２９において、検索部１２０は、検索対象が存在しない旨を検索結果として出力する（ステップＳ２９）。そして、検索部１２０は、検索処理を終了する。
【００７８】
［実施例に係る文字列検索処理のフローチャート］
図８は、実施例に係る文字列検索処理のフローチャートの一例を示す図である。
【００７９】
図８に示すように、検索部１２０は、対象文字または文字列に対するビットマップを１ビットだけ左シフトする（ステップＳ３１）。そして、検索部１２０は、次の文字に対するビットマップをビットマップ型インデックス１３２から抽出する（ステップＳ３２）。そして、検索部１２０は、対象文字または文字列に対するビットマップと次の文字に対するビットマップとをＡＮＤ演算する（ステップＳ３３）。そして、検索部１２０は、ＡＮＤ演算した結果を示すビットマップを、対象文字または文字列に次の文字を加えた対象文字列に対するビットマップとする（ステップＳ３４）。すなわち、ＡＮＤ演算した結果を示すビットマップが、検索対象の文字列を構成する各文字の出現順序に対応づけて生成される検索ビットマップに対応する。
【００８０】
検索部１２０は、ＡＮＤ演算した結果を示すビットマップの全てのビットが「０」であるか否かを判定する（ステップＳ３５）。全てのビットが「０」であると判定した場合には（ステップＳ３５；Ｙｅｓ）、検索部１２０は、対象文字列がテキストデータＦ１に存在しないと判定する（ステップＳ３６）。そして、検索部１２０は、文字列検索処理を終了する。
【００８１】
一方、全てのビットが「０」であるとはいえないと判定した場合には（ステップＳ３５；Ｎｏ）、検索部１２０は、対象文字列がテキストデータＦ１に存在すると判定する（ステップＳ３７）。そして、検索部１２０は、文字列検索処理を終了する。
【００８２】
これにより、情報処理装置１００は、対象テキストデータＦ１に対する検索文字列を受け付ける。情報処理装置１００は、ビットマップ型インデックス１３２と、検索文字列を構成する各文字または各単語の当該検索文字列における出現順序に対応づけて生成される検索ビットマップデータとの論理演算により、当該検索文字列を検索する。ビットマップ型インデックス１３２は、対象テキストデータＦ１に出現する文字または単語それぞれについての当該対象テキストデータＦ１における出現位置をビットマップデータとして対応づける情報である。かかる構成によれば、情報処理装置１００は、ビットマップ型インデックス１３２の文字または単語それぞれに対するビットマップデータと、検索文字列を構成する文字または単語に対応するビットマップデータとの論理演算により、高速、かつ、検索ノイズの少ない検索を行うことができる。また、情報処理装置１００は、検索文字列を構成する各文字または各単語の位置の連続性を考慮しながら検索することで、検索の高速化を図ることができる。
【００８３】
また、情報処理装置１００は、受け付けた検索文字列に文字と単語とが混在する場合には、文字と単語との混在ルールに基づき、検索文字列を分解する。情報処理装置１００は、ビットマップ型インデックス１３２と、該分解された各文字および各単語に対応するビットマップデータとの論理演算により、検索文字列を検索する。かかる構成によれば、情報処理装置１００は、検索文字列に文字と単語とが混在する場合であっても、高速、かつ、検索ノイズの少ない検索を行うことができる。
【００８４】
また、情報処理装置１００は、対象のテキストデータＦ１を受け付ける。情報処理装置１００は、対象のテキストデータＦ１に出現する文字または単語それぞれについてビットマップ型インデックス１３２を生成するとともに、文字の単位または単語の単位で符号化する。情報処理装置１００は、符号化されたテキストデータＦ１に対する検索文字列を受け付けると、該生成されたビットマップ型インデックス１３２を用いて、検索文字列を検索する。かかる構成によれば、情報処理装置１００は、ビットマップ型インデックス１３２を用いて検索文字列を検索することで、符号化されたテキストデータＦ１を復号化しなくても、検索文字列を検索することとなり、検索文字列を高速に検索できる。また、情報処理装置１００は、意味を持つ最小現の単位である文字列の単位ではなく、文字の単位で符号化することで、符号化の高速化を図ることができる。
【００８５】
また、情報処理装置１００は、ビットマップ型インデックス１３２に対応づけられた、検索文字列を構成する第１の文字のビットマップデータを左シフトする。情報処理装置１００は、左シフトした結果を示すビットマップデータと、ビットマップ型インデックス１３２に対応づけられた、検索文字列を構成する第１の文字に連続する第２の文字のビットマップデータとをＡＮＤ演算する。そして、情報処理装置１００は、ＡＮＤ演算した結果を示す、連続する第１の文字と第２の文字における出現順序に対応づけて生成された検索ビットマップデータに連続する第１の文字と第２の文字の出現位置が設定されていれば、検索ビットマップデータを左シフトする。情報処理装置１００は、左シフトした結果を示す検索ビットマップデータと、検索文字列を構成する第２の文字に連続する第３の文字のビットマップデータとをＡＮＤ演算することにより、検索文字列を検索する。かかる構成によれば、情報処理装置１００は、検索文字列を構成する連続する文字に対応する検索ビットマップデータを生成し、生成した検索ビットマップデータと、さらに連続する文字の、ビットマップ型インデックス１３２に対応づけられたビットマップデータとをＡＮＤ演算することで、検索文字列を高速に検索できる。
【００８６】
［実施例に関連する他の態様］
以下、上述の実施形態における変形例の一部を説明する。下記の変形例のみでなく、本発明の本旨を逸脱しない範囲の設計変更は適宜行われうる。
【００８７】
また、実施例では、符号化部１１０は、インデックス生成部１１３によって生成されたビットマップ型インデックス１３２を符号化ファイルＦ２のトレーラ部に格納すると説明した。しかしながら、符号化部１１０は、ビットマップ型インデックス１３２の代わりにビットマップ型インデックス１３２をビットマップごとにハッシュ化したハッシュ化インデックスを符号化ファイルＦ２のトレーラ部に格納しても良い。かかる場合には、検索部１２０は、符号化ファイルＦ２のトレーラ部に格納されたハッシュ化インデックスから、検索対象の文字列に含まれる各文字に対応するハッシュ化ビットマップを抽出し、抽出したハッシュ化ビットマップを復元する。そして、検索部１２０は、復元したビットマップを用いて、文字列／単語列検索部１２２の検索方法で検索対象の文字列を検索すれば良い。すなわち、検索部１２０は、ビットマップのシフトとＡＮＤ演算により、全文検索を実現すれば良い。これにより、情報処理装置１００は、使用できる資源が少ない場合であっても、少ない資源でテキストファイルＦ１を符号化し、インデックス化することができ、このインデックス化された情報を用いて、高速に検索することができる。
【００８８】
また、実施例に示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００８９】
［情報処理装置のハードウェア構成］
下記に、上述の実施形態に用いられるハードウェア及びソフトウェアについて説明する。図９は、コンピュータのハードウェア構成例を示す図である。コンピュータ１は、例えば、プロセッサ３０１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３０２、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３０３、ドライブ装置３０４、記憶媒体３０５、入力インターフェース（Ｉ／Ｆ）３０６、入力デバイス３０７、出力インターフェース（Ｉ／Ｆ）３０８、出力デバイス３０９、通信インターフェース（Ｉ／Ｆ）３１０、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）インターフェース（Ｉ／Ｆ）３１１およびバス３１２などを含む。それぞれのハードウェアはバス３１２を介して接続されている。
【００９０】
ＲＡＭ３０２は読み書き可能なメモリ装置であって、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）やＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）などの半導体メモリ、またはＲＡＭでなくてもフラッシュメモリなどが用いられる。ＲＯＭ３０３は、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）なども含む。ドライブ装置３０４は、記憶媒体３０５に記録された情報の読み出しか書き込みかの少なくともいずれか一方を行なう装置である。記憶媒体３０５は、ドライブ装置３０４によって書き込まれた情報を記憶する。記憶媒体３０５は、例えば、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）などのフラッシュメモリ、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、ブルーレイディスクなどの記憶媒体である。また、例えば、コンピュータ１は、複数種類の記憶媒体それぞれについて、ドライブ装置３０４及び記憶媒体３０５を設ける。
【００９１】
入力インターフェース３０６は、入力デバイス３０７と接続されており、入力デバイス３０７から受信した入力信号をプロセッサ３０１に伝達する回路である。出力インターフェース３０８は、出力デバイス３０９と接続されており、出力デバイス３０９に、プロセッサ３０１の指示に応じた出力を実行させる回路である。通信インターフェース３１０はネットワーク３を介した通信の制御を行なう回路である。通信インターフェース３１０は、例えばネットワークインターフェースカード（ＮＩＣ）などである。ＳＡＮインターフェース３１１は、ストレージエリアネットワークによりコンピュータ１と接続された記憶装置との通信の制御を行なう回路である。ＳＡＮインターフェース３１１は、例えばホストバスアダプタ（ＨＢＡ）などである。
【００９２】
入力デバイス３０７は、操作に応じて入力信号を送信する装置である。入力信号は、例えば、キーボードやコンピュータ１の本体に取り付けられたボタンなどのキー装置や、マウスやタッチパネルなどのポインティングデバイスである。出力デバイス３０９は、コンピュータ１の制御に応じて情報を出力する装置である。出力デバイス３０９は、例えば、ディスプレイなどの画像出力装置（表示デバイス）や、スピーカーなどの音声出力装置などである。また、例えば、タッチスクリーンなどの入出力装置が、入力デバイス３０７及び出力デバイス３０９として用いられる。また、入力デバイス３０７及び出力デバイス３０９は、コンピュータ１と一体になっていても良いし、コンピュータ１に含まれず、例えば、コンピュータ１に外部から接続する装置であっても良い。
【００９３】
例えば、プロセッサ３０１は、ＲＯＭ３０３や記憶媒体３０５に記憶されたプログラムをＲＡＭ３０２に読み出し、読み出されたプログラムの手順に従って符号化部１１０の処理および検索部１２０の処理を行なう。その際にＲＡＭ３０２はプロセッサ３０１のワークエリアとして用いられる。記憶部１３０の機能は、ＲＯＭ３０３および記憶媒体３０５がプログラムファイル（後述のアプリケーションプログラム２４、ミドルウェア２３およびＯＳ２２など）やデータファイル（例えば、静的辞書１３１、ビットマップ型インデックス１３２など）を記憶し、ＲＡＭ３０２がプロセッサ３０１のワークエリアとして用いられることによって実現される。プロセッサ３０１が読み出すプログラムについては、図１０を用いて説明する。
【００９４】
図１０は、コンピュータで動作するプログラムの構成例を示す図である。コンピュータ１において、図１０に示すハードウェア群（ＨＷ）２１（３０１〜３１２）の制御を行なうＯＳ（オペレーティング・システム）２２が動作する。ＯＳ２２に従った手順でプロセッサ３０１が動作して、ハードウェア群（ＨＷ）２１の制御・管理が行なわれることにより、アプリケーションプログラム（ＡＰ）２４やミドルウェア（ＭＷ）２３に従った処理がハードウェア群（ＨＷ）２１で実行される。さらに、コンピュータ１において、ミドルウェア（ＭＷ）２３またはアプリケーションプログラム（ＡＰ）２４が、ＲＡＭ３０２に読み出されてプロセッサ３０１により実行される。
【００９５】
プロセッサ３０１が、符号化機能が呼び出された場合に、ミドルウェア２３またはアプリケーションプログラム２４の少なくとも一部に基づく処理を行なうことにより、（それらの処理をＯＳ２２に基づいてハードウェア群２１を制御して）符号化部１１０の機能が実現される。プロセッサ３０１が、検索機能が呼び出された場合に、ミドルウェア２３またはアプリケーションプログラム２４の少なくとも一部に基づく処理を行なうことにより、（それらの処理をＯＳ２２に基づいてハードウェア群２１を制御して）検索部１２０の機能が実現される。符号化機能および検索機能は、アプリケーションプログラム２４自体に含まれても良いし、アプリケーションプログラム２４に従って呼び出されることで実行されるミドルウェア２３の一部であっても良い。
【００９６】
図１１は、実施形態のシステムにおける装置の構成例を示す。図１１のシステムは、コンピュータ１ａ、コンピュータ１ｂ、基地局２およびネットワーク３を含む。コンピュータ１ａは、無線または有線の少なくとも一方により、コンピュータ１ｂと接続されたネットワーク３に接続している。
【００９７】
図５に示す情報処理装置１００の符号化部１１０と検索部１２０とは、図１１に示すコンピュータ１ａとコンピュータ１ｂとのいずれに含まれても良い。コンピュータ１ｂが符号化部１１０の機能を含み、コンピュータ１ａが検索部１２０の機能を含んでも良いし、コンピュータ１ａが符号化部１１０の機能を含み、コンピュータ１ｂが検索部１２０の機能を含んでも良い。また、コンピュータ１ａとコンピュータ１ｂとの双方が、符号化部１１０の機能および検索部１２０の機能を備えても良い。
【符号の説明】
【００９８】
１００  情報処理装置
１１０  符号化部
１１１  ファイルリード部
１１２  文字／単語取得部
１１３  インデックス生成部
１１４  符号化処理部
１１５  ファイルライト部
１２０  検索部
１２１  検索条件受付部
１２２  文字列／単語列検索部
１２３  検索結果出力部
１３０  記憶部
１３１  静的辞書
１３２  ビットマップ型インデックス
【図１】
2018067264.tif 000003
【図２】
2018067264.tif 000004
【図３】
2018067264.tif 000005
【図４】
2018067264.tif 000006
【図５】
2018067264.tif 000007
【図６】
2018067264.tif 000008
【図７】
2018067264.tif 000009
【図８】
2018067264.tif 000010
【図９】
2018067264.tif 000011
【図１０】
2018067264.tif 000012
【図１１】
2018067264.tif 000013