(57)【要約】【課題】情報の検索を限られたリソースでも好適に実行可能にする。【解決手段】本発明に係る検索装置は、複数の文書ファイル（ファイル）に少なくとも１つ含まれる単語（文字列）を抽出した単語リストを記憶する。単語リストに含まれる単語には、それぞれを一意的に特定可能な識別番号（単語識別番号）が付与される。また、本発明に係る検索装置は、単語リストに含まれる単語の有無を各文書ファイルについて「１」または「０」の値で記述した有無情報リストを記憶する。有無情報リストは、それぞれの文書ファイルの有無情報をブロック単位で記述している。本発明に係る検索装置は、検索文字列を含む単語の識別番号を特定し、その識別番号に対応する有無情報を参照することにより、検索文字列を含む文書ファイルを特定する。【選択図】図１１
2008242749.tif 000002
【特許請求の範囲】
【請求項１】
文字列を含む複数のファイルのそれぞれを識別する複数のファイル情報と、
前記複数のファイルの少なくとも１つに含まれる文字列と、前記文字列を一意的に特定する識別番号とを有する文字列リストと、
前記文字列リストに含まれる各文字列の有無を表す有無情報を前記識別番号に応じた順序で表す有無情報ブロックを前記複数のファイルのそれぞれについて有する有無情報リストと
を記憶する記憶手段と、
検索対象の文字列である検索文字列を取得する取得手段と、
前記取得手段により取得された検索文字列を含む文字列が前記文字列リストに含まれる場合に、当該文字列に付与された識別番号を前記文字列リストに基づいて特定する識別番号特定手段と、
前記有無情報リストの有無情報に基づき、前記識別番号特定手段により特定された識別番号により表される文字列を含むファイルを特定するファイル特定手段と、
前記ファイル特定手段により特定されたファイルを示す前記ファイル情報を出力する出力手段と
を備えることを特徴とする検索装置。
【請求項２】
前記記憶手段は、前記複数のファイルの少なくとも１つに含まれる文字列の位置をそれぞれ表す複数の位置情報を記憶し、
前記ファイル特定手段により特定されたファイルにおける前記検索文字列を含む文字列の位置を表す位置情報を前記複数の位置情報の中から特定する位置情報特定手段を備え、
前記出力手段は、
前記ファイル特定手段により特定されたファイルを示す前記ファイル情報と、当該ファイルについて前記位置情報特定手段により特定された位置情報とを出力する
ことを特徴とする請求項１に記載の検索装置。
【請求項３】
前記記憶手段は、前記文字列リストを複数の部分に区切るパーティション情報を記憶し、
前記識別番号特定手段は、
前記取得手段により取得された検索文字列を含む文字列が前記パーティション情報により区切られる複数の部分のいずれに含まれ得るかを特定するパーティション特定手段と、
前記パーティション特定手段により特定された部分に前記検索文字列を含む文字列が存在するか否かを判断する判断手段とを備え、
前記パーティション特定手段により特定された部分に前記検索文字列を含む文字列が存在すると前記判断手段が判断する場合に、当該文字列に付与された識別番号を前記文字列リストに基づいて特定する
ことを特徴とする請求項１に記載の検索装置。
【請求項４】
前記識別番号特定手段は、
前記文字列リストから前記取得手段により取得された検索文字列を含む文字列を二分探索により検索する検索手段を備える
ことを特徴とする請求項１に記載の検索装置。
【請求項５】
前記有無情報が、前記文字列リストに含まれる各文字列の有無を１ビット単位で表すことを特徴とする請求項１に記載の検索装置。
【請求項６】
前記識別番号は、前記複数のファイルのうち、当該ファイルに少なくとも１つ含まれる文字列の総数が少ないファイルに含まれる文字列から先に付与され、
前記有無情報ブロックに含まれる前記有無情報の数は、少なくとも１つ含まれる文字列の総数が少ないファイルについての有無情報ブロックほど少ない
ことを特徴とする請求項１に記載の検索装置。
【請求項７】
前記記憶手段は、
前記複数のファイルのうちの各ファイルについての前記有無情報ブロックの位置を示すアドレス情報を記憶し、
前記ファイル特定手段は、
前記アドレス情報に基づいて各々の前記有無情報ブロックを特定し、当該有無情報ブロックから前記識別番号特定手段により特定された識別番号により表される文字列を含むファイルを特定する
ことを特徴とする請求項１に記載の検索装置。
【請求項８】
コンピュータに、
文字列を含む複数のファイルのそれぞれを識別する複数のファイル情報と、
前記複数のファイルの少なくとも１つに含まれる文字列と、前記文字列を一意的に特定する識別番号とを有する文字列リストと、
前記文字列リストに含まれる各文字列の有無を表す有無情報を前記識別番号に応じた順序で表す有無情報ブロックを前記複数のファイルのそれぞれについて有する有無情報リストと、
検索対象の文字列である検索文字列と
を取得する機能と、
前記検索文字列を含む文字列が前記文字列リストに含まれる場合に、当該文字列に付与された識別番号を前記文字列リストに基づいて特定する機能と、
前記有無情報リストの有無情報に基づき、前記特定された識別番号により表される文字列を含むファイルを特定する機能と、
前記特定されたファイルを示す前記ファイル情報を出力する機能と
を実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報を検索する技術に係り、いわゆる組み込みシステム等において特に好適な検索技術に関する。
【背景技術】
【０００２】
Ｗｅｂ等で情報を検索するときには、いわゆる検索エンジンを用いると便利である。検索エンジンを実現する技術としては、いわゆるインデックスを用いた検索技術が知られており、かかる技術の一例として、「Apache Lucene」などがある。この種の技術は、リソース（資源）に比較的余裕のあるサーバやパーソナルコンピュータ等の汎用的なシステムにおいて好適に動作するように設計されているのが一般的である。
【非特許文献１】Erik Hatcher、Otis Gospodnetic著、「Lucene in Action」、（米国）、マニング・パブリケーションズ（Manning Publications）
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところで、近年、電子ペーパや携帯電話機のような、小型で持ち運び可能な電子機器で情報を検索する機会が増えている。また、情報検索の需要は、このような機器に限らずとも、特定用途のための組み込みシステム全般において増大することが予想される。
しかし、組み込みシステムは、特定用途に特化した構成であり、演算処理能力やメモリ容量において汎用的なシステムよりも余裕がないことが多い。そのため、組み込みシステムにおいては、上述したような従来の検索技術をそのまま適用してもうまく動作しないことが多かった。
本発明は、かかる事情に鑑みてなされたものであり、その目的は、情報の検索を限られたリソースでも好適に実行可能な技術を提供することにある。
【課題を解決するための手段】
【０００４】
本発明に係る検索装置は、文字列を含む複数のファイルのそれぞれを識別する複数のファイル情報と、前記複数のファイルの少なくとも１つに含まれる文字列と、前記文字列を一意的に特定する識別番号とを有する文字列リストと、前記文字列リストに含まれる各文字列の有無を表す有無情報を前記識別番号に応じた順序で表す有無情報ブロックを前記複数のファイルのそれぞれについて有する有無情報リストとを記憶する記憶手段と、検索対象の文字列である検索文字列を取得する取得手段と、前記取得手段により取得された検索文字列を含む文字列が前記文字列リストに含まれる場合に、当該文字列に付与された識別番号を前記文字列リストに基づいて特定する識別番号特定手段と、前記有無情報リストの有無情報に基づき、前記識別番号特定手段により特定された識別番号により表される文字列を含むファイルを特定するファイル特定手段と、前記ファイル特定手段により特定されたファイルを示す前記ファイル情報を出力する出力手段とを備える。
この検索装置によれば、各ファイルにおける文字列の有無は、単一のファイルである有無情報リストにより特定される。ゆえに、この検索装置によれば、有無情報の読み出しを高速にするとともに、有無情報リストのデータ容量を少なくすることが可能である。
なお、検索文字列を含む文字列は、特定の意味や職能を有する単語であることが一般的であるが、必ずしも単語である必要はない。
【０００５】
本発明に係る検索装置において、前記記憶手段は、前記複数のファイルの少なくとも一つに含まれる文字列の位置をそれぞれ表す複数の位置情報を記憶し、前記ファイル特定手段により特定されたファイルにおける前記検索文字列を含む文字列の位置を表す位置情報を前記複数の位置情報の中から特定する位置情報特定手段を備え、前記出力手段は、前記ファイル特定手段により特定されたファイルを示す前記ファイル情報と、当該ファイルについて前記位置情報特定手段により特定された位置情報とを出力する構成であってもよい。このようにすれば、検索文字列を含むファイルを特定するとともに、そのファイルにおける検索文字列を含む文字列の位置を特定することができる。
【０００６】
本発明に係る検索装置において、前記記憶手段は、前記文字列リストを複数の部分に区切るパーティション情報を記憶し、前記識別番号特定手段は、前記取得手段により取得された検索文字列を含む文字列が前記パーティション情報により区切られる複数の部分のいずれに含まれ得るかを特定するパーティション特定手段と、前記パーティション特定手段により特定された部分に前記検索文字列を含む文字列が存在するか否かを判断する判断手段とを備え、前記パーティション特定手段により特定された部分に前記検索文字列を含む文字列が存在すると前記判断手段が判断する場合に、当該文字列に付与された識別番号を前記文字列リストに基づいて特定する構成であってもよい。このようにすれば、文字列リストの全体について検索文字列を含むか判断する必要がなくなるため、その分処理を高速にすることができる。また、必要とするメモリの容量も低減させることができる。
【０００７】
本発明に係る検索装置において、前記識別番号特定手段は、前記文字列リストから前記取得手段により取得された検索文字列を含む文字列を二分探索により検索する検索手段を備える構成であってもよい。このようにすれば、検索文字列を含む文字列を文字列リストの先頭から逐一検索せずとも、検索文字列を含む文字列を検索することができる。
【０００８】
本発明に係る検索装置において、前記有無情報は、前記文字列リストに含まれる各文字列の有無を１ビット単位で表す構成であってもよい。このようにすれば、文字列の有無をを１ビット（１または０）で記述することが可能であるため、有無情報リストの容量をより小さくすることができる。
【０００９】
本発明に係る検索装置において、前記識別番号は、前記複数のファイルのうち、当該ファイルに少なくとも１つ含まれる文字列の総数が少ないファイルに含まれる文字列から先に付与され、前記有無情報ブロックに含まれる前記有無情報の数は、少なくとも１つ含まれる文字列の総数が少ないファイルについての有無情報ブロックほど少ない構成であってもよい。このようにすれば、有無情報ブロックに含まれる有無情報の数を異ならせることが可能であり、結果として、有無情報ブロックの記憶に要する容量を低減させることが可能である。
【００１０】
本発明に係る検索装置において、前記記憶手段は、あるファイルについての前記有無情報ブロックと他のファイルについての前記有無情報ブロックとの区切りを示すアドレス情報を記憶し、前記ファイル特定手段は、前記アドレス情報に基づいて各々の前記有無情報ブロックを特定し、当該有無情報ブロックから前記識別番号特定手段により特定された識別番号により表される文字列を含むファイルを特定する構成であってもよい。このようにすれば、必要な有無情報ブロックのみを特定することができるとともに、有無情報リストに有無情報ブロックの区切りとなるデータを設ける必要がない。
【００１１】
また、本発明は、上述した検索装置の機能を実現するプログラムとしても特定され得る。かかるプログラムは。例えば、コンピュータに、文字列を含む複数のファイルのそれぞれを識別する複数のファイル情報と、前記複数のファイルの少なくとも１つに含まれる文字列と、前記文字列を一意的に特定する識別番号とを有する文字列リストと、前記文字列リストに含まれる各文字列の有無を表す有無情報を前記識別番号に応じた順序で表す有無情報ブロックを前記複数のファイルのそれぞれについて有する有無情報リストと、検索対象の文字列である検索文字列とを取得する機能と、前記検索文字列を含む文字列が前記文字列リストに含まれる場合に、当該文字列に付与された識別番号を前記文字列リストに基づいて特定する機能と、前記有無情報リストの有無情報に基づき、前記特定された識別番号により表される文字列を含むファイルを特定する機能と、前記特定されたファイルを示す前記ファイル情報を出力する機能とを実現させるプログラムである。
なお、本発明は、このようなプログラムをネットワークを介してダウンロードさせ、種々の電子機器にインストールして検索装置としての機能を実現させたり、あるいは、プログラムを記録媒体に記録させた形態で提供したりすることも可能である。
【発明を実施するための最良の形態】
【００１２】
以下、図面を参照し、本発明の実施の形態を説明する。
なお、以下に示す実施形態においては、説明の便宜上、文字列としてローマ字を用い、文章や単語には英語を用いる。しかしながら、本発明は、日本語等のローマ字以外の文字を用いる言語に適用することも可能であるし、数字や記号を文字列に含んでもよい。
【００１３】
［実施形態の構成］
図１は、本発明の一実施形態である情報処理システムを示すブロック図である。同図に示すように、この情報処理システム１００は、検索装置１０と、データ管理装置２０とを備える。検索装置１０は、携帯可能な表示装置であり、本実施形態においては、いわゆる電子ペーパである。データ管理装置２０は、パーソナルコンピュータ等の情報処理装置であり、検索装置１０において利用される各種のデータを管理し、これを必要に応じて検索装置１０に供給する。
【００１４】
検索装置１０は、制御部１１と、記憶部１２と、通信部１３と、入力部１４と、表示部１５とを備える。制御部１１は、ＣＰＵ（Central Processing Unit）等の演算装置や、演算装置のワークエリアとして利用されるメモリ（メインメモリおよびバッファメモリ）などを備え、検索装置１０の各部の動作を制御する。また、制御部１１は、記憶部１２に記憶されたプログラムを実行することで、後述する検索機能を実現する。
【００１５】
記憶部１２は、検索装置１０において利用される各種のデータを記憶する。記憶部１２は、例えば、フラッシュメモリ等の書き換え可能な記憶媒体を備える。なお、この記憶媒体は、いわゆるメモリカードのような着脱可能な構成としてもよい。記憶部１２に記憶されるデータには、制御部１１が実行するプログラムと、文書を表す文書ファイルと、文字列を検索する際に用いられるインデックスとがある。文書ファイルは、複数記憶されており、それぞれを一意的に特定する名称（ファイル名）が各々に付与されている。つまり、記憶部１２は、ファイル名を識別可能に記憶している。また、文書ファイルは、抽出可能な文字列を複数含んでいる。インデックスは、検索用の種々のデータの集合であり、データ管理装置２０によって生成および供給される。
【００１６】
通信部１３は、データ管理装置２０との間でデータの送受信を行うためのインタフェースである。このインタフェースは、ＵＳＢ（Universal Serial Bus）規格のような有線のインタフェースであってもよいし、赤外線通信のような無線のインタフェースであってもよい。
【００１７】
入力部１４は、ユーザが指示を入力するためのインタフェースである。なお、ここにおける指示には、検索対象である文字列を指定する指示と、表示部１５による表示を制御する指示（文書の指定、ページの指定、スクロールなど）とを含む。入力部１４は、キーボードのようなキー型の入力装置であってもよいし、表示部１５の表示面に設けられたタッチスクリーン型の入力装置であってもよい。タッチスクリーン型の入力装置である場合には、ユーザが文字列を入力するときに専用の画面を表示面に表示させてもよいし、ユーザによる接触の軌跡に基づいて筆跡を認識してもよい。ユーザによる入力は、ペン型の器具（いわゆるスタイラス、タッチペンなど）を用いて行われてもよい。
【００１８】
表示部１５は、制御部１１からの指示に応じて、文書データが表す文書等を表示する。表示部１５は、例えば、複数の画素により構成される表示面を有する。この表示面は、例えば、コレステリック液晶等の記憶性表示体により構成されると望ましい。ここにおいて、記憶性表示体とは、電圧を印加しなくても表示状態（すなわち階調）を維持することが可能な表示体のことである。かかる表示体を用いると、表示を書き換えるとき以外の電力消費を抑制することが可能となる。
【００１９】
データ管理装置２０は、制御部２１と、記憶部２２と、通信部２３とを備える。制御部２１は、演算装置やメモリなどを備え、データ管理装置２０の各部の動作を制御する。また、制御部２１は、検索装置１０が検索に用いるデータを生成または編集するための演算処理を実行する。記憶部２２は、データ管理装置２０において利用される各種のデータを記憶する。記憶部２２は、制御部２１が実行するプログラムや制御部２１により生成されたデータなどを記憶する。通信部２３は、検索装置１０の通信部１３に対応するインタフェースであり、検索装置１０との間でデータの送受信を行う。
なお、データ管理装置２０は、検索装置１０に記憶された文書データを削除したり、あるいは、検索装置１０に新たな文書データを追加したりすることが可能である。
【００２０】
［実施形態の動作］
情報処理システム１００の構成は、以上のとおりである。かかる構成のもと、検索装置１０は、文書を表示する表示機能と、文書に含まれる単語を検索する検索機能とを実現する。また、データ管理装置２０は、検索装置１０が検索機能を実現するために必要なデータ、すなわちインデックスを生成する。
以下においては、まず、データ管理装置２０がインデックスを生成する動作を説明し、次いで、検索装置１０がそのインデックスを用いて実現する検索機能の動作を説明する。
【００２１】
（１）インデックスの生成
図２は、データ管理装置２０の動作を示すフローチャートである。なお、データ管理装置２０は、検索装置１０が接続されたとき、すなわち、通信部２３と通信部１３とで通信が可能となったときに、この動作を実行する。同図に示すように、まず、データ管理装置２０の制御部２１は、検索装置１０の記憶部１２に記憶された文書ファイルを全て取得する（ステップＳａ１）。このとき、制御部２１は、記憶部１２においてそれぞれの文書ファイルが記憶されている位置を特定する情報を併せて取得する。なお、本実施形態においては、この情報としてファイルパスを用いるが、全ての文書ファイルが同一のディレクトリに記憶されている場合であれば、ファイル名のみであってもよい。また、制御部２１は、記憶部１２から文書ファイルをコピーすればよく、文書ファイルを記憶部１２から移動させる必要はない。
【００２２】
続いて、制御部２１は、それぞれの文書ファイルから単語を抽出し、各文書ファイルについて単語数を特定する（ステップＳａ２）。ここにおいて、「単語」とは、１または複数の文字により構成され、特定の意味や職能を有する文字列である。また、「単語数」とは、文書ファイルに少なくとも１つ含まれる単語の総数であり、文書ファイルに含まれる単語の延べ数ではない。各文書ファイルの単語数を特定したら、制御部２１は、特定した単語数の大小に応じて文書ファイルをソート（並べ替え）する（ステップＳａ３）。これは、単語数の少ない文書ファイルから順に後述の処理の対象とするためである。このとき、制御部２１は、それぞれの文書ファイルに一意的な識別番号を付与する。この識別番号のことを、以下では「ファイル識別番号」という。ここにおいて、ファイル識別番号は、単語数の少ない文書ファイルほど小さい値となるように付与される。
【００２３】
次に、制御部２１は、文書ファイルを参照してインデックスを生成する。本実施形態において、インデックスは、「単語リスト」、「位置情報リスト」、「位置アドレスリスト」、「有無情報リスト」、「ファイル情報リスト」、「パーティション情報」および「インデックス情報」により構成されるデータの集合である。
制御部２１は、ある文書ファイルに基づいて単語リスト、位置情報リスト、位置アドレスリスト、有無情報リストおよびファイル情報リストを生成し、その後、別の文書ファイルに基づいてこれらのリストを更新する。制御部２１は、異なる文書ファイルを順次処理対象とすることによって更新を繰り返し、取得した全ての文書ファイルを処理したところで更新を終える。その動作は、具体的には以下のとおりである。
【００２４】
制御部２１は、はじめに単語リストを生成する（ステップＳａ４）。単語リストは、文書ファイルに少なくとも１つ含まれる単語のリストであり、文書ファイルに少なくとも１つ含まれる単語をアルファベット順に並べたリストである。このとき、制御部２１は、それぞれの単語に一意的な識別番号を付与する。この識別番号のことを、以下では「単語識別番号」という。単語識別番号は、それぞれの単語を一意的に特定可能であればいかなる態様で付与されてもよいが、本実施形態においては、より早く抽出された単語ほど小さい値となるように付与される。
【００２５】
ここで、単語リストについて具体例を挙げて説明する。ここでは、ある文書ファイル（以下「文書ファイルＦ１」という。）を処理対象として単語リストを生成する場合を想定する。また、文書ファイルＦ１には、「The cat is big and black.」という文のみが含まれているものとし、この文が文頭から順に抽出されるものとする。
この例の場合、制御部２１は、単語「the」に単語識別番号「１」、単語「cat」に単語識別番号「２」、単語「is」に単語識別番号「３」、といった具合で単語識別番号を付与する。その結果、制御部２１が生成する単語リストは、図３のようになる。
なお、図３においては、単語と単語識別番号の対応関係を示すために、これを上下に記載しているが、実際のデータにおいては、これらが連続している。すなわち、単語リストは、「the」、「１」、「cat」、「２」、「is」、「３」、といった並びで記憶されている。
【００２６】
次に、制御部２１は、位置情報リストを生成する（ステップＳａ５）。位置情報リストは、文書ファイルに含まれる単語がその文書ファイル内のどの位置にあるかを示す情報（以下「位置情報」という。）のリストである。また、位置情報リストは、位置情報に加え、文書ファイルに含まれる単語のその文書ファイルにおける出現頻度を示す情報（以下「頻度情報」という。）を含んでいる。１つの文書ファイルの位置情報と頻度情報とをまとめたものを、以下では「位置情報ブロック」という。すなわち、位置情報ブロックを一覧で記述した集合が、位置情報リストである。
【００２７】
図４は、位置情報ブロックのデータ形式を例示する図である。同図に示すように、位置情報ブロックは、頻度情報と、その頻度情報が表す頻度の値と同数の位置情報とからなるデータの組である。例えば、ある文書ファイルについて、単語ｗ１の出現頻度が「ｍ（回）」であった場合、単語ｗ１の位置情報は、合わせてｍ個のデータとなり、また、単語ｗ２の出現頻度が「ｎ（回）」であった場合、単語ｗ２の位置情報は、合わせてｎ個のデータとなる。なお、位置情報のそれぞれは、文書ファイルにおける位置を特定可能な情報であれば、いかなるものであってもよい。例えば、文書ファイルが表す文書の文頭からの文字数やバイト数であってもよいし、文書ファイルが表す文書におけるページ数と座標との組み合わせであってもよい。
制御部２１は、文書ファイルに含まれる単語の全てについて、このように頻度情報と位置情報とを求め、位置情報ブロックを生成する。
【００２８】
次に、制御部２１は、位置アドレスリストを生成する（ステップＳａ６）。位置アドレスリストは、位置情報リストに記述されている頻度情報について、それぞれの位置情報リストにおける相対位置（以下「位置アドレス」という。）を記述したデータのリストである。なお、以下においては、１の位置情報ブロックに対応する位置アドレスをまとめたものを「位置アドレスブロック」という。
【００２９】
なお、位置情報ブロックと位置アドレスブロックとは、単語に関する情報をともに単語識別番号に応じた順序で並べてなるものである。本実施形態においては、位置情報ブロックおよび位置アドレスブロックには、単語識別番号の小さい順にデータが並べられているとする。
【００３０】
次に、制御部２１は、有無情報リストを生成する（ステップＳａ７）。有無情報リストは、単語リストに含まれる単語について、その単語の有無を文書ファイル毎に表したリストである。本実施形態においては、文書ファイルに含まれる単語を「１」として表し、文書ファイルに含まれない単語を「０」として表すものとする。この、「１」または「０」で表される情報を、以下では「有無情報」といい、１の文書ファイルの有無情報をまとめたものを「有無情報ブロック」という。なお、有無情報ブロックにおいて、有無情報は、上述した単語識別番号順に記述される。
【００３１】
ここで、有無情報ブロックについて、単語リストを説明した例を用いて説明する。例えば、単語リストを生成する対象となった文書ファイルが文書ファイルＦ１のみであれば、その時点での単語リストは、図３に示したとおりである。このとき作成される有無情報ブロックは、図５に示すように、値が全て「１」となる。これは、有無情報リストが最初に生成される時点においては、単語リストに含まれる単語が文書ファイルＦ１に含まれる単語のみだからである。
【００３２】
次に、制御部２１は、ファイル情報リストを生成する（ステップＳａ８）。ファイル情報リストは、ファイルパスと、各種のアドレス（リストにおける相対位置）とを含むデータの集合である。
図６は、ファイル情報リストのデータ形式を例示する図である。同図に示すように、ファイル情報リストは、それぞれの文書ファイルについて、「ファイルパス」と、「有無情報ブロック開始アドレス」と、「有無情報ブロック終了アドレス」と、「位置アドレスブロック開始アドレス」と、「位置アドレスブロック終了アドレス」と、「位置情報ブロック開始アドレス」と、「位置情報ブロック終了アドレス」とを記述したものである。なお、これらのデータをまとめたものを、以下では「ファイル情報」という。ファイル情報は、ファイル識別番号に応じた順序で記述される。つまり、ファイル情報リストには、ファイル識別番号が対応付けられるようにファイル情報が記述される。
【００３３】
「ファイルパス」には、当該文書ファイルのファイルパスが記述される。このファイルパスは、ステップＳａ１において取得されるファイルパスに基づく。
「有無情報ブロック開始アドレス」および「有無情報ブロック終了アドレス」には、有無情報リストにおける当該文書ファイルに対応する有無情報ブロックの範囲が記述される。すなわち、「有無情報ブロック開始アドレス」には、当該文書ファイルに対応する有無情報ブロックの最初の有無情報のアドレス（位置）が記述され、「有無情報ブロック終了アドレス」には、当該文書ファイルに対応する有無情報ブロックの最後の有無情報のアドレス（位置）が記述される。
【００３４】
「位置アドレスブロック開始アドレス」および「位置アドレスブロック終了アドレス」には、位置情報リストにおける当該文書ファイルに対応する位置情報ブロックの範囲が記述される。すなわち、「位置アドレスブロック開始アドレス」には、当該文書ファイルに対応する位置情報ブロックの最初の頻度情報の位置アドレスが記述され、「位置アドレスブロック終了アドレス」には、当該文書ファイルに対応する位置情報ブロックの最後の頻度情報の位置アドレスが記述される。
「位置情報ブロック開始アドレス」および「位置情報ブロック終了アドレス」には、位置情報リストにおける当該文書ファイルに対応する位置情報ブロックの範囲が記述される。すなわち、「位置情報ブロック開始アドレス」には、当該文書ファイルに対応する位置情報ブロックの最初の位置アドレスが記述され、「位置情報ブロック終了アドレス」には、当該文書ファイルに対応する位置情報ブロックの最後の位置アドレスが記述される。
【００３５】
なお、「位置アドレスブロック開始アドレス」と「位置情報ブロック開始アドレス」は、同一の位置アドレスとなる一方、「位置アドレスブロック終了アドレス」と「位置情報ブロック終了アドレス」は、異なる位置アドレスとなる。
図７は、位置情報ブロックとこれらの位置アドレスの関係を例示する図である。位置情報ブロックは、上述したように、１の頻度情報と１または複数の位置情報からなるデータの組である。同図に示すように、「位置情報ブロック終了アドレス」は、位置情報ブロックの末尾の位置情報の位置アドレスを表しているのに対して、「位置アドレスブロック終了アドレス」は、位置情報ブロックの最後に記述された頻度情報の位置アドレスを表している。
【００３６】
制御部２１は、上述したステップＳａ４〜Ｓａ８の処理をある文書ファイルについて実行したら、当該文書ファイルを対象とした処理を終了する。そして、制御部２１は、処理対象となる文書ファイルが他に存在するか否かを判断する（ステップＳａ９）。すなわち、これは、制御部２１が全ての文書ファイルについてステップＳａ４〜Ｓａ８の処理を実行するということである。
【００３７】
処理対象となる文書ファイルが存在する場合（ステップＳａ９：ＹＥＳ）、制御部２１は、その文書ファイルに対して上述したステップＳａ４〜Ｓａ８の処理を実行する。ただし、ステップＳａ４〜Ｓａ８の処理を実行するのが２回目以降である場合、位置情報リスト、位置アドレスリスト、単語リスト、有無情報リストおよびファイル情報リストは、既に生成されている。そのため、制御部２１は、生成されたこれらのリストを更新する処理を行う。なお、図２のフローチャートについては、２回目以降の処理の場合は「生成」を「更新」に読み替えるものとする。また、上述した説明についても同様である。
【００３８】
位置情報リストを更新するとき、制御部２１は、既に生成されている位置情報リストの末尾に新たな位置情報ブロックを追加する。このとき、制御部２１は、既存の位置情報ブロックと新たな位置情報ブロックとの間に、これらの区切りを示す何らかのデータを挿入してもよい。また制御部２１は、位置アドレスリストおよびファイル情報リストの更新も、同様の要領で行う。すなわち、位置情報ブロックやファイル情報は、単語数の少ない文書ファイルから生成され、追加される。
【００３９】
単語リストを更新するとき、制御部２１は、単語の並びがアルファベット順となるようにする。すなわち、制御部２１は、既存の単語リストの末尾に新たな単語を追加するのではなく、既存の単語リストの適当な位置に新たな単語を挿入する処理を行う。
ここで、この更新処理について具体例を挙げて説明する。ここにおいて、既存の単語リストは、図３に示した単語リストであるとする。また、このとき処理対象である文書ファイルを「文書ファイルＦ２」とし、この文書ファイルＦ２には、「The dog is small and white.」という文のみが含まれているものとし、この文が文頭から順に抽出されるものとする。
【００４０】
この場合、制御部２１は、既に単語識別番号が付与されている単語については、新たな単語識別番号を付与しない。すなわち、この例でいえば、単語「the」、「is」および「and」には新たな単語識別番号が付与されない。その結果、制御部２１は、単語「dog」に単語識別番号「７」、単語「small」に単語識別番号「８」、単語「white」に単語識別番号「９」を付与する。なお、単語「dog」は、アルファベット順に並べたとき、単語「cat」より後であり、単語「is」より前である。同様に、単語「small」は、単語「is」より後であり、単語「the」より前であり、単語「white」は、単語「the」より後である。そのため、制御部２１による更新後の単語リストは、図８のようになる。
【００４１】
続いて、有無情報リストを更新する動作について、図８に示した例を用いて説明する。制御部２１は、文書ファイルＦ２に対応する有無情報ブロックとして、図９に示す有無情報ブロックを生成する。同図に示すように、この有無情報ブロックは、図５に示した有無情報ブロックよりも有無情報の数が多い。これは、新たに出現した単語（「dog」、「small」および「white」）の数だけ単語識別番号が増加したからである。なお、新たに出現した単語に対応する有無情報は、当然、いずれも「１」となる。
【００４２】
制御部２１は、このようにして新たに生成した有無情報ブロックを既存の有無情報リストの末尾に追加することにより、有無情報リストの更新を行う。すなわち、制御部２１による更新後の有無情報リストは、図１０のようになる。なお、同図においては、有無情報ブロックの区切りを容易に理解せしめるために、有無情報ブロックのそれぞれを改行して示しているが、実際のデータにおいては、この改行の位置に何らかのデータが挿入されていなくてもよい。以下においては、説明の便宜上、有無情報ブロックどうしの区切りを示す位置のことを「区切り位置」という。
【００４３】
図１１は、このような更新が繰り返された場合の有無情報リストを例示する図である。このように、有無情報リストは、それぞれの文書ファイルについての有無情報ブロックをファイル識別番号順に並べたデータとなる。また、それぞれの有無情報ブロックについていえば、有無情報は全て単語識別番号順に並べられている。
【００４４】
制御部２１は、取得した全ての文書ファイルに対して、ステップＳａ４〜Ｓａ８の処理を実行する。そして、処理対象となる文書ファイルがなくなると（ステップＳａ９：ＮＯ）、制御部２１は、単語リストを区切るパーティション情報を算出して生成する（ステップＳａ１０）。パーティション情報は、単語リストの区切り位置を示す情報である。パーティション情報により区切られる単語リストの一部を、以下では「パーティション」という。なお、パーティションの数は、２以上の任意の数でよい。制御部２１は、算出したパーティション情報を記憶部２２に記憶する。
【００４５】
図１２は、パーティションの一例を示す図である。なお、同図においては、図８に示した単語リストを用いた場合を例示している。パーティションは、それぞれに含まれる単語の数がほぼ等しくなるように設定されるのが望ましい。
図１３は、パーティション情報のデータ形式を例示する図である。このように、パーティション情報は、パーティションの数と、それぞれのパーティションの最初にある単語とその位置アドレスとを記述した情報である。例えば、図１２に示したようなパーティションを設定した場合であれば、パーティションの数は「３」である。また、１番目のパーティションの最初の単語は「and」であり、２番目のパーティションの最初の単語は「cat」であり、３番目のパーティションの最初の単語は「small」である。
【００４６】
以上のデータを生成したら、最後に制御部２１は、インデックスに関する一般的な情報を記述したインデックス情報を生成する（ステップＳａ１１）。インデックス情報には、単語リストに含まれる単語の総数や、取得した文書ファイルの総数が含まれる。また、インデックス情報は、インデックスのサイズ（データ容量）やチェックサム（ＭＤ５等）を含んでもよい。そして、制御部２１は、通信部２３を介してこれらのインデックスを出力し、検索装置１０の記憶部１２に記憶させる（ステップＳａ１２）。
【００４７】
データ管理装置２０における処理は、以上のとおりである。このようにして、インデックスが生成され、検索装置１０に供給される。検索装置１０は、インデックスを取得した後に、ユーザから検索対象である文字列（以下「検索文字列」という。）を入力されると、データ管理装置２０から供給されたインデックスを用いて、文字列の検索を行う。
【００４８】
（２）文字列の検索
図１４および１５は、検索装置１０の動作を示すフローチャートである。図１４は、検索文字列を含む文書ファイルを特定するための第１の検索処理であり、図１５は、特定された文書ファイルから該当する単語の位置を特定するための第２の検索処理である。本実施形態の検索装置１０は、これらの２段階の検索処理によって検索機能を実現している。なお、本実施形態においては、これらの検索処理が別個のプログラムにより実現されるが、単一のプログラムで実現されてもよい。
【００４９】
図１４に示すように、はじめに検索装置１０の制御部１１は、入力部１４を介して検索文字列を取得し、メインメモリにロードする（ステップＳｂ１）。続いて、制御部１１は、インデックス情報を読み出し、単語リストに含まれる単語の総数と記憶された文書ファイルの総数とをメインメモリにロードする（ステップＳｂ２）。そして、制御部１１は、文書ファイルの総数が「０」であるか否かを判断することにより、検索対象となる文書ファイルが存在するか否かを判断する（ステップＳｂ３）。このとき、文書ファイルの総数が「０」であれば（ステップＳｂ３：ＮＯ）、制御部１１は、該当する文書ファイルが存在しない旨の情報を出力し（ステップＳｂ１４）、検索処理を終える。制御１１は、該当する文書ファイルが存在しない旨の情報を出力して処理を終えた場合には、その旨を表示部１５に表示させるなどして、ユーザに通知する。
【００５０】
一方、制御部１１は、文書ファイルの総数が「０」でない場合（ステップＳｂ３：ＹＥＳ）、すなわち文書ファイルが存在する場合には、パーティション情報を参照し、検索文字列が含まれる可能性のあるパーティションを特定する（ステップＳｂ４）。制御部１１は、パーティション情報に記述された単語と検索文字列とのアルファベットを先頭から比較することにより、検索文字列が含まれる可能性のあるパーティションを特定する。このようにしてパーティションを特定したら、制御部１１は、単語リストからこのパーティションのみを読み出し、メインメモリにロードする（ステップＳｂ５）。
【００５１】
続いて、制御部１１は、ファイル情報リストを読み出し、メインメモリにロードする（ステップＳｂ６）。そして、制御部１１は、メインメモリにロードされたパーティション（すなわち単語リストの一部）から検索文字列を含む単語を検索する（ステップＳｂ７）。制御部１１は、この検索を、いわゆる二分探索により行う。すなわち、制御部１１は、パーティションの中心に位置する単語を特定し、検索文字列が中心より先頭側（「a」に近い側）と末尾側（「z」に近い側）のいずれに相当するかを判断し、同様の動作を繰り返すことによって絞り込みを行う。これにより、制御部１１は、メインメモリにロードされたパーティションに検索文字列を含む単語が存在するか否かを特定できる。また、制御部１１は、検索文字列を含む単語を特定した場合には、その単語に対応付けられた単語識別番号を特定することができる。
【００５２】
続いて、制御部１１は、この検索の結果により、検索文字列を含む単語がパーティションに存在するか否かを判断する（ステップＳｂ８）。検索文字列を含む単語が存在しない場合（ステップＳｂ８：ＮＯ）、制御部１１は、該当する文書ファイルが存在しない旨の情報を出力し（ステップＳｂ１４）、検索処理を終える。一方、検索文字列を含む単語が存在する場合（ステップＳｂ８：ＹＥＳ）、制御部１１は、有無情報リストを用いてその単語を含む文書ファイルを特定する処理（ステップＳｂ９〜Ｓｂ１２）を行う。なお、ステップＳｂ９〜Ｓｂ１２の処理は、それぞれの文書ファイル単位で実行されるループ処理である。
【００５３】
制御部１１は、文書ファイルのそれぞれについて、有無情報リストを参照して検索文字列を含む単語の有無を判断する（ステップＳｂ９）。制御部１１は、この判断をマスク処理によって行う。具体的には、例えば、判断対象である文書ファイルのファイル識別番号を「ｙ」、検索文字列を含む単語の単語識別番号を「ｘ」と特定した場合、制御部１１は、有無情報リストの先頭から（ｙ−１）個目の区切り位置から数えてｘ番目の有無情報のみを取り出すマスクパターンを算出し、このマスクパターンを用いてマスク処理を行えばよい。
【００５４】
次に、制御部１１は、この判断結果に応じてその後の処理を切り替える（ステップＳｂ１０）。すなわち、制御部１１は、対象の文書ファイルに検索文字列を含む単語が含まれている場合には（ステップＳｂ１０：ＹＥＳ）、メインメモリにロードされたファイル情報リストに基づいて、当該文書ファイルのファイル識別番号を特定し、これをバッファメモリに記憶する（ステップＳｂ１１）。一方、対象の文書ファイルに検索文字列を含む単語が含まれていない場合には（ステップＳｂ１０：ＮＯ）、制御部１１はステップＳｂ１１の処理をスキップする。
【００５５】
ステップＳｂ９〜Ｓｂ１１の処理を実行したら、制御部１１は、処理対象の文書ファイルが存在するか否かを判断することにより、全ての文書ファイルについてステップＳｂ９〜Ｓｂ１１の処理を実行したか否かを判断する（ステップＳｂ１２）。この判断は、例えば、処理対象の文書ファイルのファイル識別番号が最大値（最終値）であるか否かによって行うことができる。
【００５６】
制御部１１は、処理対象の文書ファイルが存在する場合（ステップＳｂ１２：ＮＯ）、新たな文書ファイルを処理対象とし、ステップＳｂ９〜Ｓｂ１１の処理を繰り返す。すなわち、このとき制御部１１は、直前に処理をした文書ファイルよりもファイル識別番号が「１」大きい文書ファイルを新たな処理対象とする。一方、制御部１１は、処理対象の文書ファイルが存在しない場合には（ステップＳｂ１２：ＹＥＳ）、第１の検索処理を終了する。このとき、制御部１１は、第２の検索処理に受け渡す引数として、検索文字列を含む単語の単語識別番号と、当該単語を含む文書ファイルのファイル識別番号とを出力する（ステップＳｂ１３）。なお、このとき出力されるファイル識別番号は、ステップＳｂ１１においてバッファメモリに記憶されたファイル識別番号の全てである。
【００５７】
続いて、図１５を参照して第２の検索処理を説明する。なお、この処理は、第１の検索処理において出力されたファイル識別番号が複数である場合には、その数だけ実行される処理である。同様に、第１の検索処理において出力された単語識別番号が複数である場合にも、その数だけ実行される。
【００５８】
第２の検索処理において、はじめに制御部１１は、第１の検索処理において出力されたファイル識別番号と単語識別番号とを取得し、メインメモリにロードする（ステップＳｃ１）。次に、制御部１１は、ファイル情報リストを読み出し、これをメインメモリにロードする（ステップＳｃ２）。そして、制御部１１は、ステップＳｃ１において取得したファイル識別番号により特定される文書ファイルに対応した有無情報リスト開始アドレスと有無情報リスト終了アドレスとを、ファイル情報リストから読み出して取得する（ステップＳｃ３）。これにより、制御部１１は、当該文書ファイルに対応する有無情報ブロックを特定できる。そして、制御部１１は、この特定した有無情報ブロックをメインメモリにロードする（ステップＳｃ４）。
【００５９】
次に、制御部１１は、ロードした有無情報ブロックの先頭の有無情報からステップＳｃ１において取得した単語識別番号により表される単語の有無情報までのうち、その値が「１」となる有無情報の数を特定する（ステップＳｃ５）。このとき特定される数のことを、以下では「オフセット」という。オフセットは、目的の単語（すなわち、ステップＳｃ１において取得した単語識別番号により表される単語）の位置アドレスが位置アドレスブロックの何番目に記述されているかを表す値である。
【００６０】
ここで、ステップＳｃ５の処理を具体例を挙げて説明する。いま、ある文書ファイルに対応する有無情報ブロックが図１６のようになっている場合を想定する。ここにおいて、目的の単語は、単語識別番号が「３８」の単語であるとする。制御部１１は、図１７に示すルックアップテーブルを用いて、有無情報ブロックの先頭から目的の単語までにある「１」の総数を算出する。具体的には、有無情報を先頭から８桁ずつに区切り、これらの８桁の有無情報のそれぞれを２進数の値とみなしてルックアップテーブルと比較する。なお、このルックアップテーブルは、ある値が入力されたとき、その値が２進数で表記したときにいくつの「１」を含むかを出力するテーブルとなっている。
【００６１】
いま、有無情報ブロックの最初の８桁を入力値としてルックアップテーブルを適用すると、この８桁に「１」は含まれていないため、その出力値は「０」である。続いて、有無情報ブロックの次の８桁を入力値としてルックアップテーブルを適用すると、この８桁には「１」が１つ含まれているため、その出力値は「１」である。このようにして、８桁の有無情報に順次ルックアップテーブルを適用していくと、これを５回繰り返したところで目的の単語に到達する。この５回の出力値は、それぞれ、「０」、「１」、「１」、「２」、「１」となり、これを加算すると「５」である。ゆえに、制御部１１は、この場合のオフセットを「５」であると特定する。これはつまり、この文書ファイルに含まれる単語を単語識別番号順に小さい方から並べたとき、目的の単語はその「５」番目の「１」である、ということを意味している。
【００６２】
ここで図１５の説明に戻る。制御部１１は、オフセットを特定したら、位置アドレスリストを参照し、このオフセットにより特定される位置アドレスを取得する（ステップＳｃ６）。具体的には、制御部１１は、位置アドレスリストからステップＳｃ１において取得したファイル識別番号に対応する位置アドレスブロックを特定し、その先頭からオフセットの分だけ移動させた位置にある位置アドレスを取得する。つまり、図１６および１７を挙げて説明した場合でいえば、取得される位置アドレスは、特定した位置アドレスブロックの先頭の位置アドレスより「５」個先にある位置アドレスである。
【００６３】
位置アドレスを取得したら、制御部１１は、位置情報リストを参照し、その位置アドレスが示す位置の頻度情報と、この頻度情報と組になる位置情報とを読み出して取得する（ステップＳｃ７）。そして、制御部１１は、読み出した位置情報（および頻度情報）と、ステップＳｃ１において取得したファイル識別番号に対応するファイルパスとを出力し（ステップＳｃ８）、検索処理を終える。
【００６４】
制御部１１は、出力したデータを用いて、検索結果を表示部１５に表示させる。例えば、制御部１１は、ファイルパスと位置情報とを用いて、検索文字列を含む文書ファイルを表示させるとともに、その検索文字列の具体的な位置を認識させることができる。なお、検索文字列の認識の態様は任意であるが、例えば、他の文字と異なる色で表示させたり、あるいは、検索文字列に下線を付して表示させたりしてもよい。
また、制御部１１は、ファイルパスと頻度情報とを用いて、検索文字列を含む文書ファイルを表示させるとともに、その文書ファイルに含まれる検索文字列の個数を表示させることもできる。
【００６５】
［実施形態の効果］
本実施形態の検索装置１０は、このような検索処理を行うことにより、組み込みシステムのようなリソースが制限される構成においても好適に動作することを可能にしている。本実施形態の検索装置１０は、複数の文書ファイルにおける単語の有無を単一のファイル（有無情報リスト）として記憶することにより、これらが複数に分かれている場合よりもデータの入出力を高速にすることを可能にしている。加えて、本実施形態の有無情報リストは、単語の有無を「１」と「０」の情報のみで表しているため、データ容量を小さくすることもできる。
【００６６】
また、本実施形態の検索装置１０は、有無情報リストのみならず、その他の位置情報リストや位置アドレスリストについても、単一のファイル（すなわち、１の集合）として記憶しており、リンク構造を採用していない点にも特徴がある。本実施形態の検索装置１０は、このように職能が共通するデータ群を１のファイルとすることで、ファイルアクセスをより高速にすることを可能にしている。
なお、本実施形態の検索装置１０は、種々のアドレスをインデックス情報として記憶することにより、有無情報や位置情報などが単一のファイルとして記憶されている場合であっても、目的の文書ファイルのブロックへのアクセスを容易にすることを可能にしている。
【００６７】
また、本実施形態の検索装置１０は、単語のそれぞれに単語識別番号を付与するとともに、単語リストによって単語と単語識別番号との対応付けを記述することによって、有無情報リストを単語識別番号に応じた順序で記述することを可能にしている。また、単語識別番号は、単語数の少ない文書ファイルに含まれる単語から順に付与されるようになっている。これらによって、本実施形態の検索装置１０においては、有無情報の数を単語識別番号の最大値とファイル識別番号の最大値の積よりも少なくすることが可能となっている（図１１参照）。
【００６８】
また、本実施形態の検索装置１０は、目的の単語の位置アドレスを特定するために、図１７に示したようなルックアップテーブルを用いている。これにより、例えば、有無情報ブロックの有無情報を先頭からカウントする場合に比べ、位置アドレスの特定をより高速に行うことを可能にしている。なお、このような特定が可能なのは、有無情報リストが「１」または「０」のデータにより記述されているためである。
【００６９】
また、本実施形態の検索装置１０は、単語リストを区切ったパーティションを用いることにより、読み出すべき単語リストのデータ容量を半分以下にすることを可能にしている。これにより、データの読み出しを高速にするとともに、検索対象とする単語の数を減らすことができる。なお、このようなパーティションを定義することが可能なのは、単語リストがアルファベット順に記述されているためである。
【００７０】
また、本実施形態の検索装置１０は、位置情報と頻度情報を同一のファイル（位置情報リスト）に記憶することによって、これらを別個のファイルに記憶した場合よりも高速にデータを読み出すことを可能にしている。これにより、例えば、文書ファイルに検索文字列を含む同一の単語が複数ある場合に、それぞれの位置を高速に特定することが可能となる。
【００７１】
図１８は、本実施形態の効果を説明するための図である。図１８（ａ）および（ｂ）は、それぞれ、文書ファイルのサイズ（データ容量）に比したインデックスとテキストファイル（文書ファイルをテキスト形式にしたファイル）のサイズを示しており、図１８（ａ）が本実施形態の有無情報リストを用いた場合であり、図１８（ｂ）が有無情報リストを用いない場合である。ここにおいて、有無情報リストを用いない場合には、有無情報リストに代えて、各単語の有無を位置アドレスにより示した。なお、単語が存在しないことを示すデータとしては、位置アドレスと同一のデータ長である所定のデータ（例えば、値が全て「１」のデータ）を用いた。また、文書ファイルとしては、ＰＤＦ（Portable Document Format）ファイルを用いた。
図１８に示すように、本実施形態の有無情報リストを用いた場合には、インデックスのサイズ（三角の点で示す）をテキストファイルのサイズ（四角の点で示す）よりも小さくすることが可能となった。特に、この効果は、文書ファイルのサイズが大きくなるほど顕著となることが明らかになった。
【００７２】
また、本発明の発明者による実験によると、本実施形態の検索機能とＵＮＩＸ（登録商標）系のgrepコマンドとによる処理時間（実時間）を同一の条件で比較した場合、grepコマンドでは１４秒程度要した検索が、本実施形態の検索機能では０．４６秒程度で行えることが確認された。これにより、本実施形態の検索機能は、実用上十分な速度で検索を実行できるということができる。
なお、本実施形態の検索機能は、ディスクキャッシュが有効である場合よりも、ディスクキャッシュが有効でない場合においてより効果が顕著であることも確認された。
【００７３】
［変形例］
本発明は、上述した実施形態のみならず、その他の形態でも実施が可能である。例えば、パーティション情報やファイル情報リストは、必須のデータではない。しかしながら、もちろん、このようなデータを用いて読み出したり参照したりするデータの範囲を限定した方が、より高速に処理が実行できることはいうまでもない。また、上述した実施形態においては、単語の探索を二分探索により行うとしたが、二分探索を用いないでもよい。
【００７４】
なお、ファイル情報リストを設けない場合、そのままでは、有無情報リストにおける区切り位置、すなわち、有無情報ブロックどうしの区切りを示す位置を特定することが困難となる。そのため、この場合には、例えば、区切り位置を示す何らかのデータを有無情報ブロックの間に挿入するとよい。このデータは、「１」または「０」以外のものを示すデータであれば、いかなるものであってもよい。
あるいは、有無情報ブロックに含まれる有無情報の数を全ての有無情報ブロックについて同じ数にしてもよい。この場合、有無情報の数は、全ての有無情報ブロックにおいて単語識別番号の最大値と同じ数になる。このようにすれば、有無情報ブロックのデータサイズが同一となるため、区切り位置の特定を容易にすることができる。
【００７５】
また、本発明は、いわゆるアンド検索、オア検索、マイナス検索などに適用してもよい。また、上述した実施形態においては、検索文字列が１つの単語に含まれる文字列である場合を説明したが、いわゆるフレーズ検索に本発明を適用してもよい。
なお、本発明をフレーズ検索に適用する場合は、アンド検索を行った後に検索文字列の語順に基づいて絞り込みを行ってもよいが、上述した単語リストにフレーズを記述してもよい。例えば、単語リストに「thank」および「you」が単語として記述される場合に、さらに、「thank you」というフレーズを１の単語であるとみなして追記するようにしてもよい。要するに、上述した実施形態における「単語リスト」は、文書ファイルに少なくとも１つ含まれる単語のリストであったが、これを、文書ファイルに少なくとも１つ含まれる単語またはフレーズのリストとしてもよいということである。
【００７６】
上述した実施形態においては、本発明を表示装置に適用した態様を示したが、本発明に係る検索装置は、その他の種々の装置に適用することができる。また、本発明は、リソースに制限のある組み込みシステム等に適用するに好適な構成であるが、もちろん、リソースに比較的余裕のあるその他の装置に適用してもよい。なお、このような場合であれば、文字列の検索とインデックスの生成とを同一の装置で実行してもよい。
【００７７】
また、上述した実施形態においては、検索対象のファイル（実施形態においては、文書ファイル）が表示されることを前提としていたが、検索対象のファイルは表示されないファイルであってもよい。このような場合であれば、単語が表示されない文字列であってもよく、例えば、メタデータ等を単語として含んでもよい。
【００７８】
また、検索の態様によっては、検索文字列を含むファイルが特定されれば足り、当該ファイルにおける検索文字列を含む単語の位置までは特定しないでもよい場合も考えられる。このような場合には、上述した位置情報の出力は不要であり、上述したファイルパスのようなファイルを特定できる情報のみが出力されればよい。この場合には、もちろん、位置情報を記憶する構成や位置情報を特定する構成は不要となる。
【００７９】
また、上述した実施形態においては、検索装置１０とデータ管理装置２０との間におけるデータのやりとりは、通信部１３および２３による通信で実現していたが、検索装置１０とデータ管理装置２０との間でデータのやりとりが可能であるならば、データの取得または供給の態様は特に問わない。例えば、記憶部１２をメモリカードのような着脱可能な構成にし、データ管理装置２０においてこれを読み書きできるようにしてもよい。
【図面の簡単な説明】
【００８０】
【図１】本発明の一実施形態である情報処理システムを示すブロック図である。
【図２】データ管理装置の動作を示すフローチャートである。
【図３】単語リストを例示する図である
【図４】位置情報ブロックのデータ形式を例示する図である。
【図５】有無情報ブロックを例示する図である。
【図６】ファイル情報リストのデータ形式を例示する図である。
【図７】位置情報ブロックと位置アドレスの関係を例示する図である。
【図８】単語リストを例示する図である。
【図９】有無情報ブロックを例示する図である。
【図１０】有無情報リストを例示する図である。
【図１１】有無情報リストを例示する図である。
【図１２】パーティションの一例を示す図である。
【図１３】パーティション情報のデータ形式を例示する図である。
【図１４】検索装置の動作を示すフローチャートである。
【図１５】検索装置の動作を示すフローチャートである。
【図１６】有無情報ブロックを例示する図である。
【図１７】ルックアップテーブルを例示する図である。
【図１８】実施形態の効果を説明するための図である。
【符号の説明】
【００８１】
１００…情報処理システム、１０…検索装置、１１…制御部、１２…記憶部、１３…通信部、１４…入力部、１５…表示部、２０…データ管理装置、２１…制御部、２２…記憶部、２３…通信部
【図１】
2008242749.tif 000003
【図２】
2008242749.tif 000004
【図３】
2008242749.tif 000005
【図４】
2008242749.tif 000006
【図５】
2008242749.tif 000007
【図６】
2008242749.tif 000008
【図７】
2008242749.tif 000009
【図８】
2008242749.tif 000010
【図９】
2008242749.tif 000011
【図１０】
2008242749.tif 000012
【図１１】
2008242749.tif 000013
【図１２】
2008242749.tif 000014
【図１３】
2008242749.tif 000015
【図１４】
2008242749.tif 000016
【図１５】
2008242749.tif 000017
【図１６】
2008242749.tif 000018
【図１７】
2008242749.tif 000019
【図１８】
2008242749.tif 000020