(57)【要約】【課題】N-Gram索引方式を用いつつ文書の登録時間及び検索時間の短縮を達成する文書管理システムを提供する。【解決手段】文書データ領域３７に記憶されるべき文書データのGramが低頻度の統合Gramか高頻度の一般Gramかを判定し、統合Gramの文字列から計算したGram値と、統合Gramの文字列が含まれる文書データの文書IDと文書内オフセットの組からなるポストデータを統合Gramポスト領域３５に記憶させ、一般Gramの文字列が含まれる文書データの文書IDと文書内オフセットの組からなるポストデータを一般Gramポスト領域３６に記憶させ、検索キーワード中のGramの文字列について求めたGram値に従って統合Gramポスト領域３５からポストデータを読み出し、検索キーワードのGramに従って一般Gramポスト領域３６からポストデータを読み出し、読み出したポストデータを用いて文書データ領域３７から検索キーワードに合致する文書データを検索する。【選択図】  図１
2006252324.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置の文書データ領域に記憶される文書データを管理する文書管理方法において、
前記文書データから予め定められた数の文字列をシフトしながら切り出すことにより管理用Ｇｒａｍを生成するステップと、
前記管理用Ｇｒａｍが相対的に発生頻度の低い第１Ｇｒａｍか相対的に発生頻度の高い第２Ｇｒａｍかを判定する判定ステップと、
前記第１Ｇｒａｍの文字列について計算により求めたＧｒａｍ値に対応して、該第１Ｇｒａｍの文字列が含まれる文書データを示す文書ＩＤと該文字列の位置を示す文書内オフセットの組からなる第１ポストデータを前記記憶装置の第１ポスト領域に記憶させるステップと、
前記第２Ｇｒａｍの文字列に対応して、前記第２Ｇｒａｍの文字列が含まれる文書データを示す文書ＩＤと該文字列の位置を示す文書内オフセットの組からなる第２ポストデータを前記記憶装置の第２ポスト領域に記憶させるステップとを具備することを特徴とする文書管理方法。
【請求項２】
前記判定ステップは、前記管理用Ｇｒａｍを発生頻度の高い順に並べたときの順位をＧｒａｍ順位として、前記第１Ｇｒａｍと判定される最小のＧｒａｍ順位をＶ１、前記管理用Ｇｒａｍを発生頻度の高い順に並べたときの現判定対象の管理用Ｇｒａｍの全管理用Ｇｒａｍにおける順位をＲk(g)としたとき、Ｒk(g)＜Ｖ１が成立すれば前記現判定対象の管理用Ｇｒａｍを前記第１Ｇｒａｍと判定することを特徴とする請求項１の文書管理方法。
【請求項３】
前記判定ステップは、前記文書データを前記文書データ領域に記憶し始める初期状態での前記第１Ｇｒａｍの発生頻度が平均頻度の何倍かを示す値をＶ２、前記現判定対象の管理用Ｇｒａｍの発生頻度をＯc(g)、前記管理用Ｇｒａｍの平均発生頻度をＯave＝Σｇ Ｏｃ(g)としたとき、Ｏc(g)＜Ｏave ×Ｖ２が成立すれば前記現判定対象の管理用Ｇｒａｍを前記第１Ｇｒａｍと判定することを特徴とする請求項１の文書管理方法。
【請求項４】
前記Ｇｒａｍ値は、前記第１Ｇｒａｍの文字列についてハッシュ値を計算することにより求められることを特徴とする請求項１記載の文書管理方法。
【請求項５】
文書データを記憶した文書データ記憶領域と、第１Ｇｒａｍの文字列について計算により求めたＧｒａｍ値に対応して、該第１Ｇｒａｍの文字列が含まれる文書データを示す文書ＩＤと該文字列の位置を示す文書内オフセットの組からなる第１ポストデータを記憶した第１ポスト領域と、前記第２Ｇｒａｍの文字列に対応して、前記第２Ｇｒａｍの文字列が含まれる文書データを示す文書ＩＤと該文字列の位置を示す文書内オフセットの組からなる第２ポストデータを記憶した第２ポスト領域を有する記憶装置から、前記文書データ領域に記憶された文書データを検索キーワードに従って検索する文書検索方法において、
前記検索キーワードから予め定められた数の文字列をシフトしつつ切り出すことにより検索用Ｇｒａｍを生成するステップと、
前記検索用Ｇｒａｍの文字列について前記特定の計算により求めたＧｒａｍ値に従って前記第１ポスト領域を走査することにより、前記第１ポスト領域から前記第１ポストデータを読み出すステップと、
前記検索用Ｇｒａｍの文字列に従って前記第２ポスト領域を走査することにより、前記第２ポスト領域から前記第２ポストデータを読み出すステップと、
読み出された第１ポストデータ及び第２ポストデータを用いて前記文書データ領域から前記検索キーワードに合致する文書データを検索するステップと具備することを特徴とする文書検索方法。
【請求項６】
前記第１ポスト領域には前記Ｇｒａｍ値毎に前記Ｇｒａｍ値に対応する管理用Ｇｒａｍの存在の有無を示すフラグが記憶されており、前記第１ポスト領域から前記第１ポストデータを読み出すステップは、前記第１ポスト領域の走査時に前記フラグをチェックして、前記第１ポスト領域のうち前記管理用Ｇｒａｍが存在しない領域をスキップする処理を含むことを特徴とする請求項２に記載の文書検索方法。
【請求項７】
記憶装置の文書データ領域に記憶されるべき文書データから予め定められた数の文字列をシフトしながら切り出すことにより生成される管理用Ｇｒａｍが相対的に発生頻度の低い第１Ｇｒａｍか相対的に発生頻度の高い第２Ｇｒａｍかを判定する判定手段と、
前記第１Ｇｒａｍの文字列について特定の計算により求めたＧｒａｍ値に対応して、該第１Ｇｒａｍの文字列が含まれる文書データを示す文書ＩＤと該文字列の位置を示す文書内オフセットの組からなる第１ポストデータを前記記憶装置の第１ポスト領域に記憶させる手段と、
前記第１Ｇｒａｍの文字列に対応して、前記第２Ｇｒａｍの文字列が含まれる文書データを示す文書ＩＤと該文字列の位置を示す文書内オフセットの組からなる第２ポストデータを前記記憶装置の第２ポスト領域に記憶させる手段と、
記憶装置の文書データ領域に記憶された文書データを検索するための検索キーワードから予め定められた数の文字列をシフトしつつ切り出すことにより生成される検索用Ｇｒａｍの文字列について前記特定の計算により求めたＧｒａｍ値に従って前記第１ポスト領域から前記第１ポストデータを読み出す手段と、
前記検索用Ｇｒａｍの文字列に従って前記第２ポスト領域から前記第２ポストデータを読み出す手段と、
読み出された第１ポストデータ及び第２ポストデータを用いて前記文書データ領域から前記検索キーワードに合致する文書データを検索する手段と具備することを特徴とする文書管理システム。
【請求項８】
記憶装置の文書データ領域に記憶されるべき文書データから予め定められた数の文字列をシフトしながら切り出すことにより生成される管理用Ｇｒａｍが相対的に発生頻度の低い第１Ｇｒａｍか相対的に発生頻度の高い第２Ｇｒａｍかを判定する判定手段と、
前記第１Ｇｒａｍの文字列について特定の計算により求めたＧｒａｍ値に対応して、該第１Ｇｒａｍの文字列が含まれる文書データを示す文書ＩＤと該文字列の位置を示す文書内オフセットの組からなる第１ポストデータを前記記憶装置の第１ポスト領域に記憶させる手段と、
前記第１Ｇｒａｍの文字列に対応して、前記第２Ｇｒａｍの文字列が含まれる文書データを示す文書ＩＤと該文字列の位置を示す文書内オフセットの組からなる第２ポストデータを前記記憶装置の第２ポスト領域に記憶させる手段と、
記憶装置の文書データ領域に記憶された文書データを検索するための検索キーワードから予め定められた数の文字列をシフトしつつ切り出すことにより生成される検索用Ｇｒａｍの文字列について前記特定の計算により求めたＧｒａｍ値に従って前記第１ポスト領域を走査することにより、前記第１ポスト領域から前記第１ポストデータを読み出す手段と、
前記検索用Ｇｒａｍの文字列に従って前記第２ポスト領域を走査することにより、前記第２ポスト領域から前記第２ポストデータを読み出す手段と、
読み出された第１ポストデータ及び第２ポストデータを用いて前記文書データ領域から前記検索キーワードに合致する文書データを検索する手段と具備する文書管理システムとしてコンピュータを機能させるための文書管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、大量に蓄えられた文書集合の中から検索キーワードに合致する文書を索引により検索するために登録文書を効率的に管理する文書管理方法と文書検索方法、文書管理システム及びプログラムに関する。
【背景技術】
【０００２】
大量に蓄えられた文書データ集合の中から検索キーワードに合致する文書データを検索する場合、検索の高速化を図るために、文書データの格納時に索引（インデックス）を作成する方法が知られている。索引の一例として、文書データ中の連続するＮ文字毎に当該Ｎ文字を索引とする方法が知られている。これをＮ−Ｇｒａｍ索引方式と呼ぶ。Ｎは１以上の整数であり、日本語文書ではＧｒａｍをＮ＝２（Ｂｉ−Ｇｒａｍ）で切り出すことが一般である。一方、英語文書ではＧｒａｍをＮ＝３以上で切り出すことが一般的である。Ｎ＝２の場合を例にとると、例えば“ＸＭＬデータベース”という文字列は、“ＸＭ”，“ＭＬ”，“Ｌデ”，“デー”，“ータ”，“タベ”，“ベー”，“ース”のように切り出される。文書データ集合の検索時には、検索キーワードから切り出されたＧｒａｍを索引として検索を行う。
【０００３】
Ｎ−Ｇｒａｍ索引方式は言語に依存した辞書が不要で、また多言語展開も容易であり、特に空白などの語彙区切りができない日本語、中国語、韓国語などで利用されている。また、Ｇｒａｍとオフセット（文書データにおけるＧｒａｍの発生位置）を組合せて検索を行えば、検索漏れを少なくできることも利点である。
【０００４】
Ｎ−Ｇｒａｍ索引方式は、このようなメリットを有する反面、Ｇｒａｍのサイズ（Ｎのサイズ）についてトレードオフの問題がある。すなわち、Ｎのサイズが大きければ、索引索引であるＧｒａｍに対応する文書データの候補が絞り込まれて検索速度は速くなるが、Ｇｒａｍ情報領域（記憶装置内のＧｒａｍに関する情報を記憶する領域）が指数的に増大してしまう。逆にＮのサイズが小さいと、Ｇｒａｍに対応する文書データの候補数が増大し、位置照合回数も増大する結果、検索時間が増大するという問題がある。さらに、Ｎのサイズが大きいと、索引語種（Ｇｒａｍ種）が多くなり、登録時間と索引データサイズが増大する。例えば、日本語文書からＮ＝２で索引を抽出すると、新聞データの場合で３Ｍ以上のＧｒａｍ種が発生することがわかっている。従って、Ｎを２より大きくした場合に索引データサイズがさらに膨大になることは明らかである。
【０００５】
Ｎのサイズについてのトレードオフの問題に対して、特許文献１（特開２０００−５７１５１号公報）では検索の高速化を図ると共に索引データサイズの増加を最小限に抑えるため、インクリメンタルにＮのサイズを上げていく方法を提案している。すなわち、検索タームの部分文字列に対応するインデクスにより検索タームの部分文字列と同じ位置関係を持つテキストデータの位置情報を抽出し、テキストデータの部分文字列に対応するインデクスのサイズを予め定められた基準インデクスサイズとを比較して、インデクスのサイズが基準インデクスサイズより大きい場合に、インデクスに対応する部分文字列が検索される可能性が高いかどうかを判定し、その可能性が高い場合に、該部分文字列に文字列を追加した拡張部分文字列と該拡張部分文字列に対応するインデクスを作成する。
【特許文献１】特開２０００−５７１５１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
特許文献１によると、Ｎのサイズを上げていけば長大な検索キーワードが与えられた場合に切り出されるＧｒａｍ数が低減する可能性がある。しかし、インデクスに対応する文字列が検索される可能性が高いかどうかを判定する基準を的確に設定することが難しくなり、Ｎのサイズを効果的に上げることが難しい。従って、文書の登録時間及び検索時間を効果的に短縮することには限界がある。
【０００７】
本発明は、Ｎ−Ｇｒａｍ索引方式を用いつつ文書の登録時間及び検索時間の短縮を達成する文書管理方法、文書検索方法、文書管理システム及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記の課題を解決するため、本発明の第１の観点に係る文書管理方法は、記憶装置の文書データ領域に記憶される文書データを管理するために、前記文書データから予め定められた数の文字列をシフトしながら切り出すことにより管理用Ｇｒａｍを生成するステップと、前記管理用Ｇｒａｍが相対的に発生頻度の低い第１Ｇｒａｍか相対的に発生頻度の高い第２Ｇｒａｍかを判定する判定ステップと、前記第１Ｇｒａｍの文字列について計算により求めたＧｒａｍ値に対応して、該第１Ｇｒａｍの文字列が含まれる文書データを示す文書ＩＤと該文字列の位置を示す文書内オフセットの組からなる第１ポストデータを前記記憶装置の第１ポスト領域に記憶させるステップと、前記第２Ｇｒａｍの文字列に対応して、前記第２Ｇｒａｍの文字列が含まれる文書データを示す文書ＩＤと該文字列の位置を示す文書内オフセットの組からなる第２ポストデータを前記記憶装置の第２ポスト領域に記憶させるステップとを具備することを特徴とする。
【０００９】
ここで、前記判定ステップは、（ａ）前記管理用Ｇｒａｍを発生頻度の高い順に並べたときの順位をＧｒａｍ順位として、前記第１Ｇｒａｍと判定される最小のＧｒａｍ順位をＶ１、前記管理用Ｇｒａｍを発生頻度の高い順に並べたときの現判定対象の管理用Ｇｒａｍの全管理用Ｇｒａｍにおける順位をＲk(g)としたとき、Ｒk(g)＜Ｖ１が成立すれば前記現判定対象の管理用Ｇｒａｍを前記第１Ｇｒａｍと判定するか、あるいは（ｂ）前記文書データを前記文書データ領域に記憶し始める初期状態での前記第１Ｇｒａｍの発生頻度が平均頻度の何倍かを示す値をＶ２、前記現判定対象の管理用Ｇｒａｍの発生頻度をＯc(g)、前記管理用Ｇｒａｍの平均発生頻度をＯave＝Σｇ Ｏｃ(g)としたとき、Ｏc(g)＜Ｏave ×Ｖ２が成立すれば前記現判定対象の管理用Ｇｒａｍを前記第１Ｇｒａｍと判定する。
【００１０】
また、前記Ｇｒａｍ値は、例えば前記第１Ｇｒａｍの文字列についてハッシュ値を計算することにより求められる。
【００１１】
本発明の第２の観点に係る文書検索方法は、第１の観点に係る文書管理方法によって記憶装置の文書データ領域に記憶された文書データを検索キーワードに従って検索する方法であって、前記検索キーワードから予め定められた数の文字列をシフトしつつ切り出すことにより検索用Ｇｒａｍを生成するステップと、前記検索用Ｇｒａｍの文字列について前記特定の計算により求めたＧｒａｍ値に従って前記第１ポスト領域を走査することにより、前記第１ポスト領域から前記第１ポストデータを読み出すステップと、前記検索用Ｇｒａｍに従って前記第２ポスト領域を走査することにより、前記第２ポスト領域から前記第２ポストデータを読み出すステップと、読み出された第１ポストデータ及び第２ポストデータを用いて前記文書データ領域から前記検索キーワードに合致する文書データを検索するステップと具備することを特徴とする。
【００１２】
ここで、前記第１ポスト領域には前記Ｇｒａｍ値毎に前記Ｇｒａｍ値に対応する管理用Ｇｒａｍの存在の有無を示すフラグが記憶されており、前記第１ポスト領域から前記第１ポストデータを読み出すステップは、前記第１ポスト領域の走査時に前記フラグをチェックして、前記第１ポスト領域のうち前記管理用Ｇｒａｍが存在しない領域をスキップする処理を含んでもよい。
【００１３】
本発明の第３の観点に係る文書管理システムは、記憶装置の文書データ領域に記憶されるべき文書データから予め定められた数の文字列をシフトしながら切り出すことにより生成される管理用Ｇｒａｍが相対的に発生頻度の低い第１Ｇｒａｍか相対的に発生頻度の高い第２Ｇｒａｍかを判定する判定手段と、前記第１Ｇｒａｍの文字列について特定の計算により求めたＧｒａｍ値に対応して、該第１Ｇｒａｍの文字列が含まれる文書データを示す文書ＩＤと該文字列の位置を示す文書内オフセットの組からなる第１ポストデータを前記記憶装置の第１ポスト領域に記憶させる手段と、前記第２Ｇｒａｍの文字列に対応して、前記第２Ｇｒａｍの文字列が含まれる文書データを示す文書ＩＤと該文字列の位置を示す文書内オフセットの組からなる第２ポストデータを前記記憶装置の第２ポスト領域に記憶させる手段と、記憶装置の文書データ領域に記憶された文書データを検索するための検索キーワードから予め定められた数の文字列をシフトしつつ切り出すことにより生成される検索用Ｇｒａｍの文字列について前記特定の計算により求めたＧｒａｍ値に従って前記第１ポスト領域から前記第１ポストデータを読み出す手段と、前記検索用Ｇｒａｍに従って前記第２ポスト領域から前記第２ポストデータを読み出す手段と、読み出された第１ポストデータ及び第２ポストデータを用いて前記文書データ領域から前記検索キーワードに合致する文書データを検索する手段と具備することを特徴とする。
【００１４】
さらに、本発明の第４の観点によると、コンピュータを第３の観点に係る文書管理システムとして機能させるための文書管理プログラムを提供する。
【発明の効果】
【００１５】
本発明によれば、相対的に高頻度の第２ＧｒａｍについてはＧｒａｍの文字列に対応させてポストデータを記憶するが、相対的に低頻度の第１ＧｒａｍについてはＧｒａｍ値に対応させてポストデータを記憶することにより、見掛け上のＧｒａｍ種の数を削減して、文書データの記憶とポストデータの記憶を含めた文書登録に要する時間を短縮できる。また、Ｇｒａｍが第１Ｇｒａｍか第２Ｇｒａｍかを判定する際の判定基準を適切に選ぶことにより、検索時間を長くすることなく登録時間を短縮することが可能である。さらに、利用環境（例えばハードウェア：メモリ、アプリケーション：データサイズ）に応じて判定の際のパラメータをチューニングすることで、検索時間と登録時間の最適バランスをとることもできる。
【発明を実施するための最良の形態】
【００１６】
以下、図面を参照して本発明の一実施形態について説明する。  
＜文書管理システムの全体構成＞  
図１に示されるように、本発明の一実施形態に係る文書管理システムは、クライアント１１とサーバ１２により構成される。クライアント１１は、例えばパーソナルコンピュータである。サーバ１２は、外部に存在する記憶装置であるデータファイル１３にアクセスして、文書登録や文書検索を行う。すなわち、文書登録時にはクライアント１１により入力された文書データ及び索引データをデータファイル１３に記憶させ、文書検索時にはデータファイル１３に記憶された文書データ集合を対象として、クライアント１１により指定された文字列からなる検索キーワード（検索タームともいう）を含む文書の検索をＮ−Ｇｒａｍを索引（インデクス）として行う。クライアント１１とサーバ１２及びデータファイル１３は、例えばインターネットのようなネットワーク１４により接続される。サーバ１２とデータファイル１３とは、直接接続されていてもよい。
【００１７】
クライアント１１は統合パラメータ設定、文書登録及び索引による文書検索という３つの要求を発行する。サーバ１２は、入出力インタフェース２０を介して当該要求を受け取って処理を行い、処理結果をクライアント１１に返す。文書登録要求の場合、クライアント１１からサーバ１２へ流れるデータは文書データである。文書検索要求の場合、クライアント１１からサーバ１２へ流れるデータは検索キーワードである。サーバ１２には、統合パラメータ設定部２１、文書登録部２２及び索引検索部２３という３つの大きな処理部が存在する。
【００１８】
データファイル１３は、統合パラメータ領域３１、索引データ領域３２及び文書データ領域３７を有する。索引データ領域３２は、統合Ｇａｍ情報領域３３、一般Ｇｒａｍ情報領域３４、統合Ｇｒａｍポスト領域３５及び一般Ｇｒａｍポスト領域３６を有する。これらの各領域については、後に詳しく説明する。
【００１９】
＜サーバ＞  
次に、サーバ１２について詳しく説明する。統合パラメータ設定部２１は、見掛け上のＧｒａｍ種の数を削減すべく、検索にインパクトを与えない程度に低頻度のＧｒａｍを統合して管理するための統合パラメータを設定する。統合パラメータの具体例については、後述する。
【００２０】
文書登録部２２は、Ｇｒａｍ判定部２４、統合Ｇｒａｍ登録部２５及び一般Ｇｒａｍ登録部２６を呼び出して文書登録を行う。このときＧｒａｍ判定部２４は、クライアント１１から送られてきた文書データから切り出されたＧｒａｍ（文書データから切り出されたＧｒａｍを管理用Ｇｒａｍともいう）が統合Ｇｒａｍか一般Ｇｒａｍかを判定する。後に詳しく説明するように、統合Ｇｒａｍとは相対的に発生頻度の低いＧｒａｍであり、一般Ｇｒａｍとは統合Ｇｒａｍ以外の相対的に発生頻度の高いＧｒａｍである。
【００２１】
ここで、文書登録時においてＧｒａｍ判定部２４の判定結果が統合Ｇｒａｍであれば、統合Ｇｒａｍ登録部２５により統合Ｇｒａｍに対応するポストデータを文書データから算出し、当該ポストデータをデータファイル１３内の統合Ｇｒａｍポスト領域３４に記憶させる。Ｇｒａｍ判定部２４の判定結果が統合Ｇｒａｍ以外のＧｒａｍ、つまり一般Ｇｒａｍであれば、同様に一般Ｇｒａｍ登録部２６により一般Ｇｒａｍに対応するポストデータを文書データから算出し、当該ポストデータをデータファイル１３内の一般Ｇｒａｍポスト領域３５に記憶させる。
【００２２】
ポストデータは、Ｇｒａｍの文字列が含まれる文書データを示す文書ＩＤと該文字列の文書内オフセットの組である。文書ＩＤとは、文書データ領域３７に記憶された各文書データをユニークに識別するためのＩＤである。文書内オフセットとは、文書内オフセットに対応する文書ＩＤによって示される、文書データ内に発生したＧｒａｍの文字列の発生位置を示す情報であり、通常オフセット０を起点として計算される。
【００２３】
索引検索部２３は、Ｇｒａｍ判定部２４、統合Ｇｒａｍ走査部２７及び一般Ｇｒａｍ走査部２８を呼び出して、クライアント１１から送られてきた検索キーワードに合致する文書データの集合をデータファイル１３内の文書データ領域３６から検索する。すなわち、検索キーワードから切り出されたＧｒａｍ（検索キーワードから切り出されたＧｒａｍを検索用Ｇｒａｍともいう）を索引として文書データ領域３７内の文書データを検索する。このときＧｒａｍ判定部２４は、検索キーワードから切り出されたＧｒａｍが統合Ｇｒａｍか一般Ｇｒａｍかを判定する。
【００２４】
ここで、文書検索時においてＧｒａｍ判定部２４の判定結果が統合Ｇｒａｍであれば、統合Ｇｒａｍ走査部２７によってデータファイル１３内の統合Ｇｒａｍポスト領域３４のみを走査し、統合Ｇｒａｍに対応するポストデータ集合を読み出す。Ｇｒａｍ判定部２４の判定結果が一般Ｇｒａｍであれば、統合Ｇｒａｍ走査部２７及び一般Ｇｒａｍ走査部２８によってデータファイル１３内の統合Ｇｒａｍポスト領域３４及び一般Ｇｒａｍポスト領域３５の両方を走査し、統合Ｇｒａｍ及び一般Ｇｒａｍにそれぞれ対応するポストデータ集合を読み出して、これらをマージする。
【００２５】
次に、索引検索部２３は検索キーワードから切り出した複数のＧｒａｍに対応する複数のポストデータ集合をマージして、検索キーワードを含む文書ＩＤの集合を得る。索引検索部２３は、最終的に検索キーワードを含む文書ＩＤの集合を用いて文書ＩＤによって示される文書データの集合を文書データ領域３７から抽出し、クライアント１１へ送信させる。
【００２６】
次に、図２及び図３を用いて索引データ領域３１について説明する。図２は、統合Ｇｒａｍ情報領域３３及び統合Ｇｒａｍポスト領域３５の構成例を示している。図３は、一般Ｇｒａｍ情報領域３４及び一般Ｇｒａｍポスト領域３６の構成例を示している。
【００２７】
一般Ｇｒａｍ情報領域３４には、例えば“燃料”や“電池”などの一般Ｇｒａｍに関する情報が記憶される。一般Ｇｒａｍに関する情報とは、例えば一般Ｇｒａｍの文字列、当該一般Ｇｒａｍに対応する先頭ポストブロックへのリンク及びポスト発生数を示す情報である。ポスト発生数とは、文書データ領域３７に記憶されている文書データ集合に発生したＧｒａｍの発生度数である。
【００２８】
一般Ｇｒａｍポスト領域３６は、複数のポストブロックを有し、各々のポストブロックには同じＧｒａｍに関するポストデータの集合が配列形式で記憶されている。ポストデータは、前述したように文書ＩＤと文書内オフセットの組である。
【００２９】
統合Ｇｒａｍ情報領域３３には、種々の統合Ｇｒａｍ値に関する情報が記憶される。統合Ｇｒａｍとは、検索にインパクトを与えない程度に発生頻度の低いＧｒａｍ（発生頻度が閾値に満たないＧｒａｍ、以下これを低頻度Ｇｒａｍという）を統合したＧｒａｍである。統合Ｇｒａｍ値に関する情報とは、統合Ｇｒａｍ値と統合Ｇｒａｍ値に対応する先頭ポストブロックへのリンクを示す情報である。
【００３０】
統合Ｇｒａｍポスト領域３５は、複数のポストブロックを有し、各々のポストブロックには同じ統合Ｇｒａｍ値に対応するポストデータの集合が記憶されている。ポストデータは、前述したように文書ＩＤと文書内オフセットの組である。
【００３１】
統合Ｇｒａｍを求めるための低頻度Ｇｒａｍを統合する判定基準として、例えば低頻度Ｇｒａｍの最小順位（Ｖ１）及び初期低頻度Ｇｒａｍ基準（Ｖ２）（Ｇｒａｍの発生頻度が平均頻度の何倍かを示す値）を用いる。
【００３２】
現判定対象のＧｒａｍをＧｒａｍ ｇとして、その発生頻度をＯc(g)とする。Ｇｒａｍを発生頻度の高い順に並べたときのＧｒａｍ ｇの全Ｇｒａｍにおける順位をＲk(g)とする。Ｇｒａｍの平均発生頻度をＯave＝Σｇ Ｏｃ(g)とする。以下の不等式（１）（２）に示す条件の少なくとも一つが成立すれば、Ｇｒａｍ ｇを統合Ｇｒａｍと判定する。
【００３３】
Ｒk(g)＜Ｖ１            （１）  
Ｏc(g)＜Ｏave ×Ｖ２    （２）
図４を参照すると、文書登録がされ始めた初期段階、すなわち複数の文書データが文書データ領域３７に記憶され始めた段階（図４でドキュメント数小の領域）では、Ｇｒａｍはどれも発生頻度が非常に小さいため、数式（１）が効いて通常全てのＧｒａｍが図４中の希少Ｇｒａｍエリアに属すようになり、統合Ｇｒａｍと判定される。初期段階以降の段階（図４でドキュメント数大の領域）では、数式（２）が効いて頻出エリアに属する一定数のＧｒａｍを除くＧｒａｍは希少Ｇｒａｍエリアに属すようになり、統合Ｇｒａｍとして判定される。なお、図４に示されるように高頻度Ｇｒａｍと低頻度Ｇｒａｍの発生頻度差は極めて大きく、Ｇｒａｍ順位に対して発生頻度は指数カーブを描く。
【００３４】
統合Ｇｒａｍ値とは、統合Ｇｒａｍを特定する値、例えば統合Ｇｒａｍを構成するGramに対応した文字列のハッシュ値であり、通常のハッシュ計算により求められる。一例として、統合Ｇｒａｍを構成するＧｒａｍに対応した文字列の各文字を表わすＪＩＳコードの和を求め、この和のある値Ｖ３についてのｍｏｄをハッシュ値とし、これを統合Ｇｒａｍ値とすればよい。ここで、Ｖ３は統合Ｇｒａｍ種サイズ、すなわち統合Ｇｒａｍの数である（図４参照）。
【００３５】
本実施形態に係る文書管理システムの処理は、大きく別けてＮ−Ｇｒａｍを索引とする文書検索処理を可能とするための索引登録を含む文書登録処理と、Ｎ−Ｇｒａｍを索引とする文書検索処理の２つのフェーズからなる。まず、最初に文書登録処理について説明する。
【００３６】
＜文書登録処理＞  
図５に示されるように、本実施形態における文書登録処理は、新規にデータファイル１３内の文書データ領域３７に記憶させるべき文書データの読込み（ステップＳ１０１）、読み込んだ文書データへの文書ＩＤの割当（ステップＳ１０２）及び読み込んだ文書データを検索する際に用いる索引データをデータファイル１３内の索引データ領域３３に記憶させるための索引登録処理（ステップＳ１０３）から構成される。
【００３７】
次に、図６を参照して索引登録処理ステップＳ１０３について説明する。索引登録処理ステップＳ１０３では、図５のステップＳ１０１で読み込まれた文書データを１文字ずつシフトしながらＧｒａｍと文書内オフセットの集合を生成し（ステップＳ２０１）、ステップＳ２０１で生成される全てのＧｒａｍと文書内オフセットについてステップＳ２０２とステップＳ２１４との間の処理を繰り返す。
【００３８】
まず、一般Ｇｒａｍ情報領域３４にステップＳ２０１で生成されたＧｒａｍに該当するＧｒａｍが存在するか否かを調べ（ステップＳ２０３）、存在すれば一般Ｇｒａｍ情報領域３４内の該当するＧｒａｍに関する情報を更新し（ステップＳ２０４）、存在しなければ一般Ｇｒａｍ情報領域３４にステップＳ２０１で生成されたＧｒａｍに関する情報を追加する（ステップＳ２０５）。
【００３９】
次に、ステップＳ２０１で生成されたＧｒａｍが統合Ｇｒａｍか否かを判定する（ステップＳ２０６）。ステップＳ２０６の判定の結果、生成されたＧｒａｍが統合Ｇｒａｍであれば、統合Ｇｒａｍ値を計算し、統合Ｇｒａｍ値に関する情報を統合Ｇｒａｍ情報領域３３に記憶させる（ステップＳ２０７）。さらに、統合Ｇｒａｍポスト領域３５において計算された統合Ｇｒａｍ値に対応する統合ポストブロックが空いているかどうかを調べる（ステップＳ２０８）。統合ポストブロックが空いていなければ、新たな統合ポストブロックを追加する（ステップＳ２０９）。
【００４０】
ステップＳ２０８において統合ポストブロックが空いている場合は、その統合ポストブロックに、また統合ポストブロックが空いていない場合は、ステップＳ２０９により追加された統合ポストブロックに＜統合Ｇｒａｍ，文書ＩＤ，文書内オフセット＞の組をポストデータとして追加する（ステップＳ２１０）。
【００４１】
一方、ステップＳ２０６の判定の結果、ステップＳ２０１で生成されたＧｒａｍが統合Ｇｒａｍ以外のＧｒａｍ、すなわち一般Ｇｒａｍであれば、次に一般Ｇｒａｍポスト領域３６において一般Ｇｒａｍ値に対応する一般ポストブロックが空いているかどうかを調べる（ステップＳ２１１）。一般ポストブロックが空いていなければ、新たな一般ポストブロックを追加する（ステップＳ２１２）。
【００４２】
ステップＳ２１１において一般ポストブロックが空いている場合は、その一般ポストブロックに、また一般ポストブロックが空いていない場合は、ステップＳ２１２により追加された一般ポストブロックに＜文書ＩＤ，文書内オフセット＞の組をポストデータとして追加する（ステップＳ２１３）。
【００４３】
次に、図７〜図９を参照して図１中の索引データ領域３１の具体的な内容について説明する。今、例えば図７に示すような“燃料電池とは”という文字列の文書データをデータファイル１３に記憶させると仮定する。この文書データには、文書ＩＤ：１０５が割当てられたものとする。“燃料電池とは”という文字列からは、“燃料”、“料電”、“電池”、“池と”及び“とは”という５つのＧｒａｍが切り出され、これらのＧｒａｍに対して以下に示す“Ｇｒａｍ”＜文書ＩＤ，文書内オフセット＞からなるポストデータが生成される。
【００４４】
（１）“燃料”＜１０５，０＞  
（２）“料電”＜１０５，２＞  
（３）“電池”＜１０５，４＞  
（４）“池と”＜１０５，６＞  
（５）“とは”＜１０５，８＞  
これらの各Ｇｒａｍは、統合Ｇｒａｍか一般Ｇｒａｍかを判定する判定基準により統合Ｇｒａｍと判定されたものとすると、図８に示すように統合Ｇｒａｍポスト領域３５の統合ポストブロックに統合Ｇｒａｍに対応するポストデータが記憶される。
【００４５】
すなわち、例えば“燃料”のハッシュ値を計算し、統合Ｇｒａｍ値が０になったとすると、統合Ｇｒａｍ値０のポストブロックに“燃料”という統合Ｇｒａｍに対応するポストデータ＜“燃料”，１０５，０＞が記憶される。同様に、“電池”のハッシュ値を計算し、統合Ｇｒａｍ値が１になったとすると、統合Ｇｒａｍ値１のポストブロックに“電池”という統合Ｇｒａｍに対応するポストデータ＜“電池”，１０５，４＞が記憶される。
【００４６】
一方、この段階では“燃料”、“料電”、“電池”、“池と”及び“とは”の５つのＧｒａｍは、全て統合Ｇｒａｍと判定されるため、図９に示すように一般Ｇｒａｍポスト領域には新たなポストデータは記憶されない。
【００４７】
次に、あるドキュメント数の文書データが記憶された状態で、再び図７に示したような“燃料電池とは”という文字列の文書データを文書データ領域３７に記憶させると仮定する。このとき“燃料電池とは”という文書データには、先と異なる文書ＩＤ：９８５が割当てられるものとする。この場合、先と同様に“燃料電池とは”という文字列から、“燃料”、“料電”、“電池”、“池と”及び“とは”という５つのＧｒａｍが切り出され、これらのＧｒａｍに対して以下に示す“Ｇｒａｍ”＜文書ＩＤ，文書内オフセット＞からなるポストデータが生成される。
【００４８】
（１）“燃料”＜９８５，０＞  
（２）“料電”＜９８５，２＞  
（３）“電池”＜９８５，４＞  
（４）“池と”＜９８５，６＞  
（５）“とは”＜９８５，８＞  
統合Ｇｒａｍか一般Ｇｒａｍかを判定するための判定基準により、これらの各Ｇｒａｍのうち“燃料”，“電池”のＧｒａｍは一般Ｇｒａｍと判定され、それ以外の“料電”，“池と”及び“とは”は統合Ｇｒａｍと判定されたものとする。この場合、図１０に示すように統合Ｇｒａｍポスト領域３５の統合ポストブロックに統合Ｇｒａｍに対応するポストデータが記憶され、また図１１に示すように一般Ｇｒａｍポスト領域３６の一般ポストブロックに一般Ｇｒａｍに対応するポストデータが記憶される。
【００４９】
すなわち、“料電”，“池と”及び“とは”の４つのＧｒａｍは、再び統合Ｇｒａｍと判定されたため、統合Ｇｒａｍポスト領域３５の対応するポストブロックにそれぞれに対応するポストデータが記憶される。一方、一般Ｇｒａｍと判定された燃料”のポストデータ＜９８５，０＞及び“電池”のポストデータ＜９８５，４＞は、それぞれ一般Ｇｒａｍポスト領域３６の“燃料”に対応するポストブロック及び“電池”に対応するポストブロックに記憶される。
【００５０】
このように本実施形態では、相対的に高頻度の一般Ｇｒａｍについては一般Ｇｒａｍ情報領域３４内に記憶する一般Ｇｒａｍに関する情報（一般Ｇｒａｍの文字列）に対応させて一般Ｇｒａｍポスト領域３６にポストデータを記憶するが、相対的に低頻度の統合Ｇｒａｍについては統合Ｇｒａｍ情報領域３３に記憶する統合Ｇｒａｍ値に対応させて統合Ｇｒａｍポスト領域３５にポストデータを記憶する。従って、見掛け上のＧｒａｍ種の数を削減して登録時間を短縮することができる。例えば、図６のステップＳ２０８，Ｓ２１０で示す統合Ｇｒａｍポストの追加処理において、Ｖ３で定義された種類の統合ポストブロックエリアだけをディスクに書き込めば済むので、Ｖ３よりはるかに多いと予想される全Ｇｒａｍ種類に対応したポストブロックをディスクに書き込む従来の場合と比べて、処理時間が著しく短縮される。
【００５１】
＜文書検索処理＞  
次に、図１２〜図１３を参照して本実施形態における文書検索処理について説明する。まず、図１２に示すように検索キーワードを読み込み（ステップＳ３０１）、検索キーワードからＧｒａｍを切り出してＧｒａｍ集合を生成する（ステップＳ３０２）。Ｇｒａｍの切り出しは、検索キーワードからＮ文字の文字列を切り出す処理を例えば１文字ずつシフトしつつ繰り返すことで行う。
【００５２】
ステップＳ３０２で生成されたＧｒａｍ集合の各Ｇｒａｍについて、ステップＳ３０３とステップＳ３０８との間の処理を繰り返す。すなわち、まず「索引走査処理」として、ステップＳ３０２で生成されたＧｒａｍ集合の各Ｇｒａｍについて索引データ領域３１の統合Ｇｒａｍポスト領域３５及び一般ポスト領域３６を走査し、ポストブロックからポストデータ集合を取り出す（ステップＳ３０４）。
【００５３】
次に、カレントポストデータ集合があるか否かを調べ（ステップＳ３０５）、カレントポストデータ集合があれば、ステップＳ３０４で取り出したポストデータ集合とカレントポストデータ集合をオフセットでマージして新たなカレントポストデータ集合とし（ステップＳ３０６）、カレントポストデータ集合がなければステップＳ３０４で取り出されたポストデータ集合をカレントポストデータ集合とする（ステップＳ３０７）。
【００５４】
ステップＳ３０２で生成されたＧｒａｍ集合の全てのＧｒａｍについてカレントポストデータ集合が得られたならば、そのカレントポストデータ集合（検索キーワードを含む文書ＩＤの集合）を用いて文書データ領域３７にアクセスすることにより、検索キーワードを含む文書データの集合を取り出す（ステップＳ３０９）。
【００５５】
図１３は、図１２中の索引走査処理ステップＳ３０５の具体的な手順を示している。まず、図１２中のステップＳ３０４で取り出されたポストデータ集合を初期化し（ステップＳ４０１）、統合Ｇｒａｍ値を計算する（ステップＳ４０２）。計算された統合Ｇｒａｍ値により、統合Ｇｒａｍ情報領域３３にアクセスして統合Ｇｒａｍ値に関する情報を取り出し、先頭ポストブロックへのリンクの情報から先頭ポストブロック位置を特定する（ステップＳ４０３）。
【００５６】
次に、ステップＳ４０３で特定された先頭ポストブロック位置に統合ポストブロックが存在するか否かを調べる（ステップＳ４０４）。先頭ポストブロック位置に統合ポストデータが存在すればその統合ポストブロックを走査し、その統合ポストブロックに記憶されているポストデータ集合に、図１２中のステップＳ３０４で取り出されかつステップＳ４０１で初期化されたポストデータ集合を追加する（ステップＳ４０５）。次に、先頭ブロック位置の次のポストブロック位置を特定し（ステップＳ４０６）、この後ステップＳ４０４に戻る。以下、ステップＳ４０４〜Ｓ４０６の処理を特定されたポストブロック位置に統合ポストブロックが存在しないとステップＳ４０４で判定されるまで繰り返す。
【００５７】
ステップＳ４０４で統合ポストブロックが存在しないと判定されると、次に一般Ｇｒａｍ情報領域３４にアクセスして一般Ｇｒａｍ値に関する情報を取り出し、先頭ポストブロックへのリンクの情報から先頭ポストブロック位置を特定する（ステップＳ４０７）。
【００５８】
次に、ステップＳ４０７で特定された先頭ポストブロック位置に一般ポストブロックが存在するか否かを調べる（ステップＳ４０８）。先頭ポストブロック位置に一般ポストデータが存在すればその一般ポストブロックを走査し、その一般ポストブロックに記憶されているポストデータ集合に、図１２中のステップＳ３０４で取り出されかつステップＳ４０１で初期化されたポストデータ集合を追加する（ステップＳ４０９）。次に、先頭ブロック位置の次のポストブロック位置を特定し（ステップＳ４１０）、この後ステップＳ４０８に戻る。以下、ステップＳ４０８〜Ｓ４１０の処理を特定されたポストブロック位置に一般ポストブロックが存在しないとステップＳ４０８で判定されるまで繰り返す。以上の処理により得られるポストデータ集合を図１２中のステップＳ３０５に返し（ステップＳ４１１）、図１２中のステップＳ３０５の索引走査処理が終了する。
【００５９】
上述の索引走査処理においては、特にステップＳ４０２〜Ｓ４０６の処理、すなわち統合ポストブロックを走査し、統合Ｇｒａｍのポストデータ集合を追加する処理を行うことが特徴的である。この場合、Ｇｒａｍが統合Ｇｒａｍか一般Ｇｒａｍかを判定する際の判定基準を適切に選ぶことにより、検索時間を長くするとなく登録時間を短縮することが可能である。
【００６０】
次に、図１４を参照して本実施形態における文書検索処理の具体例を説明する。この例では、“電池とは”という検索キーワードから“電池”，“とは”という２つのＧｒａｍを切り出し、これらの各Ｇｒａｍが統合Ｇｒａｍか一般Ｇｒａｍかを判定して、該当するポストブロックが記憶されたポスト領域を走査する。
【００６１】
例えば、“電池”は一般Ｇｒａｍに判定されるので、統合Ｇｒａｍポスト領域３５と一般Ｇｒａｍポスト領域３６の両方を走査する。その結果、以下のポストデータ集合が得られる。  
＜．．．，．．．＞，＜１０５，４＞，＜．．．，．．．＞，＜９８５，４＞，＜．．．，．．．＞
一方、“とは”は統合Ｇｒａｍに判定されるので、統合Ｇｒａｍポスト領域３５だけを走査する。その結果、以下のポストデータ集合が得られる。  
＜．．．，．．．＞，＜１０５，８＞，＜．．．，．．．＞，＜９８５，８＞，＜．．．，．．．＞
次に、これら二つのポストデータ集合をマージする。“電池”と“とは”では２文字ずれているので、ポストデータ＜文書ＩＤ，文書内オフセット＞に従って、文書内オフセットの差分が＋４であるポストデータ集合をマージする。マージ結果は＜．．．＞，＜１０５＞，＜．．．＞，＜９８５＞，＜．．．＞であり、これが文書ＩＤリストとなる。
【００６２】
こうして得られる文書ＩＤリストを用いて文書データ領域３７にアクセスし、“電池とは”という検索キーワードを含む文書データ集合を検索結果として得る。
【００６３】
本発明の他の実施形態として、統合ポスト領域に統合Ｇｒａｍ値毎に統合Ｇｒａｍ値に対応する統合Ｇｒａｍの存在の有無を示すフラグ（例えばビット列）を記憶しておき、文書検索において統合ポスト領域からポストデータを読み出す際、統合ポスト領域の走査時に当該フラグをチェックして、統合ポスト領域のうち統合Ｇｒａｍが存在しない領域をスキップしてもよい。これにより検索時間のさらなる短縮を図ることができる。
【図面の簡単な説明】
【００６４】
【図１】本発明の一実施形態に係る文書管理システムのブロック図
【図２】図１中の統合Ｇｒａｍ情報領域及び統合Ｇｒａｍポスト領域の構成例を示す図
【図３】図１中の一般Ｇｒａｍ情報領域及び一般Ｇｒａｍポスト領域の構成例を示す図
【図４】Ｇｒａｍの順位と発生頻度の関係をドキュメント数をパラメータとして示す図
【図５】同実施形態における文書登録処理の概略的な手順を示すフローチャート
【図６】図５中の索引登録処理の手順を示すフローチャート
【図７】データファイルに新たに記憶する文書データの一例を示す図
【図８】図７の文書データが最初に入力されたときの統合Ｇｒａｍ情報領域及び統合Ｇｒａｍポスト領域の内容例を示す図
【図９】図７の文書データが最初に入力されたときの一般Ｇｒａｍ情報領域及び一般Ｇｒａｍポスト領域の内容例を示す図
【図１０】図７の文書データが再度入力されたときの統合Ｇｒａｍ情報領域及び統合Ｇｒａｍポスト領域の内容例を示す図
【図１１】図７の文書データが再度入力されたときの一般Ｇｒａｍ情報領域及び一般Ｇｒａｍポスト領域の内容例を示す図
【図１２】同実施形態における文書検索処理の手順を示すフローチャート
【図１３】同実施形態における文書検索処理に含まれる索引走査処理の手順を示すフローチャート
【図１４】同実施形態における文書検索処理の具体的な一例を示す図
【符号の説明】
【００６５】
１１…クライアント；
１２…サーバ；
１３…データファイル（記憶装置）；
２１…統合パラメータ設定部；
２２…文書登録部；
２３…索引検索部；
２４…Ｇｒａｍ判定部；
２５…統合Ｇｒａｍ登録部；
２６…一般Ｇｒａｍ登録部；
２７…統合Ｇｒａｍ操作部；
２８…一般Ｇｒａｍ操作部；
３１…統合パラメータ領域；
３２…索引データ領域；
３３…統合Ｇｒａｍ情報領域；
３４…統合Ｇｒａｍポスト領域；
３５…一般Ｇｒａｍ情報領域；
３６…一般Ｇｒａｍポスト領域；
３７…文書データ領域
【図１】
2006252324.tif 000003
【図２】
2006252324.tif 000004
【図３】
2006252324.tif 000005
【図４】
2006252324.tif 000006
【図５】
2006252324.tif 000007
【図６】
2006252324.tif 000008
【図７】
2006252324.tif 000009
【図８】
2006252324.tif 000010
【図９】
2006252324.tif 000011
【図１０】
2006252324.tif 000012
【図１１】
2006252324.tif 000013
【図１２】
2006252324.tif 000014
【図１３】
2006252324.tif 000015
【図１４】
2006252324.tif 000016