(57)【特許請求の範囲】
【請求項１】
文書からキーワードを抽出し、抽出されたキーワードが出現する文書の文書識別情報を含むインデックスを作成し、検索時に質問語と一致したキーワードに対応するインデックスを参照して検索を行う文書検索方法において、
前記インデックスを格納する二次記憶装置上のインデックス格納領域を所定数のブロックに分割し、各ブロックに格納される各インデックスの容量を各ブロック内に渡り合計した総和がほぼ均等になるようにキーワードを該ブロックに割り付け、前記ブロックに対応するインデックスを格納しておき、文書の登録時に、前記ブロックに追加または更新が発生したインデックスの個数が所定数以上の場合には、該ブロックを二次記憶措置から主記憶上へ読み込むとともに、該ブロック内のインデックスに対応するキーワードについて、インデックスの追加処理を主記憶上で行い、追加処理された該ブロックを二次記憶装置へ格納し、所定数未満の場合には、該インデックスを二次記憶措置から主記憶上へ読み込むとともに、該インデックスに対応するキーワードについて、インデックスの追加処理を主記憶上で行い、追加処理された該インデックスを二次記憶装置へ格納することを特徴とした文書検索方法。
【請求項２】
請求項１に記載の文書検索方法において、
キーワードのブロック割り付けに際して、ブロックに割り付けられたキーワードについて、インデックスが作成される全ての文書の内、該キーワードの出現文書数を算出し、各キーワード毎に算出した出現文書数の総和をブロック毎に算出し、各ブロックにおける出現文書数の総和が各ブロックにおいてほぼ均等になるようにキーワードのブロック割り付けを行うことを特徴とした文書検索方法。
【請求項３】
文書からキーワードを抽出し、抽出されたキーワードが出現する文書の文書識別情報を含むインデックスを作成し、検索時に質問語と一致したキーワードに対応するインデックスを参照して検索を行う文書検索装置において、
前記インデックスを格納する二次記憶装置上のインデックス格納領域を所定数のブロックに分割する手段と、各ブロックに格納される各インデックスの容量を各ブロック内に渡り合計した総和がほぼ均等になるようにキーワードを該ブロックに割り付け、前記ブロックに対応するインデックスを格納する割り付け手段と、
文書の登録時に、前記ブロックに追加または更新が発生したインデックスの個数が所定数以上か否か判定する手段と、判定結果が所定数以上のとき該ブロックを二次記憶装置から主記憶上へ読み込み、該ブロック内のインデックスに対応するキーワードについてインデックスの追加処理を主記憶上で行い、追加処理された該ブロックを二次記憶装置へ格納する手段と、所定数未満のとき該インデックスを二次記憶装置から主記憶上へ読み込み、該インデックスに対応するキーワードについて、インデックスの追加処理を主記憶上で行い、追加処理された該インデックスを二次記憶装置へ格納する手段を備えることを特徴とした文書検索装置。
【請求項４】
請求項３に記載の文書検索装置において、
前記割り付け手段は、ブロックに割り付けられたキーワードについて、インデックスが作成される全ての文書の内、該キーワードの出現文書数を算出し、各キーワード毎に算出した出現文書数の総和をブロック毎に算出し、各ブロックにおける出現文書数の総和が各ブロックにおいてほぼ均等になるようにキーワードのブロック割り付けを行うことを特徴とした文書検索装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、インデックスを使用した文書検索方法及び装置に係り、データベース、文書ファイリングシステムおよびＤＴＰ（Ｄｅｓｋ  Ｔｏｐ  Ｐｕｂｌｉｓｈｉｎｇ）システムなどに適用されるものである。
【０００２】
【従来の技術】
情報処理システムでは、データベースに格納されている文字列データの集まりからなる文書の中から、検索者の探したいある特定の言葉、すなわち質問語、を含む全ての文書を探し出すことが一つの重要な処理となっている。
このような文書を検索するための方法として、インデックスを使用したインデックス検索方式が良く知られている。この方式は“情報検索”（中原著、電子通信情報学会出版、１９７４）ｐｐ．２０３−２０７（以下、公知例１と呼ぶ）や“ＤＯＣＵＭＥＮＴ  ＤＡＴＡＢＡＳＥ”（Ｇ．Ｊａｍｅｓ著、Ｖａｎ  Ｎｏｓｔｒａｎｄ  Ｒｅｉｎｈｏｌｄ  Ｃｏ．、１９８５）ｐｐ．８７−９４に具体的に記載されている。
ここで取り上げられているインデックスは、キーワードが出現する文書の文書番号で構成されている。これらのインデックス検索方式では、質問語と一致するキーワードのインデックスを参照するだけで、そのキーワードを含む文書が分かるため高速な検索が可能である。
【０００３】
上記公知例１に記載されているインデックスの例を図２に示す。インデックスは、文書から抽出されたキーワードに対応して、キーワード番号とキーワードが出現する文書の文書番号が格納される構成となっている。
本例では、キーワード“コア”、“ディスク”、“コンピュータ”および“ＩＲ”に対応するインデックスが作成され、磁気ディスク上のファイルに格納されていることを想定している。
検索の際には、質問語として“コア”、“ディスク”、“コンピュータ”および“ＩＲ”が指定されたときのみ、このインデックスの中のそれぞれのキーワードが出現する文書の文書番号がインデックスが格納されているファイル（以後、インデックスファイルと呼ぶ）から読み出される。
すなわち、質問語が“コア”の場合には文書番号１，４，質問語が“ディスク”の場合には文書番号４、質問語が“コンピュータ”の場合には文書番号１，２，４，質問語が“ＩＲ”の場合には文書番号２のように検索結果として文書番号が出力される。
新たな文書をデータベースへ登録する際には、その文書に出現したキーワードが抽出され、このキーワードが出現した文書の文書番号が、そのキーワードに対応するインデックスに追加登録される。
このように文書からキーワードを抽出する技術は、“自動索引付け研究の動向”（諸橋著、情報処理学会誌、Ｖｏｌ．２５、Ｎｏ．９、１９８４）や“ＤＯＣＵＭＥＮＴ  ＤＡＴＡＢＡＳＥ”（Ｇ．Ｊａｍｅｓ、Ｖａｎ  Ｎｏｓｔｒａｎｄ  Ｒｅｉｎｈｏｌｄ  Ｃｏ．、１９８５）ｐｐ．８７−９４に記載されている。
これらのキーワード抽出技術を用いて抽出されたキーワードに対応するインデックスの追加処理例を図３に示す。
本例では、登録対象の文書の文書番号は５であり、この文書から“コア”、“コンピュータ”および“ＩＲ”が抽出されたことを想定する。このインデックスでは“コア”、“コンピュータ”および“ＩＲ”に対応するインデックスにそれぞれ文書番号５が追加されている。このようにして、抽出されたキーワードに対応するインデックスの追加処理が行われることにより、文書の登録処理が実現される。
【０００４】
【発明が解決しようとする課題】
“情報検索”（中原著、電子通信情報学会出版、１９７４）ｐｐ．１２０−１２８によれば、インデックスが格納される記憶装置としては、ランダムアクセスを行うことができ、大容量で安価な磁気ディスクなどの二次記憶装置の使用が一般的とされている。
磁気ディスクに格納されているインデックスの追加処理では、追加の対象となったキーワードに対応するインデックスが独立にアクセスされる。すなわち、インデックスの追加処理は、磁気ディスク上の複数のインデックスが飛び飛びにアクセス（以下、ランダムアクセスと呼ぶ）されることになる。
ワークステーションの一般的なオペレーティングシステムにおいては、磁気ディスクへのアクセスが論理ブロックと呼ばれる単位で行われる。ここでは論理ブロックのサイズとして、上記オペレーティングシステムで使われている８、１９２バイト（以後、８ＫＢと省略する）を想定する。
ただし、磁気ディスクへの書き込みは、８ＫＢ単位で行われない場合もある。例えば、インデックスの追加処理で書き込む文書番号のサイズを一文書番号当たり４バイトと想定すると、一文書を登録する場合には論理ブロックより少ない８ＫＢ未満のデータの書き込みとなる。このような場合、上記オペレーティングシステムでは、書き込み対象となっている論理ブロックを磁気ディスクから上記オペレーティングシステムの主記憶上のバッファエリアに一旦読み込む。次に、書き込む対象のデータをバッファエリア内の論理ブロックの所定の場所に書き込むことにより論理ブロックを更新する。その後で、この論理ブロックを再び磁気ディスクに書き込む。このようにして、論理ブロックより少ないデータの磁気ディスクへの書き込みを実現している。
【０００５】
このときの磁気ディスクの動作の一例を図４を用いて説明する。
まず、磁気ディスクのヘッドを、読み出し対象の論理ブロックの先頭位置に位置決めするためのヘッドのシーク処理と回転待ち処理が行われ、次に読み出し対象となる論理ブロックの読み出し処理が行われる。
その後、前記論理ブロックの更新（文書番号の追加処理）が行われ、再び磁気ディスクのヘッドを読み出し対象となった論理ブロックの位置に位置決めするためのヘッドのシーク処理と回転待ち処理が行われ、その後、論理ブロックの磁気ディスクへの書き込み処理が行われる。
【０００６】
本図の各処理時間の値は一般的な３．５インチの磁気ディスクのものであり、平均的なシーク時間（以後、平均シーク時間と呼ぶ）としては約１４ｍｓ、平均的な回転待ち時間（以後、平均回転待ち時間と呼ぶ）としては約１７ｍｓ、一論理ブロック当たりの読み出し時間および書き込み時間としては約４ｍｓを想定している。また、バッファエリア上の論理ブロックに４バイトの文書番号を書き込む時間としては０．００１ｍｓを想定している。
本例では、論理ブロックより少ないデータの磁気ディスクへの書き込み処理に合計７０ｍｓ掛かる。本図のタイムチャートより磁気ディスクからの読み出し処理および書き込み処理に費やされる時間が８ｍｓであるのに対して、ヘッドを位置決めするためのシーク処理および回転待ち処理に費される時間は６２ｍｓと８倍程度長く掛かっていることが分かる。
すなわち、磁気ディスクへの読み出しや書き込みの処理速度は２ＭＢ／ｓなのに対し、シーク処理や回転待ち処理の時間を含めた全体の実効的な処理速度は約０．１３ＭＢ／ｓとなり、磁気ディスクの読み出しおよび書き込み性能が引き出せない状況となっている。
【０００７】
このため、文書の登録時に行われるインデックスの追加処理において、追加処理が発生したキーワードの個数分磁気ディスクのランダムアクセスが発生することにより磁気ディスクの実効的な処理速度が低下し、インデックスの追加に時間が掛かることになる。つまり、インデックスを用いた文書検索方式では、文書の登録に時間が掛かるという問題がある。
本発明の目的は、登録時に行われるインデックスの追加処理を高速化し、登録時間を短縮することにある。
【０００８】
【課題を解決するための手段】
上記課題を解決するため、本発明は、
文書からキーワードを抽出し、これに基づいてインデックスを作成し、検索時に質問語と一致したキーワードに対応するインデックスを参照して検索を行う文書検索方法において、前記インデックスを二次記憶装置上のファイルに格納するとともに、該ファイルを所定数のブロックに分割しておき、各ブロックに格納されるインデックスのサイズがほぼ均等になるようにキーワードを該ブロックに割り付け、文書の登録時に、前記ブロックに追加または更新が発生したインデックスの個数が所定数以上の場合には、該ブロックを二次記憶装置から主記憶上へ読み込むとともに、該ブロック内のインデックスに対応するキーワードについて、インデックスの追加処理を主記憶上で行い、追加処理された該ブロックを二次記憶装置へ格納し、所定数未満の場合には、該インデックスを二次記憶装置から主記憶上へ読み込むとともに、該インデックスに対応するキーワードについて、インデックスの追加処理を主記憶上で行い、追加処理された該インデックスを二次記憶装置へ格納するようにしている。
また、キーワードのブロック割り付けに際して、ブロックに割り付けられたキーワードについて、インデックスが作成される全ての文書の内、該キーワードの出現文書数を算出し、各キーワード毎に算出した出現文書数の総和をブロック毎に算出し、各ブロックにおける出現文書数の総和が各ブロックにおいてほぼ均等になるようにキーワードのブロック割り付けを行うようにしている。
さらに、文書からキーワードを抽出し、これに基づいてインデックスを作成し、検索時に質問語と一致したキーワードに対応するインデックスを参照して検索を行う文書検索装置において、前記インデックスを二次記憶装置上のファイルに格納するとともに、該ファイルを所定数のブロックに分割する手段と、各ブロックに格納されるインデックスのサイズがほぼ均等になるようにキーワードを該ブロックに割り付ける割り付け手段と、文書の登録時に、前記ブロックに追加または更新が発生したインデックスの個数が所定数以上か否か判定する手段と、判定結果が所定数以上のとき該ブロックを二次記憶装置から主記憶上へ読み込み、該ブロック内のインデックスに対応するキーワードについてインデックスの追加処理を主記憶上で行い、追加処理された該ブロックを二次記憶装置へ格納する手段と、所定数未満のとき該インデックスを二次記憶装置から主記憶上へ読み込み、該インデックスに対応するキーワードについて、インデックスの追加処理を主記憶上で行い、追加処理された該インデックスを二次記憶装置へ格納する手段を備えるようにしている。
また、前記割り付け手段は、ブロックに割り付けられたキーワードについて、インデックスが作成される全ての文書の内、該キーワードの出現文書数を算出し、各キーワード毎に算出した出現文書数の総和をブロック毎に算出し、各ブロックにおける出現文書数の総和が各ブロックにおいてほぼ均等になるようにキーワードのブロック割り付けを行うようにしている。
【０００９】
【作用】
上記手段により、全ての文書からキーワードを抽出し、二次記憶装置上の所定数のブロックの各ブロックのインデックスサイズがほぼ均等になるように、キーワードをブロックに割り付けることができ、文書の登録時に、インデックスを格納するブロック毎に、該当する抽出キーワードが所定数以上の場合には、そのブロックを磁気ディスクからメモリ上に読み込むとともに該当する抽出キーワードに対するインデックスの追加処理メモリ上で一括して行い、これを磁気ディスクへ書き込むことにより、磁気ディスクへのアクセス回数を低減し、所定数未満の場合には該当する抽出キーワードに対応するインデックスのみメモリ上に読み込むとともにそのインデックスの追加処理を行い、これを磁気ディスクへ書き込むことにより、磁気ディスクへのアクセスデータ量を最小化することができるため、非常に高速なインデックス追加処理が可能となり、文書データベースへの高速な登録処理を実現することができる。
【００１０】
【実施例】
まず、本発明の原理を以下に説明する。
初期設定として、インデックスを格納するインデックスファイルのエリアとして所定サイズ分を磁気ディスク上に確保するとともに、これを所定数のブロック（論理ブロックではない）に分割する。次に、各ブロックに格納されるインデックスの容量（インデックスのサイズ）の総和がほぼ均等になるように、インデックスに対応するキーワードを各ブロックに割り付ける。
文書の登録時には、まず、登録文書からキーワードを抽出し、そのキーワードとそれが出現した文書の文書番号を主記憶へ格納する。
次に上記ブロック毎に、そこに割り付けられているキーワードが、いくつ抽出されているかを調べる。
所定数未満の場合には、従来と同様に、各ブロック毎に抽出されたキーワードに対応するインデックスを磁気ディスクから主記憶へ読み込む。次に、主記憶に読み込まれているインデックスの末尾に、そのキーワードが出現した文書の文書番号を追加し、磁気ディスクに再び格納する。
所定数以上の場合には、まず、該当ブロックを磁気ディスクから主記憶へ読み込む。次に、抽出されたキーワードの中で該ブロックに割り付けられているものについてのみ、主記憶に読み込まれている該ブロック内の該キーワードに対応するインデックスの末尾に、そのキーワードが出現した文書の文書番号を追加する。その後、このブロックを磁気ディスクに再び格納する。
この一連の処理を、抽出されたキーワードが割り付けられている全てのブロックに対して行うことにより、登録文書から抽出されたキーワードのインデックスへの追加処理を行う。
【００１１】
以上のように、抽出されたキーワードが所定数以上含まれるブロックに関しては、磁気ディスク上のブロックを１度だけ主記憶に読み込み、新たなキーワードに対する追加処理を行った後に、これを磁気ディスクに書き込むだけで複数のインデックスの追加処理を実現できるため、従来のようにキーワード毎に磁気ディスクから該当するインデックスを読み込み、そのキーワードに対する追加処理を行った後に、これを磁気ディスクへ書き込む場合に比べ大幅にインデックスの追加処理に掛かる時間を削減することができる。
【００１２】
以上説明した原理を、さらに具体例を用いて説明する。
本例で用いるインデックスファイルの例を図５に示す。
本インデックスファイルは、図２に示すインデックスファイルをブロック１とブロック２の二つに分割し、磁気ディスクに格納したものである。さらに、ブロックに含まれるインデックスのサイズの総和がほぼ均等になるように、ブロック１にはキーワード“コア”、“ディスク”および“ＩＲ”を、ブロック２にはキーワード“コンピュータ”を割り付け、対応するブロックにインデックスを格納している。
【００１３】
このインデックスは、検索の際には、ブロックを意識することなく従来と同様に検索処理が行われる。質問語として“コア”、“ディスク”、“コンピュータ”および“ＩＲ”が指定されたときのみ、それぞれのキーワードが出現する文書の文書番号がインデックスファイルから読み出される。
すなわち、質問語が“コア”の場合には文書番号１，４，質問語が“ディスク”の場合には文書番号４、質問語が“コンピュータ”の場合には文書番号１，２，４，質問語が“ＩＲ”の場合には文書番号２のように検索結果として文書番号が出力される。
【００１４】
新たな文書をデータベースへ登録する際には、図６に示すように上記ブロックを意識した処理を行う。以下、詳細にその手順を説明する。
まず、登録対象の文書からキーワードとして、“コア”、“ディスク”および“ＩＲ”が抽出されたものとし、さらにこの文書の文書番号として文書番号５を想定する。
抽出されたキーワードのブロックの割り付けとしては、ブロック１にはキーワード“コア”、“ディスク”および“ＩＲ”が、ブロック２には“コンピュータ”が割り付けられている。これらのキーワードの中で文書５から抽出されたキーワードとしては、ブロック１にキーワード“コア”、“ディスク”および“ＩＲ”の三つが該当する。
このため、まず、ブロック１を主記憶上に読み込む。次にブロック１に格納されているキーワード“コア”、“ディスク”および“ＩＲ”に対応するインデックスの末尾にこれらのキーワードが出現する文書の文書番号である５をそれぞれ追加する。その後、主記憶上に格納されているブロック１を磁気ディスク上のインデックスファイルに書き込む。
ブロック２についてはこの中に割り付けられたキーワードに該当するものが文書５から抽出されていないためインデックスの追加処理は行わない。このようにして、文書の登録処理が行われる。
【００１５】
上記ブロック１のインデックス追加処理のタイムチャートを図７に示す。
本例では、磁気ディスクとして一般的な３．５インチの磁気ディスクを使用し、論理ブロックのサイズとしてワークステーションの一般的なオペレーティングシステムで使われている８ＫＢを使用し、インデックスを格納するブロックのサイズとして８論理ブロックを使用すること想定する。
また、磁気ディスクのシーク時間および回転待ち時間としては、平均シーク時間および平均回転待ち時間を想定する。さらに、磁気ディスクにおける平均シーク時間、平均回転待ち時間、一論理ブロックの読み出し時間および一論理ブロックの書き込み時間には、それぞれ、約１４ｍｓ、約１７ｍｓ、約４ｍｓおよび約４ｍｓを想定する。上記の値を用いて、本図のタイムチャートの流れを説明する。
本例では、まず、ブロック１をバッファエリアへ読み出すときに磁気ディスクへのアクセスが発生し、シーク処理と回転待ち処理により磁気ディスクのヘッドがブロック１の先頭に位置決めされる。この間、平均シーク時間１４ｍｓと平均回転待ち時間１７ｍｓが費やされる。
次に、ブロック１を構成する論理ブロック、この場合八つの論理ブロックとする、がバッファエリアに読み込まれる。この際、１論理ブロック分の読み出し時間の８倍の３２ｍｓが費やされる。
ここで、バッファエリアに読み出されたブロック１に格納されているキーワード“コア”、“ディスク”および“ＩＲ”に対応するインデックスの末尾にこれらのキーワードが出現する文書の文書番号である５がそれぞれ追加される。したがって、ブロック１に３回の文書番号の追加が発生する。このときのバッファエリア上の一つのインデックスに４バイトの文書番号を書き込む時間として０．００１ｍｓを想定する。ここでは、３回の文書番号の追加が発生するため３倍の０．００３ｍｓを要するが、他の処理時間に比べ無視できるほど小さい。
その後、インデックスの追加処理が行われたブロック１を、磁気ディスクに書き込む。このとき、シーク処理と回転待ち処理により磁気ディスクのヘッドが所定の位置に位置決めされる。その間、平均シーク時間１４ｍｓと平均回転待ち時間１７ｍｓが費やされる。この後に、ブロック１を構成する八つの論理ブロックが磁気ディスクに書き込まれ、１ブロック分の書き込み時間の８倍の３２ｍｓが費やされる。
以上の処理により、本例のインデックスの追加に合計１２６ｍｓが費やされることになる。これは、一キーワード当たり平均４２ｍｓとなる。
従来のように、キーワード毎に磁気ディスク上のインデックスへの追加処理を行ったときには、前述した図４のように、一キーワード当たり７０ｍｓ掛かったものが、本発明のようにブロック単位にまとめてインデックスの追加処理を行うことにより４０％程度文書の登録時間を短縮することが可能となる。
一般の文書を登録する際には、登録キーワードの個数が本例の数十倍にもなるため、本発明のブロック単位でのインデックスの追加処理の効果は更に大きくなる。
【００１６】
以上説明したように、本発明によれば、所定数以上の追加登録キーワードが含まれるブロックにおけるインデックスの追加処理を一括して行うことにより、磁気ディスク上のブロックを１度主記憶に読み込むだけで複数のインデックスの追加処理が実行できるため、文書データベースへの高速な登録処理を実現することができる。
【００１７】
以下、本発明の実施例を説明する。
本発明が適用された文書検索システムの構成について図１を用いて説明する。
本システムは、ディスプレイ１０１、キーボード１０２、ＣＰＵ１０３、メモリ１０４、磁気ディスク１０５およびフロッピーディスクドライブ（ＦＤＤ）１０６から構成される。
ディスプレイ１０１、キーボード１０２、メモリ１０４、磁気ディスク１０５およびＦＤＤ１０６は、ＣＰＵ１０３よりバスを介してアクセスされる。磁気ディスク１０５には、インデックスファイル８０００が格納される。
メモリ１０４には、システム制御プログラム５０００、検索インタフェースプログラム６０００、登録制御プログラム２０００、検索制御プログラム３０００、キーワード割り付けプログラム２１００、インデックス作成登録プログラム２２００およびインデックス検索プログラム３１００がロードされ、ワークエリア４０００が確保される。
本文書検索システムの文書データベースに登録される文書は、フロッピーディスク１０７に格納され、ＦＤＤ１０６を介してＣＰＵ１０３よりアクセスされる。
【００１８】
本システムでは、電源投入時ＣＰＵ１０３によりシステム制御プログラム５０００が起動され、システム制御プログラム５０００の制御のもとに登録制御プログラム２０００および検索制御プログラム３０００が起動される。
まず、このような構成の本システムにおける文書の登録処理の概略について説明する。
ユーザがキーボード１０２から入力した指示に従って、システム制御プログラム５０００が登録制御プログラム２０００を起動する。
登録制御プログラム２０００では、最初、文書を登録する前に、ユーザがキーボード１０２から入力した指示に従い、キーワード割り付けプログラム２１００を起動し、インデックスファイルの初期設定を行う。
まず、ユーザがキーボード１０２から入力した指示に従い、インデックスを格納するインデックスファイル８０００を所定ブロック数分磁気ディスク１０５上に確保するとともに、これを指定された数のブロックに分割する。
そして、各ブロックにキーワードを割り付けるための所定数の文書（以後、種文書と呼ぶ）がＦＤＤ１０６を介してフロッピーディスク１０７からメモリ１０４のワークエリア４０００に読み込まれる。種文書としては、例えば１０万件の新聞記事ＤＢを作成する場合には、同じ種類の文書、すなわち新聞記事を数百件〜数千件程度登録する。
次に、ワークエリア４０００に読み込まれた種文書から検索に必要な言葉をキーワードとして抽出し、そのキーワードの出現文書数を算出する。
このキーワードの出現文書数の総和が、各ブロック間でほぼ均等になるようにキーワードを各ブロックに割り付ける。その後、登録制御プログラム２０００では、インデックス作成登録プログラム２２００を起動する。
【００１９】
インデックス作成登録プログラム２２００では、ユーザがキーボード１０２から入力した指示に従い、フロッピーディスク１０７に格納された登録対象の文書を、ＦＤＤ１０６を介してメモリ１０４のワークエリア４０００に読み込む。
この登録文書から検索に必要な言葉がキーワードとして抽出され、インデックスファイル８０００の該当ブロックにキーワードと文書番号、あるいは文書番号が登録される。
【００２０】
次に、本システムにおける文書の検索動作の概略について説明する。ユーザがキーボード１０２から入力した指示に従い、システム制御プログラム５０００は検索制御プログラム３０００と検索インタフェースプログラム６０００を起動する。
その後、ユーザがキーボード１０２から入力した質問語は、検索インタフェースプログラム６０００に入力され、検索制御プログラム３０００に送られる。
検索制御プログラム３０００では、インデックス検索プログラム３１００を起動するとともに本プログラムへ前記質問語を送る。
インデックス検索プログラム３１００では、受け取った質問語に対応するインデックスから文書番号を読み出し、検索結果として検索制御プログラム３０００へ送出する。
本検索結果は、検索インタフェースプログラム６０００へと送られ、検索結果文書番号としてディスプレイ１０１に表示される。
【００２１】
次に、キーワード割り付けプログラム２１００の構成とキーワード割り付け処理について図８を用いて説明する。
キーワード割り付けプログラム２１００は、インデックス分割ステップ２１０５、種文書数分繰返しステップ２１１０、種文書読み込みステップ２１２０、キーワード抽出ステップ２１３０、出現文書数カウントステップ２１４０およびキーワード割り付けステップ２１５０から構成される。
まず、インデックス分割ステップ２１０５では、ユーザから指定されたブロック数をキーボード１０２から読み込む。次にインデックスファイル８０００として、指定のブロック数分のエリアを確保するとともに、これを指定ブロック数に均等分割する。
次に、種文書読み込みステップ２１２０では、ＦＤＤ１０６を介して種文書を１文書分読み込みワークエリア４０００に格納する。
さらに、キーワード抽出ステップ２１３０では、読み込まれた種文書からキーワードとなる言葉を抽出し、この抽出されたキーワードをワークエリア４０００に格納する。
この文書からキーワードを抽出する技術は、日本語文書については“自動索引付け研究の動向”（諸橋著、情報処理学会誌、Ｖｏｌ.２５、Ｎｏ.９、１９８４）に記載されており、英語文書については“ＤＯＣＵＭＥＮＴ  ＤＡＴＡＢＡＳＥ”（Ｇ．Ｊａｍｅｓ、Ｖａｎ  Ｎｏｓｔｒａｎｄ  Ｒｅｉｎｈｏｌｄ  Ｃｏ．、１９８５）ｐｐ．８７−９４に記載されている。本実施例では、これらのキーワード抽出技術をそのまま利用する。
出現文書数カウントステップ２１４０では、抽出されたキーワードが出現する文書数をカウントし、キーワードに対応させて、ワークエリア４０００に格納する。
種文書数分繰返しステップ２１１０では、全ての種文書についてステップ２１２０からステップ２１４０までの一連の処理を繰り返す。
全ての種文書が処理された後、キーワード割り付けステップ２１５０では、出現文書数の総和がほぼ均等になるように、抽出したキーワードを各ブロックに割り付け、そのブロック番号をキーワードに対応する形でワークエリア４０００に格納する。
【００２２】
このように、種文書から抽出したキーワードの出現文書数を算出することにより、文書データベースのインデックスサイズが予測できる。つまり、種文書から抽出したキーワードに対応するインデックスのサイズは、種文書から抽出したキーワードの出現文書数と文書番号サイズの積により算出でき、これに文書データベースの登録件数と種文書数（サンプリングされた種文書数である）の比を掛けることにより、文書データベースにおけるインデックスサイズが予測できるからである。
また、文書データベースに登録する文書数が増加しブロックに割り付けられた全てのインデックスのサイズの総和が、ブロック間でほぼ均等でなくなった場合には、この文書データベースに登録した全ての文書の中から種文書の候補を乱数抽出などの手法を使い、全文書数の数％程度抽出する。この種文書を基に、再度、ブロックへのキーワードの割り付けを行う。
このキーワードの割り付けに基づき、文書データベースに登録されている全ての文書を再登録することにより、ブロックに割り付けたインデックスのサイズの総和をブロック間でほぼ均等にすることが可能となる。
他の方法として、ブロックに割り付けられているインデックスのサイズの和が他のブロックに比べ多いブロックについて、これに割り付けられているキーワードを、サイズの小さいブロックに割り付け直すことにより、インデックスのサイズの和をブロック間でほぼ均等にすることも可能である。
ブロックへキーワードを割り付ける際の指標として、キーワードの文書出現数の他に、キーワードそのものの出現数を使用したり、キーワードの種類数を使用することも可能である。
以上の処理を行うことにより、全ての種文書からキーワードを抽出し、各ブロックのインデックスサイズがほぼ均等になるように、キーワードをブロックに割り付けることができる。
【００２３】
さらに、上記キーワード割り付けステップ２１５０におけるキーワード割り付け処理について、図９を用いて詳細に説明する。
キーワード割り付けステップ２１５０は、抽出キーワードソートステップ２１５２、ブロック番号初期設定ステップ２１５３、抽出キーワード繰返しステップ２１５４、ブロック繰返しステップ２１５５、ブロックサイズ判定ステップ２１５６、キーワード設定ステップ２１５７、ブロック番号カウントステップ２１５８およびジャンプステップ２１５９から構成されている。
まず、抽出キーワードソートステップ２１５２で、ワークエリア４０００に格納されている抽出キーワードを、抽出キーワードに対応して格納されている抽出キーワードの出現文書数を降順にソートする。
次に、ブロック番号初期設定ステップ２１５３では、最初に処理するブロック番号として最初のブロック番号である１を設定する。
さらに、ブロックサイズ判定ステップ２１５６では、抽出キーワードをブロックに割り付ける場合を想定し、本ブロックに割り付けられるインデックスのサイズの和を算出し、所定のブロックサイズを越えるかどうか判定する。
越えない場合のみ、まず、キーワード設定ステップ２１５７を実行し、本ブロックに抽出キーワードを割り付ける。
次に、ブロック番号カウントステップ２１５８を実行し、処理対象となっているブロックのブロック番号に１を加え、次に処理するブロックのブロック番号を設定する。
このカウントアップにおいて、ブロック番号が最終番号までカウントアップされた場合には、最初のブロック番号の１に戻ることにする。
さらに、ジャンプステップ２１５９によりブロック繰返しステップ２１５５における繰返し処理を打ち切り、Ｌ１以降のステップを実行する。ここでは、抽出キーワード繰返しステップ２１５４を実行する。
ブロック繰返しステップ２１５５では、ステップ２１５６からステップ２１５９までの処理をブロック番号から順に全てのブロックについて繰返し行う。
抽出キーワード繰返しステップ２１５４では、ステップ２１５５からステップ２１５９までの処理を、全ての抽出キーワードについて繰返し行う。
以上の一連の処理により、出現文書数の最も多い抽出キーワードから順に、各ブロックへ割り付けることができるため、各ブロックにインデックスサイズをほぼ均等に割り付けることが可能となる。
【００２４】
次に、インデックス作成登録プログラム２２００の構成と文書登録処理について図１０を用いて説明する。
インデックス作成登録プログラム２２００は、文書番号取得ステップ２２０５、文書数分繰返しステップ２２１０、登録文書数読み込みステップ２２２０、キーワード抽出ステップ２２３０、ブロック番号対応ステップ２２４０、文書番号カウントステップ２２４５、ブロック数分繰返しステップ２２５０、抽出キーワード数判定ステップ２２６０、ブロック単位インデックス追加ステップ２２７０、キーワード数分繰返しステップ２２８０およびキーワード単位インデックス追加ステップ２２９０から構成される。
まず、文書番号取得ステップ２２０５では、ユーザがキーボード１０２から入力した登録文書の最初の文書番号と登録文書数を読み込む。
次に、登録文書読み込みステップ２２２０で、登録対象の文書をＦＤＤ１０６を介して、１文書分読み込みワークエリア４０００に格納する。
その後、キーワード抽出ステップ２２３０で、キーワード割り付けプログラム２１００におけるキーワード抽出ステップ２１３０と同様に、読み込まれた登録文書からキーワードとなる言葉を抽出する。この抽出キーワードをワークエリア４０００に格納する。
ブロック番号対応ステップ２２４０では、キーワード割り付けステップ２１５０でキーワードに対応する形でワークエリア４０００に格納したブロック番号を調べることにより、抽出キーワードが割り付けられたブロックのブロック番号を取得し、そのブロック番号を抽出キーワードに対応させ、ワークエリア４０００に格納する。もし、抽出キーワードがどのブロックにも割り付けられていない場合には、格納されているインデックスのサイズの和が最も小さいブロックにそのキーワードを割り付け、このブロック番号を抽出キーワードに対応した形でワークエリア４０００に格納する。
その後、文書番号カウントステップ２２４５で、文書番号をインクリメントし、次の登録文書の処理に備える。
文書数分繰返しステップ２２１０では、登録文書数回分、ステップ２２２０からステップ２２４５のキーワード抽出処理を繰り返す。
その後、抽出キーワード数判定ステップ２２６０では、最初のブロック番号であるブロック１について、抽出されたキーワードのうちブロック１に割り付けられている数をカウントし、所定数Ｎ以上か否かを調べる。
この所定数Ｎは、使用磁気ディスク、使用計算機等の性能等を考慮して最適となる値をユーザが指定する。
カウント数が所定数Ｎ以上であれば、次のブロック単位インデックス追加処理２２７０を実行する。ブロック単位インデックス追加処理２２７０では、ブロック１をワークエリア４０００に読み込み、ブロック１に割り付けられている全ての抽出キーワードについて一括してインデックスの追加処理を行う。
所定数Ｎに達しない場合は、キーワード単位インデックス追加ステップ２２９０を実行する。キーワード単位インデックス追加ステップ２２９０では、インデックスファイル８０００に格納されているブロック１の中に存在する上記抽出キーワードに対応するインデックスのみをワークエリア４０００に読み込み、そのインデックスに対応する抽出キーワードが出現する文書の文書番号を上記インデックスに追加するとともに再びインデックスファイル８０００に書き込む。
さらに、キーワード数分繰返しステップ２２８０では、抽出キーワードの中でブロック１に割り付けられているもの全てについてインデックスの追加処理が終了するまで、キーワード単位インデックス追加ステップ２２９０を繰返し実行する。
ブロック数分繰返しステップ２２５０では、全てのブロックについてステップ２２６０からステップ２２９０を繰返し実行し、インデックスの追加処理を行う。
本実施例では、このようにして新たな文書の追加登録を実現する。
【００２５】
さらに、前述のブロック単位インデックス追加処理ステップ２２７０について、図１１を用いて詳細に説明する。
ブロック単位インデックス追加処理ステップ２２７０は、ブロック読み出しステップ２２７２、キーワード数繰返しステップ２２７４、ブロック内インデックス追加ステップ２２７６およびブロック格納ステップ２２７８から構成される。
まず、ブロック読み出しステップ２２７２で、前記ブロック数分繰返しステップ２２５０により指定されたブロックを、インデックスファイル８０００から読み出し、ワークエリア４０００に格納する。
次に、ブロック内インデックス追加ステップ２２７６では、抽出キーワードの中で前記ブロック読み出しステップ２２７２でワークエリア４０００に読み出された更新対象ブロックに割り付けられているキーワードに対応するインデックスの末尾に、該当キーワードが出現した文書の文書番号を追加する。
さらに、キーワード数繰返しステップ２２７４では、上記読み出されたブロックにおける該当キーワードの全てについてステップ２２７６のインデックス追加処理を繰返し行う。
その後、ブロック格納ステップ２２７８では、インデックス追加処理が終了した上記ブロックを再びインデックスファイル８０００に格納する。
以上のように、ブロック単位インデックス追加処理ステップ２２７０では、ブロック単位にインデックスの追加処理を行う。
このように、ブロック単位に一括してキーワードのインデックス追加処理を行うことにより、追加キーワード数が多い場合でも、短時間にインデックスの追加処理を行うことができる。
【００２６】
上述のキーワード割り付けプログラム２１００でワークエリアに格納するキーワードに関する情報の格納例について図１２を用いて説明する。
キーワード抽出ステップ２１３０では、種文書からキーワードとなる言葉が抽出されるとともにワークエリア４０００に格納される。本図に示すように、キーワードに対応してそのキーワード番号を一緒に格納している。
本例では、抽出されたキーワードとして“コア”、“ディスク”、“コンピュータ”および“ＩＲ”が種文書から抽出されたことを想定している。
本ステップでは、これらの抽出キーワードの抽出された順番にシリアルな番号をそのキーワード番号として割り振り、本例のような形でワークエリア４０００に格納する。本例では、キーワード“コア”、“ディスク”、“コンピュータ”および“ＩＲ”にはキーワード番号として、それぞれ１、２、３および４が割り振られている。
次に、出現文書数カウントステップ２１４０で、キーワード毎に種文書における文書出現数がカウントされる。このとき、本図に示すようにキーワードに対応した形で出現文書数を格納する。本例では、キーワード“コア”、“ディスク”、“コンピュータ”および“ＩＲ”における出現文書数は、それぞれ２、１、３および２となっている。
その後、キーワード割り付けステップ２１５０で、上記出現文書数をもとに、インデックスを格納するブロックへのキーワードの割り付けが行われる。ここで割り付けられたブロック番号を、本図に示すようにキーワードに対応付け、ワークエリア４０００に格納する。
本例では、キーワード“コア”、“ディスク”、“コンピュータ”および“ＩＲ”が割り付けられたブロックのブロック番号は、それぞれ１、１、２および１となっている。
このような形式で、キーワードに関する情報をワークエリア４０００に格納することにより、種文書から抽出されたキーワードに関する情報を管理することができるため、ブロックへのキーワード割り付け処理が実現できる。
【００２７】
上述のインデックス作成登録プログラム２２００でワークエリアに格納するキーワードに関する情報の格納例について図１３を用いて説明する。本例では、文書番号５の登録文書からキーワードとして“コア”、“ディスク”および“ＩＲ”が抽出されたことを想定している。
キーワード抽出ステップ２２３０では、登録文書からキーワードとなる言葉が抽出されるとともにワークエリア４０００に格納される。このとき、図１２に示すキーワード情報から、抽出キーワードに対応するキーワード番号と割り付けられたブロックのブロック番号を取得する。このとき、本図に示すように、キーワードに対応して、取得した割り付けブロックの番号とその出現文書である登録文書の番号を格納する。
本例では、キーワード“コア”、“ディスク”、“コンピュータ”および“ＩＲ”には、キーワード番号として、それぞれ１、２、３および４を格納し、割り付けブロック番号と登録文書番号としては、それぞれブロック番号１と文書番号５を格納する。
この情報を基に、ステップ２２５０からステップ２２９０でインデックスの追加処理を行う。
このような形式で、キーワードに関する情報をワークエリア４０００に格納することにより、登録文書から抽出されたキーワードに関する情報を管理することができるため、これに対応するインデックスの追加処理が実現できる。
【００２８】
以上説明したように、本発明によれば、インデックスを格納するブロック毎に、該当する抽出キーワードが所定数以上の場合には、そのブロックを磁気ディスクからメモリ上に読み込むとともに該当する抽出キーワードに対するインデックスの追加処理メモリ上で一括して行い、これを磁気ディスクへ書き込むことにより、磁気ディスクへのアクセス回数を低減し、所定数未満の場合には該当する抽出キーワードに対応するインデックスのみメモリ上に読み込むとともにそのインデックスの追加処理を行い、これを磁気ディスクへ書き込むことにより、磁気ディスクへのアクセスデータ量を最小化することができるため、非常に高速なインデックス追加処理が可能となり、文書データベースへの高速な登録処理を実現することができる。
【００２９】
【発明の効果】
本発明によれば、複数のインデックスの追加処理をメモリ上で一括して実行することで、磁気ディスクへのアクセス回数を低減することができるため高速なインデックス追加処理が可能となり、文書データベースへの登録処理を高速に行うことが可能となる。
【図面の簡単な説明】
【図１】本発明が適用された文書検索システムの構成を示す図である。
【図２】インデックスの構成例を示す図である。
【図３】新たな文書に含まれるキーワードを追加した場合のインデックスの構成例を示す図である。
【図４】インデックス追加処理時のタイムチャートを示す図である。
【図５】ブロックに分割されたインデックスの構成例を示す図である。
【図６】新たな文書に含まれるキーワードを追加した場合のブロックに分割されたインデックスの構成例を示す図である。
【図７】論理ブロックの８回連続読み出し処理と８回連続書き込み処理を行った場合のインデックス追加処理時のタイムチャートを示す図である。
【図８】キーワード割り付けプログラム２１００の処理手順を示す図である。
【図９】キーワード割り付けステップ２１５０の処理手順を示す図である。
【図１０】インデックス作成登録プログラム２２００の処理手順を示す図である。
【図１１】ブロック単位のインデックス追加処理ステップ２２７０の処理手順を示す図である。
【図１２】キーワード管理デーブルの構成例を示す図である。
【図１３】ワークテーブルの構成例を示す図である。
【符号の説明】
１０１  ディスプレイ
１０２  キーボード
１０３  ＣＰＵ
１０４  メモリ
１０５  磁気ディスク
１０６  ＦＤＤ
１０７  フロッピーディスク
２０００  登録制御プログラム
３０００  検索制御プログラム
４０００  ワークエリア
５０００  システム制御プログラム
６０００  検索インタフェースプログラム
８０００  インデックスファイル
【図１】
0003578501.tif 000002
【図２】
0003578501.tif 000003
【図３】
0003578501.tif 000004
【図４】
0003578501.tif 000005
【図５】
0003578501.tif 000006
【図６】
0003578501.tif 000007
【図７】
0003578501.tif 000008
【図８】
0003578501.tif 000009
【図９】
0003578501.tif 000010
【図１０】
0003578501.tif 000011
【図１１】
0003578501.tif 000012
【図１２】
0003578501.tif 000013
【図１３】
0003578501.tif 000014