JP3728264B2 - インデックス作成装置、検索システム、及び制御方法 - Google Patents

インデックス作成装置、検索システム、及び制御方法 Download PDF

Info

Publication number
JP3728264B2
JP3728264B2 JP2002100490A JP2002100490A JP3728264B2 JP 3728264 B2 JP3728264 B2 JP 3728264B2 JP 2002100490 A JP2002100490 A JP 2002100490A JP 2002100490 A JP2002100490 A JP 2002100490A JP 3728264 B2 JP3728264 B2 JP 3728264B2
Authority
JP
Japan
Prior art keywords
character
document
block
database
mini
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2002100490A
Other languages
English (en)
Other versions
JP2003006231A (ja
Inventor
ヨン キン
ホン リ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Publication of JP2003006231A publication Critical patent/JP2003006231A/ja
Application granted granted Critical
Publication of JP3728264B2 publication Critical patent/JP3728264B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、コンピュータ情報処理における情報のインデックス作成及び検索に関し、特に、コンピュータ文字情報のインデックス作成及び検索を行なうための方法及びシステムに関する。
【0002】
【従来の技術】
コンピュータテキスト情報の現在の全文検索では、文字リスト方法及び語リスト方法の2つのインデックス作成方法がある。文字リスト方法の場合、検索の単位として文書中の文字を使用することでインデックスを作成するため、大きな格納空間を必要とする。語リスト方法の場合、検索の単位として文書中の語を使用することでインデックスを作成するため、使用する格納空間は小さく、検索速度も改善されるが、インデックス作成速度は遅く、検索漏れの率が高くなる。
【0003】
特開平8−235212号公報、8−101848号公報及び10−307841号公報では、文字リスト方法を使用してインデックスを作成し、ファイルシステムにより文書のインデックス情報を格納する全文検索システムが開示されている。文字列中の各文字に対して、システムは、該当する文字の各文書中での位置を格納するために、対応のファイルを作成する。文字位置データの格納空間を節約するために、文字インデックスを作成する場合、システムは、各文字の第1出現位置を対応するインデックスファイルに格納する。その第1位置に基づいて、差分アルゴリズム(差分アルゴリズムの定義に関しては、本明細書の用語の説明を参照)により、第1位置に後続する各位置及び先行する位置を使用して差分値が形成され、第1位置の後ろに順次格納される。全文検索を実施する場合、インデックスファイルに格納された各文字の第1位置及びそれに続く第1差分値を使用して、第2位置が復元される。続いて、復元された第2位置及びそれに続く差分値を使用して、第3位置が復元される。この復元は、検索語の文字の一致位置が見つかるまで繰り返される。「の」などの頻繁に出現する文字に関して、遠く後方に離れた文字位置と照合する場合、文字の各位置を第1位置から照合対象位置まで1つずつ復元する必要がある。例えば、文字が、文書中に1000回出現する場合、第999位置を取得するためには、第1差分値から復元を998回実施する必要がある。従って、上述の全文検索システムでは、差分値を文書中の各文字の位置に復元するのに多大な時間を要する。
【0004】
【発明が解決しようとする課題】
コンピュータネットワーク技術の急速な発展により、従来の全文検索システムでは、データ検索の絶えず増大する需要に応えることができない。
【0005】
従って、本発明の目的は、コンピュータ文字情報のインデックスを作成し、高速格納及び大容量のデータの検索を支援し、複数ユーザによるデータの共有を支援する文字情報のインデックス作成及び検索のための新規の方法及びシステムを提供することである。
【0006】
本発明の1つの目的は、文書のインデックス格納の空間を削減し、且つ高速の全文検索を保証することが可能な文書のインデックス作成方法を提供することである。
【0007】
本発明の別の目的は、上述のインデックスを使用した全文検索のための方法を提供することである。
【0008】
本発明の別の目的は、ある文書に所属する文字の任意の位置に従って、多数の文書からその対応する文書を迅速に探し出すための方法を提供することである。
【0009】
【課題を解決するための手段】
上述の目的を達成するために、本発明者等は、文字情報の全文記録及び全文検索を行なうための新規の方法及びシステムを開発した。この方法及びシステムは、クライアント/サーバモードで開発されている。文字情報のインデックスを作成するのに、SQLサーバ関係データベースの特徴が使用されており、大容量のデータを格納することができ、データの共有性、整合性及び保全性を向上させることができる。このため、インターネット及びイントラネット上のウェブサーバは、大容量の高速全文検索の機能を有することができ、情報源の包括的な共有を実現することができる。
【0010】
本発明の目的を達成するために、例えば、本発明のインデックス作成装置は以下の構成を備える。
即ち、文書中の文字の検索用インデックスを作成するインデックス作成装置であって、
第1の記憶領域と第2の記憶領域とで構成されたミニブロックの複数で構成されるデータベースブロックを、前記文書中の文字のうち同一の文字毎に保持する保持手段と、
前記文書中の文字が出現する文字位置を示す文字位置データを取得する取得手段と、
前記文書中の文字のうち同一の文字の前記文字位置データについて、最初の文字位置を示す最小文字位置データを、前記保持手段内の対応する前記データベースブロック内の第1のミニブロック中の第1の記憶領域に格納させる処理を行う第1の格納制御手段と、
前記最初の文字位置以降の文字位置に、対応する同一の文字が出現する毎に、当該出現の順序において隣り合う2つの同一の文字の文字位置データの差分値を、前記保持手段内の対応する前記データベースブロック内の第1のミニブロック中の第2の記憶領域に順次格納させる処理を行う第2の格納制御手段と
を備えることを特徴とする。
【0011】
本発明の目的を達成するために、例えば、本発明の検索システムは以下の構成を備える。
即ち、請求項1又は2に記載のインデックス作成装置と、当該インデックス作成装置が作成したインデックスを用いた全文検索処理を行う全文検索エンジン部とで構成される検索システムであって、
前記全文検索エンジン部は、
検索語の入力を受け付ける入力手段と、
前記保持手段より、前記検索語を構成する各文字に対応する前記データベースブロックを取得する手段と、
取得された前記データベースブロックのうち前記検索語の最初に位置する第1の文字に対応する第1のデータベースブロックを用いて、当該第1の文字の第1の文字位置データを取得する手段と、
取得された前記データベースブロックのうち、前記検索語において前記第1の文字に後続する第2の文字に対応する第2のデータベースブロックを用いて、前記第2の文字のうち、前記第1の文字位置データに対応する文字位置以降の文字位置を有し、かつ、前記第1の文字位置データに対応する文字位置と所定の位置関係を有する文字位置を有する第2の文字について、第2の文字位置データを取得する手段と
を備えることを特徴とする。
【0012】
本発明の目的を達成するために、例えば、本発明のインデックス作成装置の制御方法は以下の構成を備える。
即ち、文書中の文字の検索用インデックスを作成するインデックス作成装置の制御方法であって、
第1の記憶領域と第2の記憶領域とで構成されたミニブロックの複数で構成されるデータベースブロックを、前記文書中の文字のうち同一の文字毎に保持手段内に保持する保持工程と、
前記文書中の文字が出現する文字位置を示す文字位置データを取得する取得工程と、
前記文書中の文字のうち同一の文字の前記文字位置データについて、最初の文字位置を示す最小文字位置データを、前記保持手段内の対応する前記データベースブロック内の第1のミニブロック中の第1の記憶領域に格納させる処理を行う第1の格納制御工程と、
前記最初の文字位置以降の文字位置に、対応する同一の文字が出現する毎に、当該出現の順序において隣り合う2つの同一の文字の文字位置データの差分値を、前記保持手段内の対応する前記データベースブロック内の第1のミニブロック中の第2の記憶領域に順次格納させる処理を行う第2の格納制御工程と
を備えることを特徴とする。
【0013】
本発明の目的を達成するために、例えば、本発明の検索システムの制御方法は以下の構成を備える。
即ち、請求項1又は2に記載のインデックス作成装置と、当該インデックス作成装置が作成したインデックスを用いた全文検索処理を行う全文検索エンジン部とで構成される検索システムの制御方法であって、
前記全文検索エンジン部の制御方法は、
検索語の入力を受け付ける入力工程と、
前記保持手段より、前記検索語を構成する各文字に対応する前記データベースブロックを取得する工程と、
取得された前記データベースブロックのうち前記検索語の最初に位置する第1の文字に対応する第1のデータベースブロックを用いて、当該第1の文字の第1の文字位置データを取得する工程と、
取得された前記データベースブロックのうち、前記検索語において前記第1の文字に後続する第2の文字に対応する第2のデータベースブロックを用いて、前記第2の文字のうち、前記第1の文字位置データに対応する文字位置以降の文字位置を有し、かつ、前記第1の文字位置データに対応する文字位置と所定の位置関係を有する文字位置を有する第2の文字について、第2の文字位置データを取得する工程と
を備えることを特徴とする。
【0015】
用語の説明
以下の説明では、リスト、レコード、フィールドなどのデータベースに関する幾つかの共通用語が使用される。リストは、データベースの構造の構成要素であり、多数のレコード項目から成る。このレコード項目の各々は、複数のフィールドから成る。本明細書では、以下の用語が使用される。以下にこれらの用語を説明する。
【0016】
文書カテゴリ:
その内容、作成者、発行時間、記録オペレータ、記録用のメインコンピュータ、又は、その他の各要素に従って、記録対象の各文書は、複数の文書のカテゴリ、すなわち、文書カテゴリに分類される。各文書カテゴリは、複数の文書から成る。
【0017】
文書:
論説、小説、ニュース記事、特許明細書など。
【0018】
文字:
本明細書で述べられる文字は、レター(英字、漢字、日本語の文字、種々の文字、ひらがな及びカタカナなどの1バイト又は2バイト文字を含む)、句読点、数字、特殊文字及びタブなどを含む。
【0019】
文字の内部コード:
別々の動作システムでは、2バイト文字のコード標準は、それぞれ異なる。例えば、WINDOWSプラットフォームでの日本語コード標準は、シフトJIS(マッキントッシュ及びDOS−Vにおける8ビット日本語コード標準)である。UNIXプラットフォームでの日本語コード標準は、EUC(拡張UNIX符号)である。本発明のシステムにおいて、異なるプラットフォームからの文書を記録するため、本発明者等は、内部コード方式を使用して、同一の文字のJIS(日本工業規格)、シフトJIS(マッキントッシュ及びDOS−Vにおける8ビット日本語コード標準)又はEUC(拡張UNIX符号)などの種々の標準のコードを唯一の対応する内部コードに変換する。
【0020】
文字位置:
1つの文書カテゴリにおける各文書の記録順序及び各文書内の文字の順序に従って文書を記録する場合、文書中の各文字には、文書カテゴリ中の絶対位置が付与される。例えば、文書カテゴリの第1文字の文字位置は1であり、後続の各文字の文字位置は、それぞれ、2、3...である。
【0021】
差分値:
1つの文書カテゴリにおいて、文字の現在の文字位置と前の文字位置とに基づいて、2つの文字位置間の差分値が、差分アルゴリズムにより計算される。
【0022】
差分アルゴリズム:
文書カテゴリにおいて、文字の現在位置と以前の位置との間の差分は、例えば、10進法から127進法などのように基数の小さい進法から基数の大きい進法に変換される。各差分値を識別するため、各文字位置の差分値は、各127進法の差分値の最終桁(単位桁)を除く全ての桁の最上位ビットを1に設定することによって得られる。例えば、10進値2048383は、以下に示すように127進値に変換される。
【0023】
(2048383)10 = (0x01 0x00 0x00 0x00)127
得られる127進値は4桁であり、そのそれぞれは、16進値で表される。4桁のうちの最終桁0を除く残りの3桁の最上位ビットは、1に設定される(すなわち、0x80との論理和が求められる)。従って、得られる差分値は、(81808000)16である。
【0024】
文書中の文字の位置は変動するので、差分値は様々な値であり、各差分値のバイト数もそれぞれ異なる。差分値において、最終桁の最上位ビット(最終桁の1バイトの第8ビット)は0であり、その他の桁の最上位ビットは、全て1に設定されているので、各差分値を識別することができる。例えば、文書カテゴリ中の文字「日」の2つの連続する位置が、1390と1450であるとする。この2つの位置の差分は、((1450 - 1390) % 127)10 = (60)10 = (3C)16である。この差分値を格納するのに、1バイトしか必要としない。別の例において、文書カテゴリ中の文字「好」の2つの連続する位置が、1308と9054であるとする。このときの文字の差分値は、以下のように計算される:
ステップ1:((9054 - 1308)/127)10を計算すると、商は(60)10であり、余りは(126)10 = (7E)16である。
【0025】
ステップ2:(60/127)10を計算すると、商は(0)10であり、余りは(60)10 = (3C)16である。
【0026】
ステップ1、2で得られる127進値に関して、単位桁(7E)16の最上位ビットは変化しない。もう一方の桁(3C)16の最上位ビットは、1に設定される、すなわち、(3C)16から(BC)16になる。この差分値(BC7E)16は、格納するのに2バイト必要である。
【0027】
復元:
全文検索を実施する場合、差分値を復元して対応する文書カテゴリ中の各文字の文字位置を取得することが必要である。文字位置の差分値を復元するためのアルゴリズムは、差分アルゴリズムの逆である。
【0028】
ミニブロック:
ミニブロックは、データを格納するための本発明者等が定義した構造であり、文字位置を格納するためのデータ項目及び文字位置の複数の差分値を格納するための配列から成る。例えば、ミニブロックは、1つの文字の多数の位置データを格納するために、倍長整数型データの項目及びBYTE型配列を備える。ここで、倍長整数型の項目は、文字の1つの文字位置を格納するのに使用され、BYTE型配列は、倍長整数型の項目に格納された文字位置に後続する文字の各文字位置の差分値を格納するのに使用される。
【0029】
データベースブロック:
データベースブロックは、データを格納するためのデータベース中の物理領域であり、リスト構造中の1つのフィールドである。データベースブロックは、複数のミニブロックから成り、文字の複数の位置値を格納することができる。リストの各レコード項目は、1個のデータベースブロックと、そのデータベースブロックに格納される文字の最小位置及び最大位置をそれぞれ格納するための2つのフィールドとから成る。この2つのフィールドによれば、検索を実施する際には、現在のレコード項目のデータベースブロックが、検索語のその他の文字と一致する文字位置を有する可能性があるか否かを迅速に判定することができる。現在のレコード項目において一致文字位置が存在する可能性があると判定される場合、更なる復元処理がそのデータベースブロックに対して行なわれる。現在のレコード項目に一致する文字位置が存在しないと判定される場合、文字の次のレコード項目が判定/復元される。
【0030】
検索語:
検索語は、1つ以上の文字から成る文字列である。検索語は、検索対象の文字列であり、オペレータにより指定される。
【0031】
一致位置:
各文書のインデックスは、単位としての各文字と共に格納されるので、検索語中の文字の位置は、検索語全体の位置、すなわち、一致位置として指定され、データベースに格納された文字位置情報に対して照合処理が行なわれる。例えば、検索語「米国アメリカ」において、「米」の文字位置が10001であり、「国」の文字位置が10002であり、「ア」の文字位置が10003であり、「メ」の文字位置が10004であり、「リ」の文字位置が10005であり、「カ」の文字位置が10006であるとする。検索語の第1文字の文字位置が、検索語の一致位置として使用される場合、検索語「米国アメリカ」の一致位置は、「米」の文字位置10001である。
【0032】
変位:
変位は、検索語の各文字の一致位置に対するオフセット量である。例えば、検索語「米国アメリカ」の第1文字が、開始点として設定される場合、「米」の変位は0であり、「国」の変位は−1であり、「ア」の変位は−2であり、「メ」の変位は−3であり、「リ」の変位は−4であり、「カ」の変位は−5である。また、検索語の最終文字を開始点として設定することもでき、この場合、「米」の変位は0であり、「国」の変位は1であり、「ア」の変位は2であり、「メ」の変位は3であり、「リ」の変位は4であり、「カ」の変位は5である。
【0033】
上述のように、本発明は、全文書を複数の文書カテゴリに記録/格納する。各文書カテゴリは、複数の文書から成る。文書中の各文字は、各文書の記録順序に従って格納される。
【0034】
記録される文書から、文書カテゴリ情報、文書情報、文字情報及び文字位置情報が取り出され、データベースに格納される。この4種類の情報を以下に説明する。
【0035】
文書カテゴリ情報:
内容に従って、各文書は、政治、経済、スポーツ、旅行などの様々な文書カテゴリに分類することができる。記録オペレータ又はその他の要素に従って、記録文書を別の文書カテゴリに分類することもできる。各文書カテゴリに対して、本発明では、対応する文書カテゴリを一意的に識別することができる文書カテゴリ番号を指定する。また、各文書カテゴリは、文書カテゴリ名及び文書カテゴリにおける各文字の最終位置を有する。文書カテゴリの各文字の最終位置は、現在の文書カテゴリに最も新しく記録された文書中の最終文字の文字位置である。従って、文書カテゴリ情報は、文書カテゴリ番号、文書カテゴリ名及び各文字の最終位置を含む。
【0036】
文書情報:
各文書カテゴリは、複数の文書を有するので、記録される各文書には、文書番号が付与される。文書番号は、1つの文書カテゴリにおいて一意的なものであり、1から連続的に開始する倍長整数型の値であっても、あるいは、断続的な整数値であっても良い。
【0037】
従って、文書情報は、各文書ごとの一意的な文書番号、その文書が所属する文書カテゴリ番号、文書中の第1文字及び最終文字の文字位置(以下の説明では、これらの2つの位置は、文書の開始位置及び終了位置と呼ばれる)を含む。
【0038】
文字位置情報:
各文書カテゴリは、複数の文書を含み、この文書は、それぞれ、複数の文字を含む。重複のない全ての文字により文字セットを構成する。文字セット中の各文字は、対応する内部コードを有する。各文字は、文書カテゴリ中の各文書に複数回出現する可能性があるので、各文書カテゴリ中の全ての文字の全ての文字位置が、データベースに格納される。文字位置情報は、文字が所属する文書カテゴリ番号、文字に対応する内部コード、文字位置データ(文字位置及び差分値を含む)を格納するためのデータベースブロック、このデータベースブロックに格納される第1文字位置及び最終文字位置(これらの2つの位置は、以降、データベースブロックの最小位置及び最大位置と呼ばれる)を含む。
【0039】
文字情報:
検索を高速化するために、本発明では、各文書カテゴリの各文字の文字情報をデータベースに格納する。文字情報は、その文字が所属する文書カテゴリ番号、対応する内部コード、所属する文書カテゴリ中の文字の最大文字位置、文字の最終データベースブロック中の最小文字位置及び文字の最終データベースブロックに格納されたデータの長さを含む。
【0040】
本発明では、文書カテゴリ中の全ての文字の文字位置のインデックスを単位としての各文字と共に作成する。すなわち、文書カテゴリの各文書中の文字セットの各文字の各文字位置が、データベースに格納される。
【0041】
漢字の「的」及び日本語の文字「の」などの文字は、頻繁に用いられる。文字の文字位置情報を格納する空間を削減するために、本発明の方法では、文書カテゴリの各文書中の各文字の位置情報が、この文書カテゴリにおける第1文字位置及び後続の各文字位置として表される。更に、この後続位置は、2つの連続する文字位置間の差分値として表される。実際には、物理構造の面で述べると、第1文字位置と後続の文字位置の各差分値とが、データベースブロックに格納される。各位置の差分値は、実際の文字位置値よりも使用バイト数が少ないので、各文字のインデックスにより使用される空間を相対的に削減することができる。
【0042】
文字の第1文字位置に後続する各位置を差分値として表すことにより、使用空間は削減されるが、検索速度が低下することになる。文書カテゴリ中に非常に頻繁に出現する文字に対しては、多数の差分値が存在する。例えば、ある文字が文書カテゴリ中に100,000回出現する場合、第1文字位置及び後続の各文字位置の差分値を使用して第90,000文字位置を復元するには、多大な時間を要することになる。
【0043】
この問題を解決するために、本発明では、システムファイルを使用して文字の位置データを格納する全文検索システムJetSearchに対して改良を行なう。本発明では、文字の位置データは、1つのファイルではなく、複数の部分として格納される。データベース104において、各レコード項目は、所属する文書カテゴリ中の文字の位置データを格納するためのデータベースブロックのフィールドを有する。文書カテゴリ中の1文字は、その位置データを格納するのに複数のデータベースブロックを有しても良い。
【0044】
頻繁に使用される文字の位置データを格納する場合、その文字に対応する多数の位置データが存在するであろう。検索を実施する場合、何度も出現する文字の一致条件を満たす文字位置(例えば、スポーツニュースの文書カテゴリにおいてNBAを含む文書を検索する場合、検索を介して第1のNがスポーツニュースの文書カテゴリの第10,000文字であることがわかっているならば、第10,000文字以前のB及びAは、一致条件を満たさない)を迅速に探し出すためには、システムは、対応する位置を迅速且つ確実に判定/検索する必要がある。差分値を連続的に格納するデータベースブロックに対しては、検索を実施する場合、各データベースブロックの第1差分値から検索語の各文字の一致条件を満たす文字位置まで、1つずつ文字位置を復元する必要がある。これは、システム時間を浪費するので、良い方法ではない。
【0045】
従って、本発明者は、データベースブロックを多数のミニブロックに分割し、これらのミニブロックの各々が、位置データを格納するために一定数のバイトを有するようにした。各ミニブロックの開始バイトは、文書カテゴリ中の文字の文字位置を格納する。この文字の文字位置(以下の説明では、ミニブロックの最小位置と呼ぶ)は、差分値ではなく、文書カテゴリ中の全ての文字の順序により判定され、データベースブロックの最大位置及び最小位置とは異なっている。ミニブロックの開始バイトの後続の各バイトは、2つの連続する文字位置間の差分値を格納する。文字の各文字位置は、相互に異なるものであり、差分値もそれぞれ異なる値である。各差分値に対して使用されるバイト数もまちまちである。ミニブロックの残りのバイトが、新規の差分値にとって十分なものでない場合、システムは、ミニブロックの残りのバイトを0x00で充填し、別の新規のミニブロックを使用してこの新規ミニブロックの最小位置として開始バイトに新規の差分値を格納する。続いて、後続の各文字位置が、差分値として新規のミニブロックに格納される。言い換えると、文字の各文字位置をある個数の差分値で表した後に、新規のミニブロックが必要になり、この新規のミニブロックに対して最小位置が定義され、後続の文字位置が差分値として表される。データベースブロック中の各ミニブロックが、文字の位置データで満杯である場合、その文字に対しては、新規のレコード項目を作成し、その新規のデータベースブロックに対しての位置データの格納を継続する必要がある。
【0046】
設定されるミニブロックの長さが長すぎる場合、復元は多大な時間を要することになる。設定されるミニブロックの長さが短すぎる場合、比較的大きな空間が使用される。従って、ミニブロックに関しては、数百バイトの長さであることが好ましい。言い換えると、文字の100から200回の出現ごとに新規のミニブロックを使用するのが適切である。
【0047】
しかし、一般的に使用される文字は、1つの文書カテゴリ中に、1000,000回より多く出現する可能性がある。従って、本発明は、1つの文書カテゴリにおいて、文字の出現回数が400,000から800,000回(例えば、4000個のミニブロックが満杯になる)ごとに、新規のレコード項目を作成し、文字の後続位置データを格納するように構成されている。また、レコード項目は、この項目のデータベースブロックの最小位置及び最大位置を含むべきである。
【0048】
上述のように、文字位置データのデータベースを構築する場合、文字を検索するのに使用される時間を短縮する観点から、文字位置データを格納するためのレコード項目は、このレコード項目のデータベースブロックに格納された文書カテゴリ中の文字の最小文字位置及び最大文字位置を格納するための2つの重複したフィールド、すなわち、データベースブロックの最小位置及び最大位置を有する。全文検索を実施する際に、検索語の全ての文字の文字位置データを格納するための全てのレコードが、データベースから探し出された場合、各々が文字位置データを格納するためのデータベースブロックを有する多数のレコード項目が存在することは確実である。各データベースブロックは、文字の位置データ(ミニブロックの最小位置及び各差分値を含む)を格納するために数百バイトの容量をそれぞれ有する何千個ものミニブロックから成る。レコード項目にデータベースブロックの最小位置及び最大位置が存在しない場合、検索語の各文字の一致文字位置が見つかるまで、多数のレコード項目の各データベースブロックにおいて各ミニブロックの最小位置を1つずつ比較するのには、非常に長い時間がかかる。しかし、1つのレコード項目において、データベースブロックの最小位置及び最大位置を格納するために、2つのフィールドが追加される場合、検索語の文字の文書カテゴリ中の文字位置が分かるので、この文字の文字位置を使用して検索語のその他の文字の位置データの各データベースブロックの最小位置及び最大位置と比較することができる。従って、あるデータベースブロックにおいて、検索対象の文字位置が存在する可能性かあるか否かが判定される。データベースブロックが判定された後、判定済のデータベースブロック中の各ミニブロックの最小位置に基づいて、どのミニブロックが検索対象の文字位置を有する可能性があるかを迅速に判定することができる。このため、各文字の文字位置を1つずつ復元する方法に比べて、使用時間は削減される。
【0049】
要約すると、本発明の各文字のインデックスは、3つのレベルに分割される。
【0050】
まず、各文字は、複数のレコード項目を有する可能性がある。各レコード項目は、文字位置データを格納するためのデータベースブロックと、このデータベースブロックに格納された文字の最小位置及び最大位置とを含む。
【0051】
次に、文字位置データを格納する各データベースブロックは、文字位置データを格納するために、数千個のミニブロックを含む。各ミニブロックは、2つの部分から成り、第1の部分は、ミニブロックに格納された各文字の第1文字位置、すなわち、ミニブロックの最小文字位置を格納し、第2の部分は、後続の各文字位置、すなわち、差分値を格納する。
【0052】
第3に、文書カテゴリ中の文字の各後続の文字位置は、文字位置と先行する文字位置との間の差分値で表される。
【0053】
【発明の実施の形態】
図面を参照しながら、本発明の実施例を以下に説明する。本発明の趣旨が以下の実施例に限定されないことは明らかである。以下の実施例において、本発明の方法を実現するためのハードウェアプラットフォームとして、クライアント/サーバネットワーク構造が一例として使用されている。すなわち、クライアントは、端末動作手段の例であり、サーバは、情報記憶/処理手段の例である。また、以下の実施例で述べるネットワークは、接続手段の一例として理解されるべきである。本発明の以下の教示により、単一のコンピュータ、ブラウザ/ブラウザサーバなどのその他のコンピュータシステム上で本発明の方法を実施できることは当業者には明らかであろう。
【0054】
クライアント(端末動作手段)101は、オペレータにとってのプラットフォームであり、文書の記録、更新又は検索に対する要求はここからサーバ103に送信される。
【0055】
ネットワーク(接続手段)102は、クライアント/サーバ情報を伝送するためのものである。
【0056】
サーバ(情報記憶/処理手段)103は、ネットワーク102を介してクライアント101により送信された文書の記録、更新又は検索に対する要求を受信するためのものである。文書インデックス生成部105による処理の際には、全文書中の全ての文字の位置情報がデータベース104に格納される。また、全文検索エンジン106によって、オペレータにより指定された検索要求を満たす文書情報が検索される。
【0057】
図1Bは、サーバ103のハードウェアブロック図を示す。図1Bにおいて、CPU1は、RAM3に記憶されたプログラムを実行してサーバに対する各制御を行なう。ROM2は、各フローチャートに示した処理を実現するためのプログラムを記憶し、このプログラムはCPU1により実行される。RAM3は、CPU1がプログラムを実行するための空間を提供する。CRT4は、CPU1の制御下で表示を行なう。キーボード5は、情報を入力するのに使用される。外部記憶装置6は、検索対象の文書及びこの文書から生成された文字インデックス情報を格納するためのハードディスク又はソフトディスクである。バス7は、上述の各部を接続し、各部間でのデータ伝送を実現する。
【0058】
データベース104は、全ての文書カテゴリの全文インデックスデータ及びその他の種類の文書情報データを格納するためのものであり、外部記憶装置6に設けられる。
【0059】
文書インデックス生成部105は、文字リストの方法に従ってデータベース104に文書を記録するためのものであり、CPU1により行なわれる。
【0060】
全文検索エンジン106は、全文検索を実施するためのものであり、CPU1により行なわれる。
【0061】
文書情報共有変換部107は、記録された文書の情報を格納するために、サーバのメモリRAM3において共有メモリのブロックを提供するためのものであり、CPU1により行なわれる。文書インデックスを生成する場合には、共有メモリ中の文書情報が、文書インデックス生成部105によりタイミング良く更新される。全文検索を行なう場合には、全文検索エンジン106が、共有メモリから直接、文書に関連する情報を取得する。
【0062】
クライアント/サーバのネットワーク構造では、本発明のシステムは、サーバ上で実行され、文書インデックス生成部105、全文検索エンジン106、文書情報共有変換部107及びデータベース104を主に具備する。
【0063】
データベース104は、複数の文書カテゴリを格納するのに使用される。指定の文書カテゴリには、文書インデックス生成部105により1つ以上の文書を記録することができ、その文書カテゴリの全文インデックスを作成又は更新することができる。文書の記録を行なう場合、文書インデックス生成部105は、文書中の各文字を対応する内部コードに変換し、所属する文書カテゴリ中の各文字の位置情報が格納される。
【0064】
検索条件及びファジー値(0の場合は厳密な検索、0を超す場合はファジー検索であり、ファジー値が高い場合は、一致の精度が低く検索結果が多いことを示す)に従って全文検索を行なう場合、全文検索エンジン106は、データベース104中の関連するレコード項目を検索し、検索語の各文字の位置を比較し、検索条件と一致する文字列を探し出し、全文書のうちの検索語を含む文書の番号と各文書における検索語の位置とを戻す。
【0065】
データベース104には、大量のテキスト情報が格納されているので、全文検索を行なうのには非常に長いデータベース処理時間を要する。データベース104の入出力を削減し、検索時間を短縮し、システムのパフォーマンスを向上させるために、本発明者等は、メモリRAM3に共有メモリのブロックを残すように機能する文書情報共有変換部107を設計する。続いて、データベース104中の文書情報のリストが検索される。文書番号と文書の位置範囲を表す指定の文書カテゴリの全文書のデータ項目(文書番号、文書の開始位置及び終了位置、並びに削除フラグ)が、順序通りの記録に従って、データベース104から共有メモリに読み込まれてその中に常駐するようになる。全文検索を行なう場合、二分アルゴリズムを使用して、検索語の一致位置に従って判定される文書位置を対応する文書番号に変換する。新規の文書の記録を行なう場合、その文書に関する情報が共有メモリに加えられる。文書が削除される場合、文書の削除フラグが1(すなわち、削除済み)に設定される。
【0066】
本発明の特徴は、主に、以下の3点にある。
【0067】
第1の点は、データベース104中の文字位置情報のインデックスの構造である。文字は、文書カテゴリ中に何度も出現する可能性があるので、文書カテゴリ中の文字の全ての位置は、格納される必要がある。文字の各位置が整数型又は倍長整数型のフィールド(各位置は4バイト使用)としてデータベースに格納される場合、膨大な格納空間が必要である。格納空間の浪費を削減すると共に、所望の速度での全文検索を行なえるようにするために、本発明者は、差分アルゴリズムを使用して文書カテゴリ中のある文字の現在の文字位置と前の文字位置との間の差分値の計算を行なう。文書カテゴリ中のその文字の各後続位置が差分値として示され、データベースにバイナリ型(画像型)フィールドとして格納される。
【0068】
本発明では、所属する文書カテゴリ中の文字の位置を格納する各レコード中のフィールドは、データベースブロックと呼ばれる。各データベースブロックは、4,000個のミニブロックに分割される。各ミニブロックは、文字位置データを格納するために260バイトを有する。図2において、各ミニブロックの始めの4バイトは、所属する文書カテゴリ中の文字の文字位置を格納する。第5バイト以降の各バイト(第5バイトを含む)は、文字の2つの連続する文字位置(現在の文字位置と前の文字位置)間で差分アルゴリズムにより計算された差分値を格納する。ミニブロックの残りのバイトが、新規の差分値にとって十分ではない場合、システムは、残りのバイトを0x00で充填する。システムは、新規のミニブロックを使用して、所属する文書カテゴリの文字の現在の文字位置をこのミニブロックの最小位置としてその最初の4バイトに格納し、文字の後続する各位置を差分値を用いて表す。言い換えると、差分値を用いて文字の位置を何回か(例えば、100回から200回)表した後、格納用の新規のミニブロックが必要になり、このミニブロックに対して最小位置が与えられる。続いて、文字の各後続位置が差分値として表され、新規のミニブロック中の最小位置の後ろに格納される。データベースブロックの4,000個のミニブロックが、全て文字の位置データで充填された場合、その文字に対して新規のレコード項目を作成する必要がある。
【0069】
第2の点は、以下の通りである。データベース104の文字インデックス構造に格納された文字位置情報に関して、全文検索結果を迅速且つ正確に取得するために、本発明者等は、文字位置を検索/照合する方法を設計する。本発明の文字インデックス構造の特徴に関して、本発明の方法は、照会言語を使用して一致語の位置を迅速に探し出す。続いて、文書情報共有変換部により、検索された各結果が存在する文書の文書番号が取得される。
【0070】
第3に、大量のデータを格納する場合で、データベースの検索処理を実行するときには、データベースの頻繁な入出力、データベースの実行性能の低下、データベースへのアクセス時間の増加、及び、全文検索速度の低下という問題が生じる。データベースの実行負荷を減少させ、データベースの検索のための時間を短縮し、全文検索の速度を増大するために、本発明者等は、文字位置情報を文書情報に迅速に変換する方法を設計する。キャッシュメモリの高速アクセスの特徴に関して、文書番号及び文書の位置範囲を表し、且つ文書番号、文書開始位置、文書終了位置、及び、削除フラグを含むデータベース104中の指定の文書カテゴリに対する文書情報のデータ項目が、一度にメモリRAM3に読み込まれる。任意の文字位置に対して、各文書の位置範囲に従いながら二分法を使用することによって、メモリ中の一致文書データが迅速に探し出され、文書番号が取得される。文書の記録及び削除を行なう場合、文書情報共有変換部は、関連する文書情報をタイミング良く更新するための対応インタフェースの提供も行なう。
【0071】
各実施例の説明
まず最初に、ネットワーク102上の本発明のシステムの実行手順を例示的に説明する。
【0072】
サーバ103上の全文検索システムが、クライアント101を介してのユーザからの文字検索要求を処理する手順中に、以下の処理が行なわれる:
1.検索対象の文字又は語がクライアント101のキーボードを介してユーザにより入力される。2つ以上の文字又は語が検索対象である場合、OR、AND又はNOTなどの文字間又は語間の論理関係が与えられるべきである。
【0073】
2.与えられた検索語及び論理関係は、サーバ103上で実行中の全文検索システムにネットワーク102を介して送信される。
【0074】
3.サーバ103上において、全文検索システムの全文検索エンジン106が、各検索語に従って文書インデックスを検索することによって、受信した検索結果の処理を行なってデータベース104から全ての関連する一致位置を取得する。
【0075】
4.上述の取得された各一致位置が存在する文書の文書番号及び削除フラグを取得するように、文書情報共有変換部107により、各一致位置が、文書情報(文書番号、文書開始位置、文書終了位置及び削除フラグなど)中の文章開始位置及び文章終了位置とそれぞれ比較される。各文書の削除フラグに従って、有効な文書番号が判定され、この文書番号が全文検索システムの出力として結果セットを形成する。
【0076】
5.この検索結果セットが、ネットワーク102を介して全文検索システムによりクライアント101に送信され、クライアント101によりその画面上に表示される。
【0077】
文書インデックスの作成処理
本発明では、所属する文書カテゴリの文字の2つの連続する文字位置から差分アルゴリズムにより差分値が計算されてデータベース104の画像型データベースブロックに格納される文書インデックスの作成方法が提供される。このようなデータベースブロックは、例えば、各々が倍長整数型の数値(4バイト)及び256バイトから構成される4,000個のミニブロックから成る。データベースブロックの構造に関しては、図2を参照されたい。文字位置データを格納するデータベースブロックは、従って、1,040,000バイト((256 + 4) * 4000
= 1,040,000)を有する。
【0078】
データベースブロックを定義する場合、これに含まれるミニブロックの個数は、変更することが可能であり、各ミニブロックのサイズも変更可能である。
記録された文書に対して文書インデックス生成部105により文書インデックスを作成するプロセスについて、図3を参照しながら以下に説明する。このプロセスは、最初にデータベース104を作成したり、文書をデータベース104に追加したり、あるいは、文書をデータベース104から削除したりする場合に、図1に示す文書インデックス生成部105を用いて行なわれる。
【0079】
まず最初に、各文書の内容、文書を記録するオペレータ、あるいは、その他の各要素に従って、記録対象の文書が、対応する文書カテゴリに予め分類される。各文書カテゴリには、文書カテゴリ名が与えられる。ステップ402において、例えば、入力ボックスを有するダイアログボックスが表示されて、オペレータに対して入力処理を行なうように促す。オペレータは、記録対象の文書が所属する文書カテゴリ名を入力する。
【0080】
ステップ404において、ステップ402で指定された文書カテゴリ名に従って、関連する文書カテゴリ情報を求めてデータベース104が検索される。指定の文書カテゴリ名がデータベース104に存在しない場合、システムは、その文書カテゴリに対して文書カテゴリ番号を割り当て、文書カテゴリ中の全ての文字の最終位置に対して初期値を設定する(例えば、文書カテゴリ番号が1、各文字の最終位置が0)。続いて、この文書カテゴリの情報がデータベース104に挿入され、文書カテゴリ番号及び最終位置が戻される。指定の文書カテゴリ名がデータベース104に存在する場合、文書カテゴリ番号及び文書カテゴリ中の全ての文字の最終位置がデータベース104から取得される。取得された文書カテゴリ番号に従って、データベース104中の各文字の文字情報、すなわち、文書カテゴリ中の文字の最大文字位置、文字の最終データベースブロックの最小位置及び最終データベースブロックに格納された文字位置データの長さなどが探し出される。
【0081】
ステップ406において、キャッシュメモリの高速アクセス機能に基づいて、文書情報共有変換部107が起動される。指定の文書カテゴリの文書情報がRAM3の共有メモリに存在するか否かが判定される。指定の文書カテゴリの文書情報が共有メモリに存在しない場合、メモリRAM3中のある容量の共有メモリが、使用される。指定の文書カテゴリに記録された各文書の文書番号及び文書の位置範囲に関するデータ項目(文書番号、文書カテゴリの文書の開始位置及び終了位置、並びに削除フラグなど)が、データベース104から共有メモリに読み込まれる。複数のユーザが、同時にこれを使用して指定の文書カテゴリを検索することができる。
【0082】
ステップ408において、RAM3の予約済メモリ空間が動作中のシステムに適用されて初期化される。
【0083】
ステップ410において、記録対象の文書が存在するか否かが判定される。記録対象の文書が存在する場合は、ステップ412に進む。記録対象の文書が存在しない場合は、ステップ420、430及び432が実施され、データベース104の関連情報が更新される。
【0084】
ステップ412において、記録対象の文書の情報が読み出される。データベース104の文書情報が、文書番号に従って検索される。文書番号が、データベース104において見つからない場合、その文書情報はデータベース104の文書情報に格納される。文書情報は、文書が所属する文書カテゴリの番号、文書番号、文書中の先頭文字及び最終文字の文字位置(文書の開始位置及び終了位置)などを含む。文書番号がデータベース104の文書情報において見つかった場合、その文書番号がデータベース104の文書情報に格納されていることを意味し、エラーコードが戻される。
【0085】
ステップ414において、記録中の文書に未処理の文字が存在するか否かがチェックされる。文書中に未処理の文字が存在する場合、ステップ416のプロセスが実施され、文字のインデックスが作成される。文書中の最終文字の処理が終了すると、ステップ426が実施され、その最終文字の文字位置でもって、データベース104の文書情報に格納された文書の終了位置が更新される。
【0086】
ステップ416において、文書中の文字が順次読み込まれ、対応する内部コードに変換される(例えば、WINDOWSシステムで使用されるシフトJISコードが、システムの内部コードに変換される。「アメリカ」を内部コードに変換する場合、「ア」、「メ」、「リ」及び「カ」の内部コードは、それぞれ、283、341、347及び288である)。文字の文字位置が、所属する文書カテゴリの最終位置から取得される。続いて、現在の文字位置と前の文字位置との間の差分値が、差分アルゴリズムにより計算される。
【0087】
ステップ418において、メモリRAM3の予約済空間の残りの部分がステップ416の差分値を格納するのに十分であるか否かがチェックされる。メモリの予約済空間が満杯の場合、ステップ420、422及び424が実行され、それにより、メモリの予約済空間中の文字の全データがデータベース104の文字位置情報に書き込まれる。メモリの予約済空間が満杯ではない場合、フローチャートはステップ424に進む。
【0088】
ステップ420において、メモリRAM3の予約済空間中の、文字が所属する文書カテゴリの番号、対応する内部コード、複数の差分値を格納するためのデータベースブロック、文字のデータベースブロックに格納された最小位置及び最大位置などの全ての文字位置情報は、データベース104の文字位置情報に格納される。
【0089】
ステップ422において、データベース104の文字位置情報へのメモリRAM3の予約済空間中の全ての文字位置情報の格納が無事終了すると、記録中の文書内の各文字の位置情報を継続して格納することが可能なように、メモリの予約済空間が再初期化される。
【0090】
ステップ424において、ステップ416で取得された文字位置又は差分値がメモリRAM3の予約済空間に格納される。続いて、ステップ414に戻り、記録中の文書内の次の文字を取り出す。
【0091】
ステップ426において、記録中の文書内の全ての文字の処理が終了すると、文書中の最終文字の文字位置が、データベース104の文書情報に格納される。すなわち、データベース104の文書情報中の文書の終了位置が文書の最終文字の文字位置でもって更新される。
【0092】
ステップ428において、文書情報共有変換部107が使用され、記録される文書の情報が共有メモリに格納される。
【0093】
ステップ430において、新規の文書の記録が終了すると、データベース104の文字情報が、文字の所属する文書カテゴリの番号、対応する内部コード、所属する文書カテゴリ中の文字の最大文字位置、文字の位置データを格納する最終データベースブロックの最小位置、及び、最終データベースブロックに格納された文字位置データのバイト数を含む各文字の新規の文字情報でもって更新される。
【0094】
ステップ432において、記録を終えたばかりの最終文書中の最終文字の文字位置を使用して、データベース104の文書カテゴリ情報に格納された文書カテゴリの最終位置が更新される。
【0095】
実施例1:
WINDOWSプラットフォームにおいて、文書インデックス生成部105を使用して文書(テキストファイル)America1.txtをデータベース104に記録し、文書中の各文字に対してインデックスを作成する。文書の内容は以下の通りである:
米国アメリカ アメリカ合衆国
この文書は14文字から成り、5つの漢字(重複を除けば実際は4つの漢字)と、8つのカタカナ(重複を除けば実際は4つのカタカナ)と、1つの空白とを含む。「米」、「合」、「衆」の各文字と空白は、それぞれ、文書中に1回出現する。「国」、「ア」、「メ」、「リ」及び「カ」の各々は、文書中に2回出現する。
【0096】
この文書が所属する文書カテゴリ名をニュースカテゴリ、文書カテゴリ番号を1とし、この文書カテゴリは、中に文書が記録されていない新規の文書カテゴリであるとする。この文書カテゴリにおいて、上記文書の文書番号は1、文書名はAmerica1、発行時は、1999.8.10である。この文書は、ニュース文書カテゴリの第1文書として文書インデックス生成部105に供給され、記録される。
【0097】
1.14文字:「米国アメリカ アメリカ合衆国」を含む文書の全内容が、メモリRAM3に読み込まれる。文書カテゴリ番号1、文書番号1、文書名America1、発行時1998.8.10、及びニュース文書カテゴリにおけるこの文書の開始文字位置が、文書インデックス生成部105によりデータベース104中のニュース文書カテゴリの文書情報に格納される。
【0098】
2.文書America1.txt中の8つの異なる文字は、1つずつ、シフトJISコードからシステムの内部コードへと変換される。文書中の空白に対しては、所定のパラメータに従って、文書インデックス生成部105が、文書中の空白を処理するか否かを判定することができる。パラメータのデフォルト値では、空白に対してインデックスは作成しない。文書America1.txtにおいては、第7文字が空白である。実施例1において、パラメータは、デフォルト値に設定されている、つまり、空白に対してインデックスを作成しないように設定されているものとする。従って、文書インデックス生成部は、空白を処理しない。これにより、第8文字及び後続の各文字の文字位置の値は、1つ減少する(表1参照)。
Figure 0003728264
3.各文書カテゴリの開始位置は1であり、1を1段階として使用する。各文字の文字位置は、文書カテゴリ中の文字の順序に従って判定される。本実施例では、ニュース文書カテゴリ中の文書America1.txtの全ての文字の文字位置が表1に示されている。文書インデックス生成部105による処理終了後の、各文字と各ミニブロック中の始めの4バイトとの間の対応関係が表2に示される。
Figure 0003728264
4.ある文字がニュース文書カテゴリ中に2回出現する場合、現在の文字位置と前の文字位置との間の差分値が、差分アルゴリズムにより計算され、その文字のミニブロックの第5バイト及び後続の各バイトに順次格納される。例えば、文書America1.txtにおいて、第8文字、第9文字、第10文字及び第11文字「アメリカ」は、重複している。以下においては、文書中の文字「ア」を例に取り上げ詳細に説明する。文字「ア」は、文書中に2回、ニュース文書カテゴリの文字位置3、7において出現する。表3の列5において明らかなように、ミニブロックに格納された位置データは、0x0000000304である。
ミニブロック中のバイト順序: 1 2 3 4 5
位置データ: 0x00 00 00 03 04
ミニブロックの始めの4バイトに格納される位置データは、16進数で表すところの0x00000003であり、これは、ニュース文書カテゴリ中のこの文字の第1文字位置であり、(03)10 = (03)16である。ミニブロックの第5バイトのデータは0x04である。これは文字「ア」の第2文字位置と第1文字位置との間の差分値であり、(07 - 03)10 = (4)16である。3つの文字「メリカ」の差分値の計算も、「ア」のときと同様である。これらの3つの文字の各々の第2文字位置と第1文字位置との間の差分値も4である。漢字「国」の第1文字位置と第2文字位置は、2と13であり、差分値は、(13 - 2)10 = (11)10 = (0B)16のように計算される。4つのカタカナ「アメリカ」及び漢字「国」の差分値は、表3の列5に示される。尚、太字は、表3と表2との間の違いを示す。
【0099】
ある文字が処理中の記録に頻繁に出現する場合、その文字の位置データの大きさは、ミニブロックのサイズを超す可能性がある。この場合、文字の位置データを格納するのに複数のミニブロックが必要となる。本実施例の文書の文字数は少ないので、文書インデックス生成部105は、それぞれの位置データ(ミニブロックの最小位置及び差分値)を格納するのに各文字「米」、「国」、「ア」、「メ」、「リ」、「カ」、「合」、「衆」に対して1個のミニブロックのみを供給する。
Figure 0003728264
5.上記各文字の処理終了後、全ての文字の関連情報が、それぞれ、データベース104の文字情報及び文字位置情報に書き込まれる。データベース104中の各データベースブロックは、ニュース文書カテゴリ中の各文字の文字位置を格納する。データは、データベースブロックにおけるその順序に従って、各ミニブロックに格納される。ミニブロックがデータで満杯になれば、次のミニブロックがデータの格納に使用され、この処理は、データベースブロック中の4,000個のミニブロックが全てデータで充填されるまで行なわれる。
【0100】
文字「ア」を例として挙げると、その文書カテゴリ番号1と、内部コード283と、ミニブロックに格納された位置データ0x0000000304と、データベースブロックに格納された位置データの最小位置3及び最大位置7とが、データベース104の文字位置情報に格納される。文書カテゴリ番号1と、内部コード283と、ニュース文書カテゴリにおける最終位置7と、データベースブロックに格納された位置データの最小位置3及び最大位置7と、ミニブロックに格納された位置データが占めるミニブロック中のバイト数とが、データベース104の文字情報に格納される。
【0101】
6.データベース104における文書カテゴリ情報中の文字最終位置及び文書情報中の記録された文書の終了位置が更新される。実施例1において、データベース104における文書カテゴリ情報中の文字最終位置は13に更新され、文書America1.txtの文書情報中の終了位置は13になる。
【0102】
7.ニュース文書カテゴリの関連情報が、データベース104の文書カテゴリ情報に格納される。文書America1.txtの関連情報が、文書情報に格納される。表3の列2、3、4及び5のデータが、文字位置情報に格納される。表3の列2、3及び4のデータと、データベースブロックに格納された列5の位置データの長さ(バイト単位)とが、文字情報に格納される。
【0103】
実施例2:
本実施例は、実施例1の文書及びその他の複数の文書の記録後に、ある文書が記録される場合であるとする。
【0104】
WINDOWSプラットフォームにおいて、本実施例では、文書インデックス生成部105を使用して文書(テキストファイル)America2.txtをデータベース104に記録し、文書中の各文字に対してインデックスを作成する。文書の内容は以下の通りである:
アメリカ合衆国 米国アメリカ
この文書は14文字から成り、5つの漢字(重複を除けば実際は4つの漢字)と、8つのカタカナ(重複を除けば実際は4つのカタカナ)と、1つの空白とを含む。「米」、「合」、「衆」の各文字と空白は、それぞれ、文書中に1回出現する。「国」、「ア」、「メ」、「リ」及び「カ」の各々は、文書中に2回出現する。
【0105】
この文書が所属する文書カテゴリ名をニュースカテゴリ、文書カテゴリ番号を1とし、この文書カテゴリには、複数の文書が記録されているものとする。また、この文書カテゴリにおける各文字の最終位置は、3491、上記文書の文書番号は、130011、文書名は、America2、発行時は、1999.8.11であるとする。この文書は、ニュース文書カテゴリの第1文書として文書インデックス生成部105に供給され、記録される。データベース104において、ニュース文書カテゴリ中のカタカナ「リ」の最大文字位置は、8237であり、この文字の位置データを格納するための最終データベースブロックは、258バイトの位置データを格納している。ニュース文書カテゴリにおける文字「衆」の最大文字位置は、1320であり、この文字の位置データを格納するための最終データベースブロックは、25バイトの位置データを格納している。次に、この文書が、文書インデックス生成部105に供給され、処理中の記録が行なわれる。
【0106】
1.ニュース文書カテゴリの現在の最終位置及びこのカテゴリ中の各文字の最大文字位置を探し出すために、文書インデックス生成部105が、データベース104の文書カテゴリ情報を検索する。実施例2では、データベース104を検索した結果、ニュース文書カテゴリ中の各文字の最終位置は、30491であり、ニュース文書カテゴリ中のカタカナ「リ」の最大文字位置は、8237である。また、「リ」の位置データを格納する最終レコード項目のデータベースブロックは、258バイトの位置データを格納しており、ニュース文書カテゴリ中の「衆」の最大文字位置は、1320であり、「」の位置データを格納する最終レコード項目のデータベースブロックは、25バイトの位置データを格納している。
【0107】
2.文書の全内容が、メモリRAM3に読み込まれる。文書インデックス生成部105が、文書番号、文書名、作成者及び発行時をデータベース104の文書情報に格納する。本実施例では、システムは、14文字「アメリカ合衆国 米国アメリカ」を読み込む。文書番号130011、文書名America2、発行時1999.8.11、及びニュース文書カテゴリ中のこの文書の開始文字位置30492が、文書インデックス生成部105によりデータベース104のニュース文書カテゴリの文書情報に格納される。
【0108】
3.文書America2.txt中の13文字が、1つずつ、シフトJISコードからシステムの対応する内部コードへと変換される。文書中の空白に対しては、所定のパラメータに従って、文書インデックス生成部105が、文書中の空白を処理するか否かを判定することができる。実施例1では、パラメータは、デフォルト値に設定されるものとした。すなわち、空白に対してインデックスは作成しないものとした。文書America2.txtにおいては、第8文字が空白である。文書インデックス生成部は、空白を処理しない。これにより、第9文字及び後続する各文字の文字位置の値は、それぞれ、1つ減少する(表4参照)。
Figure 0003728264
4.文書カテゴリの最終位置+1が、記録対象の新規文書の開始位置として使用され、段階増分は1である。各文字の文字位置は、文書カテゴリ中の文字の順序に従って判定される。本実施例では、文書America2.txtの開始位置は、30492である。America2.txtの全ての文字の文字位置が表4に示されている。
【0109】
5.新規文書の記録前の文書カテゴリ中のある文字の最大位置(本実施例の項目1に記載)及びその文字の現在の文字位置に基づいて、文字の差分値が、差分アルゴリズムにより計算される。ある文字の現在の差分値が、複数バイトを必要とし、現在のミニブロックの260バイト(4+256バイト)の残りのバイトが、新規の差分値にとって十分ではない場合、システムは0x00を使用して現在のミニブロックの残りのバイトを充填する。続いて、新規のミニブロックが使用される。その文書カテゴリ中のその文字の現在位置が、新規のミニブロックの最小位置としてその始めの4バイトに格納される。この文字がこれ以降も出現する場合は、各文字位置と前の文字位置との間の差分値が、第5バイト及び各後続バイトに格納される。現在の文字位置が、その文書カテゴリ中のその文字の最大位置として格納される。ミニブロックが位置データで充填される場合、新規のミニブロックが使用され、文字の現在の文字位置が、このミニブロックの最小位置としてその中に格納される。上述のプロセスは、データベースブロック中の全てのミニブロックがデータで充填されるまで繰り返される。実施例2では、カタカナ「リ」及び漢字「衆」が例として取り上げられる。前述のように、データベース104において、ニュース文書カテゴリ中の「リ」の最大位置は8237であり、このカタカナの位置データを格納するための最終データベースブロックは、258バイトの位置データを格納している。表4において明らかなように、文書America2.txtを記録する場合、この文書の第1文字「リ」の文字位置は、30494であり、データベース104の文字位置情報に格納されたニュース文書カテゴリにおけるカタカナ「リ」の最大文字位置は8237である。差分アルゴリズムによれば、30494と8237との間の差分値は、0x81B020であり、この格納には3バイトが必要である。データベースブロック中の各ミニブロックの保全性を維持するために、第1ミニブロックの第259バイト及び第260バイトが、0x00で充填され、この文書に出現する文字の位置データが、第2ミニブロックに格納される。ニュース文書カテゴリ中の「リ」の文字位置30494(0x771E)が、第2ミニブロックの最小位置として、このミニブロックの第1から第4バイトに格納される。文書中における「リ」の第2の出現の文字位置は、30503である。このときの対応する差分値は、0x09であり、この値は、第2ミニブロックの第5バイトに格納される。表5のカタカナ「リ」の行の太字を参照されたい。また、前述のように、ニュース文書カテゴリ中の文字「衆」の最大位置は1320であり、この文字の位置データを格納するための第1ミニブロックは、その25バイトの位置データを格納している。文字「衆」は、この文書中に1回出現し、ニュース文書カテゴリ中のその文字位置は30497である。この文字の現在の文字位置30497及びデータベース104の文字位置情報から検索されたニュース文書カテゴリ中のこの文字の最大文字位置1320に基づいて、差分値が0x81E65Eとして計算される。この値は、格納に3バイト必要である。この差分値が、文字「衆」のミニブロックの第26バイト、第27バイト及び第28バイトに格納される。表5の文字「衆」の行を参照されたい。その他の文字の差分値の計算及び格納は、文字「リ」及び「衆」と同様である。実施例2の8つの異なる文字の位置情報に関しては、表5を参照されたい。
Figure 0003728264
6.上記各文字の処理終了後、文字の内部コードの順序に従った各文字のレコードを求めて、データベース104が検索される。指定の文字のレコードが見つかった場合、現在記録済の文字の情報を使用してデータベース104の文字情報及び文字位置情報が更新される。指定の文字のレコードが見つからない場合、現在記録済の文字の情報は、データベース104の文字情報及び文字位置情報に格納される。実施例2では、文書America2.txt中の文字「リ」及び「衆」が例として取り上げられる。「リ」及び「衆」の文字情報は、それぞれ、データベース104において探し出される。続いて、データベース104のその文字情報及び文字位置情報が更新される。文字位置情報を更新する場合、文字「リ」に関しては、文書インデックス生成部105が、データベース104中の最終データベースブロックの第1ミニブロックの最終2バイトと、第2ミニブロックの第1バイトから第5バイトを更新すると共に、データベース104の文字情報において、ニュース文書カテゴリ中の文字の最大文字位置が30503に更新される。「衆」の位置情報をデータベース104に書き込む場合、文書インデックス生成部105が、データベース104の文字位置情報において、文字位置を格納するフィールドの第26バイト、第27バイト及び第28バイトのデータを更新する。それと共に、データベース104の文字情報において、ニュース文書カテゴリ中の文字「衆」の最大文字位置が、30497に更新される。その他の6文字のデータ更新処理も「リ」及び「衆」と同様である。
Figure 0003728264
7.データベース104において、文書カテゴリ情報中の最終位置及び記録された文書の文書情報中の終了位置が更新される。実施例2では、データベース104のニュース文書カテゴリの文書カテゴリ情報において、ニュース文書カテゴリ中の全ての文字の最終位置が30504に更新される。また、文書情報において、文書America2.txtの終了位置は、30504である。
【0110】
実施例3:
本実施例は、実施例2の文書及びその他の複数の文書の記録後に、ある文書が記録される場合であるとする。
【0111】
WINDOWSプラットフォームにおいて、本実施例では、文書インデックス生成部105を使用して文書(テキストファイル)America2.txtをデータベース104に記録し、7文字を含む文書中の各文字に対してインデックスを作成する。文書の内容は以下の通りである:
アメリカ合衆国
この文書が所属する文書カテゴリ名をニュースカテゴリ、文書カテゴリ番号を1とし、この文書カテゴリには、複数の文書が記録されているものとする。また、この文書カテゴリにおいて、文字の最終位置は、303842975、上記文書の文書番号は、290370、文書名は、America3、発行時は、2000.5.1であるとする。この文書が、文書インデックス生成部105に供給され、以下に示すステップと共に記録される。本実施例では、文字「リ」が例として取り上げられる。データベース104において、ニュース文書カテゴリのカタカナ「リ」の最大文字位置は、1016947である。この文字の位置データは、複数のデータベースブロックに格納される。この文字の位置データを格納するための最終データベースブロックは、1039997バイトの位置データを格納している。
【0112】
1.ニュース文書カテゴリにおける現在の最終位置と、このカテゴリ中の各文字の最大文字位置と、各文字の対応する最終データベースブロックに格納された位置データの長さとを探し出すために、文書インデックス生成部105が、データベース104中のニュース文書カテゴリの文書カテゴリ情報を検索する。実施例3では、ニュース文書カテゴリ中の文字の最終位置は、303842975であり、ニュース文書カテゴリ中のカタカナ「リ」の最大文字位置は、1016947である。
【0113】
2.文書の全内容が、メモリRAM3に読み込まれる。文書インデックス生成部105は、文書番号、文書名、作成者及び発行時をデータベース104の文書情報に格納する。本実施例では、システムは、7文字:「アメリカ合衆国」を読み込む。文書番号290370、文書名America3、発行時2000.5.11、及びニュース文書カテゴリ中のこの文書の開始文字位置303842976が、文書インデックス生成部105によりデータベース104中のニュース文書カテゴリの文書情報に格納される。
【0114】
3.文書America3.txt中の7文字は、1つずつ、シフトJISコードからシステムの対応する内部コードへと変換される(表7の列2、3参照)。
Figure 0003728264
4.ニュース文書カテゴリの最終位置+1が、記録対象の新規文書の開始位置として使用され、増加の段階は1である。各文字の文字位置は、文書カテゴリ中の文字の順序に従って判定される。本実施例では、文書America3.txtの開始位置は、303842976である。America3.txt中の全ての文字の文字位置が表7に示されている。
【0115】
5.新規文書の記録前の文書カテゴリ中のある文字の最大位置(本実施例の項目1に記載)及びその文字の現在の文字位置に基づいて、各文字の差分値が、差分アルゴリズムにより計算される。ある文字の現在の差分値が、複数バイトを必要とし、現在のミニブロックの260バイト(4+256バイト)の残りのバイトが、新規の差分値にとって十分ではない場合、システムは0x00を使用して現在のミニブロックの残りのバイトを充填する。続いて、新規のミニブロックが使用される。その文書カテゴリ中のその文字の現在位置が、新規のミニブロックの最小位置としてその始めの4バイトに格納される。この文字がこれ以降も出現する場合は、各文字位置と前の文字位置との間の差分値が、新規のミニブロックの第5バイト及び各後続バイトに格納される。ミニブロックが位置データで充填される場合、新規のミニブロックが使用され、文字の現在の文字位置は、このミニブロックの最小位置としてその中に格納される。上述のプロセスは、データベースブロック中の全てのミニブロックがデータで充填されるまで繰り返される。実施例3では、カタカナ「リ」が例として取り上げられる。前述のように、データベース104において、ニュース文書カテゴリ中のカタカナ「リ」の最大位置は、1016947であり、このカタカナの位置データを格納するための最終データベースブロックは、1039997バイトの位置データを格納している。1039997/260を計算すると、このカタカナは、最終データベースブロック中の3999個のミニブロックを充填している。また、1039997 % 260を計算すると、データベースブロックの第4000ミニブロックは、カタカナの位置データのうちの257バイトを格納しており、3バイトを残している。文書America3.txtにおいて、ニュース文書カテゴリ中の「リ」の文字位置は、303842978であり、データベース104の文字位置情報に格納されたニュース文書カテゴリ中のカタカナ「リ」の最大文字位置は、1016947である。差分アルゴリズムによれば、303842978と1016947との間の差分値は、0x8194EA9F77であり、この格納には5バイトが必要である。データベースブロック中の各ミニブロックの保全性を維持するために、第4000ミニブロックの第258バイトから第260バイトが、0x00で充填される。続いて、新規のデータベースブロックが使用される。ニュース文書カテゴリ中の「リ」の文字位置0x121C46A2が、新規のデータベースブロックの第1ミニブロックに格納される。
【0116】
6.文書中の全ての文字の処理終了後、文字の内部コードの順序に従った各文字のレコードを求めて、データベース104が検索される。指定の文字のレコードが見つかった場合、現在記録済の文字の情報を使用してデータベース104の文字情報及び文字位置情報が更新される。指定の文字のレコードが見つからない場合、現在記録済の文字の情報は、データベース104の文字情報及び文字位置情報に格納される。実施例3では、文書America3.txt中の文字「リ」が例として取り上げられる。「リ」の文字情報が、データベース104において探し出される。続いて、データベース104のその文字情報及び文字位置情報が更新される。文書America3.txtを記録する前に、文字「リ」の103999バイトの位置データが、データベース104中の文字の最終レコード項目のデータベースブロックに格納されている。文字位置情報を更新する場合、文字「リ」に関しては、文書インデックス生成部105が、データベース104中の文字の文字位置情報の最終レコード項目のデータベースブロックを更新する。続いて、新規のデータベースブロックが、文字の文字位置情報中の新規のレコード項目としてデータベース104に格納される。この新規のレコード項目が、データベース104中の文字の文字位置情報中の最終のレコード項目になる。
Figure 0003728264
7.データベース104において、文書カテゴリ情報中の最終位置及び記録された文書の文書情報中の終了位置が更新される。実施例3では、データベース104中のニュース文書カテゴリの文書カテゴリ情報において、ニュース文書カテゴリ中の全ての文字の最終位置が303842982に更新される。また、文書情報において、文書America3.txtの終了位置は、303842982である。
【0117】
全文検索処理
また、本発明では、全文検索の方法が提供される。この方法では、オペレータにより指定された検索語に対する全文検索を本発明において作成された文書インデックスの文字位置情報を使用して実施する。
【0118】
図4A及び4Bのフローチャートにおいて、作成された文書インデックスを使用しての全文検索処理を以下に説明する。
【0119】
ステップ502において、文書カテゴリ名が入力される。例えば、入力ボックスを有するダイアログボックスが表示され、オペレータに対して文書カテゴリ名を入力するように促す。
【0120】
ステップ504において、入力された文書カテゴリ名に従って、全文検索エンジン106が、データベース104において文書カテゴリ情報を検索する。オペレータにより指定された文書カテゴリの文書カテゴリ情報を見つけた場合、全文検索エンジン106は、文書カテゴリ情報からその文書カテゴリの文書カテゴリ番号を取得する。
【0121】
ステップ506において、検索語が入力される。例えば、入力ボックスを有するダイアログボックスが表示され、オペレータに対して検索語を入力するように促す。
【0122】
ステップ508において、全文検索の前のデータ初期化プロセスが行なわれる。このプロセスは以下の過程:
検索語一致位置を定義する過程であり、例えば、その初期値を1に設定する、すなわち、検索語の第1文字の指定文書カテゴリにおける第1の出現の位置を1とする過程と、
検索語の文字数を取得する過程と、
検索語の各文字を内部コードに変換する過程と、
検索語の各文字の順序に従って、各文字に変位が与えられる過程であり、例えば、検索語「米国アメリカ」の第1文字を開始点として設定すると、「米」の変位は0、「国」の変位は−1、「ア」の変位は−2、「メ」の変位は−3、「リ」の変位は−4、「カ」の変位は−5である過程と、
データベース照会ステートメントを構成する過程と、
結果セットを初期化する過程とを含む。
【0123】
ステップ510において、ステップ50で構成されたデータベース照会ステートメントがデータベース104に与えられ、データベース検索が行なわれる。検索語の各文字の位置情報の全てのレコード項目が探し出される。これらのレコードは、レコードセットを形成する。レコードセットは、データベース104中の各文字の位置情報レコードを含む。各レコード項目は、文字位置データを格納するためのデータベースブロックのフィールドを含む。
【0124】
ステップ512において、検索語の各文字のレコードがレコードセット中にあるか否かが判定される。レコードセットにレコードのない文字があれば、検索は終了する。レコードのない文字がなければ、ステップ514に進む。
【0125】
ステップ514において、検索語の各文字の探し出されたレコードが、データベースブロックの最小位置に従って、各文字ごとに整列される。そして、各文字に対して、第1のレコード項目のデータベースブロック、このデータベースブロック中第1のミニブロック及びこの第1のミニブロック中の第1の文字位置が、それぞれ、現在のデータベースブロック、現在のミニブロック及び現在の文字位置として設定される。
【0126】
ステップ516において、カウンタ(I)が設定される。これは、検索語の第I番目の文字の復元/照合処理が行なわれていることを示す。ステップ518において、カウンタは、検索語の第I番目の文字の文字位置の復元/照合処理を制御するためのループ制御変数として機能する。Iの初期値は1であり、これは、復元/照合処理が、検索語の第1文字から開始されることを示す。
【0127】
ステップ518において、Iが検索語の文字数以下である場合、ステップ520に進み、第I番目の文字の復元/照合処理を行なう。文字数を超える場合は、検索結果が取得、格納されたことを示し、ステップ544に進む。
【0128】
ステップ520において、検索語一致位置が、検索語の文字Iの現在のレコード項目のデータベースブロックの最大位置と文字Iの変位との和と比較される。
1.検索語一致位置の方が大きい場合、データベースブロックには、この検索語一致位置と一致する文字位置がないことを意味し、ステップ538に進む。ここで、文字Iがレコードセット中に更にレコードを有するか否かが判定される。
文字Iがレコードセット中に更にレコードを有する場合、ステップ540に進み、文字Iの次のレコード項目を取得し、そのレコード項目のデータベースを現在のデータベースとして、その中の第1のミニブロックを現在のミニブロックとして、また、第1のミニブロックの最小位置を現在の文字位置として設定する。
レコードがない場合、現在の検索語の検索は終了する。
2.検索語一致位置の方が小さい場合、現在のレコード項目のデータベースブロック中のミニブロックは、一致する文字位置を格納している可能性があることを意味する。
検索語一致位置が和と等しい場合、現在のデータベースブロックの最大位置が、一致文字位置であることを意味し、ステップ542に進む。ここで、Iに1を加えて、次の文字が現在の一致位置と一致するか否かが判定される。
【0129】
ステップ522において、まず最初に、若干の説明を行なう。本発明では、データベースブロックは、複数のミニブロックを有しても良い。各ミニブロックは、最小位置及び複数の差分値を含む。位置データが昇順に格納される。従って、2個の連続するミニブロックの第2ミニブロックの最小位置は、第1ミニブロックの最大位置とみなすことができる。例えば、文字「日」のデータベースブロック中の第5ミニブロックの最小位置は1000であり、第6ミニブロックの最小位置は1500であるとする。データベースブロックの第4ミニブロックに格納された最大文字位置は、1000未満であり、データベースブロックの第5ミニブロックに格納された最大文字位置は、1500未満であると判定することができる。データベースブロック中の最終ミニブロックに関して、その最大位置は、データベースブロックの最大位置であると判定することができる。
【0130】
ステップ522において、検索語一致位置が、検索語の文字Iの現在のミニブロックの最大位置と文字Iの変位との和と比較される。
1.検索語一致位置の方が大きい場合、現在のミニブロックには、この検索語一致位置と一致する文字位置がないことを意味し、ステップ534に進む。ここで、現在のレコード項目に次のミニブロックがあるか否かが判定される。
ブロックがある場合、ステップ536に進み、次のミニブロックを取得し、このミニブロックを現在のミニブロックとして、ミニブロックの最小位置を現在の文字位置として設定する。
レコードがない場合、ステップ538に進む。
2.検索語一致位置の方が小さい場合、現在のミニブロックは、一致文字位置を格納している可能性があることを意味し、ステップ524に進む。ここで、現在のミニブロックの位置データが判定される。
検索語一致位置が和と等しい場合、現在のミニブロックの最大位置が、一致文字位置であることを示し、ステップ542に進む。ここで、Iに1が加えられ、次の文字が現在の一致位置と一致するか否かが判定される。
【0131】
ステップ524において、検索語一致位置が、検索語の文字Iの現在の復元された文字位置と文字Iの変位との和と比較される。
1.検索語一致位置の方が大きい場合、ステップ530に進み、現在のミニブロックには次の差分値があるか否かが判定される。
差分値がある場合、ステップ532に進み、次の差分値を取得する。この差分値及び文字の現在の文字位置が差分アルゴリズムにより計算され、所属する文書カテゴリ中の文字の新規の現在の文字位置が取得される。
差分値がない場合、ステップ534に進む。
2.検索語一致位置の方が小さい場合、ステップ526に進む。ここで、検索語一致位置が、文字Iの現在の復元された文字位置及び文字Iの変位としてリセットされ、ステップ528に進む。ステップ528において、Iは1に設定され、ステップ518に戻る。ここで、検索語の第1文字から新規の検索語一致位置と一致する文字位置が検索される。
検索語一致位置が和と等しい場合、現在の復元された文字位置が、一致文字位置であることを示し、ステップ542に進む。ここで、Iに1が加えられ、次の文字が現在の検索語一致位置と一致するか否かが判定される。
【0132】
ステップ544において、ステップ518でIが検索語の文字数より多いと判定される場合、検索語の各文字の現在の復元された文字位置が、現在の検索語一致位置と一致する、すなわち、検索語の検索結果が現在の文書カテゴリにおいて見つかったことを意味する。続いて、文書情報共有変換部により、現在の検索語一致位置がどの文書にあるかが判定される。また、削除フラグにより文書が削除されたか否かが判定される。文書が削除された場合、削除済文書に出現した検索語が、検索結果であってはならない。文書が削除されていない場合、文書の文書番号が取得される。
【0133】
ステップ546において、取得された文書番号が検索結果セットに格納される。
【0134】
ステップ548において、検索語一致位置が更新される。現在の検索語一致位置に1を加えて新規の検索語一致位置とする。ステップ516に戻り、Iを1に設定する。続いて、ステップ518に進み、検索語の第1文字から新規の検索語一致位置と一致する文字位置を検索する。
【0135】
実施例4:
全文検索エンジン106により、データベース104に格納された各文書に対して全文検索が行なわれる。
【0136】
ステップ502において、文書カテゴリ名が入力される。例えば、入力ボックスを有するダイアログボックスが表示され、オペレータに対して文書カテゴリ名「ニュース」を入力するように促す。
【0137】
ステップ504において、入力された文書カテゴリ名に従って、全文検索エンジン106が、データベース104において文書カテゴリ情報を検索する。ニュース文書カテゴリの文書カテゴリ情報を見つけた場合、全文検索エンジン106は、文書カテゴリ情報からニュース文書カテゴリの文書カテゴリ番号1を取得する。
【0138】
ステップ506において、検索語が入力される。例えば、入力ボックスを有するダイアログボックスが表示され、オペレータに対して検索語「米国アメリカ」を入力するように促す。
【0139】
ステップ508において、全文検索の前のデータ初期化プロセスが行なわれる。このプロセスは以下の過程:
検索語一致位置の初期値を1として定義する過程であり、すなわち、検索語の第1文字のニュース文書カテゴリにおける第1の出現位置を1とする過程と、
検索語「米国アメリカ」の文字数6を取得する過程と、
検索語の各文字を内部コードに変換し、例えば、6文字をシフトJISコードから対応するシステム内部コードに変換する(表9の列1、2参照)過程と、
検索語の各文字の順序に従って、各文字に変位が与えられる過程であり、検索語「米国アメリカ」の第1文字が開始点として設定され、6文字にはそれぞれ変位が与えられ、「米」の変位は0、「国」の変位は−1、「ア」の変位は−2、「メ」の変位は−3、「リ」の変位は−4、「カ」の変位は−5である過程と、入力された文書カテゴリ名「ニュース」及び6文字の内部コードとが、データベースSQL照会ステートメントにおいて記述される過程と、
結果セットを空にする過程とを含む。
【0140】
ステップ510において、ステップ506で構成されたデータベース照会ステートメントがデータベース104に与えられ、データベース検索が行なわれる。検索語の各文字の位置情報の全てのレコード項目が探し出される。これらのレコードは、レコードセットを形成する。各レコード項目は、複数のフィールドを含む。文字位置データを格納するデータベースブロックは、各レコード項目にフィールドとして含まれる。すなわち、1レコード項目は、1個のデータベースブロックに対応する。レコードセットは、データベース104に格納された検索語の各文字の位置情報を含む。表9は、データベース104中のニュース文書カテゴリ中の6文字「米国アメリカ」の文字位置情報の幾つかのレコード項目を示す。
Figure 0003728264
ステップ512において、検索語の各文字のレコードがレコードセット中にあるか否かが判定される。レコードセットにレコードのない文字があれば、検索は終了する。レコードのない文字がなければ、ステップ514に進む。
【0141】
ステップ514において、検索語の各文字の探し出されたレコードは、データベースブロックの最小位置に従って、各文字ごとに整列される。例えば、「リ」の3つのレコード項目のデータベースブロックの最小位置は、それぞれ、5、30494及び303842978である。
【0142】
ステップ516において、カウンタ(I)の初期値が1に設定される。これは、検索語の第I文字「米」の復元/照合処理が第1文字「米」から開始されることを意味する。
【0143】
ステップ518において、I = 1 < 6の場合、ステップ520に進む。1に初期化された検索語一致位置が、文字「米」のデータベースブロックの最大位置30499と文字「米」の変位0(表10の列1、4及び5を参照)との和と比較される。1 < 30499 + 0であるので、データベースブロックに、現在の検索語一致位置1と一致する「米」の文字位置がある可能性がある、すなわち、文字位置と変位0の和が、現在の検索語一致位置に等しいことを意味する。データベースブロック中の第2ミニブロックの最小位置がXであるとする。検索語一致位置1が、データベースブロックの第1ミニブロックの最大位置X(第2ミニブロックの最小位置)と文字「米」の変位0との和と比較される。現在の検索語一致位置1に等しい「米」の文字位置が、第1ミニブロックに存在する可能性があることが判定される。続いて、現在の検索語一致位置1が、第1ミニブロックの最小位置1と変位0との和と比較される。比較結果は等しく、カウンタが1だけ増分されてI = 2となる。ステップ518に戻り、文字「国」のデータベースブロックが、「国」の変位との和が現在の検索語一致位置1に等しい文字位置を有するか否かが判定される。
【0144】
現在I = 2であり、「国」の変位は−1である。文字の第1レコード項目のデータベースブロックの最大位置は、303842982(表9の列1、4及び5を参照)である。第1ミニブロックの最小位置は2である。第1ミニブロックの最大位置をYとする。まず、レコード項目のデータベースブロックの最大位置と文字の変位との和が303842981(303842982 - 1 = 303842981)と計算される。この和303842981が、現在の検索語一致位置1と比較され、それにより、データベースブロックが現在の検索語一致位置と一致する文字位置を有する可能性があると判定される。検索語一致位置1が、データベースブロックの第1ミニブロックの最大位置(第2ミニブロックの最小位置)と変位との和(Y - 1)と比較され、それにより、現在の検索語一致位置と一致する文字位置が、データベースブロックの第1ミニブロックに存在する可能性があると判定される。検索語一致位置1が、第1ミニブロックの最小位置2と変位−1との和1(2 - 1 = 1)と比較される。比較結果は等しく、これは、現在の検索語一致位置1と一致する検索語の第2文字「国」の文字位置が見つかったことを意味する。カウンタが1だけ増分される。
【0145】
残りの4文字「アメリカ」の照合プロセスは、文字「米国」と同様であり、変位が異なるのみである。「カ」の照合プロセスが終了したとき、カウンタは7である。従って、カウンタの数値は、検索語の文字数6より大きく、これは、検索語の第1検索結果が、一致位置1で見つかったことを意味する。続いて、ステップ544に進む。
【0146】
ステップ544から548において、文書情報共有変換部107により、上述の一致位置1を使用して対応する文書番号1が探し出される。検索結果が、結果セットに格納される。続いて、検索語一致位置が1だけ増分され、現在の検索語一致位置として新規の一致位置2が得られる。カウンタが1にリセットされる。各文字の現在のデータベースブロックの現在のミニブロック中の現在の文字位置から新規の検索語一致位置と一致する結果の検索が開始される。
【0147】
次の検索結果の検索を開始する場合、まず、差分値0x826Eが、文字「米」の現在のデータベースブロックの第1ミニブロックの第5バイト及び第6バイトから取得される。単位桁以外の桁の最上位のビットが、0に復元される。すなわち、0x826Eが、0x026Eに復元される。(016E)16 = (366)10である。続いて、「米」の前の文字位置1と366との和が計算され、復元された文字位置367(1 + 366 = 367)が得られる。復元された文字位置367と変位0との和は、現在の検索語一致位置よりも大きい。従って、この復元された文字位置は、一致位置2と一致しない。現在の文字位置367と変位0の和367を使用して、検索語一致位置がリセットされる。また、カウンタが1にリセットされる。各文字の現在のデータベースブロックの現在のミニブロック中の現在の文字位置から新規の検索語一致位置367と一致する結果の検索が開始される。上述のプロセスは、検索語中の文字の未処理の文字位置情報がなくなるまで継続される。こうして、語「米国アメリカ」の検索プロセスが終了する。
【0148】
実施例5:
全文検索エンジン106により、データベース104に格納された各文書に対して全文検索が行なわれる。語「アメリカ」をニュース文書カテゴリにおいて検索するものとする。
【0149】
ステップ502において、文書カテゴリ名が入力される。例えば、入力ボックスを有するダイアログボックスが表示され、オペレータに対して文書カテゴリ名「ニュース」を入力するように促す。
【0150】
ステップ504において、入力された文書カテゴリ名に従って、全文検索エンジン106が、データベース104において文書カテゴリ情報を検索する。ニュース文書カテゴリの文書カテゴリ情報を見つけた場合、全文検索エンジン106は、文書カテゴリ情報からニュース文書カテゴリの文書カテゴリ番号1を取得する。
【0151】
ステップ506において、検索語が入力される。例えば、入力ボックスを有するダイアログボックスが表示され、オペレータに対して検索語「アメリカ」を入力するように促す。
【0152】
ステップ508において、全文検索の前のデータ初期化プロセスが行なわれる。このプロセスは以下の過程:
検索語一致位置の初期値を1として定義する過程であり、すなわち、検索語の第1文字のニュース文書カテゴリにおける第1の出現の位置を1とする過程と、
検索語「アメリカ」の文字数4を取得する過程と、
検索語の各文字を内部コードに変換し、例えば、4文字をシフトJISコードから対応するシステム内部コードにそれぞれ変換する(表10の列1、2参照)過程と、
検索語の各文字の順序に従って、各文字に変位が与えられる過程であり、検索語「アメリカ」の第1文字が開始点として設定され、4文字にはそれぞれ変位が与えられ、「ア」の変位は0、「メ」の変位は−1、「リ」の変位は−2、「カ」の変位は−3である過程と、
入力された文書カテゴリ名「ニュース」及び4文字の内部コードとが、データベースSQL照会ステートメントにおいて記述される過程と、
結果セットを空にする過程とを含む。
【0153】
ステップ510において、ステップ506で構成されたデータベース照会ステートメントがデータベース104に与えられ、データベース検索が行なわれる。検索語の各文字の位置情報の全てのレコード項目が探し出される。これらのレコードは、レコードセットを形成する。各レコード項目は、複数のフィールドを含む。文字位置データを格納するデータベースブロックは、各レコード項目にフィールドとして含まれる。すなわち、1レコード項目は、1個のデータベースブロックに対応する。レコードセットは、データベース104に格納された検索語の各文字の位置情報を含む。表10は、データベース104中のニュース文書カテゴリ中の4文字「アメリカ」の文字位置情報の幾つかのレコード項目を示す。
Figure 0003728264
ステップ512において、検索語の各文字のレコードがレコードセット中にあるか否かが判定される。レコードセットにレコードのない文字があれば、検索は終了する。レコードのない文字がなければ、ステップ514に進む。
【0154】
ステップ514において、検索語の各文字の探し出されたレコードは、データベースブロックの最小位置に従って、各文字ごとに整列される。例えば、「リ」の3つのレコード項目のデータベースブロックの最小位置は、それぞれ、1005、30494、303842978である。
【0155】
ステップ516において、カウンタ(I)の初期値が1に設定される。これは、復元/照合処理が検索語の第1文字「ア」から開始されることを示す。
【0156】
ステップ518において、I = 1 < 4の場合、ステップ520に進む。1に初期化された検索語一致位置が、文字「ア」のデータベースブロックの最大位置303842976と文字「ア」の変位0(表10の列1、4及び5を参照)との和と比較される。1 < 303842976 + 0であるので、データベースブロックに、現在の検索語一致位置1と一致する「ア」の文字位置がある可能性がある、すなわち、文字位置と変位0の和が、現在の検索語一致位置1に等しいことを意味する。データベースブロック中の第2ミニブロックの最小位置がX1であるとする。検索語一致位置1が、データベースブロックの第1ミニブロックの最大位置X1(第2ミニブロックの最小位置)と文字「ア」の変位0との和と比較される。現在の検索語一致位置1に等しい「ア」の文字位置が、第1ミニブロックに存在する可能性があることが判定される。続いて、現在の検索語一致位置1が第1ミニブロックの最小位置1003と変位0との和と比較される。第1ミニブロックの最小位置1003と変位0との和は、現在の検索語一致位置1より大きい。現在、「ア」の現在の文字位置は、1003である。ステップ526において、検索語一致位置が、「ア」の現在の文字位置1003と変位0との和に設定され、カウンタは1に設定される。ステップ518に戻り、新規の検索語一致位置1003を使用して、再度、第1文字「ア」の現在の文字位置に対しての照合プロセスが行なわれる。検索語一致位置1003が、文字の現在の文字位置1003と変位との和に等しいと判定される。Iが1だけ増分される。
【0157】
現在I = 2であり、「メ」の変位は−1である。文字の第1レコード項目のデータベースブロックの最大位置は、303842977(表10の列1、4及び5を参照)である。第1ミニブロックの最小位置は1004である。第1ミニブロックの最大位置をY2とする。まず、レコード項目のデータベースブロックの最大位置と文字の変位−1との和が303842976(303842977 - 1 = 303842976)と計算される。この和303842976が、現在の検索語一致位置1003と比較され、それにより、データベースブロックが現在の検索語一致位置と一致する文字位置を有する可能性があると判定される。検索語一致位置1003が、データベースブロックの第1ミニブロックの最大位置(第2ミニブロックの最小位置)と変位との和(Y2 - 1)と比較され、それにより、現在の検索語一致位置1003と一致する文字位置が、データベースブロックの第1ミニブロックに存在する可能性があると判定される。検索語一致位置1003が、第1ミニブロックの最小位置1004と変位−1との和1003(1004 - 1 = 1003)と比較される。比較結果は等しく、これは、現在の検索語一致位置1003と一致する検索語の第2文字「メ」の文字位置が見つかったことを意味する。カウンタが1だけ増分される。
【0158】
現在、I = 3である。検索語一致位置1003と一致する第3文字「リ」の文字位置の検索を行なう。「リ」の変位は−2である。現在のデータベースブロックの最大位置は、1320である(表10の列1、4及び5を参照)。第1のミニブロックの最小位置は、1004である。第1のミニブロックの最大位置をX3とする。まず、レコード項目のデータベースブロックの最大位置と文字の変位−2との和を1318(1320 - 2 = 1318)と計算する。続いて、和1318が、現在の検索語一致位置1003と比較され、それにより、データベースブロックは、現在検索語一致位置と一致する文字位置を有する可能性があると判定される。検索語一致位置1003が、データベースブロックの第1ミニブロックの最大位置(第2ミニブロックの最小位置)と変位−2との和(X3 - 2)と比較され、それにより、現在の検索語一致位置1003と一致する文字位置が、データベースブロックの第1ミニブロックに存在する可能性があると判定される。検索語一致位置1003が、第1ミニブロックの最小位置1005と変位−1との和1003(1005 - 2 = 1003)と比較される。比較結果は等しく、これは、現在の検索語一致位置1003と一致する検索語の第3文字「リ」の文字位置が見つかったことを意味する。カウンタが1だけ増分される。
【0159】
現在、I = 4である。検索語一致位置1003と一致する第3文字「カ」の文字位置の検索を行なう。「カ」の変位は、−3である。現在のデータベースブロックの最大位置は、303842979(表10の列1、4及び5参照)。第1ミニブロックの最小位置は、1006である。第1ミニブロックの最大位置は、X4であるとする。まず、レコード項目のデータベースブロックの最大位置と文字の変位−3の和は、303842976(303842979 - 3 = 303842976)と計算される。和303842976が、現在の検索語一致位置1003と比較され、それにより、現在の検索語一致位置1003と一致する文字位置を有する可能性があると判定される。検索語一致位置1003が、データベースブロックの第1ミニブロックの最大位置(第2ミニブロックの最小位置)と変位−3との和(X4 - 3)と比較され、それにより、現在の検索語一致位置1003と一致する文字位置が、データベースブロックの第1ミニブロックに存在する可能性があると判定される。検索語一致位置1003が、第1ミニブロックの最小位置1005と変位−3の和1003(1006 - 3 = 1003)と比較される。比較結果は等しく、これは、現在の検索語一致位置1003と一致する検索語の第4文字「カ」の文字位置が見つかったことを意味する。カウンタが、1だけ増分される。
【0160】
現在、I = 5である。ステップ518において、カウンタの数値は、検索語の文字数よりも大きい。従って、検索結果が一致位置1003で見つかったものと判定される。ステップ544から548において、文書情報共有変換部107により、上述の一致位置1003を使用して、対応する文書番号が探し出される。検索結果が、結果セットに格納される。続いて、検索語一致位置1004が、1だけ増分され、現在の検索語一致位置として新規の一致位置1004が得られる。カウンタが1にリセットされる。語「アメリカ」の各文字の現在の文字位置は、それぞれ、1003、1004、1005及び1006である。各文字の現在のデータベースブロックの現在のミニブロック中の現在の文字位置から新規の検索語一致位置と一致する新規の検索結果の検索が開始される。
【0161】
次の検索結果を検索する場合、まず、差分値0x04が、文字「ア」の現在のデータベースブロックの第1ミニブロックの第5バイトから取得される。この差分値には1桁しかないので、差分値は、直接、前の文字位置1003に加算され、復元された文字位置1007(1003 + 4 = 1007)が得られる。比較すると、「ア」の復元された文字位置1007と変位0の和は、現在の検索語一致位置1004より大きい。現在の文字位置1007と変位0の和1007が使用されて、検索語一致位置がリセットされる。また、カウンタも1にリセットされる。「ア」の一致文字位置の検索が再開される。その結果、検索語一致位置1007は、「ア」の現在の文字位置に等しい。Iは1から2に変更される。
【0162】
現在の検索語一致位置1007と一致する残りの3文字「メリカ」の文字位置が、それぞれ、検索される。ステップ544から548において、全ての文字が一致位置と一致する場合、文書情報共有変換部107により、取得された一致位置を使用して、対応する文書番号が探し出される。新規の検索結果が、結果セットに格納される。続いて、上述のプロセスが516から繰り返される。検索語の文字に未処理の文字位置情報がなくなると、語「アメリカ」に対する検索が終了する。
【0163】
文書情報共有変換部
本発明では、指定の文字位置から対応する文書情報を迅速に取得する方法をも提供する。キャッシュメモリの高速アクセス機能に基づいて、この方法では、共有メモリにデータベース104の文書情報の一部のバックアップコピーが格納される。全文検索を実行する場合、二分アルゴリズムにより、対応する文書番号が、全文検索プロセスで見つかった1つ以上の一致位置から、迅速且つ正確に取得される。文書の記録処理又は削除処理が実施される度に、文書情報のバックアップコピーがタイミング良く更新されるように、文書情報共有変換部107が起動される。
【0164】
図5において、文書情報共有変換部のプロセスを以下に説明する。
【0165】
1.文書カテゴリ番号入力に従って、文書情報共有変換部107が、まず、指定された文書カテゴリの文書情報が、共有メモリ604に格納されているか否かをチェックする。指定の文書カテゴリの文書情報が共有メモリ604にない場合、共有メモリのブロックをシステムに適用する。続いて、データベース104の文書情報が検索される。各文書の文書番号及び位置範囲を表すデータベース104中の指定の文書カテゴリ中の全文書の文書情報のデータ項目(文書番号、文書の開始位置及び終了位置、並びに、削除フラグなど)が、共有メモリ604に読み込まれ、マルチユーザにより使用されて指定の文書カテゴリを検索できるように、文書の順序通りの記録に従って、共有メモリに常駐するようになる。作成者、表題、記録日時、削除日時などのデータベース104の文書情報のその他のデータ項目が、リスト形式の情報としてデータベース104に格納される。共有メモリ604が、指定の文書カテゴリの文書情報を格納する場合、文書情報は、データベース104にアクセスすることなく、直接、共有メモリ604から読み出すことができる。従って、データベース104の入出力の頻度を低下させ、データベースへのアクセス時間を削減し、データベース照会の速度を増大することができる。
【0166】
2.全文検索を実行する場合、1つ以上の一致位置を格納するための1次元配列である位置情報606が、入力パラメータとして文書情報共有変換部107に与えられる。二分アルゴリズムにより、文書情報共有変換部107が、各一致位置を共有メモリ604の各文書の範囲(文書の開始位置及び終了位置)と比較し、一致位置のある文書を判定できるようになる。判定された文書の削除フラグがチェックされる。文書が削除されていれば、削除フラグは1であり、この文書に対する戻り値は、−1である。文書が削除されていない場合、文書情報共有変換部107が、見つかった対応する文書番号を出力する。最後に、一致位置から変換された全ての文書番号が、1つ以上の文書番号を格納するための1次元配列である文書情報608に格納される。文書情報608への文書番号の格納順序は、ちょうど、位置情報606中の一致位置の順序に対応する。
【0167】
3.新規の文書を記録し、文字インデックスを作成する場合、文書インデックス生成部105が、新規の文書の情報を共有メモリ604にタイミング良く追加するためのインタフェースを提供する。
【0168】
4.文書が削除される場合、文書インデックス生成部105が、共有メモリ604中の削除された文書の削除フラグをタイミング良く1(文書が削除されたことを示す)に設定するためのインタフェースを提供する。
【0169】
実施例7:
本実施例では、一致位置に対応する文書番号を取得できるように、一致位置を格納するための1次元配列中のデータが、文書情報に変換される。
【0170】
1.文書カテゴリ番号1の入力602に従って、文書情報共有変換部107が、まず、文書カテゴリ番号1の文書情報が共有メモリ604に格納されているか否かをチェックする。指定の文書カテゴリの文書情報が共有メモリ604にない場合、共有メモリ604のブロックをシステムに適用する。続いて、データベース104の文書情報中の文書カテゴリ番号1の全文書の文書情報が探し出される。各文書の文書番号、開始位置及び終了位置が取得されて共有メモリ604に読み込まれ、マルチユーザにより使用されて指定の文書カテゴリを検索できるように、文書の順序通りの記録に従って、共有メモリ604に常駐するようになる。詳細は、図5を参照されたい。
【0171】
2.複数の一致位置を格納するための1次元配列である位置情報606が、文書情報共有変換部107に与えられる。
【0172】
3.二分アルゴリズムにより、文書情報共有変換部107が、配列中の第1の一致位置より、共有メモリ604中の各文書の範囲(文書の開始位置及び終了位置)と各一致位置を比較し、一致位置のある文書を判定できるようにする。判定された文書の削除フラグがチェックされる。文書が削除されている場合、削除フラグは1であり、この文書に対応する戻り値は、−1である。文書が削除されていない場合、文書情報共有変換部107が、見つかった対応する文書番号を出力する。実施例7では、位置情報606中の第1一致位置1001に対して、二分アルゴリズムにより、共有メモリ604において、開始位置が998、終了位置が1100、文書番号が21で削除フラグが文書が削除されていないことを示す0である対応文書を探し出す。文書情報共有変換部107が、一致位置1001に対応する文書の文書番号2を第1の番号として文書情報608に格納する。こうして、1つの一致位置を対応する文書番号に変換するプロセスが完了する。検索及び比較の際に、位置情報606中の一致位置3001を処理する場合、文書情報共有変換部107は、一致位置3001が、開始位置が2890、終了位置が3005で文書番号が41の文書にあると判定する。続いて、削除フラグが1であるかがチェックされる。これは、文書が削除されたことを意味する。文書情報共有変換部107が、値−1を戻す場合、一致位置3001には、対応する文書がないことを意味する。文書情報共有変換部による位置情報606中の他の一致位置への変換プロセスは、上述の過程と同じである。
【0173】
4.位置情報606中の検索語位置から変換された文書番号が、文書情報共有変換部107により文書情報608に格納される。文書情報608の文書番号の格納順序は、位置情報606中の一致位置の格納順序に対応する。
【図面の簡単な説明】
【図1A】インデックス作成及び全文検索用システムの構造の一例を示す図。
【図1B】図1Aのサーバのハードウェアブロック図。
【図2】文字位置データを格納するためのデータベースブロック及びミニブロックの構造を示す図。
【図3】 文書インデックス生成部の処理のフローチャート。
【図4A】全文検索エンジンの処理のフローチャート。
【図4B】全文検索エンジンの処理のフローチャート。
【図5】文書情報共有変換部の処理を示す図。
【符号の説明】
104…データベース、105…文書インデックス生成部、106…全文検索エンジン、107…文書情報共有変換部、604…共有メモリ、608…文書情報

Claims (6)

  1. 文書中の文字の検索用インデックスを作成するインデックス作成装置であって、
    第1の記憶領域と第2の記憶領域とで構成されたミニブロックの複数で構成されるデータベースブロックを、前記文書中の文字のうち同一の文字毎に保持する保持手段と、
    前記文書中の文字が出現する文字位置を示す文字位置データを取得する取得手段と、
    前記文書中の文字のうち同一の文字の前記文字位置データについて、最初の文字位置を示す最小文字位置データを、前記保持手段内の対応する前記データベースブロック内の第1のミニブロック中の第1の記憶領域に格納させる処理を行う第1の格納制御手段と、
    前記最初の文字位置以降の文字位置に、対応する同一の文字が出現する毎に、当該出現の順序において隣り合う2つの同一の文字の文字位置データの差分値を、前記保持手段内の対応する前記データベースブロック内の第1のミニブロック中の第2の記憶領域に順次格納させる処理を行う第2の格納制御手段と
    を備えることを特徴とするインデックス作成装置。
  2. 前記第1のミニブロック中の第2の記憶領域中で前記差分値を格納していない領域の大きさが、前記差分値を格納する為に十分ではない場合には、
    前記第1の格納制御手段は、前記保持手段内の前記データベースブロック内において前記第1のミニブロックとは異なる第2のミニブロック中の第1の記憶領域に、前記差分値に対応する前記隣り合う2つの同一の文字のうち、前記出現の順序において後方に位置する文字の文字位置データを格納させる処理を行い、
    前記第2の格納制御手段は、前記出現の順序において後方に位置する文字の文字位置以降の文字位置に該文字と同一の文字が出現する毎に、当該出現の順序において隣り合う2つの同一の文字の文字位置データの差分値を前記第2のミニブロック中の第2の記憶領域に順次格納させる処理を行う
    ことを特徴とする請求項1に記載のインデックス作成装置。
  3. 請求項1又は2に記載のインデックス作成装置と、当該インデックス作成装置が作成したインデックスを用いた全文検索処理を行う全文検索エンジン部とで構成される検索システムであって、
    前記全文検索エンジン部は、
    検索語の入力を受け付ける入力手段と、
    前記保持手段より、前記検索語を構成する各文字に対応する前記データベースブロックを取得する手段と、
    取得された前記データベースブロックのうち前記検索語の最初に位置する第1の文字に対応する第1のデータベースブロックを用いて、当該第1の文字の第1の文字位置データを取得する手段と、
    取得された前記データベースブロックのうち、前記検索語において前記第1の文字に後続する第2の文字に対応する第2のデータベースブロックを用いて、前記第2の文字のうち、前記第1の文字位置データに対応する文字位置以降の文字位置を有し、かつ、前記第1の文字位置データに対応する文字位置と所定の位置関係を有する文字位置を有する第2の文字について、第2の文字位置データを取得する手段と
    を備えることを特徴とする検索システム。
  4. 文書中の文字の検索用インデックスを作成するインデックス作成装置の制御方法であって、
    第1の記憶領域と第2の記憶領域とで構成されたミニブロックの複数で構成されるデータベースブロックを、前記文書中の文字のうち同一の文字毎に保持手段内に保持する保持工程と、
    前記文書中の文字が出現する文字位置を示す文字位置データを取得する取得工程と、
    前記文書中の文字のうち同一の文字の前記文字位置データについて、最初の文字位置を示す最小文字位置データを、前記保持手段内の対応する前記データベースブロック内の第1のミニブロック中の第1の記憶領域に格納させる処理を行う第1の格納制御工程と、
    前記最初の文字位置以降の文字位置に、対応する同一の文字が出現する毎に、当該出現の順序において隣り合う2つの同一の文字の文字位置データの差分値を、前記保持手段内の対応する前記データベースブロック内の第1のミニブロック中の第2の記憶領域に順次格納させる処理を行う第2の格納制御工程と
    を備えることを特徴とするインデックス作成装置の制御方法。
  5. 請求項1又は2に記載のインデックス作成装置と、当該インデックス作成装置が作成したインデックスを用いた全文検索処理を行う全文検索エンジン部とで構成される検索システムの制御方法であって、
    前記全文検索エンジン部の制御方法は、
    検索語の入力を受け付ける入力工程と、
    前記保持手段より、前記検索語を構成する各文字に対応する前記データベースブロックを取得する工程と、
    取得された前記データベースブロックのうち前記検索語の最初に位置する第1の文字に対応する第1のデータベースブロックを用いて、当該第1の文字の第1の文字位置データを取得する工程と、
    取得された前記データベースブロックのうち、前記検索語において前記第1の文字に後続する第2の文字に対応する第2のデータベースブロックを用いて、前記第2の文字のうち、前記第1の文字位置データに対応する文字位置以降の文字位置を有し、かつ、前記第1の文字位置データに対応する文字位置と所定の位置関係を有する文字位置を有する第2の文字について、第2の文字位置データを取得する工程と
    を備えることを特徴とする検索検索システムの制御方法。
  6. コンピュータに請求項4又は5に記載の制御方法を実行させることを特徴とするプログラム。
JP2002100490A 2001-04-02 2002-04-02 インデックス作成装置、検索システム、及び制御方法 Expired - Fee Related JP3728264B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CNB011119993A CN1326073C (zh) 2001-04-02 2001-04-02 用于建立计算机文字信息的索引和进行检索的方法和系统
CN01111999.3 2001-04-02

Publications (2)

Publication Number Publication Date
JP2003006231A JP2003006231A (ja) 2003-01-10
JP3728264B2 true JP3728264B2 (ja) 2005-12-21

Family

ID=4659179

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002100490A Expired - Fee Related JP3728264B2 (ja) 2001-04-02 2002-04-02 インデックス作成装置、検索システム、及び制御方法

Country Status (2)

Country Link
JP (1) JP3728264B2 (ja)
CN (1) CN1326073C (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9009655B2 (en) 2008-09-28 2015-04-14 KOUSOKUYA, Inc. Code string search apparatus, search method, and program
CN102567421B (zh) * 2010-12-27 2014-04-02 北大方正集团有限公司 文档检索方法和装置
JP6028392B2 (ja) * 2012-05-24 2016-11-16 富士通株式会社 生成プログラム、生成方法、生成装置、検索プログラム、検索方法および検索装置
CN111651580B (zh) * 2020-06-04 2024-05-03 天启黑马信息科技(北京)有限公司 一种用于文献检索的方法与设备
CN112650893A (zh) * 2020-12-18 2021-04-13 浙江诺诺网络科技有限公司 一种字符串检索方法、系统、设备及计算机可读存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3333549B2 (ja) * 1992-03-24 2002-10-15 株式会社リコー 文書検索方式
FR2762418B1 (fr) * 1997-04-17 1999-06-11 Alsthom Cge Alcatel Procede de gestion d'une memoire partagee

Also Published As

Publication number Publication date
CN1378157A (zh) 2002-11-06
JP2003006231A (ja) 2003-01-10
CN1326073C (zh) 2007-07-11

Similar Documents

Publication Publication Date Title
US5721899A (en) Retrieval apparatus using compressed trie node and retrieval method thereof
JP3234104B2 (ja) 圧縮データをサーチする方法及びシステム
US6212525B1 (en) Hash-based system and method with primary and secondary hash functions for rapidly identifying the existence and location of an item in a file
US5099426A (en) Method for use of morphological information to cross reference keywords used for information retrieval
CN102142038B (zh) 用于记号空间资料库的多级查询处理系统与方法
JP3889762B2 (ja) データ圧縮方法、プログラム及び装置
US20020073068A1 (en) System and method for rapidly identifying the existence and location of an item in a file
US20020165707A1 (en) Methods and apparatus for storing and processing natural language text data as a sequence of fixed length integers
JPH08508123A (ja) 言語認識照合システム
JP2002520712A (ja) データ検索システムと方法およびサーチ・エンジンにおけるその使用
EP0764305A1 (en) System and method for portable document indexing using n-gram word decomposition
JPH11282876A (ja) 文書検索装置
JPH05174064A (ja) 文書検索方法及び装置
US9600578B1 (en) Inverted index and inverted list process for storing and retrieving information
JPH09245043A (ja) 情報検索装置
JP3258063B2 (ja) データベース検索システム及び方法
US20030023584A1 (en) Universal information base system
JP3728264B2 (ja) インデックス作成装置、検索システム、及び制御方法
JP3151730B2 (ja) データベース検索システム
US6469643B1 (en) Information processing system
Jung et al. A dynamic construction algorithm for the Compact Patricia trie using the hierarchical structure
CN117235291B (zh) 基于静态索引表的全文检索方法及装置
CN117290523B (zh) 基于动态索引表的全文检索方法及装置
JP3259781B2 (ja) データベース検索システムおよびデータベース検索方法
KR100434718B1 (ko) 문서 색인 시스템 및 그 방법

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050228

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050502

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20050909

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050930

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091007

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091007

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101007

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101007

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111007

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111007

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121007

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131007

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees