(57)【要約】【課題】  検索速度がより高速な文書管理装置および文書管理方法を提供する。【解決手段】  索引データ格納時、Ｇｒａｍデータによりポストデータ領域を分けて、更にＧｒａｍデータの前置語や後置語によりポストデータ領域を分けて索引データを格納する。検索時、キーワードのＧｒａｍデータおよびこのＧｒａｍデータの前置語や後置語によって、ポストデータ領域を制限してスキャンすることにより前記キーワードを含む文書を検索する。【選択図】      図７
2005234930.tif 000002
【特許請求の範囲】
【請求項１】
テキストデータを含む複数の文書の中から、指定されたキーワードを前記テキストデータ内に含む文書を、前記複数の文書から予め作成された索引データを使って検索する文書管理装置において、
入力された文書を格納する文書格納手段と、
前記入力された文書内のテキストデータの一部の文字列である第１の部分文字列および当該第１の部分文字列の前記テキストデータ内での位置情報である第１の位置情報を前記文書内のテキストデータから抽出する第１の抽出手段と、
前記第１の部分文字列および前記第１の部分文字列に隣接する文字との組合せ毎に記憶領域を分けて、前記第１の位置情報および前記文書を識別するための文書識別情報を対応付けた前記索引データを記憶媒体に格納する索引データ格納手段と、
入力されたキーワードの一部の文字列である第２の部分文字列および当該第２の部分文字列の位置情報である第２の位置情報とを抽出する第２の抽出手段と、
前記キーワードの部分文字列間の組合せによって、この組合せによる前記記憶媒体の記憶領域から索引データを取り出し、この取り出した索引データと前記第２の位置情報とを用いて前記キーワードを含む文書を検索する検索手段とを備えたことを特徴とする文書管理装置。
【請求項２】
前記索引データ格納手段は、
前記第１の部分文字列に隣接する文字として前置語を用いることを特徴とする請求項１記載の文書管理装置。
【請求項３】
前記索引データ格納手段は、
前記第１の部分文字列に隣接する文字として後置語を用いることを特徴とする請求項１記載の文書管理装置。
【請求項４】
索引データ格納手段は、
前記第１の部分文字列および前記第１の部分文字列に隣接する文字との組合せ毎に記憶領域を分けると共に、前記索引データを前記記憶媒体に格納する格納数にも応じて更に前記記憶領域を分けて、前記索引データを記憶媒体に格納することを特徴とする請求項１乃至３のいずれか１項に記載の文書管理装置。
【請求項５】
前記索引データ格納手段は、
前記第１の部分文字列および前記第１の部分文字列に隣接する文字のハッシュ値との組合せ毎に記憶領域を分けてることを特徴とする請求項１記載の文書管理装置。
【請求項６】
テキストデータを含む複数の構造化文書の中から、文書構造を示す情報を除く前記テキストデータ内に、指定されたキーワードを含む構造化文書を、前記複数の構造化文書から予め作成された索引データを使って検索する文書管理装置において、
入力された構造化文書を格納する文書格納手段と、
前記入力された構造化文書内の文書構造を示す情報を除くテキストデータの一部の文字列である第１の部分文字列および当該第１の部分文字列の前記テキストデータ内での位置情報である第１の位置情報を前記構造化文書内のテキストデータから抽出する第１の抽出手段と、
前記第１の部分文字列が属する構造情報によって構造毎に記憶領域を分けて、前記第１の位置情報および前記構造化文書を識別するための構造化文書識別情報からなる前記索引データを記憶媒体に格納する索引データ格納手段と、
入力されたキーワードの一部の文字列である第２の部分文字列および当該第２の部分文字列の位置情報である第２の位置情報とを抽出する第２の抽出手段と、
前記キーワードが属する前記構造情報を入力する構造情報入力手段と、
前記キーワードの部分文字列間の組合せおよび構造情報入力手段によって入力された前記構造情報によって、この組合せによる前記記憶媒体の記憶領域から索引データを取り出し、この取り出した索引データと前記第２の位置情報とを用いて前記キーワードを含む構造化文書を検索する検索手段とを備えたことを特徴とする文書管理装置。
【請求項７】
テキストデータを含む複数の文書の中から、指定されたキーワードを前記テキストデータ内に含む文書を、前記複数の文書から予め作成された索引データを使って検索する文書管理方法において、
文書格納手段により、入力された文書を格納し、
第１の抽出手段により、前記入力された文書内のテキストデータの一部の文字列である第１の部分文字列および当該第１の部分文字列の前記テキストデータ内での位置情報である第１の位置情報を前記文書内のテキストデータから抽出し、
索引データ格納手段により、前記第１の部分文字列および前記第１の部分文字列に隣接する文字との組合せ毎に記憶領域を分けて、前記第１の位置情報および前記文書を識別するための文書識別情報を対応付けた前記索引データを記憶媒体に格納し、
第２の抽出手段により、入力されたキーワードの一部の文字列である第２の部分文字列および当該第２の部分文字列の位置情報である第２の位置情報とを抽出し、
検索手段により、前記キーワードの部分文字列間の組合せによって、この組合せによる前記記憶媒体の記憶領域から索引データを取り出し、この取り出した索引データと前記第２の位置情報とを用いて前記キーワードを含む文書を検索することを特徴とする文書管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、大量に蓄えられた文書集合の中からキーワードとして指定された検索要求に合致する文書を索引を使って検索する文書管理装置および文書管理方法に関する。
【背景技術】
【０００２】
従来、大量に蓄えられた文書集合の中からキーワードとして指定された検索要求に合致する文書を検索する場合、検索の高速化を図るために、文書格納時に索引(インデックス)を作成する方法が知られている。索引の一例として、文書内にあるテキストデータから文字種別毎にその出現する位置情報を索引化する方法がある。また、連続するＮ文字種別毎にその出現する位置情報を索引化する方法もある。これをＮ−Ｇｒａｍ索引と呼ぶ。Ｎは１以上の整数であり、日本語文書ではＮ＝２、即ちＢｉ−Ｇｒａｍで切り出すことが一般である。一方、英語ではＮ＝３以上で切り出すことが一般的である。
【０００３】
Ｎ−Ｇｒａｍは以下のような特徴がある。
１）言語に依存した辞書が不要である。多言語展開も容易である。
２）空白などの語彙区切りができない日本語、中国語、韓国語などで利用されている。
３）オフセットなどと組合せれば、検索漏れが無い。
【０００４】
このようなメリットがあるのだが、一方、以下のような問題も指摘されている。
１）形態素解析をベースとした索引方式と比較して、多くの索引データが切り出されてしまう。このため索引データサイズが大きくなったり、格納スピードの低下を招いたりする。
２）Ｎの長さについてトレードオフがある。Ｎの長さが大きければ、索引データの候補が絞り込まれて検索速度は速くなる。しかし、Ｎの長さが大きければ、Ｇｒａｍデータ領域が指数敵に増大してしまう。
３）長大なキーワードが与えられた場合、切り出されたＧｒａｍ数が多くなり、検索速度が悪化する。
【０００５】
上記「Ｎの長さについてトレードオフがある」問題に対して、例えば下記特許文献１「文書検索方法及びその実施装置並びにその処理プログラムを記録した媒体」ではインクリメンタルにＮサイズを上げていくＮ−Ｇｒａｍ索引方式が知られている。
【０００６】
この特許文献１では、検索性能の高速化を図ると共に索引サイズの増加を最小限に抑えることを目的とする。
特許文献１の文書検索方法は、検索タームの部分文字列と同じ位置関係を持つテキストデータの位置情報を抽出するインデクス検索ステップと、テキストデータの部分文字列に対応するインデクスのサイズと予め定められた基準インデクスサイズとを比較するインデクスサイズ比較ステップと、該インデクスのサイズが該基準インデクスサイズより大きい場合に、該インデクスに対応する部分文字列が前記インデクス検索ステップで検索される可能性が高いかどうかを判定する検索可能性判定ステップと、該部分文字列が前記インデクス検索ステップで検索される可能性が高い場合に、該部分文字列に文字列を追加した拡張部分文字列と該拡張部分文字列に対応するインデクスを作成する文字列インクリメントステップを有する。
【０００７】
特許文献１の方法では、Ｎを上げていけば長大なキーワードが与えられた場合、切り出されたＧｒａｍ数が低減する可能性がある。しかし、検索される可能性が高いか判定する基準が難しい可能性がある。参照頻度比較プログラムでは、語の参照頻度を参照頻度テーブルから取得し、予め定められた基準参照頻度と比較する。参照頻度が低ければ、それを含むＧｒａｍサイズを拡張せず、そうでなければＧｒａｍサイズの拡張を行う。
【０００８】
しかし、この方法では実際に検索を繰り返し行い検索履歴を残さないと、インクリメンタルにＮサイズを上げていけなくなる。
【特許文献１】特開２０００−５７１５１公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
このように従来のＮ−Ｇｒａｍ索引方式は、長大なキーワードが与えられた場合、切り出されたＧｒａｍ数が多くなり検索速度が悪化するという問題があった。
この発明は、長大なキーワードが与えられた場合にも、検索速度がより高速な文書管理装置および文書管理方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記の目的を達成するために、この発明においては、テキストデータを含む複数の文書の中から、指定されたキーワードを前記テキストデータ内に含む文書を、前記複数の文書から予め作成された索引データを使って検索する文書管理装置において、入力された文書を格納する文書格納手段と、前記入力された文書内のテキストデータの一部の文字列である第１の部分文字列および当該第１の部分文字列の前記テキストデータ内での位置情報である第１の位置情報を前記文書内のテキストデータから抽出する第１の抽出手段と、前記第１の部分文字列および前記第１の部分文字列に隣接する文字との組合せ毎に記憶領域を分けて、前記第１の位置情報および前記文書を識別するための文書識別情報を対応付けた前記索引データを記憶媒体に格納する索引データ格納手段と、入力されたキーワードの一部の文字列である第２の部分文字列および当該第２の部分文字列の位置情報である第２の位置情報とを抽出する第２の抽出手段と、前記キーワードの部分文字列間の組合せによって、この組合せによる前記記憶媒体の記憶領域から索引データを取り出し、この取り出した索引データと前記第２の位置情報とを用いて前記キーワードを含む文書を検索する検索手段とを備えたことを特徴とする文書管理装置を提供する。
【００１１】
また、上記の目的を達成するために、この発明においては、テキストデータを含む複数の構造化文書の中から、文書構造を示す情報を除く前記テキストデータ内に、指定されたキーワードを含む構造化文書を、前記複数の構造化文書から予め作成された索引データを使って検索する文書管理装置において、入力された構造化文書を格納する文書格納手段と、前記入力された構造化文書内の文書構造を示す情報を除くテキストデータの一部の文字列である第１の部分文字列および当該第１の部分文字列の前記テキストデータ内での位置情報である第１の位置情報を前記構造化文書内のテキストデータから抽出する第１の抽出手段と、前記第１の部分文字列が属する構造情報によって構造毎に記憶領域を分けて、前記第１の位置情報および前記構造化文書を識別するための構造化文書識別情報からなる前記索引データを記憶媒体に格納する索引データ格納手段と、入力されたキーワードの一部の文字列である第２の部分文字列および当該第２の部分文字列の位置情報である第２の位置情報とを抽出する第２の抽出手段と、前記キーワードが属する前記構造情報を入力する構造情報入力手段と、前記キーワードの部分文字列間の組合せおよび構造情報入力手段によって入力された前記構造情報によって、この組合せによる前記記憶媒体の記憶領域から索引データを取り出し、この取り出した索引データと前記第２の位置情報とを用いて前記キーワードを含む構造化文書を検索する検索手段とを備えたことを特徴とする文書管理装置を提供する。
【００１２】
また、上記の目的を達成するために、この発明においては、テキストデータを含む複数の文書の中から、指定されたキーワードを前記テキストデータ内に含む文書を、前記複数の文書から予め作成された索引データを使って検索する文書管理方法において、文書格納手段により、入力された文書を格納し、第１の抽出手段により、前記入力された文書内のテキストデータの一部の文字列である第１の部分文字列および当該第１の部分文字列の前記テキストデータ内での位置情報である第１の位置情報を前記文書内のテキストデータから抽出し、索引データ格納手段により、前記第１の部分文字列および前記第１の部分文字列に隣接する文字との組合せ毎に記憶領域を分けて、前記第１の位置情報および前記文書を識別するための文書識別情報を対応付けた前記索引データを記憶媒体に格納し、第２の抽出手段により、入力されたキーワードの一部の文字列である第２の部分文字列および当該第２の部分文字列の位置情報である第２の位置情報とを抽出し、検索手段により、前記キーワードの部分文字列間の組合せによって、この組合せによる前記記憶媒体の記憶領域から索引データを取り出し、この取り出した索引データと前記第２の位置情報とを用いて前記キーワードを含む文書を検索することを特徴とする文書管理方法を提供する。
【発明の効果】
【００１３】
この発明によれば、長大なキーワードが与えられた場合にも、検索速度がより高速な文書管理装置および文書管理方法を提供することができる。
【発明を実施するための最良の形態】
【００１４】
以下、図面を参照しながら本発明の実施の形態について説明する。
（第１の実施形態）
図１は、この発明の第１の実施形態に係る文書管理装置の構成を示す図である。
図１において文書管理システム１００は、文書格納部１０１，文書検索部１０２，Ｇｒａｍデータ管理部１０３，ポストデータ管理部１０４から構成されている。
文書管理システム１００は、ネットワーク１１０に接続されており、ネットワーク１１０に接続された端末１２０から文書格納や文書検索の要求を受ける。
データファイル１３０は、文書管理システム１００により生成されたもので、文書内にあるテキストデータや索引データが格納されたファイルである。このファイルは記憶媒体等に記憶される。
【００１５】
文書格納部１０１は、端末１２０から入力された文書格納要求を処理し、Ｇｒａｍデータ管理部１０３およびポストデータ管理部１０４を呼出し、文書内にあるテキストデータの索引付けを行い、テキストデータをデータファイル１３０内のテキストデータ領域１３１に格納する。
【００１６】
文書検索部１０２は文書検索要求を処理し、Ｇｒａｍデータ管理部１０３およびポストデータ管理部１０４を呼出し、データファイル１３０内にあるＧｒａｍデータ領域１３２とポストデータ領域１３３をスキャンして、索引データを取り出す。この取り出した索引データは、文書検索要求に合致するテキストデータへのリンクである。そして文書検索部１０２は索引データからテキストデータを取り出し端末１２０に送る。
【００１７】
Ｇｒａｍデータ管理部１０３は、データファイル１３０内のＧｒａｍデータ領域１３２を管理し、Ｇｒａｍデータの新規作成,更新，検索を行う。
ポストデータ管理部１０４は、データファイル１３０内のポストデータ領域１３３を管理し、ポストデータの新規作成,更新,検索を行う。
以下、Ｎ−ＧｒａｍにおけるＮの値を２、即ちＢｉ−Ｇｒａｍで切り出すこととして話しを進めていく。
図２は、従来技術に基づくデータファイルの構成例を示す図である。
図２において、索引データは、Ｇｒａｍデータ領域１３２とポストデータ領域１３３から構成されている。
Ｇｒａｍデータ領域１３２は、文書内にあるテキストデータから抽出されたＧｒａｍの情報を管理している。
ポストデータ領域１３３は、文書内にあるテキストデータから抽出されたＧｒａｍの位置情報を管理している。
Ｇｒａｍデータ領域１３２は、文書内にあるテキストデータから抽出されたＧｒａｍ、ここでは“燃料”，“カリ”，“電池”，・・・などのＧｒａｍデータが並べられており、このＧｒａｍデータからポストデータ領域１３３のポストブロックが指定されている。この指定は、メモリであればメモリ上のアドレスが指定され，ファイルであればオフセットによりリンクしている。
【００１８】
つまり、“燃料”Ｇｒａｍのポストデータは、ＰＢＩＤ＝１０２３のポストブロックをスキャンすればわかることになる。このときスキャンの終了は、ポストブロックのチェーンをたどり、チェーンの先が無い（例えば０がセットされている）場合にスキャンを終了する。
【００１９】
ポストデータ領域１３３は、ポストデータをブロック化したポストブロックの並びから構成されている。ポストデータは、例えば＜文書ID，文書内テキストデータ中のオフセット＞のような形式である。ポストブロックは通常固定長で設計されるので、ポストブロック内に存在するポストデータの数は固定である。
【００２０】
ポストブロックにはポストブロックＩＤ（以下、ＰＢＩＤと記す）としてシーケンシャルな番号が割当てられている。
図３は、従来技術に基づく文書管理システムによる文書格納処理の動作を説明するためのフローチャートである。なお、特にことわらない限り次の動作は、文書管理システム全体を制御する制御部が、文書管理システムを制御することにより動作している。
【００２１】
図３において、文書管理システムは、文書格納部に格納されている文書を読む（ステップＳ３０１）。
次に、ステップＳ３０１で読んだ文書に文書識別子および文書ＩＤを割当てる（ステップＳ３０２）。
次に、文書のデータを１文字ずつシフトしながら＜Ｇｒａｍ，データ内オフセット＞集合を取り出す（ステップＳ３０３）。例えば、文書のデータが“燃料電池とは”であれば、＜“燃料”，０＞，＜“料電”，１＞，＜“電池”，２＞，＜“池と”，３＞，＜“とは”，４＞，＜“は△”，５＞という集合が得られる。なお、△は末尾文字のために用意された空文字である。図４にこのイメージ図を示す。この文書には、文書ＩＤ＝１０２が割当てられている。
【００２２】
次に、＜Ｇｒａｍ，データ内オフセット＞集合の各要素について以下を繰り返す（ステップＳ３０４）。
次に、ステップＳ３０３で取り出した＜Ｇｒａｍ，データ内オフセット＞集合の中に、Ｇｒａｍデータ領域に該当するＧｒａｍデータがあるか否かを判定する（ステップＳ３０５）。
【００２３】
ステップＳ３０５における判定の結果、Ｇｒａｍデータ領域に該当するＧｒａｍデータがなければ（ステップＳ３０５のＮｏ）、このＧｒａｍデータを新たにＧｒａｍデータとしてＧｒａｍデータ領域に追加する処理，ポストデータ領域にポストブロックを追加する処理，Ｇｒａｍデータからポストブロックへのリンクを付ける処理を行う（ステップＳ３０６）。
【００２４】
ステップＳ３０５における判定の結果、Ｇｒａｍデータ領域に該当するＧｒａｍデータがあるならば（ステップＳ３０５のＹｅｓ）、或いはステップＳ３０６の次に、ポストブロックの最後に＜文書ＩＤ，データ内オフセット＞を追加する（ステップＳ３０７）。
【００２５】
次に、ポストブロックが一杯になったか否かを判定する（ステップＳ３０８）。
次に、ステップＳ３０８における判定の結果、ポストブロックが一杯になっていれば（ステップＳ３０８のＹｅｓ）、該当Ｇｒａｍ向けに新たなポストブロックを確保する（ステップＳ３０９）。
【００２６】
ステップＳ３０８における判定の結果、ポストブロックが一杯になっていなければ（ステップＳ３０８のＮｏ）、或いはステップＳ３０９の次に、ステップＳ３１０へ進む。
【００２７】
ステップＳ３１０では、＜Ｇｒａｍ，データ内オフセット＞集合の全ての要素について繰り返しが終了していなければ、ステップＳ３０４へ戻り、次の要素について処理を繰り返す。
【００２８】
＜Ｇｒａｍ，データ内オフセット＞集合の全ての要素について、ステップ３０４からステップ３０９の繰り返しが終了したら、処理を終了する。
この結果、必ずＧｒａｍデータ領域に該当するＧｒａｍデータが存在すると共にポストデータ領域にポストブロックが存在し、ポストブロックにはリンク情報がありチェーンで繋がっている状態となる。
【００２９】
図５は、従来技術に基づく文書管理システムによる文書検索処理の動作を説明するためのフローチャートである。なお、特にことわらない限り次の動作は、文書管理システム全体を制御する制御部が、文書管理システムを制御することにより動作している。
【００３０】
まず、文書管理システムは、キーワードを読込む（ステップＳ５０１）。
次に、キーワードのデータを２文字ずつシフトしながら＜Ｇｒａｍ＞集合を取り出すと共に、カレントポスト集合を空にする（ステップＳ５０２）。例えば、キーワードのデータが“燃料電池”であれば、“燃料”，“電池”というＧｒａｍを切り出す。つまり１文字だけ重複を持たせながら１文字ずつシフトするのではなく、重複を持たせないように２文字ずつシフトさせている。
【００３１】
次に、＜Ｇｒａｍ＞集合の各要素について以下を繰り返す（ステップＳ５０３）。
次に、Ｇｒａｍデータ領域にアクセスし、該当Ｇｒａｍデータから先頭のポストブロック領域を取り出す（ステップＳ５０４）。この先頭のポストブロック領域を取り出すときには、Ｇｒａｍデータからポストデータ領域のポストブロックへのリンクをたどることで取り出す。
【００３２】
次に、次のポストブロック位置があるか否か、即ちチェーンの先があるか否かを判定し、ないならば検索要求に合致する文書は無いものとして終了する（ステップＳ５０５）。
【００３３】
次に、ステップＳ５０５で次のポストブロック位置があるならば（ステップＳ５０５のＹｅｓ）、次のポストブロックをスキャンしてポスト集合を取り出す（ステップＳ５０６）。
【００３４】
次に、カレントポスト集合が空か否かを判定する（ステップＳ５０７）。なお、カレントポスト集合とは、演算途中も含めた現在のポスト集合のことを指す。
ステップＳ５０７の判定の結果、カレントポスト集合が空であれば（ステップＳ５０７のＹｅｓ）、マージ処理をスキップしてステップＳ５１０へ進む。
ステップＳ５０７の判定の結果、カレントポスト集合が空でなければ（ステップＳ５０７のＮｏ）、このカレントポスト集合と現ポスト集合とをマージして、新たなカレントポスト集合とする（ステップＳ５０８）。
【００３５】
次に、カレントポスト集合が空か否かを判定し、空でなければステップＳ５１０へ進み、空であれば検索要求に合致する文書は無いものとして終了する（ステップＳ５０９）。
【００３６】
＜Ｇｒａｍ＞集合の全ての要素について、ステップ５０３からステップ５１０の繰り返しが終了したら、最終的に得られたカレントポスト集合を基に、テキストデータ領域にアクセスし検索要求に合致する文書集合を端末に送付し、処理を終了する（ステップＳ５１１）。
【００３７】
図６は、従来技術に基づく文書検索処理のイメージを説明するための図である。
“燃料電池”という検索要求、つまりキーワードから“燃料”，“電池”というＧｒａｍを切り出し、それぞれ該当するポストブロックをスキャンしている。
この結果、“燃料”ＧｒａｍからＰＢＩＤ＝１０２３のポストブロックをスキャンし、＜９８，１＞，＜１０２，０＞，＜１８２，６７＞を含むポストデータ集合を得る。
【００３８】
“電池”ＧｒａｍからＰＢＩＤ＝２５４７，２５４８，２５４９，２５５０，２５５１のポストブロックをスキャンし、＜１００，２３＞，＜１０２，２＞，＜１８２，３２＞を含むポストデータ集合を得る。
【００３９】
この結果、文書ＩＤ＝１０２の文書は全てのＧｒａｍレベルの検索でヒットしていることがわかる。
この２つの配列をマージする。“燃料”と“電池”では２文字ずれているので、ポストデータ＜文書ＩＤ，文書内テキストデータ中のオフセット＞で比較し、文書内テキストデータ中のオフセットの差分が＋２（“電池”Ｇｒａｍから得られたポストデータの方のオフセット−“燃料”Ｇｒａｍから得られたポストデータの方のオフセット＝＋２）であるポスト集合をマージ結果とする。
【００４０】
“燃料”Ｇｒａｍから得られたポストデータ集合中のポストデータ＜１０２，０＞と、“電池”Ｇｒａｍから得られたポストデータ集合中のポストデータ＜１０２，２＞とから、“燃料”と“電池”が文書ＩＤ＝１０２の文書中に連続した文書として存在していることがわかる。
【００４１】
よって、マージ結果のポスト集合中には図６に示す通り、＜１０２，２＞というポストデータも含まれていることがわかる。
ここで“電池”Ｇｒａｍに関するポスト集合では、“カリウム電池”，“アルカリ電池”など、他の語彙で発生したポストデータも含まれているため、ポストブロック単位で５ポストブロックもデータスキャンが行われている。
【００４２】
しかし、“燃料”に続く“電池”Ｇｒａｍのポストデータ集合はもっと少ないはずである。実際に必要な数よりも多い、無駄なポストブロックをスキャンした結果、以下のような問題が発生し、応答時間に深刻な影響を与えてしまう。
【００４３】
−無駄なディスクＩＯが生じてしまう。
−無駄なマージなどＣＰＵ処理が必要以上に生じてしまう。
【００４４】
図７は、本発明に基づくデータファイルの構成例を示す図である。
Ｇｒａｍデータ領域とポストデータ領域から構成されることは変わりが無い。ただし、各Ｇｒａｍデータからポストブロックへのリンク構造に違いがある。
例えば、“電池”Ｇｒａｍのポスト情報では、４つのノードからなるツリーが存在している。１つの先頭（ルート）ノード７０１から３つのノード７０２〜７０４へリンクが張られている。また、それぞれのノードからポストデータ領域にある複数のポストブロックへのリンクが張られている。
【００４５】
図８は、ポスト情報をより詳細化したイメージ図である。
各ノードは「ポストブロックツリー要素」という名称となっている。ポストブロックツリーの構造は以下の通りである。
−ハッシュパラメータ…これはツリー形式となっているポストブロックツリー要素をルートからたどるときに条件によりたどり方を制御する。この制御をするためのパラメータとしてハッシュパラメータを格納している。兄弟のポストブロックツリー要素は同じハッシュパラメータを持つ。例えば、兄弟のポストブロックツリー要素００〜０２は、ハッシュパラメータの値として「３」を持つ。
【００４６】
−ハッシュ値…Ｇｒａｍの前に存在するワードのハッシュ値を設定している。ハッシュ値＝Ｈａｓｈ（Ｗｏｒｄ，ハッシュパラメータ）であり、ハッシュ値はハッシュパラメータが関連する。
−ポストブロック位置：同じハッシュ値を持つ先頭のポストブロック位置としてＰＢＩＤを指す。
−下位要素数：子供のポストブロックツリー要素のハッシュパラメータと同じである。子供のポストブロックツリー要素数を設定している。
−下位要素［ｎ］：それぞれ異なるハッシュ値を持つポストブロックツリー要素へのリンクをセットしている。“電池”の前に位置する語（前置語）、“燃料”の“料”、“アルカリ”の“リ”、“カリウム”の“ム”などにより必要なブロックスキャン範囲を限定するために用いられる。
【００４７】
前置語によりポストブロックのスキャンを必要な範囲に限定させるための仕掛けがポストブロックツリーである。検索キーワードとして“燃料電池”が与えられたとき、“電池”Ｇｒａｍのポストブロックをスキャンするフェーズがあるが、このとき前置語の“料”をハッシュ計算にて数値化してハッシュ値を求め、この求めたハッシュ値を用いてポストブロックツリーを先頭（ルート）ポストブロックツリー要素から必要なポストブロックツリーの部分木のみをたどりポストブロックのスキャンを行う。これによりポストブロックのスキャンを必要な範囲のポストブロックに限定することができる。
【００４８】
ハッシュ値は、ハッシュパラメータとハッシュ関数を用いて以下のようにして求める。
【００４９】
Ｈａｓｈ（Ｗｏｒｄ，ＨａｓｈＰａｒａｍ）  ＝  Ｗｏｒｄ  ％  ＨａｓｈＰａｒａｍ
但し、Ｗｏｒｄ：前置語，ＨａｓｈＰａｒａｍ：ハッシュパラメータ，％：剰余。
【００５０】
先頭ポストブロックツリー要素０の下は、前置語のハッシュ値によりポストブロックツリー要素が弁別された状態になっている。
すなわち前置語のハッシュ値が、  Ｈａｓｈ（Ｗｏｒｄ，３）  ＝  ０  であれば、ポストブロックツリー要素００が指しているポストブロックＰＢＩＤ＝２５４８から繋がるチェーンのみをスキャンすればよいことになる。なお、先頭ポストブロックツリー要素０が指しているポストブロックは、前置語に関らないのでチェーンを全部スキャンする必要がある。
【００５１】
例えばハッシュ値  Ｈａｓｈ（“料”，３）  ＝  ２  であれば、ポストブロックツリー要素０とポストブロックツリー要素０２をたどって、ＰＢＩＤ＝２５４７および２５５１の２つのポストブロックのみをスキャンすればよいことになる。このように従来スキャンしていた  ＰＢＩＤ＝２５４８，２５４９および２５５０のポストブロックについてはスキャンしないので、無駄なスキャンを減らすことができる。
【００５２】
図９は、本発明に基づく文書格納処理の動作を説明するためのフローチャートである。
図３と比較し、ステップＳ３０４〜Ｓ３０９の繰り返し処理が、ステップＳ９０４〜Ｓ９１５の繰り返し処理になっている点が異なる。ステップＳ９０４〜Ｓ９１５の繰り返し処理では、Ｇｒａｍデータにポストブロックツリーを構築すると共に、ポストブロックツリーに合わせてポストデータ領域にポストデータブロックを構築している。なお、特にことわらない限り次の動作は、文書管理システム全体を制御する制御部が、文書管理システムを制御することにより動作している。
【００５３】
以下、ステップＳ９０４以降について説明する。
図９において、文書管理システムは、ステップＳ３０３の次に、＜Ｇｒａｍ，データ内オフセット＞集合の各要素について以下を繰り返す（ステップＳ９０４）。
次に、ステップＳ３０３で取り出した＜Ｇｒａｍ，データ内オフセット＞集合の中に、Ｇｒａｍデータ領域に該当するＧｒａｍデータがあるか否かを判定する（ステップＳ９０５）。
【００５４】
ステップＳ９０５における判定の結果、Ｇｒａｍデータ領域に該当するＧｒａｍデータがなければ（ステップＳ９０５のＮｏ）、このＧｒａｍデータを新たにＧｒａｍデータとしてＧｒａｍデータ領域に追加する処理，ポストデータ領域にポストブロックを追加する処理，Ｇｒａｍデータからポストブロックへのリンクを付ける処理を行う（ステップＳ９０６）。
【００５５】
ステップＳ９０５における判定の結果、Ｇｒａｍデータ領域に該当するＧｒａｍデータがあれば（ステップＳ３０５のＹｅｓ）、或いはステップＳ９０６の次に、前置語があるか否かを判定する（ステップＳ９０７）。
【００５６】
ステップＳ９０７における判定の結果、前置語があると判定されれば（ステップＳ９０７のＹｅｓ）、前置語よりハッシュ値を計算し、ポストブロックツリーをたどりながら該当するポストブロックツリー要素を得る（ステップＳ９０８）。
【００５７】
ステップＳ９０７における判定の結果、前置語がないと判定されれば（ステップＳ９０７のＮｏ）、先頭ポストブロックツリー要素を得る（ステップＳ９０９）。
ステップＳ９０８またはステップＳ９０９の次に、ポストブロックの最後に＜文書ＩＤ，データ内オフセット＞を追加する（ステップＳ９１０）。
次に、ポストブロックが一杯になったか否かを判定する（ステップＳ９１１）。
次に、ステップＳ９１１における判定の結果、ポストブロックが一杯になっていれば（ステップＳ９１１のＹｅｓ）、該当Ｇｒａｍ向けに新たなポストブロックを確保する（ステップＳ９１２）。
【００５８】
ステップＳ９１２における判定の結果、ポストブロックが一杯になっていなければ（ステップＳ９１１のＮｏ）、所定の分類基準を満たしているか否かを判定し（ステップＳ９１３）、分類基準を満たしていなければステップＳ９１５へ進む。この所定の分類基準とは、例えば、前置語が存在する，ポストブロック数が一定数を越えた等である。更に、分類によっても弁別することでスキャンする範囲をより絞り込むことを意味している。
【００５９】
ステップＳ９１３における判定の結果、分類基準を満たしていれば（ステップＳ９１３のＹｅｓ）、ポストブロックツリーを更に詳細化して、ツリーを拡大し（ステップＳ９１４）、ステップＳ９１５へ進む。このステップＳ９１４での詳細化では、末端ポストブロックツリー要素の中に新ハッシュパラメータを設定し、末端ポストブロックツリー要素の下に、子供のポストブロックツリー要素を追加し、ポストデータ領域にポストブロックを追加する処理を行う。
【００６０】
ステップＳ９１５では、＜Ｇｒａｍ，データ内オフセット＞集合の全ての要素について繰り返しが終了していなければ、ステップＳ９０４へ戻り、次の要素について処理を繰り返す。
【００６１】
＜Ｇｒａｍ，データ内オフセット＞集合の全ての要素について、ステップ９０４からステップ９１６の繰り返しが終了したら、処理を終了する。
この結果、Ｇｒａｍデータにポストブロックツリーが構築される。
図１０は、本発明に基づく文書検索処理の動作を説明するためのフローチャートである。
図５と比較し、ステップＳ５０３以降の処理が、ステップＳ１００３以降の処理になっている点が異なる。なお、特にことわらない限り次の動作は、文書管理システム全体を制御する制御部が、文書管理システムを制御することにより動作している。
【００６２】
文書管理システムは、＜Ｇｒａｍ＞集合の各要素について以下を繰り返す（ステップＳ１００３）。
次に、Ｇｒａｍデータ領域にアクセスし、該当Ｇｒａｍデータから先頭のポストブロック要素を取り出す（ステップＳ１００４）。この先頭のポストブロック要素を取り出すときには、Ｇｒａｍデータからポストブロック要素へのリンクをたどることで取り出す。
【００６３】
次に、前置語があるか否かを判定する（ステップＳ１００５）。
ステップＳ１００５の判定の結果、前置語があれば（ステップＳ１００５のＹｅｓ）、前置語よりハッシュ値を計算し、ポストブロックツリーをたどって末端のポストブロックツリー要素を得る（ステップＳ１００６）。ステップＳ１００５の判定の結果、前置語がなければ（ステップＳ１００５のＮｏ）、ポストブロックツリーを深さ優先で全てたどる（ステップＳ１００７）。なお、この深さ優先でたどるとは、ルートから行けるところまで深くたどっていき、進めなくなったらまだたどっていない枝がある最初の分岐まで引き返し、まだ進んでいない枝を行けるところまで深くたどる動作を繰り返すたどり方である。このようにしてツリー上の全ての要素についてたどる。
【００６４】
ステップＳ１００６或いはステップＳ１００７により、ルートの「ポストブロックツリー要素」を含む該当するポストブロックツリー要素を得る。
次に、ステップＳ１００６或いはステップＳ１００７でたどることにより得た、末端のポストブロックツリー要素からリンクされているポストブロックをすべてスキャンし、ポスト集合を生成する（ステップＳ１００８〜Ｓ１０１０）。
【００６５】
次に、カレントポスト集合が空か否かを判定し、空でなければステップＳ１０１２へ進み、空であればステップＳ１０１４へ進む（ステップＳ１０１１）。
ステップＳ１０１１の判定の結果、カレントポスト集合が空でなければ（ステップＳ１０１１のＮｏ）、このカレントポスト集合と現ポスト集合とをマージして、新たなカレントポスト集合とする（ステップＳ１０１２）。
【００６６】
次に、カレントポスト集合が空か否かを判定し、空でなければステップＳ１０１４へ進み、空であれば検索要求に合致する文書は無いものとして終了する（ステップＳ１０１３）。
【００６７】
次に、＜Ｇｒａｍ＞集合の全ての要素について、ステップ１００３からステップ１０１４の繰り返しが終了したら、最終的に得られたカレントポスト集合を基に、テキストデータ領域にアクセスし検索要求に合致する文書集合を端末に送付し、処理を終了する（ステップＳ１０１５）。
【００６８】
図１１は、本発明に基づく文書検索処理のイメージ図である。
検索キーワードとして“燃料電池”が与えられた場合、“電池”に関するポストブロックは“料”という前置語により絞り込まれて、ＰＢＩＤ＝２５４７および２５５１の２つのポストブロックをスキャンしている。
【００６９】
従来の文書検索処理では、図６に示す通り、“電池”に関してポストブロック単位で５ポストブロックもデータスキャンが行われている。しかし、本発明の文書検索処理では、図１１に示す通り２ポストブロックにデータスキャンが削減されている。
【００７０】
また、検索キーワードとして“燃料電池乗用車”が与えられた場合でも同様にデータスキャンを削減することができる。最後の“用車”Ｇｒａｍでは、前置語は“乗”となる。
【００７１】
なお、上記実施の形態では、前置語により検索時にスキャンするポストブロックの範囲を削減したが、これに代え、後置語により検索時にスキャンするポストブロックの範囲を削減するようにしてもよい。
【００７２】
また、本発明の変形例として、前置語および後置語の両方を利用して、検索時にスキャンするポストブロックの範囲を削減してもよい。
ポストブロックツリーを、前置語だけでなく後置語にもよって更に細分化させ、これに応じてポストデータ領域のポストブロックを構築する。検索時に、更に後置語のハッシュ値に応じてスキャンする必要があるポストブロックを絞り込む。
【００７３】
図１２は、前置語および後置語の両方を利用する方式のイメージ図である。図１２では、図１１と比べて、“電池”の後置語である“乗”によりＰＢＩＤ＝２５６５のポストブロックについてはスキャンがされない。このように前置語だけでなく更に後置語でより絞り込むことにより、よりスキャンする範囲をより絞り込むことができる。
【００７４】
また、本発明の変形例として、構造化文書のタグ情報によって、更にスキャンする範囲を限定するようにしてもよい。
図１３は、テキストのような非構造化文書ではなく、構造化文書のタグ情報を利用する方式のイメージ図である。タグＩＤ（図１３のＰＩＤ）を利用してスキャンする範囲をより絞り込むことができる。この方法は、予めどのＰＩＤの中にテキストが含まれているかにより、更にポストデータ領域を分けてポストブロックを記録しておく。そして、検索時にキーワードと、当該キーワードが構造化文書のどの位置に含まれていたかを示す位置情報とによりスキャンするポストブロックを限定する。これにより、更に高速な検索を行うことができる。
【００７５】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００７６】
【図１】この発明の第１の実施形態に係る文書管理システムの構成を示す図。
【図２】従来技術に基づくデータファイルの構成例を示す図。
【図３】従来技術に基づく文書格納処理の動作を説明するためのフローチャート。
【図４】＜Ｇｒａｍ，データ内オフセット＞集合を取り出すステップＳ３０３のイメージ図。
【図５】従来技術に基づく文書検索処理の動作を説明するためのフローチャート。
【図６】従来技術に基づく文書検索処理のイメージを説明するための図。
【図７】本発明に基づくデータファイルの構成例を示す図。
【図８】ポスト情報をより詳細化したイメージ図。
【図９】本発明に基づく文書格納処理の動作を説明するためのフローチャート。
【図１０】本発明に基づく文書検索処理の動作を説明するためのフローチャート。
【図１１】本発明に基づく文書検索処理のイメージ図。
【図１２】前置語だけでなく後置語も利用する方式のイメージ図。
【図１３】構造化文書のタグ情報を利用する方式のイメージ図。
【符号の説明】
【００７７】
１００…文書管理システム、１０１…文書格納部、１０２…文書検索部、１０３…Ｇｒａｍデータ管理部、１０４…ポストデータ管理部、１１０…ネットワーク、１２０…端末、１３０…データファイル、１３１…テキストデータ領域、１３２…Ｇｒａｍデータ領域、１３３…ポストデータ領域。
【図１】
2005234930.tif 000003
【図２】
2005234930.tif 000004
【図３】
2005234930.tif 000005
【図４】
2005234930.tif 000006
【図５】
2005234930.tif 000007
【図６】
2005234930.tif 000008
【図７】
2005234930.tif 000009
【図８】
2005234930.tif 000010
【図９】
2005234930.tif 000011
【図１０】
2005234930.tif 000012
【図１１】
2005234930.tif 000013
【図１２】
2005234930.tif 000014
【図１３】
2005234930.tif 000015