(57)【特許請求の範囲】
【請求項１】
登録文書群から指定された検索文字列を含む文書を検索する文書検索装置において、
登録文書あるいは検索文字列であるテキストをｎ−ｇｒａｍ（ｎ文字組）および単語に分解するテキスト分割手段と、
登録文書中のｎ−ｇｒａｍに関する出現情報をｎ−ｇｒａｍごとに保持しておくｎ−ｇｒａｍ索引と、
登録文書中の単語境界に関する出現情報を圧縮して記録する単語境界位置索引と、
検索文字列をｎ−ｇｒａｍに分割した結果に基づいて前記ｎ−ｇｒａｍ索引を参照して検索文字列を含む文書あるいはその文書における出現位置を検索する文字列単位検索手段と、
この文字列単位検索手段の結果に対し検索文字列を単語に分割した結果に基づいて前記単語境界位置索引を参照して検索文字列が単語として現われているか否かを判断し、検索文字列を単語として含む文書を検索する単語単位検索手段とを備え、
前記単語境界位置索引は、単語境界が出現する文書における出現位置を、１つの文書につき複数のブロックを用いて圧縮することを特徴とする文書検索装置。
【請求項２】
前記ブロックは、固定長のブロックであることを特徴とする請求項１の文書検索装置。
【請求項３】
最後尾に位置する前記ブロックは、固定長以下とすることを特徴とする請求項２の文書検索装置。
【請求項４】
前記ブロックには、当該ブロックに記録される出現位置のうち先頭あるいは末尾の出現位置そのものの圧縮データと、先頭あるいは末尾以外の出現位置に係るその直前の出現位置との差分の圧縮データとが記録されることを特徴とする請求項１ないし３のいずれか一記載の文書検索装置。
【請求項５】
前記ブロックには、当該ブロックに記録される出現位置のうち先頭あるいは末尾の出現位置そのものの非圧縮データと、先頭あるいは末尾以外の出現位置に係るその直前の出現位置との差分の圧縮データとが記録されることを特徴とする請求項１ないし３のいずれか一記載の文書検索装置。
【請求項６】
最後尾に位置する前記ブロックについては、末尾の出現位置そのものは記録されないことを特徴とする請求項４または５記載の文書検索装置。
【請求項７】
前記単語境界位置索引と前記ｎ−ｇｒａｍ索引とでは、圧縮に使用する符号化手法が異なることを特徴とする請求項１ないし６のいずれか一記載の文書検索装置。
【請求項８】
文書検索装置が以下の各工程を実行することにより、登録文書群から指定された検索文字列を含む文書を検索する文書検索方法において、
登録文書あるいは検索文字列であるテキストをｎ−ｇｒａｍ（ｎ文字組）および単語に分解する工程と、
登録文書中のｎ−ｇｒａｍに関する出現情報をｎ−ｇｒａｍごとにｎ−ｇｒａｍ索引に保持しておく工程と、
単語境界位置索引に登録文書中の単語境界に関する出現情報を圧縮して記録する工程と、
検索文字列をｎ−ｇｒａｍに分割した結果に基づいて前記ｎ−ｇｒａｍ索引を参照して検索文字列を含む文書あるいはその文書における出現位置を検索する工程と、
この検索結果に対し検索文字列を単語に分割した結果に基づいて前記単語境界位置索引を参照して検索文字列が単語として現われているか否かを判断し、検索文字列を単語として含む文書を検索する工程とを含み、
前記単語境界位置索引は、単語境界が出現する文書における出現位置を、１つの文書につき複数のブロックを用いて圧縮したものであることを特徴とする文書検索方法。
【請求項９】
コンピュータに、登録文書群から指定された検索文字列を含む文書を検索させるためのプログラムであって、
登録文書あるいは検索文字列であるテキストをｎ−ｇｒａｍ（ｎ文字組）および単語に分解する機能と、
登録文書中のｎ−ｇｒａｍに関する出現情報をｎ−ｇｒａｍごとにｎ−ｇｒａｍ索引に保持しておく機能と、
単語境界位置索引に登録文書中の単語境界に関する出現情報を圧縮して記録する機能と、
検索文字列をｎ−ｇｒａｍに分割した結果に基づいて前記ｎ−ｇｒａｍ索引を参照して検索文字列を含む文書あるいはその文書における出現位置を検索する機能と、
この検索結果に対し検索文字列を単語に分割した結果に基づいて前記単語境界位置索引を参照して検索文字列が単語として現われているか否かを判断し、検索文字列を単語として含む文書を検索する機能とを前記コンピュータに実現させるためのものであり、
前記単語境界位置索引は、単語境界が出現する文書における出現位置を、１つの文書につき複数のブロックを用いて圧縮したものであることを特徴とするプログラム。
【請求項１０】
請求項９記載のプログラムを記憶したことを特徴とするコンピュータに読み取り可能な記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、文書検索装置、文書検索方法、プログラム及びそのプログラムを記憶したコンピュータ読み取り可能な記憶媒体に関し、より詳細には、登録された文書群から指定された文字列を含む文書を検索する文書検索装置、文書検索方法、プログラム及びそのプログラムを記憶したコンピュータ読み取り可能な記憶媒体に関する。
【０００２】
【従来の技術】
登録された文書群から必要な文書を検索する文書検索方法には、文字列単位の検索（以下、文字列単位検索）と単語単位の検索（以下、単語単位検索）の２つの方法がある。
【０００３】
文字列単位検索では、ユーザが指定した文字列（以下、検索文字列）を文字列として含む文書を検索する。文字列単位検索を高速化する方法としては、文書中のｎ文字組（以下、ｎ−ｇｒａｍ）を索引単位として、索引単位ごとに出現した文書識別子と文書内での出現位置を記録するｎ−ｇｒａｍ索引を用意しておく方法が知られている。
【０００４】
一方、単語単位検索では、ユーザが指定した検索文字列を単語として含む文書を検索する。単語単位検索を高速化する方法としては、文書中の単語を索引単位として、索引単位ごとに出現した文書識別子と文書内での出現位置を記録する単語索引を用意しておく方法が知られている。
【０００５】
しかし、いずれの検索方法にも問題がある。文字列単位検索の場合、単語境界を無視して検索するため、ユーザが意図しない文書が検索結果に含まれることがある。例えば、「帯電」（電気を帯びること；electrification）を検索文字列とした場合、「彼女の携帯電話」という文書が検索されてしまう。
【０００６】
一方、単語単位検索の場合、日本語においては単語の区切れが明示的に示されないため、索引を作成する際に形態素解析などを施して単語を切り出す必要があるが、現在の技術レベルでは形態素解析の誤りが避けられない。したがって、形態素解析誤りが原因で検索漏れが起こる。例えば、「東京都にある清水寺」という文書を登録する際、／東／京都／に／ある／清水寺／と形態素解析されるべきところを／東京／都／に／ある／清水／寺／のように誤って解析されれば、検索文字列が「京都」のときに「東京都にある清水寺」という文書を検索することができない。
【０００７】
上述した問題を避けるには、システムが両検索方法をサポートし、ユーザがニーズに応じていずれかの検索方法を指定できるようにすればよい。そのような検索方法の従来技術が、特開２０００−６７０７０公報に記載されている。この発明では、文書登録時に単語の切れ目に特殊な区切り文字を挿入し、区切り文字を挿入したデータからｎ−ｇｒａｍを切り出し、索引を作成する。その際、区切り文字の前後を連結させて得られるｎ−ｇｒａｍも切り出して索引に記録する。ユーザが単語単位検索を指定した場合には区切り文字を含むｎ−ｇｒａｍを無視することなく検索処理を行い、文字列単位検索を指定した場合には区切り文字を含むｎ−ｇｒａｍを無視して検索処理を行う。
【０００８】
別の従来技術としては、特開平７−８５０３３号公報に記載された技術がある。この発明では、文字ごとにその文字が出現する文書、その文書における出現位置、および各出現位置が単語の先頭あるいは末尾かのフラグを記録しておく。検索時には文字ごとの出現位置に基づいて文字列単位の検索を実現するとともに、単語の先頭あるいは末尾かのフラグも参照することで単語単位の検索も実現する。
【０００９】
【発明が解決しようとする課題】
しかしながら、特開２０００−６７０７０公報に記載された技術には以下の問題がある。特開２０００−６７０７０公報に記載された技術によれば、単語の切れ目を区切り文字で表現していることから、一般に文字は固定長（例えば、ＵＣＳ２表現のユニコードでは２バイト）で表現されるため、表現可能な値がすべて意味ある文字として使われる場合には、この方法を適用できない。
【００１０】
一方、特開平７−８５０３３号公報に記載された技術には以下の問題がある。文字列単位の検索が文字索引に基づいているので、ｎ−ｇｒａｍ索引と比較して検索速度が遅い。
【００１１】
さらに、両者に共通の問題点として以下の問題もある。単語の切れ目を発見するための形態素解析系（あるいはそれが使用する辞書）を更新した場合、切れ目の位置が変わるため、索引全体の作り直しが必要である。その結果、索引のメンテナンス作業に多大な時間を要する。
【００１２】
そこで、文字列単位検索用のｎ−ｇｒａｍ索引とは別個の単語境界位置索引を用いて単語単位検索を提供することにより、どんな文字コードに対しても適用可能であり、検索が高速で、索引のメンテナンスが簡単な文書検索方法が、本出願人により提案されている。
【００１３】
しかしながら、このような単語境界位置索引を用いる場合、単語境界位置索引には単語の出現位置を多数記録する必要があるため、索引が大きくなってしまうという問題があった。
【００１４】
本発明の目的は、単語境界位置索引を小型化することができる文書検索装置、文書検索方法、プログラム及びコンピュータに読み取り可能な記憶媒体を提供することである。
【００１５】
本発明の目的は、検索処理の高速化を図ることができる文書検索装置、文書検索方法、プログラム及びコンピュータに読み取り可能な記憶媒体を提供することである。
【００１６】
【課題を解決するための手段】
請求項１記載の発明の文書検索装置は、登録文書群から指定された検索文字列を含む文書を検索する文書検索装置において、登録文書あるいは検索文字列であるテキストをｎ−ｇｒａｍ（ｎ文字組）および単語に分解するテキスト分割手段と、登録文書中のｎ−ｇｒａｍに関する出現情報をｎ−ｇｒａｍごとに保持しておくｎ−ｇｒａｍ索引と、登録文書中の単語境界に関する出現情報を圧縮して記録する単語境界位置索引と、検索文字列をｎ−ｇｒａｍに分割した結果に基づいて前記ｎ−ｇｒａｍ索引を参照して検索文字列を含む文書あるいはその文書における出現位置を検索する文字列単位検索手段と、この文字列単位検索手段の結果に対し検索文字列を単語に分割した結果に基づいて前記単語境界位置索引を参照して検索文字列が単語として現われているか否かを判断し、検索文字列を単語として含む文書を検索する単語単位検索手段と、を備える。
【００１７】
したがって、文字列単位検索用のｎ−ｇｒａｍ索引とは別個の単語境界位置索引を用いて単語単位検索を提供しているので、どんな文字コードに対しても適用可能であり、検索を高速にし、索引のメンテナンスを容易にすることが可能になる。また、単語境界位置索引に対して出現情報を圧縮して記録していることから、索引を小型化することが可能である。
【００１８】
請求項１記載の発明の文書検索装置は、さらに、前記単語境界位置索引は、単語境界が出現する文書における出現位置を、１つの文書につき複数のブロックを用いて圧縮する。
【００１９】
したがって、出現情報である単語境界が出現する文書における出現位置がブロック化されるので、検索時の伸長処理に時間がかかる単純に圧縮した場合に比べ、伸長処理時間が削減され、検索処理の高速化が図られる。
【００２０】
請求項２記載の発明は、請求項１の文書検索装置において、前記ブロックは、固定長のブロックである。
【００２１】
したがって、単語境界が出現する文書における出現位置のブロック化が容易になる。
【００２２】
請求項３記載の発明は、請求項２の文書検索装置において、最後尾に位置する前記ブロックは、固定長以下とする。
【００２３】
したがって、索引をさらに小型化することが可能である。
【００２４】
請求項４記載の発明は、請求項１ないし３のいずれか一記載の文書検索装置において、前記ブロックには、当該ブロックに記録される出現位置のうち先頭あるいは末尾の出現位置そのものの圧縮データと、先頭あるいは末尾以外の出現位置に係るその直前の出現位置との差分の圧縮データとが記録される。
【００２５】
したがって、検索文字列出現位置を照合する際に、出現位置が含まれる可能性のあるブロックを特定するまでは、各ブロックの圧縮された先頭あるいは末尾の出現位置そのもののみを伸長すればよいので、伸長すべきデータ量を削減することが可能になる。
【００２６】
請求項５記載の発明は、請求項１ないし３のいずれか一記載の文書検索装置において、前記ブロックには、当該ブロックに記録される出現位置のうち先頭あるいは末尾の出現位置そのものの非圧縮データと、先頭あるいは末尾以外の出現位置に係るその直前の出現位置との差分の圧縮データとが記録される。
【００２７】
したがって、出現位置との差分をとらないブロックの先頭あるいは末尾の出現位置そのものは圧縮されずに記録されることから、さらに検索処理を高速化することが可能になる。
【００２８】
請求項６記載の発明は、請求項４または５記載の文書検索装置において、最後尾に位置する前記ブロックについては、末尾の出現位置そのものは記録されない。
【００２９】
したがって、検索処理の高速化を図りつつデータ量を少なくすることが可能になる。
【００３０】
請求項７記載の発明は、請求項１ないし６のいずれか一記載の文書検索装置において、前記単語境界位置索引と前記ｎ−ｇｒａｍ索引とでは、圧縮に使用する符号化手法が異なる。
【００３１】
したがって、効率的な圧縮が可能になる。
【００３２】
請求項８記載の発明の文書検索方法は、文書検索装置が以下の各工程を実行することにより、登録文書群から指定された検索文字列を含む文書を検索する文書検索方法において、登録文書あるいは検索文字列であるテキストをｎ−ｇｒａｍ（ｎ文字組）および単語に分解する工程と、登録文書中のｎ−ｇｒａｍに関する出現情報をｎ−ｇｒａｍごとにｎ−ｇｒａｍ索引に保持しておく工程と、単語境界位置索引に登録文書中の単語境界に関する出現情報を圧縮して記録する工程と、検索文字列をｎ−ｇｒａｍに分割した結果に基づいて前記ｎ−ｇｒａｍ索引を参照して検索文字列を含む文書あるいはその文書における出現位置を検索する工程と、この検索結果に対し検索文字列を単語に分割した結果に基づいて前記単語境界位置索引を参照して検索文字列が単語として現われているか否かを判断し、検索文字列を単語として含む文書を検索する工程とを含み、前記単語境界位置索引は、単語境界が出現する文書における出現位置を、１つの文書につき複数のブロックを用いて圧縮したものである。
【００３３】
したがって、文字列単位検索用のｎ−ｇｒａｍ索引とは別個の単語境界位置索引を用いて単語単位検索を提供しているので、どんな文字コードに対しても適用可能であり、検索を高速にし、索引のメンテナンスを容易にすることが可能になる。また、単語境界位置索引に対して出現情報を圧縮して記録していることから、索引を小型化することが可能である。さらに、出現情報である単語境界が出現する文書における出現位置がブロック化されるので、検索時の伸長処理に時間がかかる単純に圧縮した場合に比べ、伸長処理時間が削減され、検索処理の高速化が図られる。
【００３４】
請求項９記載の発明のプログラムは、コンピュータに、登録文書群から指定された検索文字列を含む文書を検索させるためのプログラムであって、登録文書あるいは検索文字列であるテキストをｎ−ｇｒａｍ（ｎ文字組）および単語に分解する機能と、登録文書中のｎ−ｇｒａｍに関する出現情報をｎ−ｇｒａｍごとにｎ−ｇｒａｍ索引に保持しておく機能と、単語境界位置索引に登録文書中の単語境界に関する出現情報を圧縮して記録する機能と、検索文字列をｎ−ｇｒａｍに分割した結果に基づいて前記ｎ−ｇｒａｍ索引を参照して検索文字列を含む文書あるいはその文書における出現位置を検索する機能と、この検索結果に対し検索文字列を単語に分割した結果に基づいて前記単語境界位置索引を参照して検索文字列が単語として現われているか否かを判断し、検索文字列を単語として含む文書を検索する機能とを前記コンピュータに実現させるためのものであり、前記単語境界位置索引は、単語境界が出現する文書における出現位置を、１つの文書につき複数のブロックを用いて圧縮したものである。
【００３５】
したがって、文字列単位検索用のｎ−ｇｒａｍ索引とは別個の単語境界位置索引を用いて単語単位検索を提供しているので、どんな文字コードに対しても適用可能であり、検索を高速にし、索引のメンテナンスを容易にすることが可能になる。また、単語境界位置索引に対して出現情報を圧縮して記録していることから、索引を小型化することが可能である。さらに、出現情報である単語境界が出現する文書における出現位置がブロック化されるので、検索時の伸長処理に時間がかかる単純に圧縮した場合に比べ、伸長処理時間が削減され、検索処理の高速化が図られる。
【００３６】
請求項１０記載の発明のコンピュータに読み取り可能な記憶媒体は、請求項９記載のプログラムを記憶した。
【００３７】
したがって、この記憶媒体のプログラムをコンピュータにインストールすることにより、請求項９記載のプログラムと同様の作用を得ることが可能になる。
【００３８】
【発明の実施の形態】
本発明の第一の実施の形態を図１ないし図６に基づいて説明する。
【００３９】
図１は、文書検索装置１のハードウェア構成を概略的に示すブロック図である。図１に示すように、文書検索装置１は、この文書検索装置１の各部を集中的に制御するＣＰＵ（Central Processing Unit）２を備えており、このＣＰＵ２には、ＢＩＯＳなどを記憶した読出し専用メモリであるＲＯＭ（Read Only Memory）３と、各種データを書換え可能に記憶するＲＡＭ（Random Access Memory）４とがバス５で接続されている。さらにバス５には、外部記憶となるＨＤＤ（Hard Disk Drive）６と、ＣＤ（Compact Disc）−ＲＯＭ７を読み取るＣＤ−ＲＯＭドライブ８と、文書検索装置１とネットワーク９との通信を司る通信制御装置１０と、入力部として機能するキーボードやマウスなどの入力装置１１と、ＣＲＴ（Cathode Ray Tube）、ＬＣＤ（Liquid Crystal Display）などの出力装置１２とが、図示しないＩ／Ｏを介して接続されている。
【００４０】
ＲＡＭ４は、各種データを書換え可能に記憶する性質を有していることから、ＣＰＵ２の作業エリアとして機能し、例えば入力バッファ、解析バッファ等の役割を果たす。また、ＨＤＤ６には、各種のプログラムを格納するプログラムファイルが格納されている。
【００４１】
図１に示すＣＤ−ＲＯＭ７は、この発明の記憶媒体を実施するものであり、所定のプログラムが記憶されている。ＣＰＵ２は、ＣＤ−ＲＯＭ７に記憶されているプログラムをＣＤ−ＲＯＭドライブ８で読み取り、ＨＤＤ６にインストールする。これにより、文書検索装置１は、後述するような各種の処理を行なうことが可能な状態となる。
【００４２】
なお、記憶媒体としては、ＣＤ−ＲＯＭ７のみならず、ＤＶＤなどの各種の光ディスク、各種光磁気ディスク、フロッピーディスクなどの各種磁気ディスク等、半導体メモリ等の各種方式のメディアを用いることができる。また、通信制御装置１０を介してインターネットなどのネットワーク９からプログラムをダウンロードし、ＨＤＤ６にインストールするようにしてもよい。この場合に、送信側のサーバでプログラムを記憶している記憶装置も、この発明の記憶媒体である。なお、プログラムは、所定のＯＳ（Operating System）上で動作するものであってもよいし、その場合に後述の各種処理の一部の実行をＯＳに肩代わりさせるものであってもよいし、ワープロソフトなど所定のアプリケーションソフトやＯＳなどを構成する一群のプログラムファイルの一部として含まれているものであってもよい。
【００４３】
次に、文書検索装置１のＣＰＵ２がプログラムに基づいて実行する各種処理の内容について説明する。本発明の文書検索装置１は、図２に示すように、ＣＰＵ２がプログラムに基づいて動作することで各種機能を発揮する。
【００４４】
図２において、テキスト分割手段２１は、入力装置１１やＣＤ−ＲＯＭドライブ８等を介してユーザによって入力された登録文書あるいは検索条件に含まれるテキストをｎ−ｇｒａｍおよび単語に分解する。なお、単語への分割には形態素解析を利用するが、形態素解析は既存の手法（例えば、松本裕治他、「単語と辞書」言語の科学第３巻、岩波書店の５３ページ以降に書かれている）を採用すればよい。
【００４５】
ｎ−ｇｒａｍ索引２２は、登録文書を分割したｎ−ｇｒａｍの情報を、検索のために保持するものである。
【００４６】
単語境界位置索引２３は、登録文書を分割した単語境界に関する出現情報を、検索のために保持するものである。
【００４７】
文字列単位検索手段２４は、テキスト分割手段２１が検索文字列を分割したｎ−ｇｒａｍに基づいて、ｎ−ｇｒａｍ索引２２を用いて検索文字列を含む文書を検索するものである。
【００４８】
単語単位検索手段２５は、文字列単位検索手段２４で求められた文字列検索結果において検索文字列が単語として出現しているか否かを単語境界位置索引２３を用いて決定するものである。
【００４９】
ここで、文書検索装置１のＣＰＵ２がプログラムに基づいて実行する登録処理について説明する。登録処理は、テキスト分割手段２１とｎ−ｇｒａｍ索引２２と単語境界位置索引２３とにより実現され、概略的には、文書が与えられるとテキスト分割手段２１でｎ−ｇｒａｍと単語に分割し、それら出現情報をｎ−ｇｒａｍ索引２２および単語境界位置索引２３に記録するものである。なお、ここでは、図３に示す例を用いて、登録処理を説明する。
【００５０】
登録文書（＝文書１）の内容が図３（ａ）、その形態素解析結果は図３（ｂ）の通りであるとする。いま、索引単位をｂｉ−ｇｒａｍ（２文字組；ｎ＝２のｎ−ｇｒａｍ）とすると、この文書は「携帯」「帯電」のようなｂｉ−ｇｒａｍに分割され、図３（ｃ）のようなｎ−ｇｒａｍ索引２２ができる。ここで、左側の文字列（「携帯」など）が索引単位であるｂｉ−ｇｒａｍを表し、右側の数字がその索引単位が出現した文書識別子、その文書での出現回数、各出現位置（文書先頭を１とした場合の文字数）を表す。例えば、「帯電」に対する｛１，１，（５）｝は、文書１には１回出現し、その位置は５文字目であることを意味する。なお、ｎ−ｇｒａｍ索引２２の構成方法は、ｎ＝２であるｂｉ−ｇｒａｍ以外を用いてもかまわない。さらには、文字種に応じてｎを調整する方法でもかまわない。また、索引のデータ量は多いので、圧縮することで小型化することが望ましい。ｎ−ｇｒａｍ索引２２の圧縮方法としては、例えば、特開２０００−３４８０５９公報に開示されている方法を用いることができる。
【００５１】
図３（ｄ）は単語境界位置索引２３で、形態素解析結果で得られる単語境界の出現位置を記録したものである。データの記述方法はｎ−ｇｒａｍ索引２２と同じであり、｛１，５，（１，３，４，６，８）｝は文書１には５回出現し、その位置は１，３，４，６，８文字目であることを意味する。最後の８文字目は最後の単語の末尾位置に対応する。
【００５２】
ここで、単語境界位置索引２３には単語の出現位置を多数記録する必要があるため、単語境界位置索引２３に記録する情報を圧縮することが望ましい。以下において、単語境界位置索引２３の圧縮について説明する。
【００５３】
単語境界位置索引２３に記録される情報としてデータ量が多いのは、単語境界が出現する文書における出現位置である。圧縮手順について図４のフローチャートを参照しつつ以下に説明する。
【００５４】
ステップＳ１：各出現位置について前の出現位置からの差分を求める。ただし、先頭においては前の出現位置として０を用いる。
【００５５】
ステップＳ２：出現位置の差分を可変長符号を用いて表現する。
【００５６】
図３（ｄ）に示したの単語境界位置索引２３であれば（１，３，４，６，８）が出現位置であり、これを例に上記手順を適用すると図５（ｃ）のようになる。なお、この例では、ステップＳ２の可変長符号としてγ符号（I.H.Witten他、Managing Gigabytes (second edition), Morgan Kaufmannの117ページに記載）を用いている。
【００５７】
次に、文書検索装置１のＣＰＵ２がプログラムに基づいて実行する文字列単位検索処理について説明する。文字列単位検索処理は、文字列単位検索手段２４により実現され、概略的には、検索文字列に基づいてテキスト分割手段２１によって分割されたｎ−ｇｒａｍに関する登録文書中の出現文書あるいは出現文書とその文書内での出現位置を用いて検索文字列を含む文書を決定するものである。なお、ここでは、図３に示す例を用いて、文字列単位検索処理を説明する。
【００５８】
検索文字列を「帯電」とすると、（この検索文字列自体がｂｉ−ｇｒａｍなので）テキスト分割手段２１は「帯電」を抽出する。つぎに、文字列単位検索手段２４は、ｎ−ｇｒａｍ索引２２を調べると、「帯電」は文書１に出現していることがわかり、文書１を検索結果とする。検索文字列が「携帯電話」であれば、テキスト分割手段２１は「携帯」「帯電」「電話」の３つのｂｉ−ｇｒａｍを抽出する。つぎに、文字列単位検索手段２４は、これらのｂｉ−ｇｒａｍを全て含む文書を特定し、その文書においてｂｉ−ｇｒａｍが連続した位置に出現している場合にはその文書を検索結果とする。この場合、「携帯」「帯電」「電話」の出現位置は４，５，６と１ずれているので、「携帯電話」は文書１において出現位置４に現われていると判断でき、文書１を検索結果とする
次に、文書検索装置１のＣＰＵ２がプログラムに基づいて実行する単語単位検索処理について説明する。単語単位検索処理は、単語単位検索手段２５により実現され、概略的には、文字列単位検索において文字列単位検索手段２４が求める検索文字列の文書における出現が単語としてであるか否かを判定するものである。処理手順を図６を参照しつつ以下に説明する。
【００５９】
ステップＳ１１：検索文字列を形態素解析し単語の区切りを得る。
【００６０】
ステップＳ１２：検索文字列で文字列検索を行い、検索文字列を含む文書を特定する（なお、後述するステップＳ１３から戻ってきた場合には、検索文字列を含む次の文書を特定する）。見つからなければ（ステップＳ１２のＮ）、処理を終了する。
【００６１】
ステップＳ１３：前述のステップＳ１２で検索された文書について、検索文字列の出現位置を得る（なお、後述するステップＳ１４から戻ってきた場合には、検索文字列の次の出現位置を得る）。見つからなければ（ステップＳ１３のＮ）、ステップＳ１２に戻る。
【００６２】
ステップＳ１４：前述のステップＳ１３で得られた出現位置の先頭から末尾までに含まれる単語境界を単語境界位置索引２３から得る。
【００６３】
ステップＳ１５：ステップＳ１４で得られた単語境界の相対位置が、ステップＳ１）で得られた検索文字列の単語境界と一致する場合には（ステップＳ１５のＹ）、ステップＳ１２で特定された文書を検索結果に追加し（ステップＳ１６）、ステップＳ１２に戻る。相対位置が検索文字列の単語境界と一致しなければ（ステップＳ１５のＮ）、ステップＳ１３に戻る。
【００６４】
ここで、検索文字列「帯電」を例に具体的に説明する。まず、形態素解析し／帯電／という結果が得られ、単語境界は１，３文字目（先頭位置が１文字目で、末尾位置は先頭位置に単語の長さ２を足して得られる）とわかる。次に、文字列検索すると文書１が特定され、そこでの出現位置は５文字目から７文字目とわかる。ところが、この文書における単語境界は・・・，４，６，・・・文字目で、一致しないことがわかる。これ以外の出現位置・文書は見つけられないので、単語単位検索によれば該当文書なしという検索結果になる。つまり、「帯電」は単語としては現われていないことがわかる。
【００６５】
次いで、検索文字列が「携帯電話」の場合について以下に説明する。まず、形態素解析し／携帯／電話／という結果が得られ、単語境界は１，３，５文字目とわかる。次に文字列検索すると文書１が特定され、そこでの出現位置は４文字目から８文字目とわかる。一方、この出現位置付近の単語境界は４，６，８文字目であり、検索文字列における単語境界と一致する。したがって、文書１は検索結果に含まれる。この方法では、単語境界を文書の先頭からの文字数で表現しているので、特殊文字を使用する必要がなく、任意の文字コードに対して適用可能である。また、単語境界は文字列検索用のｎ−ｇｒａｍ索引とは別に作成・管理されるので、形態素解析系の変更時には単語境界位置索引だけを作り直せばよく、索引のメンテナンス作業が軽減される。
【００６６】
ここに、文字列単位検索用のｎ−ｇｒａｍ索引２２とは別個の単語境界位置索引２３を用いて単語単位検索を提供しているので、どんな文字コードに対しても適用可能であり、検索を高速にし、索引のメンテナンスを容易にすることが可能になる。また、単語境界位置索引２３に対して出現情報を圧縮して記録していることから、単語境界位置索引２３を小型化することが可能である。
【００６７】
本発明の第二の実施の形態を図７ないし図１０に基づいて説明する。なお、前述した実施の形態と同一部分は同一符号で示し説明も省略する（他の実施の形態においても同様とする）。本実施の形態は、第一の実施の形態で説明した文書検索装置１の単語境界位置索引２３に記録される情報圧縮の変形例である。
【００６８】
日本語においては単語の平均の長さは２〜３文字程度であり、文書の長さが長くなるにしたがって出現位置が多数になる。第一の実施の形態で説明した方法では、検索語が文書の終わり近くに出現している場合に、膨大なデータを伸長しないと検索語の文書での出現位置が単語境界に一致するか否かを判定できず、検索時間がかかる。そこで、本実施の形態においては、圧縮情報（出現位置）をブロックに分け、伸長処理を減らし、検索処理を高速化するようにしたものである。
【００６９】
ここで、図７は本実施の形態の圧縮情報（出現位置）を示す説明図である。図７に示すように、本実施の形態の文書検索装置１の単語境界位置索引２３に記録される出現位置は、固定長のブロックを用いて圧縮されるものである。ブロックの先頭には、前の出現位置との差分をとらない出現位置そのものが圧縮されて記録され、残りの部分には、前の出現位置との差分が圧縮されて記録される。差分は、ブロックに入りきる限り、できるだけ多く詰める。なお、ブロックの個数は、ブロックの個数を圧縮して記録しておけば容易に知ることができる。また、圧縮位置情報表現ビット数を記録しておくことでも、ブロックサイズからブロックの個数を求めることができる。
【００７０】
ここで、図６のステップＳ１５において示した検索文字列の出現位置に一致する単語出現位置を求める検索手順について、図８のフローチャートを参照しつつ以下に説明する。
【００７１】
ステップＳ２１：ブロックが１つであるか２つ以上であるかを判断する。
【００７２】
ステップＳ２２：ブロックが１つであれば（ステップＳ２１のＹ）、そのブロックのデータを伸長しながら検索文字列出現位置に一致する出現位置を探し、処理を終了する（見つかっても見つからなくても終了）。
【００７３】
ステップＳ２３：一方、ブロックが２つ以上であれば（ステップＳ２１のＮ）、次のブロックの先頭のデータを伸長して得られる出現位置が検索文字列出現位置に一致するか否かを判断し、出現位置が検索文字列出現位置に一致すれば（ステップＳ２３のＹ）、処理を終了する。
【００７４】
出現位置が検索文字列出現位置に一致せず（ステップＳ２３のＮ）、ブロックの先頭のデータを伸長して得られる出現位置が検索文字列出現位置より大きい場合には（ステップＳ２４のＹ）、ステップＳ２５に進む。
【００７５】
ステップＳ２５：検索文字列出現位置があるとすれば前のブロックにあることから、前のブロックに戻って、そのブロックのデータを伸長しながら検索文字列出現位置に一致する出現位置を探し、処理を終了する（見つかっても見つからなくても終了）。
【００７６】
一方、出現位置が検索文字列出現位置に一致せず（ステップＳ２３のＮ）、ブロックの先頭のデータを伸長して得られる出現位置が検索文字列出現位置より小さい場合（ステップＳ２４のＮ）、次のブロックがある場合には（ステップＳ２６のＹ）、ステップＳ２３に戻る。
【００７７】
ステップＳ２７：また、現在のブロックが最後のブロックである場合には（ステップＳ２６のＮ）、検索文字列出現位置があるとすれば現在のブロックにあることから、そのブロックのデータを伸長しながら検索文字列出現位置に一致する出現位置を探し、処理を終了する（見つかっても見つからなくても終了）。
【００７８】
以上の処理により、検索文字列出現位置を照合するためには、それが含まれる可能性のあるブロックを特定するまではブロックの先頭のデータのみ伸長すればよいので、伸長すべきデータ量が削減できる。
【００７９】
例えば、出現位置が(1,3,・・・,203,205,・・・,385,388,・・・450,452,・・・500)であり、それが３つの固定長ブロックによって図９のように圧縮されている場合（簡単のため各ブロック先頭の出現位置は圧縮していない値を書いている）、「帯電」という単語が450に出現していたとする。このような場合、「帯電」で単語単位検索したとき、450という出現位置はブロック３にあると判断できる。その際、ブロック１、ブロック２は先頭出現位置のみを伸長すればよい。
【００８０】
ここに、出現情報である単語境界が出現する文書における出現位置がブロック化されるので、検索時の伸長処理に時間がかかる単純に圧縮した場合に比べ、伸長処理時間が削減され、検索処理の高速化が図られる。
【００８１】
また、ブロックには、当該ブロックに記録される出現位置のうち先頭の出現位置そのものの圧縮データと、先頭以外の出現位置に係るその直前の出現位置との差分の圧縮データとが記録されることにより、検索文字列出現位置を照合する際に、出現位置が含まれる可能性のあるブロックを特定するまでは、各ブロックの圧縮された先頭の出現位置そのもののみを伸長すればよいので、伸長すべきデータ量を削減することが可能になる。
【００８２】
なお、本実施の形態においては、固定長のブロックを用いて出現位置と前の出現位置との差分を圧縮して記録するようにしたが、最後のブロックだけは固定長以下（残っている出現位置を圧縮して詰めるのに必要な大きさ）としても良い。これにより、索引をさらに小型化することが可能になる。このようにすることで、図９のデータは図１０のようになる。
【００８３】
本発明の第三の実施の形態を図１１ないし図１３に基づいて説明する。本実施の形態は、第一の実施の形態で説明した文書検索装置１の単語境界位置索引２３に記録される情報圧縮の変形例である。
【００８４】
第二の実施の形態で説明した情報圧縮手法によれば、検索文字列出現位置が含まれる可能性のあるブロックを特定するために、ブロックの先頭のデータを伸長する必要があるとともに、場合によっては、前のブロックに戻る必要もあるため、検索速度に若干の問題があった。そこで、本実施の形態においては、さらに検索処理を高速化するようにしたものである。
【００８５】
ここで、図１１は本実施の形態の圧縮情報（出現位置）を示す説明図である。図１１に示すように、本実施の形態の文書検索装置１の単語境界位置索引２３に記録される出現位置は、ブロックを用いて圧縮されるものである。ブロックの先頭には、前の出現位置との差分が圧縮されて記録され、残りの末尾部分には、前の出現位置との差分をとらない出現位置そのものが圧縮されずに記録される。差分は、ブロックに入りきる限り、できるだけ多く詰める。
【００８６】
ここで、図６のステップＳ１５において示した検索文字列の出現位置に一致する単語出現位置を求める検索手順について、図１２のフローチャートを参照しつつ以下に説明する。
【００８７】
ステップＳ３１：ブロックの末尾の出現位置が検索文字列出現位置に一致するか否かを判断し、出現位置が検索文字列出現位置に一致すれば（ステップＳ３１のＹ）、処理を終了する。
【００８８】
ブロックの末尾の出現位置が検索文字列出現位置に一致せず（ステップＳ３１のＮ）、ブロックの末尾の出現位置が検索文字列出現位置より大きい場合には（ステップＳ３２のＹ）、ステップＳ３３に進む。
【００８９】
ステップＳ３３：検索文字列出現位置があるとすれば現在のブロックにあることから、現在のブロックのデータを伸長しながら検索文字列出現位置に一致する出現位置を探し、処理を終了する（見つかっても見つからなくても終了）。
【００９０】
一方、出現位置が検索文字列出現位置に一致せず（ステップＳ３１のＮ）、ブロックの末尾の出現位置が検索文字列出現位置より小さい場合には（ステップＳ３２のＮ）、ステップＳ３４に進む。
【００９１】
ステップＳ３４：次のブロックに進み、ステップＳ３１に戻る。
【００９２】
なお、最終ブロックの末尾の出現位置よりは検索文字列出現位置のほうが小さいはずなので、上の手順は必ず終了する。また、現在のブロックが最終ブロックであればステップＳ３１あるいはステップＳ３２で終了しているので、ステップＳ３３においては必ず次のブロックが存在している。
【００９３】
例えば、出現位置が(1,3,・・・,203,205,・・・,385,388,・・・450,452,・・・500)であり、それが３つのブロックによって図１３のように圧縮されている場合、「帯電」という単語が450に出現していたとする。このような場合、「帯電」で単語単位検索したとき、450という出現位置は、ブロック末尾の出現位置が500であるブロック３にあると判断でき、ブロック１及びブロック２についてはデータを伸長する必要がない。
【００９４】
ここに、ブロックには、当該ブロックに記録される出現位置のうち末尾の出現位置そのものの非圧縮データと、末尾以外の出現位置に係るその直前の出現位置との差分の圧縮データとが記録されることにより、出現位置との差分をとらないブロックの末尾の出現位置そのものは圧縮されずに記録されることから、さらに検索処理を高速化することが可能になる。
【００９５】
本発明の第四の実施の形態を図１４及び図１５に基づいて説明する。本実施の形態は、第一の実施の形態で説明した文書検索装置１の単語境界位置索引２３に記録される情報圧縮の変形例である。
【００９６】
第三の実施の形態で説明した情報圧縮手法によれば、最終ブロックの末尾の出現位置を圧縮しないで記録しているので、検索文字列の照合手順は簡単になるが、出現位置を表現するのに必要なデータ量が多くなるという問題がある。そこで、本実施の形態においては、検索処理の高速化を図りつつデータ量が少なくなるようにしたものである。
【００９７】
ここで、図１４は本実施の形態の圧縮情報（出現位置）を示す説明図である。図１４に示すように、本実施の形態の文書検索装置１の単語境界位置索引２３に記録される出現位置は、ブロックを用いて圧縮されるものである。ブロックの先頭には、前の出現位置との差分が圧縮されて記録され、残りの末尾部分には、前の出現位置との差分をとらない出現位置そのものが圧縮されずに記録される。差分は、ブロックに入りきる限り、できるだけ多く詰める。ただし、本実施の形態においては、最終ブロックについては、末尾の出現位置が省略されている。
【００９８】
ここで、図６のステップＳ１５において示した検索文字列の出現位置に一致する単語出現位置を求める検索手順について、図１５のフローチャートを参照しつつ以下に説明する。
【００９９】
ステップＳ４１：ブロックが最後のブロックであるか否かを判断し、ブロックが最後のブロックであれば（ステップＳ４１のＹ）、ブロックのデータを伸長しながら検索文字列出現位置に一致する出現位置を探し（ステップＳ４２）、処理を終了する（見つかっても見つからなくても終了）。
【０１００】
一方、ブロックが最後のブロックでなければ（ステップＳ４１のＮ）、ステップＳ４３に進む。
【０１０１】
ステップＳ４３：ブロックの末尾の出現位置が検索文字列出現位置に一致するか否かを判断し、出現位置が検索文字列出現位置に一致すれば（ステップＳ４３のＹ）、処理を終了する。
【０１０２】
ブロックの末尾の出現位置が検索文字列出現位置に一致せず（ステップＳ４３のＮ）、ブロックの末尾の出現位置が検索文字列出現位置より大きい場合には（ステップＳ４４のＹ）、ステップＳ４５に進む。
【０１０３】
ステップＳ４５：検索文字列出現位置があるとすれば現在のブロックにあることから、現在のブロックのデータを伸長しながら検索文字列出現位置に一致する出現位置を探し、処理を終了する（見つかっても見つからなくても終了）。
【０１０４】
一方、出現位置が検索文字列出現位置に一致せず（ステップＳ４３のＮ）、ブロックの末尾の出現位置が検索文字列出現位置より小さい場合には（ステップＳ４４のＮ）、ステップＳ４６に進む。
【０１０５】
ステップＳ４６：次のブロックに進み、ステップＳ４１に戻る。
【０１０６】
なお、現在のブロックが最終ブロックであればステップＳ４１で終了しているので、ステップＳ４６においては必ず次のブロックが存在している。
【０１０７】
ここに、最後尾に位置するブロックについては、出現位置そのものは記録されないことにより、検索処理の高速化を図りつつデータ量を少なくすることが可能になる。
【０１０８】
なお、各実施の形態においては、各索引２２，２３を小型化するために、圧縮するデータの分布にあわせた符号化手法を採用することが望ましい。例えば、単語境界位置索引２３の場合、出現位置の差分は単語の長さに等しくなり、データの分布は値の小さな範囲に集中した分布となる。一方、ｎ−ｇｒａｍ索引２２では、各ｎ−ｇｒａｍごとの出現位置はばらばらであるため、出現位置の差分の分布は値の大きな範囲まで広く分散した分布となる。したがって、単語境界位置索引２３とｎ−ｇｒａｍ索引２２とでは使用する符号化手法を変えることで、効率的な圧縮が実現できる。
【０１０９】
【発明の効果】
請求項１記載の発明の文書検索装置によれば、登録文書群から指定された検索文字列を含む文書を検索する文書検索装置において、登録文書あるいは検索文字列であるテキストをｎ−ｇｒａｍ（ｎ文字組）および単語に分解するテキスト分割手段と、登録文書中のｎ−ｇｒａｍに関する出現情報をｎ−ｇｒａｍごとに保持しておくｎ−ｇｒａｍ索引と、登録文書中の単語境界に関する出現情報を圧縮して記録する単語境界位置索引と、検索文字列をｎ−ｇｒａｍに分割した結果に基づいて前記ｎ−ｇｒａｍ索引を参照して検索文字列を含む文書あるいはその文書における出現位置を検索する文字列単位検索手段と、この文字列単位検索手段の結果に対し検索文字列を単語に分割した結果に基づいて前記単語境界位置索引を参照して検索文字列が単語として現われているか否かを判断し、検索文字列を単語として含む文書を検索する単語単位検索手段と、を備えることにより、文字列単位検索用のｎ−ｇｒａｍ索引とは別個の単語境界位置索引を用いて単語単位検索を提供することができるので、どんな文字コードに対しても適用可能であり、検索を高速にし、索引のメンテナンスを容易にすることができる。また、単語境界位置索引に対して出現情報を圧縮して記録していることから、索引を小型化することができる。
【０１１０】
請求項１記載の発明によれば、さらに、前記単語境界位置索引を、単語境界が出現する文書における出現位置を、１つの文書につき複数のブロックを用いて圧縮することにより、出現情報である単語境界が出現する文書における出現位置がブロック化されるので、検索時の伸長処理に時間がかかる単純に圧縮した場合に比べ、伸長処理時間を削減することができ、検索処理の高速化を図ることができる。
【０１１１】
請求項２記載の発明によれば、請求項１の文書検索装置において、前記ブロックは、固定長のブロックであることにより、単語境界が出現する文書における出現位置のブロック化を容易にすることができる。
【０１１２】
請求項３記載の発明によれば、請求項２の文書検索装置において、最後尾に位置する前記ブロックは、固定長以下とすることにより、索引をさらに小型化することができる。
【０１１３】
請求項４記載の発明によれば、請求項１ないし３のいずれか一記載の文書検索装置において、前記ブロックには、当該ブロックに記録される出現位置のうち先頭あるいは末尾の出現位置そのものの圧縮データと、先頭あるいは末尾以外の出現位置に係るその直前の出現位置との差分の圧縮データとが記録されることにより、検索文字列出現位置を照合する際に、出現位置が含まれる可能性のあるブロックを特定するまでは、各ブロックの圧縮された先頭あるいは末尾の出現位置そのもののみを伸長すればよいので、伸長すべきデータ量を削減することができる。
【０１１４】
請求項５記載の発明によれば、請求項１ないし３のいずれか一記載の文書検索装置において、前記ブロックには、当該ブロックに記録される出現位置のうち先頭あるいは末尾の出現位置そのものの非圧縮データと、先頭あるいは末尾以外の出現位置に係るその直前の出現位置との差分の圧縮データとが記録されることにより、出現位置との差分をとらないブロックの先頭あるいは末尾の出現位置そのものは圧縮されずに記録されることから、さらに検索処理を高速化することができる。
【０１１５】
請求項６記載の発明によれば、請求項４または５記載の文書検索装置において、最後尾に位置する前記ブロックについては、末尾の出現位置そのものは記録されないことにより、検索処理の高速化を図りつつデータ量を少なくすることができる。
【０１１６】
請求項７記載の発明によれば、請求項１ないし６のいずれか一記載の文書検索装置において、前記単語境界位置索引と前記ｎ−ｇｒａｍ索引とでは、圧縮に使用する符号化手法が異なることにより、圧縮を効率的に行うことができる。
【０１１７】
請求項８記載の発明の文書検索方法によれば、文書検索装置が以下の各工程を実行することにより、登録文書群から指定された検索文字列を含む文書を検索する文書検索方法において、登録文書あるいは検索文字列であるテキストをｎ−ｇｒａｍ（ｎ文字組）および単語に分解する工程と、登録文書中のｎ−ｇｒａｍに関する出現情報をｎ−ｇｒａｍごとにｎ−ｇｒａｍ索引に保持しておく工程と、単語境界位置索引に登録文書中の単語境界に関する出現情報を圧縮して記録する工程と、検索文字列をｎ−ｇｒａｍに分割した結果に基づいて前記ｎ−ｇｒａｍ索引を参照して検索文字列を含む文書あるいはその文書における出現位置を検索する工程と、この検索結果に対し検索文字列を単語に分割した結果に基づいて前記単語境界位置索引を参照して検索文字列が単語として現われているか否かを判断し、検索文字列を単語として含む文書を検索する工程と、を含むことにより、文字列単位検索用のｎ−ｇｒａｍ索引とは別個の単語境界位置索引を用いて単語単位検索を提供することができるので、どんな文字コードに対しても適用可能であり、検索を高速にし、索引のメンテナンスを容易にすることができる。また、単語境界位置索引に対して出現情報を圧縮して記録していることから、索引を小型化することができる。
さらに、前記単語境界位置索引を、単語境界が出現する文書における出現位置を、１つの文書につき複数のブロックを用いて圧縮することにより、出現情報である単語境界が出現する文書における出現位置がブロック化されるので、検索時の伸長処理に時間がかかる単純に圧縮した場合に比べ、伸長処理時間を削減することができ、検索処理の高速化を図ることができる。
【０１１８】
請求項９記載の発明のプログラムによれば、コンピュータに、登録文書群から指定された検索文字列を含む文書を検索させるためのプログラムであって、登録文書あるいは検索文字列であるテキストをｎ−ｇｒａｍ（ｎ文字組）および単語に分解する機能と、登録文書中のｎ−ｇｒａｍに関する出現情報をｎ−ｇｒａｍごとにｎ−ｇｒａｍ索引に保持しておく機能と、単語境界位置索引に登録文書中の単語境界に関する出現情報を圧縮して記録する機能と、検索文字列をｎ−ｇｒａｍに分割した結果に基づいて前記ｎ−ｇｒａｍ索引を参照して検索文字列を含む文書あるいはその文書における出現位置を検索する機能と、この検索結果に対し検索文字列を単語に分割した結果に基づいて前記単語境界位置索引を参照して検索文字列が単語として現われているか否かを判断し、検索文字列を単語として含む文書を検索する機能と、を前記コンピュータに実現させることにより、文字列単位検索用のｎ−ｇｒａｍ索引とは別個の単語境界位置索引を用いて単語単位検索を提供することができるので、どんな文字コードに対しても適用可能であり、検索を高速にし、索引のメンテナンスを容易にすることができる。また、単語境界位置索引に対して出現情報を圧縮して記録していることから、索引を小型化することができる。
さらに、前記単語境界位置索引を、単語境界が出現する文書における出現位置を、１つの文書につき複数のブロックを用いて圧縮することにより、出現情報である単語境界が出現する文書における出現位置がブロック化されるので、検索時の伸長処理に時間がかかる単純に圧縮した場合に比べ、伸長処理時間を削減することができ、検索処理の高速化を図ることができる。
【０１１９】
請求項１０記載の発明のコンピュータに読み取り可能な記憶媒体によれば、請求項９記載のプログラムを記憶したことにより、この記憶媒体のプログラムをコンピュータにインストールすることで、請求項９記載のプログラムと同様の作用・効果を得ることができる。
【図面の簡単な説明】
【図１】本発明の第一の実施の形態の文書検索装置のハードウェア構成を概略的に示すブロック図である。
【図２】文書検索装置の概要を示す機能ブロック図である。
【図３】登録文書と索引を例示的に示す説明図である。
【図４】圧縮処理の流れを示すフローチャートである。
【図５】出現位置の圧縮例を示す説明図である。
【図６】単語単位検索処理の流れを示すフローチャートである。
【図７】本発明の第二の実施の形態の圧縮情報（出現位置）を示す説明図である。
【図８】単語単位検索処理の流れを示すフローチャートである。
【図９】出現位置の圧縮例を示す説明図である。
【図１０】出現位置の圧縮例を示す説明図である。
【図１１】本発明の第三の実施の形態の圧縮情報（出現位置）を示す説明図である。
【図１２】単語単位検索処理の流れを示すフローチャートである。
【図１３】出現位置の圧縮例を示す説明図である。
【図１４】本発明の第四の実施の形態の圧縮情報（出現位置）を示す説明図である。
【図１５】単語単位検索処理の流れを示すフローチャートである。
【符号の説明】
１        文書検索装置
７        記憶媒体
２１      テキスト分割手段
２２      ｎ−ｇｒａｍ索引
２３      単語境界位置索引
２４      文字列単位検索手段
２５      単語単位検索手段
【図１】
0004342753.tif 000002
【図２】
0004342753.tif 000003
【図３】
0004342753.tif 000004
【図４】
0004342753.tif 000005
【図５】
0004342753.tif 000006
【図６】
0004342753.tif 000007
【図７】
0004342753.tif 000008
【図８】
0004342753.tif 000009
【図９】
0004342753.tif 000010
【図１０】
0004342753.tif 000011
【図１１】
0004342753.tif 000012
【図１２】
0004342753.tif 000013
【図１３】
0004342753.tif 000014
【図１４】
0004342753.tif 000015
【図１５】
0004342753.tif 000016