(57)【特許請求の範囲】
【請求項１】
文書中の文字の検索用インデックスを作成するインデックス作成装置であって、
第１の記憶領域と第２の記憶領域とで構成されたミニブロックの複数で構成されるデータベースブロックを、前記文書中の文字のうち同一の文字毎に保持する保持手段と、
前記文書中の文字が出現する文字位置を示す文字位置データを取得する取得手段と、
前記文書中の文字のうち同一の文字の前記文字位置データについて、最初の文字位置を示す最小文字位置データを、前記保持手段内の対応する前記データベースブロック内の第１のミニブロック中の第１の記憶領域に格納させる処理を行う第１の格納制御手段と、
前記最初の文字位置以降の文字位置に、対応する同一の文字が出現する毎に、当該出現の順序において隣り合う２つの同一の文字の文字位置データの差分値を、前記保持手段内の対応する前記データベースブロック内の第１のミニブロック中の第２の記憶領域に順次格納させる処理を行う第２の格納制御手段と
を備えることを特徴とするインデックス作成装置。
【請求項２】
前記第１のミニブロック中の第２の記憶領域中で前記差分値を格納していない領域の大きさが、前記差分値を格納する為に十分ではない場合には、
前記第１の格納制御手段は、前記保持手段内の前記データベースブロック内において前記第１のミニブロックとは異なる第２のミニブロック中の第１の記憶領域に、前記差分値に対応する前記隣り合う２つの同一の文字のうち、前記出現の順序において後方に位置する文字の文字位置データを格納させる処理を行い、
前記第２の格納制御手段は、前記出現の順序において後方に位置する文字の文字位置以降の文字位置に該文字と同一の文字が出現する毎に、当該出現の順序において隣り合う２つの同一の文字の文字位置データの差分値を前記第２のミニブロック中の第２の記憶領域に順次格納させる処理を行う
ことを特徴とする請求項１に記載のインデックス作成装置。
【請求項３】
請求項１又は２に記載のインデックス作成装置と、当該インデックス作成装置が作成したインデックスを用いた全文検索処理を行う全文検索エンジン部とで構成される検索システムであって、
前記全文検索エンジン部は、
検索語の入力を受け付ける入力手段と、
前記保持手段より、前記検索語を構成する各文字に対応する前記データベースブロックを取得する手段と、
取得された前記データベースブロックのうち前記検索語の最初に位置する第１の文字に対応する第１のデータベースブロックを用いて、当該第１の文字の第１の文字位置データを取得する手段と、
取得された前記データベースブロックのうち、前記検索語において前記第１の文字に後続する第２の文字に対応する第２のデータベースブロックを用いて、前記第２の文字のうち、前記第１の文字位置データに対応する文字位置以降の文字位置を有し、かつ、前記第１の文字位置データに対応する文字位置と所定の位置関係を有する文字位置を有する第２の文字について、第２の文字位置データを取得する手段と
を備えることを特徴とする検索システム。
【請求項４】
文書中の文字の検索用インデックスを作成するインデックス作成装置の制御方法であって、
第１の記憶領域と第２の記憶領域とで構成されたミニブロックの複数で構成されるデータベースブロックを、前記文書中の文字のうち同一の文字毎に保持手段内に保持する保持工程と、
前記文書中の文字が出現する文字位置を示す文字位置データを取得する取得工程と、
前記文書中の文字のうち同一の文字の前記文字位置データについて、最初の文字位置を示す最小文字位置データを、前記保持手段内の対応する前記データベースブロック内の第１のミニブロック中の第１の記憶領域に格納させる処理を行う第１の格納制御工程と、
前記最初の文字位置以降の文字位置に、対応する同一の文字が出現する毎に、当該出現の順序において隣り合う２つの同一の文字の文字位置データの差分値を、前記保持手段内の対応する前記データベースブロック内の第１のミニブロック中の第２の記憶領域に順次格納させる処理を行う第２の格納制御工程と
を備えることを特徴とするインデックス作成装置の制御方法。
【請求項５】
請求項１又は２に記載のインデックス作成装置と、当該インデックス作成装置が作成したインデックスを用いた全文検索処理を行う全文検索エンジン部とで構成される検索システムの制御方法であって、
前記全文検索エンジン部の制御方法は、
検索語の入力を受け付ける入力工程と、
前記保持手段より、前記検索語を構成する各文字に対応する前記データベースブロックを取得する工程と、
取得された前記データベースブロックのうち前記検索語の最初に位置する第１の文字に対応する第１のデータベースブロックを用いて、当該第１の文字の第１の文字位置データを取得する工程と、
取得された前記データベースブロックのうち、前記検索語において前記第１の文字に後続する第２の文字に対応する第２のデータベースブロックを用いて、前記第２の文字のうち、前記第１の文字位置データに対応する文字位置以降の文字位置を有し、かつ、前記第１の文字位置データに対応する文字位置と所定の位置関係を有する文字位置を有する第２の文字について、第２の文字位置データを取得する工程と
を備えることを特徴とする検索検索システムの制御方法。
【請求項６】
コンピュータに請求項４又は５に記載の制御方法を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータ情報処理における情報のインデックス作成及び検索に関し、特に、コンピュータ文字情報のインデックス作成及び検索を行なうための方法及びシステムに関する。
【０００２】
【従来の技術】
コンピュータテキスト情報の現在の全文検索では、文字リスト方法及び語リスト方法の２つのインデックス作成方法がある。文字リスト方法の場合、検索の単位として文書中の文字を使用することでインデックスを作成するため、大きな格納空間を必要とする。語リスト方法の場合、検索の単位として文書中の語を使用することでインデックスを作成するため、使用する格納空間は小さく、検索速度も改善されるが、インデックス作成速度は遅く、検索漏れの率が高くなる。
【０００３】
特開平８−２３５２１２号公報、８−１０１８４８号公報及び１０−３０７８４１号公報では、文字リスト方法を使用してインデックスを作成し、ファイルシステムにより文書のインデックス情報を格納する全文検索システムが開示されている。文字列中の各文字に対して、システムは、該当する文字の各文書中での位置を格納するために、対応のファイルを作成する。文字位置データの格納空間を節約するために、文字インデックスを作成する場合、システムは、各文字の第１出現位置を対応するインデックスファイルに格納する。その第１位置に基づいて、差分アルゴリズム（差分アルゴリズムの定義に関しては、本明細書の用語の説明を参照）により、第１位置に後続する各位置及び先行する位置を使用して差分値が形成され、第１位置の後ろに順次格納される。全文検索を実施する場合、インデックスファイルに格納された各文字の第１位置及びそれに続く第１差分値を使用して、第２位置が復元される。続いて、復元された第２位置及びそれに続く差分値を使用して、第３位置が復元される。この復元は、検索語の文字の一致位置が見つかるまで繰り返される。「の」などの頻繁に出現する文字に関して、遠く後方に離れた文字位置と照合する場合、文字の各位置を第１位置から照合対象位置まで１つずつ復元する必要がある。例えば、文字が、文書中に１０００回出現する場合、第９９９位置を取得するためには、第１差分値から復元を９９８回実施する必要がある。従って、上述の全文検索システムでは、差分値を文書中の各文字の位置に復元するのに多大な時間を要する。
【０００４】
【発明が解決しようとする課題】
コンピュータネットワーク技術の急速な発展により、従来の全文検索システムでは、データ検索の絶えず増大する需要に応えることができない。
【０００５】
従って、本発明の目的は、コンピュータ文字情報のインデックスを作成し、高速格納及び大容量のデータの検索を支援し、複数ユーザによるデータの共有を支援する文字情報のインデックス作成及び検索のための新規の方法及びシステムを提供することである。
【０００６】
本発明の１つの目的は、文書のインデックス格納の空間を削減し、且つ高速の全文検索を保証することが可能な文書のインデックス作成方法を提供することである。
【０００７】
本発明の別の目的は、上述のインデックスを使用した全文検索のための方法を提供することである。
【０００８】
本発明の別の目的は、ある文書に所属する文字の任意の位置に従って、多数の文書からその対応する文書を迅速に探し出すための方法を提供することである。
【０００９】
【課題を解決するための手段】
上述の目的を達成するために、本発明者等は、文字情報の全文記録及び全文検索を行なうための新規の方法及びシステムを開発した。この方法及びシステムは、クライアント／サーバモードで開発されている。文字情報のインデックスを作成するのに、ＳＱＬサーバ関係データベースの特徴が使用されており、大容量のデータを格納することができ、データの共有性、整合性及び保全性を向上させることができる。このため、インターネット及びイントラネット上のウェブサーバは、大容量の高速全文検索の機能を有することができ、情報源の包括的な共有を実現することができる。
【００１０】
本発明の目的を達成するために、例えば、本発明のインデックス作成装置は以下の構成を備える。
即ち、文書中の文字の検索用インデックスを作成するインデックス作成装置であって、
第１の記憶領域と第２の記憶領域とで構成されたミニブロックの複数で構成されるデータベースブロックを、前記文書中の文字のうち同一の文字毎に保持する保持手段と、
前記文書中の文字が出現する文字位置を示す文字位置データを取得する取得手段と、
前記文書中の文字のうち同一の文字の前記文字位置データについて、最初の文字位置を示す最小文字位置データを、前記保持手段内の対応する前記データベースブロック内の第１のミニブロック中の第１の記憶領域に格納させる処理を行う第１の格納制御手段と、
前記最初の文字位置以降の文字位置に、対応する同一の文字が出現する毎に、当該出現の順序において隣り合う２つの同一の文字の文字位置データの差分値を、前記保持手段内の対応する前記データベースブロック内の第１のミニブロック中の第２の記憶領域に順次格納させる処理を行う第２の格納制御手段と
を備えることを特徴とする。
【００１１】
本発明の目的を達成するために、例えば、本発明の検索システムは以下の構成を備える。
即ち、請求項１又は２に記載のインデックス作成装置と、当該インデックス作成装置が作成したインデックスを用いた全文検索処理を行う全文検索エンジン部とで構成される検索システムであって、
前記全文検索エンジン部は、
検索語の入力を受け付ける入力手段と、
前記保持手段より、前記検索語を構成する各文字に対応する前記データベースブロックを取得する手段と、
取得された前記データベースブロックのうち前記検索語の最初に位置する第１の文字に対応する第１のデータベースブロックを用いて、当該第１の文字の第１の文字位置データを取得する手段と、
取得された前記データベースブロックのうち、前記検索語において前記第１の文字に後続する第２の文字に対応する第２のデータベースブロックを用いて、前記第２の文字のうち、前記第１の文字位置データに対応する文字位置以降の文字位置を有し、かつ、前記第１の文字位置データに対応する文字位置と所定の位置関係を有する文字位置を有する第２の文字について、第２の文字位置データを取得する手段と
を備えることを特徴とする。
【００１２】
本発明の目的を達成するために、例えば、本発明のインデックス作成装置の制御方法は以下の構成を備える。
即ち、文書中の文字の検索用インデックスを作成するインデックス作成装置の制御方法であって、
第１の記憶領域と第２の記憶領域とで構成されたミニブロックの複数で構成されるデータベースブロックを、前記文書中の文字のうち同一の文字毎に保持手段内に保持する保持工程と、
前記文書中の文字が出現する文字位置を示す文字位置データを取得する取得工程と、
前記文書中の文字のうち同一の文字の前記文字位置データについて、最初の文字位置を示す最小文字位置データを、前記保持手段内の対応する前記データベースブロック内の第１のミニブロック中の第１の記憶領域に格納させる処理を行う第１の格納制御工程と、
前記最初の文字位置以降の文字位置に、対応する同一の文字が出現する毎に、当該出現の順序において隣り合う２つの同一の文字の文字位置データの差分値を、前記保持手段内の対応する前記データベースブロック内の第１のミニブロック中の第２の記憶領域に順次格納させる処理を行う第２の格納制御工程と
を備えることを特徴とする。
【００１３】
本発明の目的を達成するために、例えば、本発明の検索システムの制御方法は以下の構成を備える。
即ち、請求項１又は２に記載のインデックス作成装置と、当該インデックス作成装置が作成したインデックスを用いた全文検索処理を行う全文検索エンジン部とで構成される検索システムの制御方法であって、
前記全文検索エンジン部の制御方法は、
検索語の入力を受け付ける入力工程と、
前記保持手段より、前記検索語を構成する各文字に対応する前記データベースブロックを取得する工程と、
取得された前記データベースブロックのうち前記検索語の最初に位置する第１の文字に対応する第１のデータベースブロックを用いて、当該第１の文字の第１の文字位置データを取得する工程と、
取得された前記データベースブロックのうち、前記検索語において前記第１の文字に後続する第２の文字に対応する第２のデータベースブロックを用いて、前記第２の文字のうち、前記第１の文字位置データに対応する文字位置以降の文字位置を有し、かつ、前記第１の文字位置データに対応する文字位置と所定の位置関係を有する文字位置を有する第２の文字について、第２の文字位置データを取得する工程と
を備えることを特徴とする。
【００１５】
用語の説明
以下の説明では、リスト、レコード、フィールドなどのデータベースに関する幾つかの共通用語が使用される。リストは、データベースの構造の構成要素であり、多数のレコード項目から成る。このレコード項目の各々は、複数のフィールドから成る。本明細書では、以下の用語が使用される。以下にこれらの用語を説明する。
【００１６】
文書カテゴリ：
その内容、作成者、発行時間、記録オペレータ、記録用のメインコンピュータ、又は、その他の各要素に従って、記録対象の各文書は、複数の文書のカテゴリ、すなわち、文書カテゴリに分類される。各文書カテゴリは、複数の文書から成る。
【００１７】
文書：
論説、小説、ニュース記事、特許明細書など。
【００１８】
文字：
本明細書で述べられる文字は、レター（英字、漢字、日本語の文字、種々の文字、ひらがな及びカタカナなどの１バイト又は２バイト文字を含む）、句読点、数字、特殊文字及びタブなどを含む。
【００１９】
文字の内部コード：
別々の動作システムでは、２バイト文字のコード標準は、それぞれ異なる。例えば、ＷＩＮＤＯＷＳプラットフォームでの日本語コード標準は、シフトＪＩＳ（マッキントッシュ及びＤＯＳ−Ｖにおける８ビット日本語コード標準）である。ＵＮＩＸプラットフォームでの日本語コード標準は、ＥＵＣ（拡張ＵＮＩＸ符号）である。本発明のシステムにおいて、異なるプラットフォームからの文書を記録するため、本発明者等は、内部コード方式を使用して、同一の文字のＪＩＳ（日本工業規格）、シフトＪＩＳ（マッキントッシュ及びＤＯＳ−Ｖにおける８ビット日本語コード標準）又はＥＵＣ（拡張ＵＮＩＸ符号）などの種々の標準のコードを唯一の対応する内部コードに変換する。
【００２０】
文字位置：
１つの文書カテゴリにおける各文書の記録順序及び各文書内の文字の順序に従って文書を記録する場合、文書中の各文字には、文書カテゴリ中の絶対位置が付与される。例えば、文書カテゴリの第１文字の文字位置は１であり、後続の各文字の文字位置は、それぞれ、２、３．．．である。
【００２１】
差分値：
１つの文書カテゴリにおいて、文字の現在の文字位置と前の文字位置とに基づいて、２つの文字位置間の差分値が、差分アルゴリズムにより計算される。
【００２２】
差分アルゴリズム：
文書カテゴリにおいて、文字の現在位置と以前の位置との間の差分は、例えば、１０進法から１２７進法などのように基数の小さい進法から基数の大きい進法に変換される。各差分値を識別するため、各文字位置の差分値は、各１２７進法の差分値の最終桁（単位桁）を除く全ての桁の最上位ビットを１に設定することによって得られる。例えば、１０進値２０４８３８３は、以下に示すように１２７進値に変換される。
【００２３】
(2048383)10 = (0x01 0x00 0x00 0x00)127
得られる１２７進値は４桁であり、そのそれぞれは、１６進値で表される。４桁のうちの最終桁０を除く残りの３桁の最上位ビットは、１に設定される（すなわち、０ｘ８０との論理和が求められる）。従って、得られる差分値は、(81808000)16である。
【００２４】
文書中の文字の位置は変動するので、差分値は様々な値であり、各差分値のバイト数もそれぞれ異なる。差分値において、最終桁の最上位ビット（最終桁の１バイトの第８ビット）は０であり、その他の桁の最上位ビットは、全て１に設定されているので、各差分値を識別することができる。例えば、文書カテゴリ中の文字「日」の２つの連続する位置が、１３９０と１４５０であるとする。この２つの位置の差分は、((1450 - 1390) % 127)10 = (60)10 = (3C)16である。この差分値を格納するのに、１バイトしか必要としない。別の例において、文書カテゴリ中の文字「好」の２つの連続する位置が、１３０８と９０５４であるとする。このときの文字の差分値は、以下のように計算される：
ステップ１：((9054 - 1308)／127)10を計算すると、商は(60)10であり、余りは(126)10 = (7E)16である。
【００２５】
ステップ２：(60／127)10を計算すると、商は(0)10であり、余りは(60)10 = (3C)16である。
【００２６】
ステップ１、２で得られる１２７進値に関して、単位桁(7E)16の最上位ビットは変化しない。もう一方の桁(3C)16の最上位ビットは、１に設定される、すなわち、(3C)16から(BC)16になる。この差分値(BC7E)16は、格納するのに２バイト必要である。
【００２７】
復元：
全文検索を実施する場合、差分値を復元して対応する文書カテゴリ中の各文字の文字位置を取得することが必要である。文字位置の差分値を復元するためのアルゴリズムは、差分アルゴリズムの逆である。
【００２８】
ミニブロック：
ミニブロックは、データを格納するための本発明者等が定義した構造であり、文字位置を格納するためのデータ項目及び文字位置の複数の差分値を格納するための配列から成る。例えば、ミニブロックは、１つの文字の多数の位置データを格納するために、倍長整数型データの項目及びＢＹＴＥ型配列を備える。ここで、倍長整数型の項目は、文字の１つの文字位置を格納するのに使用され、ＢＹＴＥ型配列は、倍長整数型の項目に格納された文字位置に後続する文字の各文字位置の差分値を格納するのに使用される。
【００２９】
データベースブロック：
データベースブロックは、データを格納するためのデータベース中の物理領域であり、リスト構造中の１つのフィールドである。データベースブロックは、複数のミニブロックから成り、文字の複数の位置値を格納することができる。リストの各レコード項目は、１個のデータベースブロックと、そのデータベースブロックに格納される文字の最小位置及び最大位置をそれぞれ格納するための２つのフィールドとから成る。この２つのフィールドによれば、検索を実施する際には、現在のレコード項目のデータベースブロックが、検索語のその他の文字と一致する文字位置を有する可能性があるか否かを迅速に判定することができる。現在のレコード項目において一致文字位置が存在する可能性があると判定される場合、更なる復元処理がそのデータベースブロックに対して行なわれる。現在のレコード項目に一致する文字位置が存在しないと判定される場合、文字の次のレコード項目が判定／復元される。
【００３０】
検索語：
検索語は、１つ以上の文字から成る文字列である。検索語は、検索対象の文字列であり、オペレータにより指定される。
【００３１】
一致位置：
各文書のインデックスは、単位としての各文字と共に格納されるので、検索語中の文字の位置は、検索語全体の位置、すなわち、一致位置として指定され、データベースに格納された文字位置情報に対して照合処理が行なわれる。例えば、検索語「米国アメリカ」において、「米」の文字位置が１０００１であり、「国」の文字位置が１０００２であり、「ア」の文字位置が１０００３であり、「メ」の文字位置が１０００４であり、「リ」の文字位置が１０００５であり、「カ」の文字位置が１０００６であるとする。検索語の第１文字の文字位置が、検索語の一致位置として使用される場合、検索語「米国アメリカ」の一致位置は、「米」の文字位置１０００１である。
【００３２】
変位：
変位は、検索語の各文字の一致位置に対するオフセット量である。例えば、検索語「米国アメリカ」の第１文字が、開始点として設定される場合、「米」の変位は０であり、「国」の変位は−１であり、「ア」の変位は−２であり、「メ」の変位は−３であり、「リ」の変位は−４であり、「カ」の変位は−５である。また、検索語の最終文字を開始点として設定することもでき、この場合、「米」の変位は０であり、「国」の変位は１であり、「ア」の変位は２であり、「メ」の変位は３であり、「リ」の変位は４であり、「カ」の変位は５である。
【００３３】
上述のように、本発明は、全文書を複数の文書カテゴリに記録／格納する。各文書カテゴリは、複数の文書から成る。文書中の各文字は、各文書の記録順序に従って格納される。
【００３４】
記録される文書から、文書カテゴリ情報、文書情報、文字情報及び文字位置情報が取り出され、データベースに格納される。この４種類の情報を以下に説明する。
【００３５】
文書カテゴリ情報：
内容に従って、各文書は、政治、経済、スポーツ、旅行などの様々な文書カテゴリに分類することができる。記録オペレータ又はその他の要素に従って、記録文書を別の文書カテゴリに分類することもできる。各文書カテゴリに対して、本発明では、対応する文書カテゴリを一意的に識別することができる文書カテゴリ番号を指定する。また、各文書カテゴリは、文書カテゴリ名及び文書カテゴリにおける各文字の最終位置を有する。文書カテゴリの各文字の最終位置は、現在の文書カテゴリに最も新しく記録された文書中の最終文字の文字位置である。従って、文書カテゴリ情報は、文書カテゴリ番号、文書カテゴリ名及び各文字の最終位置を含む。
【００３６】
文書情報：
各文書カテゴリは、複数の文書を有するので、記録される各文書には、文書番号が付与される。文書番号は、１つの文書カテゴリにおいて一意的なものであり、１から連続的に開始する倍長整数型の値であっても、あるいは、断続的な整数値であっても良い。
【００３７】
従って、文書情報は、各文書ごとの一意的な文書番号、その文書が所属する文書カテゴリ番号、文書中の第１文字及び最終文字の文字位置（以下の説明では、これらの２つの位置は、文書の開始位置及び終了位置と呼ばれる）を含む。
【００３８】
文字位置情報：
各文書カテゴリは、複数の文書を含み、この文書は、それぞれ、複数の文字を含む。重複のない全ての文字により文字セットを構成する。文字セット中の各文字は、対応する内部コードを有する。各文字は、文書カテゴリ中の各文書に複数回出現する可能性があるので、各文書カテゴリ中の全ての文字の全ての文字位置が、データベースに格納される。文字位置情報は、文字が所属する文書カテゴリ番号、文字に対応する内部コード、文字位置データ（文字位置及び差分値を含む）を格納するためのデータベースブロック、このデータベースブロックに格納される第１文字位置及び最終文字位置（これらの２つの位置は、以降、データベースブロックの最小位置及び最大位置と呼ばれる）を含む。
【００３９】
文字情報：
検索を高速化するために、本発明では、各文書カテゴリの各文字の文字情報をデータベースに格納する。文字情報は、その文字が所属する文書カテゴリ番号、対応する内部コード、所属する文書カテゴリ中の文字の最大文字位置、文字の最終データベースブロック中の最小文字位置及び文字の最終データベースブロックに格納されたデータの長さを含む。
【００４０】
本発明では、文書カテゴリ中の全ての文字の文字位置のインデックスを単位としての各文字と共に作成する。すなわち、文書カテゴリの各文書中の文字セットの各文字の各文字位置が、データベースに格納される。
【００４１】
漢字の「的」及び日本語の文字「の」などの文字は、頻繁に用いられる。文字の文字位置情報を格納する空間を削減するために、本発明の方法では、文書カテゴリの各文書中の各文字の位置情報が、この文書カテゴリにおける第１文字位置及び後続の各文字位置として表される。更に、この後続位置は、２つの連続する文字位置間の差分値として表される。実際には、物理構造の面で述べると、第１文字位置と後続の文字位置の各差分値とが、データベースブロックに格納される。各位置の差分値は、実際の文字位置値よりも使用バイト数が少ないので、各文字のインデックスにより使用される空間を相対的に削減することができる。
【００４２】
文字の第１文字位置に後続する各位置を差分値として表すことにより、使用空間は削減されるが、検索速度が低下することになる。文書カテゴリ中に非常に頻繁に出現する文字に対しては、多数の差分値が存在する。例えば、ある文字が文書カテゴリ中に１００，０００回出現する場合、第１文字位置及び後続の各文字位置の差分値を使用して第９０，０００文字位置を復元するには、多大な時間を要することになる。
【００４３】
この問題を解決するために、本発明では、システムファイルを使用して文字の位置データを格納する全文検索システムＪｅｔＳｅａｒｃｈに対して改良を行なう。本発明では、文字の位置データは、１つのファイルではなく、複数の部分として格納される。データベース１０４において、各レコード項目は、所属する文書カテゴリ中の文字の位置データを格納するためのデータベースブロックのフィールドを有する。文書カテゴリ中の１文字は、その位置データを格納するのに複数のデータベースブロックを有しても良い。
【００４４】
頻繁に使用される文字の位置データを格納する場合、その文字に対応する多数の位置データが存在するであろう。検索を実施する場合、何度も出現する文字の一致条件を満たす文字位置（例えば、スポーツニュースの文書カテゴリにおいてＮＢＡを含む文書を検索する場合、検索を介して第１のＮがスポーツニュースの文書カテゴリの第１０，０００文字であることがわかっているならば、第１０，０００文字以前のＢ及びＡは、一致条件を満たさない）を迅速に探し出すためには、システムは、対応する位置を迅速且つ確実に判定／検索する必要がある。差分値を連続的に格納するデータベースブロックに対しては、検索を実施する場合、各データベースブロックの第１差分値から検索語の各文字の一致条件を満たす文字位置まで、１つずつ文字位置を復元する必要がある。これは、システム時間を浪費するので、良い方法ではない。
【００４５】
従って、本発明者は、データベースブロックを多数のミニブロックに分割し、これらのミニブロックの各々が、位置データを格納するために一定数のバイトを有するようにした。各ミニブロックの開始バイトは、文書カテゴリ中の文字の文字位置を格納する。この文字の文字位置（以下の説明では、ミニブロックの最小位置と呼ぶ）は、差分値ではなく、文書カテゴリ中の全ての文字の順序により判定され、データベースブロックの最大位置及び最小位置とは異なっている。ミニブロックの開始バイトの後続の各バイトは、２つの連続する文字位置間の差分値を格納する。文字の各文字位置は、相互に異なるものであり、差分値もそれぞれ異なる値である。各差分値に対して使用されるバイト数もまちまちである。ミニブロックの残りのバイトが、新規の差分値にとって十分なものでない場合、システムは、ミニブロックの残りのバイトを０ｘ００で充填し、別の新規のミニブロックを使用してこの新規ミニブロックの最小位置として開始バイトに新規の差分値を格納する。続いて、後続の各文字位置が、差分値として新規のミニブロックに格納される。言い換えると、文字の各文字位置をある個数の差分値で表した後に、新規のミニブロックが必要になり、この新規のミニブロックに対して最小位置が定義され、後続の文字位置が差分値として表される。データベースブロック中の各ミニブロックが、文字の位置データで満杯である場合、その文字に対しては、新規のレコード項目を作成し、その新規のデータベースブロックに対しての位置データの格納を継続する必要がある。
【００４６】
設定されるミニブロックの長さが長すぎる場合、復元は多大な時間を要することになる。設定されるミニブロックの長さが短すぎる場合、比較的大きな空間が使用される。従って、ミニブロックに関しては、数百バイトの長さであることが好ましい。言い換えると、文字の１００から２００回の出現ごとに新規のミニブロックを使用するのが適切である。
【００４７】
しかし、一般的に使用される文字は、１つの文書カテゴリ中に、１０００，０００回より多く出現する可能性がある。従って、本発明は、１つの文書カテゴリにおいて、文字の出現回数が４００，０００から８００，０００回（例えば、４０００個のミニブロックが満杯になる）ごとに、新規のレコード項目を作成し、文字の後続位置データを格納するように構成されている。また、レコード項目は、この項目のデータベースブロックの最小位置及び最大位置を含むべきである。
【００４８】
上述のように、文字位置データのデータベースを構築する場合、文字を検索するのに使用される時間を短縮する観点から、文字位置データを格納するためのレコード項目は、このレコード項目のデータベースブロックに格納された文書カテゴリ中の文字の最小文字位置及び最大文字位置を格納するための２つの重複したフィールド、すなわち、データベースブロックの最小位置及び最大位置を有する。全文検索を実施する際に、検索語の全ての文字の文字位置データを格納するための全てのレコードが、データベースから探し出された場合、各々が文字位置データを格納するためのデータベースブロックを有する多数のレコード項目が存在することは確実である。各データベースブロックは、文字の位置データ（ミニブロックの最小位置及び各差分値を含む）を格納するために数百バイトの容量をそれぞれ有する何千個ものミニブロックから成る。レコード項目にデータベースブロックの最小位置及び最大位置が存在しない場合、検索語の各文字の一致文字位置が見つかるまで、多数のレコード項目の各データベースブロックにおいて各ミニブロックの最小位置を１つずつ比較するのには、非常に長い時間がかかる。しかし、１つのレコード項目において、データベースブロックの最小位置及び最大位置を格納するために、２つのフィールドが追加される場合、検索語の文字の文書カテゴリ中の文字位置が分かるので、この文字の文字位置を使用して検索語のその他の文字の位置データの各データベースブロックの最小位置及び最大位置と比較することができる。従って、あるデータベースブロックにおいて、検索対象の文字位置が存在する可能性かあるか否かが判定される。データベースブロックが判定された後、判定済のデータベースブロック中の各ミニブロックの最小位置に基づいて、どのミニブロックが検索対象の文字位置を有する可能性があるかを迅速に判定することができる。このため、各文字の文字位置を１つずつ復元する方法に比べて、使用時間は削減される。
【００４９】
要約すると、本発明の各文字のインデックスは、３つのレベルに分割される。
【００５０】
まず、各文字は、複数のレコード項目を有する可能性がある。各レコード項目は、文字位置データを格納するためのデータベースブロックと、このデータベースブロックに格納された文字の最小位置及び最大位置とを含む。
【００５１】
次に、文字位置データを格納する各データベースブロックは、文字位置データを格納するために、数千個のミニブロックを含む。各ミニブロックは、２つの部分から成り、第１の部分は、ミニブロックに格納された各文字の第１文字位置、すなわち、ミニブロックの最小文字位置を格納し、第２の部分は、後続の各文字位置、すなわち、差分値を格納する。
【００５２】
第３に、文書カテゴリ中の文字の各後続の文字位置は、文字位置と先行する文字位置との間の差分値で表される。
【００５３】
【発明の実施の形態】
図面を参照しながら、本発明の実施例を以下に説明する。本発明の趣旨が以下の実施例に限定されないことは明らかである。以下の実施例において、本発明の方法を実現するためのハードウェアプラットフォームとして、クライアント／サーバネットワーク構造が一例として使用されている。すなわち、クライアントは、端末動作手段の例であり、サーバは、情報記憶／処理手段の例である。また、以下の実施例で述べるネットワークは、接続手段の一例として理解されるべきである。本発明の以下の教示により、単一のコンピュータ、ブラウザ／ブラウザサーバなどのその他のコンピュータシステム上で本発明の方法を実施できることは当業者には明らかであろう。
【００５４】
クライアント（端末動作手段）１０１は、オペレータにとってのプラットフォームであり、文書の記録、更新又は検索に対する要求はここからサーバ１０３に送信される。
【００５５】
ネットワーク（接続手段）１０２は、クライアント／サーバ情報を伝送するためのものである。
【００５６】
サーバ（情報記憶／処理手段）１０３は、ネットワーク１０２を介してクライアント１０１により送信された文書の記録、更新又は検索に対する要求を受信するためのものである。文書インデックス生成部１０５による処理の際には、全文書中の全ての文字の位置情報がデータベース１０４に格納される。また、全文検索エンジン１０６によって、オペレータにより指定された検索要求を満たす文書情報が検索される。
【００５７】
図１Ｂは、サーバ１０３のハードウェアブロック図を示す。図１Ｂにおいて、ＣＰＵ１は、ＲＡＭ３に記憶されたプログラムを実行してサーバに対する各制御を行なう。ＲＯＭ２は、各フローチャートに示した処理を実現するためのプログラムを記憶し、このプログラムはＣＰＵ１により実行される。ＲＡＭ３は、ＣＰＵ１がプログラムを実行するための空間を提供する。ＣＲＴ４は、ＣＰＵ１の制御下で表示を行なう。キーボード５は、情報を入力するのに使用される。外部記憶装置６は、検索対象の文書及びこの文書から生成された文字インデックス情報を格納するためのハードディスク又はソフトディスクである。バス７は、上述の各部を接続し、各部間でのデータ伝送を実現する。
【００５８】
データベース１０４は、全ての文書カテゴリの全文インデックスデータ及びその他の種類の文書情報データを格納するためのものであり、外部記憶装置６に設けられる。
【００５９】
文書インデックス生成部１０５は、文字リストの方法に従ってデータベース１０４に文書を記録するためのものであり、ＣＰＵ１により行なわれる。
【００６０】
全文検索エンジン１０６は、全文検索を実施するためのものであり、ＣＰＵ１により行なわれる。
【００６１】
文書情報共有変換部１０７は、記録された文書の情報を格納するために、サーバのメモリＲＡＭ３において共有メモリのブロックを提供するためのものであり、ＣＰＵ１により行なわれる。文書インデックスを生成する場合には、共有メモリ中の文書情報が、文書インデックス生成部１０５によりタイミング良く更新される。全文検索を行なう場合には、全文検索エンジン１０６が、共有メモリから直接、文書に関連する情報を取得する。
【００６２】
クライアント／サーバのネットワーク構造では、本発明のシステムは、サーバ上で実行され、文書インデックス生成部１０５、全文検索エンジン１０６、文書情報共有変換部１０７及びデータベース１０４を主に具備する。
【００６３】
データベース１０４は、複数の文書カテゴリを格納するのに使用される。指定の文書カテゴリには、文書インデックス生成部１０５により１つ以上の文書を記録することができ、その文書カテゴリの全文インデックスを作成又は更新することができる。文書の記録を行なう場合、文書インデックス生成部１０５は、文書中の各文字を対応する内部コードに変換し、所属する文書カテゴリ中の各文字の位置情報が格納される。
【００６４】
検索条件及びファジー値（０の場合は厳密な検索、０を超す場合はファジー検索であり、ファジー値が高い場合は、一致の精度が低く検索結果が多いことを示す）に従って全文検索を行なう場合、全文検索エンジン１０６は、データベース１０４中の関連するレコード項目を検索し、検索語の各文字の位置を比較し、検索条件と一致する文字列を探し出し、全文書のうちの検索語を含む文書の番号と各文書における検索語の位置とを戻す。
【００６５】
データベース１０４には、大量のテキスト情報が格納されているので、全文検索を行なうのには非常に長いデータベース処理時間を要する。データベース１０４の入出力を削減し、検索時間を短縮し、システムのパフォーマンスを向上させるために、本発明者等は、メモリＲＡＭ３に共有メモリのブロックを残すように機能する文書情報共有変換部１０７を設計する。続いて、データベース１０４中の文書情報のリストが検索される。文書番号と文書の位置範囲を表す指定の文書カテゴリの全文書のデータ項目（文書番号、文書の開始位置及び終了位置、並びに削除フラグ)が、順序通りの記録に従って、データベース１０４から共有メモリに読み込まれてその中に常駐するようになる。全文検索を行なう場合、二分アルゴリズムを使用して、検索語の一致位置に従って判定される文書位置を対応する文書番号に変換する。新規の文書の記録を行なう場合、その文書に関する情報が共有メモリに加えられる。文書が削除される場合、文書の削除フラグが１（すなわち、削除済み）に設定される。
【００６６】
本発明の特徴は、主に、以下の３点にある。
【００６７】
第１の点は、データベース１０４中の文字位置情報のインデックスの構造である。文字は、文書カテゴリ中に何度も出現する可能性があるので、文書カテゴリ中の文字の全ての位置は、格納される必要がある。文字の各位置が整数型又は倍長整数型のフィールド（各位置は４バイト使用）としてデータベースに格納される場合、膨大な格納空間が必要である。格納空間の浪費を削減すると共に、所望の速度での全文検索を行なえるようにするために、本発明者は、差分アルゴリズムを使用して文書カテゴリ中のある文字の現在の文字位置と前の文字位置との間の差分値の計算を行なう。文書カテゴリ中のその文字の各後続位置が差分値として示され、データベースにバイナリ型（画像型）フィールドとして格納される。
【００６８】
本発明では、所属する文書カテゴリ中の文字の位置を格納する各レコード中のフィールドは、データベースブロックと呼ばれる。各データベースブロックは、４，０００個のミニブロックに分割される。各ミニブロックは、文字位置データを格納するために２６０バイトを有する。図２において、各ミニブロックの始めの４バイトは、所属する文書カテゴリ中の文字の文字位置を格納する。第５バイト以降の各バイト（第５バイトを含む）は、文字の２つの連続する文字位置（現在の文字位置と前の文字位置）間で差分アルゴリズムにより計算された差分値を格納する。ミニブロックの残りのバイトが、新規の差分値にとって十分ではない場合、システムは、残りのバイトを０ｘ００で充填する。システムは、新規のミニブロックを使用して、所属する文書カテゴリの文字の現在の文字位置をこのミニブロックの最小位置としてその最初の４バイトに格納し、文字の後続する各位置を差分値を用いて表す。言い換えると、差分値を用いて文字の位置を何回か（例えば、１００回から２００回）表した後、格納用の新規のミニブロックが必要になり、このミニブロックに対して最小位置が与えられる。続いて、文字の各後続位置が差分値として表され、新規のミニブロック中の最小位置の後ろに格納される。データベースブロックの４，０００個のミニブロックが、全て文字の位置データで充填された場合、その文字に対して新規のレコード項目を作成する必要がある。
【００６９】
第２の点は、以下の通りである。データベース１０４の文字インデックス構造に格納された文字位置情報に関して、全文検索結果を迅速且つ正確に取得するために、本発明者等は、文字位置を検索／照合する方法を設計する。本発明の文字インデックス構造の特徴に関して、本発明の方法は、照会言語を使用して一致語の位置を迅速に探し出す。続いて、文書情報共有変換部により、検索された各結果が存在する文書の文書番号が取得される。
【００７０】
第３に、大量のデータを格納する場合で、データベースの検索処理を実行するときには、データベースの頻繁な入出力、データベースの実行性能の低下、データベースへのアクセス時間の増加、及び、全文検索速度の低下という問題が生じる。データベースの実行負荷を減少させ、データベースの検索のための時間を短縮し、全文検索の速度を増大するために、本発明者等は、文字位置情報を文書情報に迅速に変換する方法を設計する。キャッシュメモリの高速アクセスの特徴に関して、文書番号及び文書の位置範囲を表し、且つ文書番号、文書開始位置、文書終了位置、及び、削除フラグを含むデータベース１０４中の指定の文書カテゴリに対する文書情報のデータ項目が、一度にメモリＲＡＭ３に読み込まれる。任意の文字位置に対して、各文書の位置範囲に従いながら二分法を使用することによって、メモリ中の一致文書データが迅速に探し出され、文書番号が取得される。文書の記録及び削除を行なう場合、文書情報共有変換部は、関連する文書情報をタイミング良く更新するための対応インタフェースの提供も行なう。
【００７１】
各実施例の説明
まず最初に、ネットワーク１０２上の本発明のシステムの実行手順を例示的に説明する。
【００７２】
サーバ１０３上の全文検索システムが、クライアント１０１を介してのユーザからの文字検索要求を処理する手順中に、以下の処理が行なわれる：
１．検索対象の文字又は語がクライアント１０１のキーボードを介してユーザにより入力される。２つ以上の文字又は語が検索対象である場合、ＯＲ、ＡＮＤ又はＮＯＴなどの文字間又は語間の論理関係が与えられるべきである。
【００７３】
２．与えられた検索語及び論理関係は、サーバ１０３上で実行中の全文検索システムにネットワーク１０２を介して送信される。
【００７４】
３．サーバ１０３上において、全文検索システムの全文検索エンジン１０６が、各検索語に従って文書インデックスを検索することによって、受信した検索結果の処理を行なってデータベース１０４から全ての関連する一致位置を取得する。
【００７５】
４．上述の取得された各一致位置が存在する文書の文書番号及び削除フラグを取得するように、文書情報共有変換部１０７により、各一致位置が、文書情報（文書番号、文書開始位置、文書終了位置及び削除フラグなど）中の文章開始位置及び文章終了位置とそれぞれ比較される。各文書の削除フラグに従って、有効な文書番号が判定され、この文書番号が全文検索システムの出力として結果セットを形成する。
【００７６】
５．この検索結果セットが、ネットワーク１０２を介して全文検索システムによりクライアント１０１に送信され、クライアント１０１によりその画面上に表示される。
【００７７】
文書インデックスの作成処理
本発明では、所属する文書カテゴリの文字の２つの連続する文字位置から差分アルゴリズムにより差分値が計算されてデータベース１０４の画像型データベースブロックに格納される文書インデックスの作成方法が提供される。このようなデータベースブロックは、例えば、各々が倍長整数型の数値（４バイト）及び２５６バイトから構成される４，０００個のミニブロックから成る。データベースブロックの構造に関しては、図２を参照されたい。文字位置データを格納するデータベースブロックは、従って、１，０４０，０００バイト（(256 + 4) * 4000
= 1,040,000）を有する。
【００７８】
データベースブロックを定義する場合、これに含まれるミニブロックの個数は、変更することが可能であり、各ミニブロックのサイズも変更可能である。
記録された文書に対して文書インデックス生成部１０５により文書インデックスを作成するプロセスについて、図３を参照しながら以下に説明する。このプロセスは、最初にデータベース１０４を作成したり、文書をデータベース１０４に追加したり、あるいは、文書をデータベース１０４から削除したりする場合に、図１に示す文書インデックス生成部１０５を用いて行なわれる。
【００７９】
まず最初に、各文書の内容、文書を記録するオペレータ、あるいは、その他の各要素に従って、記録対象の文書が、対応する文書カテゴリに予め分類される。各文書カテゴリには、文書カテゴリ名が与えられる。ステップ４０２において、例えば、入力ボックスを有するダイアログボックスが表示されて、オペレータに対して入力処理を行なうように促す。オペレータは、記録対象の文書が所属する文書カテゴリ名を入力する。
【００８０】
ステップ４０４において、ステップ４０２で指定された文書カテゴリ名に従って、関連する文書カテゴリ情報を求めてデータベース１０４が検索される。指定の文書カテゴリ名がデータベース１０４に存在しない場合、システムは、その文書カテゴリに対して文書カテゴリ番号を割り当て、文書カテゴリ中の全ての文字の最終位置に対して初期値を設定する（例えば、文書カテゴリ番号が１、各文字の最終位置が０）。続いて、この文書カテゴリの情報がデータベース１０４に挿入され、文書カテゴリ番号及び最終位置が戻される。指定の文書カテゴリ名がデータベース１０４に存在する場合、文書カテゴリ番号及び文書カテゴリ中の全ての文字の最終位置がデータベース１０４から取得される。取得された文書カテゴリ番号に従って、データベース１０４中の各文字の文字情報、すなわち、文書カテゴリ中の文字の最大文字位置、文字の最終データベースブロックの最小位置及び最終データベースブロックに格納された文字位置データの長さなどが探し出される。
【００８１】
ステップ４０６において、キャッシュメモリの高速アクセス機能に基づいて、文書情報共有変換部１０７が起動される。指定の文書カテゴリの文書情報がＲＡＭ３の共有メモリに存在するか否かが判定される。指定の文書カテゴリの文書情報が共有メモリに存在しない場合、メモリＲＡＭ３中のある容量の共有メモリが、使用される。指定の文書カテゴリに記録された各文書の文書番号及び文書の位置範囲に関するデータ項目（文書番号、文書カテゴリの文書の開始位置及び終了位置、並びに削除フラグなど）が、データベース１０４から共有メモリに読み込まれる。複数のユーザが、同時にこれを使用して指定の文書カテゴリを検索することができる。
【００８２】
ステップ４０８において、ＲＡＭ３の予約済メモリ空間が動作中のシステムに適用されて初期化される。
【００８３】
ステップ４１０において、記録対象の文書が存在するか否かが判定される。記録対象の文書が存在する場合は、ステップ４１２に進む。記録対象の文書が存在しない場合は、ステップ４２０、４３０及び４３２が実施され、データベース１０４の関連情報が更新される。
【００８４】
ステップ４１２において、記録対象の文書の情報が読み出される。データベース１０４の文書情報が、文書番号に従って検索される。文書番号が、データベース１０４において見つからない場合、その文書情報はデータベース１０４の文書情報に格納される。文書情報は、文書が所属する文書カテゴリの番号、文書番号、文書中の先頭文字及び最終文字の文字位置（文書の開始位置及び終了位置）などを含む。文書番号がデータベース１０４の文書情報において見つかった場合、その文書番号がデータベース１０４の文書情報に格納されていることを意味し、エラーコードが戻される。
【００８５】
ステップ４１４において、記録中の文書に未処理の文字が存在するか否かがチェックされる。文書中に未処理の文字が存在する場合、ステップ４１６のプロセスが実施され、文字のインデックスが作成される。文書中の最終文字の処理が終了すると、ステップ４２６が実施され、その最終文字の文字位置でもって、データベース１０４の文書情報に格納された文書の終了位置が更新される。
【００８６】
ステップ４１６において、文書中の文字が順次読み込まれ、対応する内部コードに変換される（例えば、ＷＩＮＤＯＷＳシステムで使用されるシフトＪＩＳコードが、システムの内部コードに変換される。「アメリカ」を内部コードに変換する場合、「ア」、「メ」、「リ」及び「カ」の内部コードは、それぞれ、２８３、３４１、３４７及び２８８である）。文字の文字位置が、所属する文書カテゴリの最終位置から取得される。続いて、現在の文字位置と前の文字位置との間の差分値が、差分アルゴリズムにより計算される。
【００８７】
ステップ４１８において、メモリＲＡＭ３の予約済空間の残りの部分がステップ４１６の差分値を格納するのに十分であるか否かがチェックされる。メモリの予約済空間が満杯の場合、ステップ４２０、４２２及び４２４が実行され、それにより、メモリの予約済空間中の文字の全データがデータベース１０４の文字位置情報に書き込まれる。メモリの予約済空間が満杯ではない場合、フローチャートはステップ４２４に進む。
【００８８】
ステップ４２０において、メモリＲＡＭ３の予約済空間中の、文字が所属する文書カテゴリの番号、対応する内部コード、複数の差分値を格納するためのデータベースブロック、文字のデータベースブロックに格納された最小位置及び最大位置などの全ての文字位置情報は、データベース１０４の文字位置情報に格納される。
【００８９】
ステップ４２２において、データベース１０４の文字位置情報へのメモリＲＡＭ３の予約済空間中の全ての文字位置情報の格納が無事終了すると、記録中の文書内の各文字の位置情報を継続して格納することが可能なように、メモリの予約済空間が再初期化される。
【００９０】
ステップ４２４において、ステップ４１６で取得された文字位置又は差分値がメモリＲＡＭ３の予約済空間に格納される。続いて、ステップ４１４に戻り、記録中の文書内の次の文字を取り出す。
【００９１】
ステップ４２６において、記録中の文書内の全ての文字の処理が終了すると、文書中の最終文字の文字位置が、データベース１０４の文書情報に格納される。すなわち、データベース１０４の文書情報中の文書の終了位置が文書の最終文字の文字位置でもって更新される。
【００９２】
ステップ４２８において、文書情報共有変換部１０７が使用され、記録される文書の情報が共有メモリに格納される。
【００９３】
ステップ４３０において、新規の文書の記録が終了すると、データベース１０４の文字情報が、文字の所属する文書カテゴリの番号、対応する内部コード、所属する文書カテゴリ中の文字の最大文字位置、文字の位置データを格納する最終データベースブロックの最小位置、及び、最終データベースブロックに格納された文字位置データのバイト数を含む各文字の新規の文字情報でもって更新される。
【００９４】
ステップ４３２において、記録を終えたばかりの最終文書中の最終文字の文字位置を使用して、データベース１０４の文書カテゴリ情報に格納された文書カテゴリの最終位置が更新される。
【００９５】
実施例１：
ＷＩＮＤＯＷＳプラットフォームにおいて、文書インデックス生成部１０５を使用して文書（テキストファイル）Ａｍｅｒｉｃａ１．ｔｘｔをデータベース１０４に記録し、文書中の各文字に対してインデックスを作成する。文書の内容は以下の通りである：
米国アメリカ  アメリカ合衆国
この文書は１４文字から成り、５つの漢字（重複を除けば実際は４つの漢字）と、８つのカタカナ（重複を除けば実際は４つのカタカナ）と、１つの空白とを含む。「米」、「合」、「衆」の各文字と空白は、それぞれ、文書中に１回出現する。「国」、「ア」、「メ」、「リ」及び「カ」の各々は、文書中に２回出現する。
【００９６】
この文書が所属する文書カテゴリ名をニュースカテゴリ、文書カテゴリ番号を１とし、この文書カテゴリは、中に文書が記録されていない新規の文書カテゴリであるとする。この文書カテゴリにおいて、上記文書の文書番号は１、文書名はＡｍｅｒｉｃａ１、発行時は、１９９９．８．１０である。この文書は、ニュース文書カテゴリの第１文書として文書インデックス生成部１０５に供給され、記録される。
【００９７】
１．１４文字：「米国アメリカ  アメリカ合衆国」を含む文書の全内容が、メモリＲＡＭ３に読み込まれる。文書カテゴリ番号１、文書番号１、文書名Ａｍｅｒｉｃａ１、発行時１９９８．８．１０、及びニュース文書カテゴリにおけるこの文書の開始文字位置が、文書インデックス生成部１０５によりデータベース１０４中のニュース文書カテゴリの文書情報に格納される。
【００９８】
２．文書Ａｍｅｒｉｃａ１．ｔｘｔ中の８つの異なる文字は、１つずつ、シフトＪＩＳコードからシステムの内部コードへと変換される。文書中の空白に対しては、所定のパラメータに従って、文書インデックス生成部１０５が、文書中の空白を処理するか否かを判定することができる。パラメータのデフォルト値では、空白に対してインデックスは作成しない。文書Ａｍｅｒｉｃａ１．ｔｘｔにおいては、第７文字が空白である。実施例１において、パラメータは、デフォルト値に設定されている、つまり、空白に対してインデックスを作成しないように設定されているものとする。従って、文書インデックス生成部は、空白を処理しない。これにより、第８文字及び後続の各文字の文字位置の値は、１つ減少する（表１参照）。
0003728264.tif 000002
３．各文書カテゴリの開始位置は１であり、１を１段階として使用する。各文字の文字位置は、文書カテゴリ中の文字の順序に従って判定される。本実施例では、ニュース文書カテゴリ中の文書Ａｍｅｒｉｃａ１．ｔｘｔの全ての文字の文字位置が表１に示されている。文書インデックス生成部１０５による処理終了後の、各文字と各ミニブロック中の始めの４バイトとの間の対応関係が表２に示される。
0003728264.tif 000003
４．ある文字がニュース文書カテゴリ中に２回出現する場合、現在の文字位置と前の文字位置との間の差分値が、差分アルゴリズムにより計算され、その文字のミニブロックの第５バイト及び後続の各バイトに順次格納される。例えば、文書Ａｍｅｒｉｃａ１．ｔｘｔにおいて、第８文字、第９文字、第１０文字及び第１１文字「アメリカ」は、重複している。以下においては、文書中の文字「ア」を例に取り上げ詳細に説明する。文字「ア」は、文書中に２回、ニュース文書カテゴリの文字位置３、７において出現する。表３の列５において明らかなように、ミニブロックに格納された位置データは、０ｘ０００００００３０４である。
ミニブロック中のバイト順序：        １    ２    ３    ４    ５
位置データ：                  ０ｘ００  ００  ００  ０３  ０４
ミニブロックの始めの４バイトに格納される位置データは、１６進数で表すところの０ｘ０００００００３であり、これは、ニュース文書カテゴリ中のこの文字の第１文字位置であり、(03)10 = (03)16である。ミニブロックの第５バイトのデータは０ｘ０４である。これは文字「ア」の第２文字位置と第１文字位置との間の差分値であり、(07 - 03)10 = (4)16である。３つの文字「メリカ」の差分値の計算も、「ア」のときと同様である。これらの３つの文字の各々の第２文字位置と第１文字位置との間の差分値も４である。漢字「国」の第１文字位置と第２文字位置は、２と１３であり、差分値は、(13 - 2)10 = (11)10 = (0B)16のように計算される。４つのカタカナ「アメリカ」及び漢字「国」の差分値は、表３の列５に示される。尚、太字は、表３と表２との間の違いを示す。
【００９９】
ある文字が処理中の記録に頻繁に出現する場合、その文字の位置データの大きさは、ミニブロックのサイズを超す可能性がある。この場合、文字の位置データを格納するのに複数のミニブロックが必要となる。本実施例の文書の文字数は少ないので、文書インデックス生成部１０５は、それぞれの位置データ（ミニブロックの最小位置及び差分値）を格納するのに各文字「米」、「国」、「ア」、「メ」、「リ」、「カ」、「合」、「衆」に対して１個のミニブロックのみを供給する。
0003728264.tif 000004
５．上記各文字の処理終了後、全ての文字の関連情報が、それぞれ、データベース１０４の文字情報及び文字位置情報に書き込まれる。データベース１０４中の各データベースブロックは、ニュース文書カテゴリ中の各文字の文字位置を格納する。データは、データベースブロックにおけるその順序に従って、各ミニブロックに格納される。ミニブロックがデータで満杯になれば、次のミニブロックがデータの格納に使用され、この処理は、データベースブロック中の４，０００個のミニブロックが全てデータで充填されるまで行なわれる。
【０１００】
文字「ア」を例として挙げると、その文書カテゴリ番号１と、内部コード２８３と、ミニブロックに格納された位置データ０ｘ０００００００３０４と、データベースブロックに格納された位置データの最小位置３及び最大位置７とが、データベース１０４の文字位置情報に格納される。文書カテゴリ番号１と、内部コード２８３と、ニュース文書カテゴリにおける最終位置７と、データベースブロックに格納された位置データの最小位置３及び最大位置７と、ミニブロックに格納された位置データが占めるミニブロック中のバイト数とが、データベース１０４の文字情報に格納される。
【０１０１】
６．データベース１０４における文書カテゴリ情報中の文字最終位置及び文書情報中の記録された文書の終了位置が更新される。実施例１において、データベース１０４における文書カテゴリ情報中の文字最終位置は１３に更新され、文書Ａｍｅｒｉｃａ１．ｔｘｔの文書情報中の終了位置は１３になる。
【０１０２】
７．ニュース文書カテゴリの関連情報が、データベース１０４の文書カテゴリ情報に格納される。文書Ａｍｅｒｉｃａ１．ｔｘｔの関連情報が、文書情報に格納される。表３の列２、３、４及び５のデータが、文字位置情報に格納される。表３の列２、３及び４のデータと、データベースブロックに格納された列５の位置データの長さ（バイト単位）とが、文字情報に格納される。
【０１０３】
実施例２：
本実施例は、実施例１の文書及びその他の複数の文書の記録後に、ある文書が記録される場合であるとする。
【０１０４】
ＷＩＮＤＯＷＳプラットフォームにおいて、本実施例では、文書インデックス生成部１０５を使用して文書（テキストファイル）Ａｍｅｒｉｃａ２．ｔｘｔをデータベース１０４に記録し、文書中の各文字に対してインデックスを作成する。文書の内容は以下の通りである：
アメリカ合衆国  米国アメリカ
この文書は１４文字から成り、５つの漢字（重複を除けば実際は４つの漢字）と、８つのカタカナ（重複を除けば実際は４つのカタカナ）と、１つの空白とを含む。「米」、「合」、「衆」の各文字と空白は、それぞれ、文書中に１回出現する。「国」、「ア」、「メ」、「リ」及び「カ」の各々は、文書中に２回出現する。
【０１０５】
この文書が所属する文書カテゴリ名をニュースカテゴリ、文書カテゴリ番号を１とし、この文書カテゴリには、複数の文書が記録されているものとする。また、この文書カテゴリにおける各文字の最終位置は、３０４９１、上記文書の文書番号は、１３００１１、文書名は、Ａｍｅｒｉｃａ２、発行時は、１９９９．８．１１であるとする。この文書は、ニュース文書カテゴリの第１文書として文書インデックス生成部１０５に供給され、記録される。データベース１０４において、ニュース文書カテゴリ中のカタカナ「リ」の最大文字位置は、８２３７であり、この文字の位置データを格納するための最終データベースブロックは、２５８バイトの位置データを格納している。ニュース文書カテゴリにおける文字「衆」の最大文字位置は、１３２０であり、この文字の位置データを格納するための最終データベースブロックは、２５バイトの位置データを格納している。次に、この文書が、文書インデックス生成部１０５に供給され、処理中の記録が行なわれる。
【０１０６】
１．ニュース文書カテゴリの現在の最終位置及びこのカテゴリ中の各文字の最大文字位置を探し出すために、文書インデックス生成部１０５が、データベース１０４の文書カテゴリ情報を検索する。実施例２では、データベース１０４を検索した結果、ニュース文書カテゴリ中の各文字の最終位置は、３０４９１であり、ニュース文書カテゴリ中のカタカナ「リ」の最大文字位置は、８２３７である。また、「リ」の位置データを格納する最終レコード項目のデータベースブロックは、２５８バイトの位置データを格納しており、ニュース文書カテゴリ中の「衆」の最大文字位置は、１３２０であり、「衆」の位置データを格納する最終レコード項目のデータベースブロックは、２５バイトの位置データを格納している。
【０１０７】
２．文書の全内容が、メモリＲＡＭ３に読み込まれる。文書インデックス生成部１０５が、文書番号、文書名、作成者及び発行時をデータベース１０４の文書情報に格納する。本実施例では、システムは、１４文字「アメリカ合衆国  米国アメリカ」を読み込む。文書番号１３００１１、文書名Ａｍｅｒｉｃａ２、発行時１９９９．８．１１、及びニュース文書カテゴリ中のこの文書の開始文字位置３０４９２が、文書インデックス生成部１０５によりデータベース１０４のニュース文書カテゴリの文書情報に格納される。
【０１０８】
３．文書Ａｍｅｒｉｃａ２．ｔｘｔ中の１３文字が、１つずつ、シフトＪＩＳコードからシステムの対応する内部コードへと変換される。文書中の空白に対しては、所定のパラメータに従って、文書インデックス生成部１０５が、文書中の空白を処理するか否かを判定することができる。実施例１では、パラメータは、デフォルト値に設定されるものとした。すなわち、空白に対してインデックスは作成しないものとした。文書Ａｍｅｒｉｃａ２．ｔｘｔにおいては、第８文字が空白である。文書インデックス生成部は、空白を処理しない。これにより、第９文字及び後続する各文字の文字位置の値は、それぞれ、１つ減少する（表４参照）。
0003728264.tif 000005
４．文書カテゴリの最終位置＋１が、記録対象の新規文書の開始位置として使用され、段階増分は１である。各文字の文字位置は、文書カテゴリ中の文字の順序に従って判定される。本実施例では、文書Ａｍｅｒｉｃａ２．ｔｘｔの開始位置は、３０４９２である。Ａｍｅｒｉｃａ２．ｔｘｔの全ての文字の文字位置が表４に示されている。
【０１０９】
５．新規文書の記録前の文書カテゴリ中のある文字の最大位置（本実施例の項目１に記載）及びその文字の現在の文字位置に基づいて、文字の差分値が、差分アルゴリズムにより計算される。ある文字の現在の差分値が、複数バイトを必要とし、現在のミニブロックの２６０バイト（４＋２５６バイト）の残りのバイトが、新規の差分値にとって十分ではない場合、システムは０ｘ００を使用して現在のミニブロックの残りのバイトを充填する。続いて、新規のミニブロックが使用される。その文書カテゴリ中のその文字の現在位置が、新規のミニブロックの最小位置としてその始めの４バイトに格納される。この文字がこれ以降も出現する場合は、各文字位置と前の文字位置との間の差分値が、第５バイト及び各後続バイトに格納される。現在の文字位置が、その文書カテゴリ中のその文字の最大位置として格納される。ミニブロックが位置データで充填される場合、新規のミニブロックが使用され、文字の現在の文字位置が、このミニブロックの最小位置としてその中に格納される。上述のプロセスは、データベースブロック中の全てのミニブロックがデータで充填されるまで繰り返される。実施例２では、カタカナ「リ」及び漢字「衆」が例として取り上げられる。前述のように、データベース１０４において、ニュース文書カテゴリ中の「リ」の最大位置は８２３７であり、このカタカナの位置データを格納するための最終データベースブロックは、２５８バイトの位置データを格納している。表４において明らかなように、文書Ａｍｅｒｉｃａ２．ｔｘｔを記録する場合、この文書の第１文字「リ」の文字位置は、３０４９４であり、データベース１０４の文字位置情報に格納されたニュース文書カテゴリにおけるカタカナ「リ」の最大文字位置は８２３７である。差分アルゴリズムによれば、３０４９４と８２３７との間の差分値は、０ｘ８１Ｂ０２０であり、この格納には３バイトが必要である。データベースブロック中の各ミニブロックの保全性を維持するために、第１ミニブロックの第２５９バイト及び第２６０バイトが、０ｘ００で充填され、この文書に出現する文字の位置データが、第２ミニブロックに格納される。ニュース文書カテゴリ中の「リ」の文字位置３０４９４（０ｘ７７１Ｅ）が、第２ミニブロックの最小位置として、このミニブロックの第１から第４バイトに格納される。文書中における「リ」の第２の出現の文字位置は、３０５０３である。このときの対応する差分値は、０ｘ０９であり、この値は、第２ミニブロックの第５バイトに格納される。表５のカタカナ「リ」の行の太字を参照されたい。また、前述のように、ニュース文書カテゴリ中の文字「衆」の最大位置は１３２０であり、この文字の位置データを格納するための第１ミニブロックは、その２５バイトの位置データを格納している。文字「衆」は、この文書中に１回出現し、ニュース文書カテゴリ中のその文字位置は３０４９７である。この文字の現在の文字位置３０４９７及びデータベース１０４の文字位置情報から検索されたニュース文書カテゴリ中のこの文字の最大文字位置１３２０に基づいて、差分値が０ｘ８１Ｅ６５Ｅとして計算される。この値は、格納に３バイト必要である。この差分値が、文字「衆」のミニブロックの第２６バイト、第２７バイト及び第２８バイトに格納される。表５の文字「衆」の行を参照されたい。その他の文字の差分値の計算及び格納は、文字「リ」及び「衆」と同様である。実施例２の８つの異なる文字の位置情報に関しては、表５を参照されたい。
0003728264.tif 000006
６．上記各文字の処理終了後、文字の内部コードの順序に従った各文字のレコードを求めて、データベース１０４が検索される。指定の文字のレコードが見つかった場合、現在記録済の文字の情報を使用してデータベース１０４の文字情報及び文字位置情報が更新される。指定の文字のレコードが見つからない場合、現在記録済の文字の情報は、データベース１０４の文字情報及び文字位置情報に格納される。実施例２では、文書Ａｍｅｒｉｃａ２．ｔｘｔ中の文字「リ」及び「衆」が例として取り上げられる。「リ」及び「衆」の文字情報は、それぞれ、データベース１０４において探し出される。続いて、データベース１０４のその文字情報及び文字位置情報が更新される。文字位置情報を更新する場合、文字「リ」に関しては、文書インデックス生成部１０５が、データベース１０４中の最終データベースブロックの第１ミニブロックの最終２バイトと、第２ミニブロックの第１バイトから第５バイトを更新すると共に、データベース１０４の文字情報において、ニュース文書カテゴリ中の文字の最大文字位置が３０５０３に更新される。「衆」の位置情報をデータベース１０４に書き込む場合、文書インデックス生成部１０５が、データベース１０４の文字位置情報において、文字位置を格納するフィールドの第２６バイト、第２７バイト及び第２８バイトのデータを更新する。それと共に、データベース１０４の文字情報において、ニュース文書カテゴリ中の文字「衆」の最大文字位置が、３０４９７に更新される。その他の６文字のデータ更新処理も「リ」及び「衆」と同様である。
0003728264.tif 000007
７．データベース１０４において、文書カテゴリ情報中の最終位置及び記録された文書の文書情報中の終了位置が更新される。実施例２では、データベース１０４のニュース文書カテゴリの文書カテゴリ情報において、ニュース文書カテゴリ中の全ての文字の最終位置が３０５０４に更新される。また、文書情報において、文書Ａｍｅｒｉｃａ２．ｔｘｔの終了位置は、３０５０４である。
【０１１０】
実施例３：
本実施例は、実施例２の文書及びその他の複数の文書の記録後に、ある文書が記録される場合であるとする。
【０１１１】
ＷＩＮＤＯＷＳプラットフォームにおいて、本実施例では、文書インデックス生成部１０５を使用して文書（テキストファイル）Ａｍｅｒｉｃａ２．ｔｘｔをデータベース１０４に記録し、７文字を含む文書中の各文字に対してインデックスを作成する。文書の内容は以下の通りである：
アメリカ合衆国
この文書が所属する文書カテゴリ名をニュースカテゴリ、文書カテゴリ番号を１とし、この文書カテゴリには、複数の文書が記録されているものとする。また、この文書カテゴリにおいて、文字の最終位置は、３０３８４２９７５、上記文書の文書番号は、２９０３７０、文書名は、Ａｍｅｒｉｃａ３、発行時は、２０００．５．１であるとする。この文書が、文書インデックス生成部１０５に供給され、以下に示すステップと共に記録される。本実施例では、文字「リ」が例として取り上げられる。データベース１０４において、ニュース文書カテゴリのカタカナ「リ」の最大文字位置は、１０１６９４７である。この文字の位置データは、複数のデータベースブロックに格納される。この文字の位置データを格納するための最終データベースブロックは、１０３９９９７バイトの位置データを格納している。
【０１１２】
１．ニュース文書カテゴリにおける現在の最終位置と、このカテゴリ中の各文字の最大文字位置と、各文字の対応する最終データベースブロックに格納された位置データの長さとを探し出すために、文書インデックス生成部１０５が、データベース１０４中のニュース文書カテゴリの文書カテゴリ情報を検索する。実施例３では、ニュース文書カテゴリ中の文字の最終位置は、３０３８４２９７５であり、ニュース文書カテゴリ中のカタカナ「リ」の最大文字位置は、１０１６９４７である。
【０１１３】
２．文書の全内容が、メモリＲＡＭ３に読み込まれる。文書インデックス生成部１０５は、文書番号、文書名、作成者及び発行時をデータベース１０４の文書情報に格納する。本実施例では、システムは、７文字：「アメリカ合衆国」を読み込む。文書番号２９０３７０、文書名Ａｍｅｒｉｃａ３、発行時２０００．５．１１、及びニュース文書カテゴリ中のこの文書の開始文字位置３０３８４２９７６が、文書インデックス生成部１０５によりデータベース１０４中のニュース文書カテゴリの文書情報に格納される。
【０１１４】
３．文書Ａｍｅｒｉｃａ３．ｔｘｔ中の７文字は、１つずつ、シフトＪＩＳコードからシステムの対応する内部コードへと変換される（表７の列２、３参照）。
0003728264.tif 000008
４．ニュース文書カテゴリの最終位置＋１が、記録対象の新規文書の開始位置として使用され、増加の段階は１である。各文字の文字位置は、文書カテゴリ中の文字の順序に従って判定される。本実施例では、文書Ａｍｅｒｉｃａ３．ｔｘｔの開始位置は、３０３８４２９７６である。Ａｍｅｒｉｃａ３．ｔｘｔ中の全ての文字の文字位置が表７に示されている。
【０１１５】
５．新規文書の記録前の文書カテゴリ中のある文字の最大位置（本実施例の項目１に記載）及びその文字の現在の文字位置に基づいて、各文字の差分値が、差分アルゴリズムにより計算される。ある文字の現在の差分値が、複数バイトを必要とし、現在のミニブロックの２６０バイト（４＋２５６バイト）の残りのバイトが、新規の差分値にとって十分ではない場合、システムは０ｘ００を使用して現在のミニブロックの残りのバイトを充填する。続いて、新規のミニブロックが使用される。その文書カテゴリ中のその文字の現在位置が、新規のミニブロックの最小位置としてその始めの４バイトに格納される。この文字がこれ以降も出現する場合は、各文字位置と前の文字位置との間の差分値が、新規のミニブロックの第５バイト及び各後続バイトに格納される。ミニブロックが位置データで充填される場合、新規のミニブロックが使用され、文字の現在の文字位置は、このミニブロックの最小位置としてその中に格納される。上述のプロセスは、データベースブロック中の全てのミニブロックがデータで充填されるまで繰り返される。実施例３では、カタカナ「リ」が例として取り上げられる。前述のように、データベース１０４において、ニュース文書カテゴリ中のカタカナ「リ」の最大位置は、１０１６９４７であり、このカタカナの位置データを格納するための最終データベースブロックは、１０３９９９７バイトの位置データを格納している。1039997／260を計算すると、このカタカナは、最終データベースブロック中の３９９９個のミニブロックを充填している。また、1039997 % 260を計算すると、データベースブロックの第４０００ミニブロックは、カタカナの位置データのうちの２５７バイトを格納しており、３バイトを残している。文書Ａｍｅｒｉｃａ３．ｔｘｔにおいて、ニュース文書カテゴリ中の「リ」の文字位置は、３０３８４２９７８であり、データベース１０４の文字位置情報に格納されたニュース文書カテゴリ中のカタカナ「リ」の最大文字位置は、１０１６９４７である。差分アルゴリズムによれば、３０３８４２９７８と１０１６９４７との間の差分値は、０ｘ８１９４ＥＡ９Ｆ７７であり、この格納には５バイトが必要である。データベースブロック中の各ミニブロックの保全性を維持するために、第４０００ミニブロックの第２５８バイトから第２６０バイトが、０ｘ００で充填される。続いて、新規のデータベースブロックが使用される。ニュース文書カテゴリ中の「リ」の文字位置０ｘ１２１Ｃ４６Ａ２が、新規のデータベースブロックの第１ミニブロックに格納される。
【０１１６】
６．文書中の全ての文字の処理終了後、文字の内部コードの順序に従った各文字のレコードを求めて、データベース１０４が検索される。指定の文字のレコードが見つかった場合、現在記録済の文字の情報を使用してデータベース１０４の文字情報及び文字位置情報が更新される。指定の文字のレコードが見つからない場合、現在記録済の文字の情報は、データベース１０４の文字情報及び文字位置情報に格納される。実施例３では、文書Ａｍｅｒｉｃａ３．ｔｘｔ中の文字「リ」が例として取り上げられる。「リ」の文字情報が、データベース１０４において探し出される。続いて、データベース１０４のその文字情報及び文字位置情報が更新される。文書Ａｍｅｒｉｃａ３．ｔｘｔを記録する前に、文字「リ」の１０３９９９バイトの位置データが、データベース１０４中の文字の最終レコード項目のデータベースブロックに格納されている。文字位置情報を更新する場合、文字「リ」に関しては、文書インデックス生成部１０５が、データベース１０４中の文字の文字位置情報の最終レコード項目のデータベースブロックを更新する。続いて、新規のデータベースブロックが、文字の文字位置情報中の新規のレコード項目としてデータベース１０４に格納される。この新規のレコード項目が、データベース１０４中の文字の文字位置情報中の最終のレコード項目になる。
0003728264.tif 000009
７．データベース１０４において、文書カテゴリ情報中の最終位置及び記録された文書の文書情報中の終了位置が更新される。実施例３では、データベース１０４中のニュース文書カテゴリの文書カテゴリ情報において、ニュース文書カテゴリ中の全ての文字の最終位置が３０３８４２９８２に更新される。また、文書情報において、文書Ａｍｅｒｉｃａ３．ｔｘｔの終了位置は、３０３８４２９８２である。
【０１１７】
全文検索処理
また、本発明では、全文検索の方法が提供される。この方法では、オペレータにより指定された検索語に対する全文検索を本発明において作成された文書インデックスの文字位置情報を使用して実施する。
【０１１８】
図４Ａ及び４Ｂのフローチャートにおいて、作成された文書インデックスを使用しての全文検索処理を以下に説明する。
【０１１９】
ステップ５０２において、文書カテゴリ名が入力される。例えば、入力ボックスを有するダイアログボックスが表示され、オペレータに対して文書カテゴリ名を入力するように促す。
【０１２０】
ステップ５０４において、入力された文書カテゴリ名に従って、全文検索エンジン１０６が、データベース１０４において文書カテゴリ情報を検索する。オペレータにより指定された文書カテゴリの文書カテゴリ情報を見つけた場合、全文検索エンジン１０６は、文書カテゴリ情報からその文書カテゴリの文書カテゴリ番号を取得する。
【０１２１】
ステップ５０６において、検索語が入力される。例えば、入力ボックスを有するダイアログボックスが表示され、オペレータに対して検索語を入力するように促す。
【０１２２】
ステップ５０８において、全文検索の前のデータ初期化プロセスが行なわれる。このプロセスは以下の過程：
検索語一致位置を定義する過程であり、例えば、その初期値を１に設定する、すなわち、検索語の第１文字の指定文書カテゴリにおける第１の出現の位置を１とする過程と、
検索語の文字数を取得する過程と、
検索語の各文字を内部コードに変換する過程と、
検索語の各文字の順序に従って、各文字に変位が与えられる過程であり、例えば、検索語「米国アメリカ」の第１文字を開始点として設定すると、「米」の変位は０、「国」の変位は−１、「ア」の変位は−２、「メ」の変位は−３、「リ」の変位は−４、「カ」の変位は−５である過程と、
データベース照会ステートメントを構成する過程と、
結果セットを初期化する過程とを含む。
【０１２３】
ステップ５１０において、ステップ５０８で構成されたデータベース照会ステートメントがデータベース１０４に与えられ、データベース検索が行なわれる。検索語の各文字の位置情報の全てのレコード項目が探し出される。これらのレコードは、レコードセットを形成する。レコードセットは、データベース１０４中の各文字の位置情報レコードを含む。各レコード項目は、文字位置データを格納するためのデータベースブロックのフィールドを含む。
【０１２４】
ステップ５１２において、検索語の各文字のレコードがレコードセット中にあるか否かが判定される。レコードセットにレコードのない文字があれば、検索は終了する。レコードのない文字がなければ、ステップ５１４に進む。
【０１２５】
ステップ５１４において、検索語の各文字の探し出されたレコードが、データベースブロックの最小位置に従って、各文字ごとに整列される。そして、各文字に対して、第１のレコード項目のデータベースブロック、このデータベースブロック中第１のミニブロック及びこの第１のミニブロック中の第１の文字位置が、それぞれ、現在のデータベースブロック、現在のミニブロック及び現在の文字位置として設定される。
【０１２６】
ステップ５１６において、カウンタ（Ｉ）が設定される。これは、検索語の第Ｉ番目の文字の復元／照合処理が行なわれていることを示す。ステップ５１８において、カウンタは、検索語の第I番目の文字の文字位置の復元／照合処理を制御するためのループ制御変数として機能する。Iの初期値は１であり、これは、復元／照合処理が、検索語の第１文字から開始されることを示す。
【０１２７】
ステップ５１８において、Iが検索語の文字数以下である場合、ステップ５２０に進み、第I番目の文字の復元／照合処理を行なう。文字数を超える場合は、検索結果が取得、格納されたことを示し、ステップ５４４に進む。
【０１２８】
ステップ５２０において、検索語一致位置が、検索語の文字Iの現在のレコード項目のデータベースブロックの最大位置と文字Iの変位との和と比較される。
１．検索語一致位置の方が大きい場合、データベースブロックには、この検索語一致位置と一致する文字位置がないことを意味し、ステップ５３８に進む。ここで、文字Iがレコードセット中に更にレコードを有するか否かが判定される。
文字Iがレコードセット中に更にレコードを有する場合、ステップ５４０に進み、文字Iの次のレコード項目を取得し、そのレコード項目のデータベースを現在のデータベースとして、その中の第１のミニブロックを現在のミニブロックとして、また、第１のミニブロックの最小位置を現在の文字位置として設定する。
レコードがない場合、現在の検索語の検索は終了する。
２．検索語一致位置の方が小さい場合、現在のレコード項目のデータベースブロック中のミニブロックは、一致する文字位置を格納している可能性があることを意味する。
検索語一致位置が和と等しい場合、現在のデータベースブロックの最大位置が、一致文字位置であることを意味し、ステップ５４２に進む。ここで、Iに１を加えて、次の文字が現在の一致位置と一致するか否かが判定される。
【０１２９】
ステップ５２２において、まず最初に、若干の説明を行なう。本発明では、データベースブロックは、複数のミニブロックを有しても良い。各ミニブロックは、最小位置及び複数の差分値を含む。位置データが昇順に格納される。従って、２個の連続するミニブロックの第２ミニブロックの最小位置は、第１ミニブロックの最大位置とみなすことができる。例えば、文字「日」のデータベースブロック中の第５ミニブロックの最小位置は１０００であり、第６ミニブロックの最小位置は１５００であるとする。データベースブロックの第４ミニブロックに格納された最大文字位置は、１０００未満であり、データベースブロックの第５ミニブロックに格納された最大文字位置は、１５００未満であると判定することができる。データベースブロック中の最終ミニブロックに関して、その最大位置は、データベースブロックの最大位置であると判定することができる。
【０１３０】
ステップ５２２において、検索語一致位置が、検索語の文字Iの現在のミニブロックの最大位置と文字Iの変位との和と比較される。
１．検索語一致位置の方が大きい場合、現在のミニブロックには、この検索語一致位置と一致する文字位置がないことを意味し、ステップ５３４に進む。ここで、現在のレコード項目に次のミニブロックがあるか否かが判定される。
ブロックがある場合、ステップ５３６に進み、次のミニブロックを取得し、このミニブロックを現在のミニブロックとして、ミニブロックの最小位置を現在の文字位置として設定する。
レコードがない場合、ステップ５３８に進む。
２．検索語一致位置の方が小さい場合、現在のミニブロックは、一致文字位置を格納している可能性があることを意味し、ステップ５２４に進む。ここで、現在のミニブロックの位置データが判定される。
検索語一致位置が和と等しい場合、現在のミニブロックの最大位置が、一致文字位置であることを示し、ステップ５４２に進む。ここで、Iに１が加えられ、次の文字が現在の一致位置と一致するか否かが判定される。
【０１３１】
ステップ５２４において、検索語一致位置が、検索語の文字Iの現在の復元された文字位置と文字Iの変位との和と比較される。
１．検索語一致位置の方が大きい場合、ステップ５３０に進み、現在のミニブロックには次の差分値があるか否かが判定される。
差分値がある場合、ステップ５３２に進み、次の差分値を取得する。この差分値及び文字の現在の文字位置が差分アルゴリズムにより計算され、所属する文書カテゴリ中の文字の新規の現在の文字位置が取得される。
差分値がない場合、ステップ５３４に進む。
２．検索語一致位置の方が小さい場合、ステップ５２６に進む。ここで、検索語一致位置が、文字Iの現在の復元された文字位置及び文字Iの変位としてリセットされ、ステップ５２８に進む。ステップ５２８において、Iは１に設定され、ステップ５１８に戻る。ここで、検索語の第１文字から新規の検索語一致位置と一致する文字位置が検索される。
検索語一致位置が和と等しい場合、現在の復元された文字位置が、一致文字位置であることを示し、ステップ５４２に進む。ここで、Iに１が加えられ、次の文字が現在の検索語一致位置と一致するか否かが判定される。
【０１３２】
ステップ５４４において、ステップ５１８でIが検索語の文字数より多いと判定される場合、検索語の各文字の現在の復元された文字位置が、現在の検索語一致位置と一致する、すなわち、検索語の検索結果が現在の文書カテゴリにおいて見つかったことを意味する。続いて、文書情報共有変換部により、現在の検索語一致位置がどの文書にあるかが判定される。また、削除フラグにより文書が削除されたか否かが判定される。文書が削除された場合、削除済文書に出現した検索語が、検索結果であってはならない。文書が削除されていない場合、文書の文書番号が取得される。
【０１３３】
ステップ５４６において、取得された文書番号が検索結果セットに格納される。
【０１３４】
ステップ５４８において、検索語一致位置が更新される。現在の検索語一致位置に１を加えて新規の検索語一致位置とする。ステップ５１６に戻り、Iを１に設定する。続いて、ステップ５１８に進み、検索語の第１文字から新規の検索語一致位置と一致する文字位置を検索する。
【０１３５】
実施例４：
全文検索エンジン１０６により、データベース１０４に格納された各文書に対して全文検索が行なわれる。
【０１３６】
ステップ５０２において、文書カテゴリ名が入力される。例えば、入力ボックスを有するダイアログボックスが表示され、オペレータに対して文書カテゴリ名「ニュース」を入力するように促す。
【０１３７】
ステップ５０４において、入力された文書カテゴリ名に従って、全文検索エンジン１０６が、データベース１０４において文書カテゴリ情報を検索する。ニュース文書カテゴリの文書カテゴリ情報を見つけた場合、全文検索エンジン１０６は、文書カテゴリ情報からニュース文書カテゴリの文書カテゴリ番号１を取得する。
【０１３８】
ステップ５０６において、検索語が入力される。例えば、入力ボックスを有するダイアログボックスが表示され、オペレータに対して検索語「米国アメリカ」を入力するように促す。
【０１３９】
ステップ５０８において、全文検索の前のデータ初期化プロセスが行なわれる。このプロセスは以下の過程：
検索語一致位置の初期値を１として定義する過程であり、すなわち、検索語の第１文字のニュース文書カテゴリにおける第１の出現位置を１とする過程と、
検索語「米国アメリカ」の文字数６を取得する過程と、
検索語の各文字を内部コードに変換し、例えば、６文字をシフトＪＩＳコードから対応するシステム内部コードに変換する（表９の列１、２参照）過程と、
検索語の各文字の順序に従って、各文字に変位が与えられる過程であり、検索語「米国アメリカ」の第１文字が開始点として設定され、６文字にはそれぞれ変位が与えられ、「米」の変位は０、「国」の変位は−１、「ア」の変位は−２、「メ」の変位は−３、「リ」の変位は−４、「カ」の変位は−５である過程と、入力された文書カテゴリ名「ニュース」及び６文字の内部コードとが、データベースＳＱＬ照会ステートメントにおいて記述される過程と、
結果セットを空にする過程とを含む。
【０１４０】
ステップ５１０において、ステップ５０６で構成されたデータベース照会ステートメントがデータベース１０４に与えられ、データベース検索が行なわれる。検索語の各文字の位置情報の全てのレコード項目が探し出される。これらのレコードは、レコードセットを形成する。各レコード項目は、複数のフィールドを含む。文字位置データを格納するデータベースブロックは、各レコード項目にフィールドとして含まれる。すなわち、１レコード項目は、１個のデータベースブロックに対応する。レコードセットは、データベース１０４に格納された検索語の各文字の位置情報を含む。表９は、データベース１０４中のニュース文書カテゴリ中の６文字「米国アメリカ」の文字位置情報の幾つかのレコード項目を示す。
0003728264.tif 000010
ステップ５１２において、検索語の各文字のレコードがレコードセット中にあるか否かが判定される。レコードセットにレコードのない文字があれば、検索は終了する。レコードのない文字がなければ、ステップ５１４に進む。
【０１４１】
ステップ５１４において、検索語の各文字の探し出されたレコードは、データベースブロックの最小位置に従って、各文字ごとに整列される。例えば、「リ」の３つのレコード項目のデータベースブロックの最小位置は、それぞれ、５、３０４９４及び３０３８４２９７８である。
【０１４２】
ステップ５１６において、カウンタ（Ｉ）の初期値が１に設定される。これは、検索語の第Ｉ文字「米」の復元／照合処理が第１文字「米」から開始されることを意味する。
【０１４３】
ステップ５１８において、I = 1 ＜ 6の場合、ステップ５２０に進む。１に初期化された検索語一致位置が、文字「米」のデータベースブロックの最大位置３０４９９と文字「米」の変位０（表１０の列１、４及び５を参照)との和と比較される。1 ＜ 30499 + 0であるので、データベースブロックに、現在の検索語一致位置１と一致する「米」の文字位置がある可能性がある、すなわち、文字位置と変位０の和が、現在の検索語一致位置に等しいことを意味する。データベースブロック中の第２ミニブロックの最小位置がＸであるとする。検索語一致位置１が、データベースブロックの第１ミニブロックの最大位置Ｘ（第２ミニブロックの最小位置）と文字「米」の変位０との和と比較される。現在の検索語一致位置１に等しい「米」の文字位置が、第１ミニブロックに存在する可能性があることが判定される。続いて、現在の検索語一致位置１が、第１ミニブロックの最小位置１と変位０との和と比較される。比較結果は等しく、カウンタが１だけ増分されてI = 2となる。ステップ５１８に戻り、文字「国」のデータベースブロックが、「国」の変位との和が現在の検索語一致位置１に等しい文字位置を有するか否かが判定される。
【０１４４】
現在I = 2であり、「国」の変位は−１である。文字の第１レコード項目のデータベースブロックの最大位置は、３０３８４２９８２（表９の列１、４及び５を参照）である。第１ミニブロックの最小位置は２である。第１ミニブロックの最大位置をＹとする。まず、レコード項目のデータベースブロックの最大位置と文字の変位との和が３０３８４２９８１（303842982 - 1 = 303842981）と計算される。この和３０３８４２９８１が、現在の検索語一致位置１と比較され、それにより、データベースブロックが現在の検索語一致位置と一致する文字位置を有する可能性があると判定される。検索語一致位置１が、データベースブロックの第１ミニブロックの最大位置（第２ミニブロックの最小位置）と変位との和（Y - 1）と比較され、それにより、現在の検索語一致位置と一致する文字位置が、データベースブロックの第１ミニブロックに存在する可能性があると判定される。検索語一致位置１が、第１ミニブロックの最小位置２と変位−１との和１（2 - 1 = 1）と比較される。比較結果は等しく、これは、現在の検索語一致位置１と一致する検索語の第２文字「国」の文字位置が見つかったことを意味する。カウンタが１だけ増分される。
【０１４５】
残りの４文字「アメリカ」の照合プロセスは、文字「米国」と同様であり、変位が異なるのみである。「カ」の照合プロセスが終了したとき、カウンタは７である。従って、カウンタの数値は、検索語の文字数６より大きく、これは、検索語の第１検索結果が、一致位置１で見つかったことを意味する。続いて、ステップ５４４に進む。
【０１４６】
ステップ５４４から５４８において、文書情報共有変換部１０７により、上述の一致位置１を使用して対応する文書番号１が探し出される。検索結果が、結果セットに格納される。続いて、検索語一致位置が１だけ増分され、現在の検索語一致位置として新規の一致位置２が得られる。カウンタが１にリセットされる。各文字の現在のデータベースブロックの現在のミニブロック中の現在の文字位置から新規の検索語一致位置と一致する結果の検索が開始される。
【０１４７】
次の検索結果の検索を開始する場合、まず、差分値０ｘ８２６Ｅが、文字「米」の現在のデータベースブロックの第１ミニブロックの第５バイト及び第６バイトから取得される。単位桁以外の桁の最上位のビットが、０に復元される。すなわち、０ｘ８２６Ｅが、０ｘ０２６Ｅに復元される。(016E)16 = (366)10である。続いて、「米」の前の文字位置１と３６６との和が計算され、復元された文字位置３６７（1 + 366 = 367）が得られる。復元された文字位置３６７と変位０との和は、現在の検索語一致位置よりも大きい。従って、この復元された文字位置は、一致位置２と一致しない。現在の文字位置３６７と変位０の和３６７を使用して、検索語一致位置がリセットされる。また、カウンタが１にリセットされる。各文字の現在のデータベースブロックの現在のミニブロック中の現在の文字位置から新規の検索語一致位置３６７と一致する結果の検索が開始される。上述のプロセスは、検索語中の文字の未処理の文字位置情報がなくなるまで継続される。こうして、語「米国アメリカ」の検索プロセスが終了する。
【０１４８】
実施例５：
全文検索エンジン１０６により、データベース１０４に格納された各文書に対して全文検索が行なわれる。語「アメリカ」をニュース文書カテゴリにおいて検索するものとする。
【０１４９】
ステップ５０２において、文書カテゴリ名が入力される。例えば、入力ボックスを有するダイアログボックスが表示され、オペレータに対して文書カテゴリ名「ニュース」を入力するように促す。
【０１５０】
ステップ５０４において、入力された文書カテゴリ名に従って、全文検索エンジン１０６が、データベース１０４において文書カテゴリ情報を検索する。ニュース文書カテゴリの文書カテゴリ情報を見つけた場合、全文検索エンジン１０６は、文書カテゴリ情報からニュース文書カテゴリの文書カテゴリ番号１を取得する。
【０１５１】
ステップ５０６において、検索語が入力される。例えば、入力ボックスを有するダイアログボックスが表示され、オペレータに対して検索語「アメリカ」を入力するように促す。
【０１５２】
ステップ５０８において、全文検索の前のデータ初期化プロセスが行なわれる。このプロセスは以下の過程：
検索語一致位置の初期値を１として定義する過程であり、すなわち、検索語の第１文字のニュース文書カテゴリにおける第１の出現の位置を１とする過程と、
検索語「アメリカ」の文字数４を取得する過程と、
検索語の各文字を内部コードに変換し、例えば、４文字をシフトＪＩＳコードから対応するシステム内部コードにそれぞれ変換する（表１０の列１、２参照）過程と、
検索語の各文字の順序に従って、各文字に変位が与えられる過程であり、検索語「アメリカ」の第１文字が開始点として設定され、４文字にはそれぞれ変位が与えられ、「ア」の変位は０、「メ」の変位は−１、「リ」の変位は−２、「カ」の変位は−３である過程と、
入力された文書カテゴリ名「ニュース」及び４文字の内部コードとが、データベースＳＱＬ照会ステートメントにおいて記述される過程と、
結果セットを空にする過程とを含む。
【０１５３】
ステップ５１０において、ステップ５０６で構成されたデータベース照会ステートメントがデータベース１０４に与えられ、データベース検索が行なわれる。検索語の各文字の位置情報の全てのレコード項目が探し出される。これらのレコードは、レコードセットを形成する。各レコード項目は、複数のフィールドを含む。文字位置データを格納するデータベースブロックは、各レコード項目にフィールドとして含まれる。すなわち、１レコード項目は、１個のデータベースブロックに対応する。レコードセットは、データベース１０４に格納された検索語の各文字の位置情報を含む。表１０は、データベース１０４中のニュース文書カテゴリ中の４文字「アメリカ」の文字位置情報の幾つかのレコード項目を示す。
0003728264.tif 000011
ステップ５１２において、検索語の各文字のレコードがレコードセット中にあるか否かが判定される。レコードセットにレコードのない文字があれば、検索は終了する。レコードのない文字がなければ、ステップ５１４に進む。
【０１５４】
ステップ５１４において、検索語の各文字の探し出されたレコードは、データベースブロックの最小位置に従って、各文字ごとに整列される。例えば、「リ」の３つのレコード項目のデータベースブロックの最小位置は、それぞれ、１００５、３０４９４、３０３８４２９７８である。
【０１５５】
ステップ５１６において、カウンタ（Ｉ）の初期値が１に設定される。これは、復元／照合処理が検索語の第１文字「ア」から開始されることを示す。
【０１５６】
ステップ５１８において、I = 1 ＜ 4の場合、ステップ５２０に進む。１に初期化された検索語一致位置が、文字「ア」のデータベースブロックの最大位置３０３８４２９７６と文字「ア」の変位０（表１０の列１、４及び５を参照)との和と比較される。1 ＜ 303842976 + 0であるので、データベースブロックに、現在の検索語一致位置１と一致する「ア」の文字位置がある可能性がある、すなわち、文字位置と変位０の和が、現在の検索語一致位置１に等しいことを意味する。データベースブロック中の第２ミニブロックの最小位置がＸ１であるとする。検索語一致位置１が、データベースブロックの第１ミニブロックの最大位置Ｘ１（第２ミニブロックの最小位置）と文字「ア」の変位０との和と比較される。現在の検索語一致位置１に等しい「ア」の文字位置が、第１ミニブロックに存在する可能性があることが判定される。続いて、現在の検索語一致位置１が第１ミニブロックの最小位置１００３と変位０との和と比較される。第１ミニブロックの最小位置１００３と変位０との和は、現在の検索語一致位置１より大きい。現在、「ア」の現在の文字位置は、１００３である。ステップ５２６において、検索語一致位置が、「ア」の現在の文字位置１００３と変位０との和に設定され、カウンタは１に設定される。ステップ５１８に戻り、新規の検索語一致位置１００３を使用して、再度、第１文字「ア」の現在の文字位置に対しての照合プロセスが行なわれる。検索語一致位置１００３が、文字の現在の文字位置１００３と変位との和に等しいと判定される。Ｉが１だけ増分される。
【０１５７】
現在I = 2であり、「メ」の変位は−１である。文字の第１レコード項目のデータベースブロックの最大位置は、３０３８４２９７７（表１０の列１、４及び５を参照）である。第１ミニブロックの最小位置は１００４である。第１ミニブロックの最大位置をＹ２とする。まず、レコード項目のデータベースブロックの最大位置と文字の変位−１との和が３０３８４２９７６（303842977 - 1 = 303842976）と計算される。この和３０３８４２９７６が、現在の検索語一致位置１００３と比較され、それにより、データベースブロックが現在の検索語一致位置と一致する文字位置を有する可能性があると判定される。検索語一致位置１００３が、データベースブロックの第１ミニブロックの最大位置（第２ミニブロックの最小位置）と変位との和（Y2 - 1）と比較され、それにより、現在の検索語一致位置１００３と一致する文字位置が、データベースブロックの第１ミニブロックに存在する可能性があると判定される。検索語一致位置１００３が、第１ミニブロックの最小位置１００４と変位−１との和１００３（1004 - 1 = 1003）と比較される。比較結果は等しく、これは、現在の検索語一致位置１００３と一致する検索語の第２文字「メ」の文字位置が見つかったことを意味する。カウンタが１だけ増分される。
【０１５８】
現在、I = 3である。検索語一致位置１００３と一致する第３文字「リ」の文字位置の検索を行なう。「リ」の変位は−２である。現在のデータベースブロックの最大位置は、１３２０である（表１０の列１、４及び５を参照）。第１のミニブロックの最小位置は、１００４である。第１のミニブロックの最大位置をＸ３とする。まず、レコード項目のデータベースブロックの最大位置と文字の変位−２との和を１３１８（1320 - 2 = 1318）と計算する。続いて、和１３１８が、現在の検索語一致位置１００３と比較され、それにより、データベースブロックは、現在検索語一致位置と一致する文字位置を有する可能性があると判定される。検索語一致位置１００３が、データベースブロックの第１ミニブロックの最大位置（第２ミニブロックの最小位置）と変位−２との和（X3 - 2）と比較され、それにより、現在の検索語一致位置１００３と一致する文字位置が、データベースブロックの第１ミニブロックに存在する可能性があると判定される。検索語一致位置１００３が、第１ミニブロックの最小位置１００５と変位−１との和１００３（1005 - 2 = 1003）と比較される。比較結果は等しく、これは、現在の検索語一致位置１００３と一致する検索語の第３文字「リ」の文字位置が見つかったことを意味する。カウンタが１だけ増分される。
【０１５９】
現在、I = 4である。検索語一致位置１００３と一致する第３文字「カ」の文字位置の検索を行なう。「カ」の変位は、−３である。現在のデータベースブロックの最大位置は、３０３８４２９７９（表１０の列１、４及び５参照）。第１ミニブロックの最小位置は、１００６である。第１ミニブロックの最大位置は、Ｘ４であるとする。まず、レコード項目のデータベースブロックの最大位置と文字の変位−３の和は、３０３８４２９７６（303842979 - 3 = 303842976）と計算される。和３０３８４２９７６が、現在の検索語一致位置１００３と比較され、それにより、現在の検索語一致位置１００３と一致する文字位置を有する可能性があると判定される。検索語一致位置１００３が、データベースブロックの第１ミニブロックの最大位置（第２ミニブロックの最小位置）と変位−３との和（X4 - 3）と比較され、それにより、現在の検索語一致位置１００３と一致する文字位置が、データベースブロックの第１ミニブロックに存在する可能性があると判定される。検索語一致位置１００３が、第１ミニブロックの最小位置１００５と変位−３の和１００３（1006 - 3 = 1003）と比較される。比較結果は等しく、これは、現在の検索語一致位置１００３と一致する検索語の第４文字「カ」の文字位置が見つかったことを意味する。カウンタが、１だけ増分される。
【０１６０】
現在、I = 5である。ステップ５１８において、カウンタの数値は、検索語の文字数よりも大きい。従って、検索結果が一致位置１００３で見つかったものと判定される。ステップ５４４から５４８において、文書情報共有変換部１０７により、上述の一致位置１００３を使用して、対応する文書番号が探し出される。検索結果が、結果セットに格納される。続いて、検索語一致位置１００４が、１だけ増分され、現在の検索語一致位置として新規の一致位置１００４が得られる。カウンタが１にリセットされる。語「アメリカ」の各文字の現在の文字位置は、それぞれ、１００３、１００４、１００５及び１００６である。各文字の現在のデータベースブロックの現在のミニブロック中の現在の文字位置から新規の検索語一致位置と一致する新規の検索結果の検索が開始される。
【０１６１】
次の検索結果を検索する場合、まず、差分値０ｘ０４が、文字「ア」の現在のデータベースブロックの第１ミニブロックの第５バイトから取得される。この差分値には１桁しかないので、差分値は、直接、前の文字位置１００３に加算され、復元された文字位置１００７（1003 + 4 = 1007）が得られる。比較すると、「ア」の復元された文字位置１００７と変位０の和は、現在の検索語一致位置１００４より大きい。現在の文字位置１００７と変位０の和１００７が使用されて、検索語一致位置がリセットされる。また、カウンタも１にリセットされる。「ア」の一致文字位置の検索が再開される。その結果、検索語一致位置１００７は、「ア」の現在の文字位置に等しい。Ｉは１から２に変更される。
【０１６２】
現在の検索語一致位置１００７と一致する残りの３文字「メリカ」の文字位置が、それぞれ、検索される。ステップ５４４から５４８において、全ての文字が一致位置と一致する場合、文書情報共有変換部１０７により、取得された一致位置を使用して、対応する文書番号が探し出される。新規の検索結果が、結果セットに格納される。続いて、上述のプロセスが５１６から繰り返される。検索語の文字に未処理の文字位置情報がなくなると、語「アメリカ」に対する検索が終了する。
【０１６３】
文書情報共有変換部
本発明では、指定の文字位置から対応する文書情報を迅速に取得する方法をも提供する。キャッシュメモリの高速アクセス機能に基づいて、この方法では、共有メモリにデータベース１０４の文書情報の一部のバックアップコピーが格納される。全文検索を実行する場合、二分アルゴリズムにより、対応する文書番号が、全文検索プロセスで見つかった１つ以上の一致位置から、迅速且つ正確に取得される。文書の記録処理又は削除処理が実施される度に、文書情報のバックアップコピーがタイミング良く更新されるように、文書情報共有変換部１０７が起動される。
【０１６４】
図５において、文書情報共有変換部のプロセスを以下に説明する。
【０１６５】
１．文書カテゴリ番号入力に従って、文書情報共有変換部１０７が、まず、指定された文書カテゴリの文書情報が、共有メモリ６０４に格納されているか否かをチェックする。指定の文書カテゴリの文書情報が共有メモリ６０４にない場合、共有メモリのブロックをシステムに適用する。続いて、データベース１０４の文書情報が検索される。各文書の文書番号及び位置範囲を表すデータベース１０４中の指定の文書カテゴリ中の全文書の文書情報のデータ項目（文書番号、文書の開始位置及び終了位置、並びに、削除フラグなど）が、共有メモリ６０４に読み込まれ、マルチユーザにより使用されて指定の文書カテゴリを検索できるように、文書の順序通りの記録に従って、共有メモリに常駐するようになる。作成者、表題、記録日時、削除日時などのデータベース１０４の文書情報のその他のデータ項目が、リスト形式の情報としてデータベース１０４に格納される。共有メモリ６０４が、指定の文書カテゴリの文書情報を格納する場合、文書情報は、データベース１０４にアクセスすることなく、直接、共有メモリ６０４から読み出すことができる。従って、データベース１０４の入出力の頻度を低下させ、データベースへのアクセス時間を削減し、データベース照会の速度を増大することができる。
【０１６６】
２．全文検索を実行する場合、１つ以上の一致位置を格納するための１次元配列である位置情報６０６が、入力パラメータとして文書情報共有変換部１０７に与えられる。二分アルゴリズムにより、文書情報共有変換部１０７が、各一致位置を共有メモリ６０４の各文書の範囲（文書の開始位置及び終了位置)と比較し、一致位置のある文書を判定できるようになる。判定された文書の削除フラグがチェックされる。文書が削除されていれば、削除フラグは１であり、この文書に対する戻り値は、−１である。文書が削除されていない場合、文書情報共有変換部１０７が、見つかった対応する文書番号を出力する。最後に、一致位置から変換された全ての文書番号が、１つ以上の文書番号を格納するための１次元配列である文書情報６０８に格納される。文書情報６０８への文書番号の格納順序は、ちょうど、位置情報６０６中の一致位置の順序に対応する。
【０１６７】
３．新規の文書を記録し、文字インデックスを作成する場合、文書インデックス生成部１０５が、新規の文書の情報を共有メモリ６０４にタイミング良く追加するためのインタフェースを提供する。
【０１６８】
４．文書が削除される場合、文書インデックス生成部１０５が、共有メモリ６０４中の削除された文書の削除フラグをタイミング良く１（文書が削除されたことを示す)に設定するためのインタフェースを提供する。
【０１６９】
実施例７：
本実施例では、一致位置に対応する文書番号を取得できるように、一致位置を格納するための１次元配列中のデータが、文書情報に変換される。
【０１７０】
１．文書カテゴリ番号1の入力６０２に従って、文書情報共有変換部１０７が、まず、文書カテゴリ番号１の文書情報が共有メモリ６０４に格納されているか否かをチェックする。指定の文書カテゴリの文書情報が共有メモリ６０４にない場合、共有メモリ６０４のブロックをシステムに適用する。続いて、データベース１０４の文書情報中の文書カテゴリ番号１の全文書の文書情報が探し出される。各文書の文書番号、開始位置及び終了位置が取得されて共有メモリ６０４に読み込まれ、マルチユーザにより使用されて指定の文書カテゴリを検索できるように、文書の順序通りの記録に従って、共有メモリ６０４に常駐するようになる。詳細は、図５を参照されたい。
【０１７１】
２．複数の一致位置を格納するための１次元配列である位置情報６０６が、文書情報共有変換部１０７に与えられる。
【０１７２】
３．二分アルゴリズムにより、文書情報共有変換部１０７が、配列中の第１の一致位置より、共有メモリ６０４中の各文書の範囲（文書の開始位置及び終了位置）と各一致位置を比較し、一致位置のある文書を判定できるようにする。判定された文書の削除フラグがチェックされる。文書が削除されている場合、削除フラグは１であり、この文書に対応する戻り値は、−１である。文書が削除されていない場合、文書情報共有変換部１０７が、見つかった対応する文書番号を出力する。実施例７では、位置情報６０６中の第１一致位置１００１に対して、二分アルゴリズムにより、共有メモリ６０４において、開始位置が９９８、終了位置が１１００、文書番号が２１で削除フラグが文書が削除されていないことを示す０である対応文書を探し出す。文書情報共有変換部１０７が、一致位置１００１に対応する文書の文書番号２を第１の番号として文書情報６０８に格納する。こうして、１つの一致位置を対応する文書番号に変換するプロセスが完了する。検索及び比較の際に、位置情報６０６中の一致位置３００１を処理する場合、文書情報共有変換部１０７は、一致位置３００１が、開始位置が２８９０、終了位置が３００５で文書番号が４１の文書にあると判定する。続いて、削除フラグが１であるかがチェックされる。これは、文書が削除されたことを意味する。文書情報共有変換部１０７が、値−１を戻す場合、一致位置３００１には、対応する文書がないことを意味する。文書情報共有変換部による位置情報６０６中の他の一致位置への変換プロセスは、上述の過程と同じである。
【０１７３】
４．位置情報６０６中の検索語位置から変換された文書番号が、文書情報共有変換部１０７により文書情報６０８に格納される。文書情報６０８の文書番号の格納順序は、位置情報６０６中の一致位置の格納順序に対応する。
【図面の簡単な説明】
【図１Ａ】インデックス作成及び全文検索用システムの構造の一例を示す図。
【図１Ｂ】図１Ａのサーバのハードウェアブロック図。
【図２】文字位置データを格納するためのデータベースブロック及びミニブロックの構造を示す図。
【図３】  文書インデックス生成部の処理のフローチャート。
【図４Ａ】全文検索エンジンの処理のフローチャート。
【図４Ｂ】全文検索エンジンの処理のフローチャート。
【図５】文書情報共有変換部の処理を示す図。
【符号の説明】
１０４…データベース、１０５…文書インデックス生成部、１０６…全文検索エンジン、１０７…文書情報共有変換部、６０４…共有メモリ、６０８…文書情報
【図１Ａ】
0003728264.tif 000012
【図１Ｂ】
0003728264.tif 000013
【図２】
0003728264.tif 000014
【図３】
0003728264.tif 000015
【図４Ａ】
0003728264.tif 000016
【図４Ｂ】
0003728264.tif 000017
【図５】
0003728264.tif 000018