JP3459053B2 - 文書検索方法および装置 - Google Patents

文書検索方法および装置

Info

Publication number
JP3459053B2
JP3459053B2 JP01967395A JP1967395A JP3459053B2 JP 3459053 B2 JP3459053 B2 JP 3459053B2 JP 01967395 A JP01967395 A JP 01967395A JP 1967395 A JP1967395 A JP 1967395A JP 3459053 B2 JP3459053 B2 JP 3459053B2
Authority
JP
Japan
Prior art keywords
index
character
character string
position information
search
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
JP01967395A
Other languages
English (en)
Other versions
JPH08194718A (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP01967395A priority Critical patent/JP3459053B2/ja
Publication of JPH08194718A publication Critical patent/JPH08194718A/ja
Application granted granted Critical
Publication of JP3459053B2 publication Critical patent/JP3459053B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、新聞記事や特許明細書
のように日々増加していく大規模な文書データベースか
ら、所望の文書を探索する文書検索に係わり、特に文書
の全文を対象として、指定した文字列の存在を探索する
フルテキストサーチのための文書検索方法および装置に
関する。
【0002】
【従来の技術】従来より、文書を登録時に文字コード化
したテキストとして直接計算機に入力してデータベース
化し、検索時にテキストデータベース内の全てのテキス
トの内容を読んで、指定された検索文字列(以下、検索
タームと呼ぶ)が含まれる文書を探し出すフルテキスト
サーチ方式を用いた文書検索システムが提案されてい
る。このフルテキストサーチ方式については、“全文検
索の技術動向とシステム事例”(菊地芳秀他著、情報処
理学会研究報告92−FI−25、pp.1−8)に具
体的に記載されている。これを公知例1と呼ぶ。この方
式は、テキストデータベースを構成する全ての文書につ
いてテキスト全体を先頭から1文字ずつ走査して、指定
された検索タームがその中に出現するか否かを調べるこ
とが特徴である。こうすることにより、どのような検索
タームが指定されても、その検索タームが含まれる文書
を必ず探し出すことが可能となる。しかし、このフルテ
キストサーチ方式は、テキストファイル全体を先頭から
逐一走査するために検索処理に時間が掛かり、大規模な
文書データベースの検索に適用できないという問題があ
った。
【0003】この処理時間の問題に対する解決方法が、
「特開昭64−35627号」(以下、公知例2と呼
ぶ)に開示されている。本公知例では、文書の登録時
に、データベースへ登録する文書のテキストから文字連
鎖と呼ばれる特定数の文字が連続する文字列とその文字
連鎖のテキストにおける出現位置を示す情報をインデッ
クスとして磁気ディスク装置に格納しておく。検索時に
は検索ターム中に存在する文字連鎖を抽出し、これらに
対応するインデックスを上記磁気ディスク装置から読み
込み、インデックス中の文字連鎖の位置情報を比較し、
抽出した文字連鎖の検索ターム中の位置関係とインデッ
クス中の文字連鎖の位置情報の関係が等しいかを判定
(以下、隣接条件判定と呼ぶ)することによって、指定
された検索タームが出現する文書を高速に探し出す方式
が提案されている。
【0004】以下、この公知例2について図2を用いて
具体的にその内容を説明する。本公知例では特定文字数
を3に想定している。まず、文書の登録時にデータベー
スに登録するテキスト201がインデックス作成部20
2に読み込まれ、文字連鎖インデックス200が作成さ
れる。この文字連鎖インデックス200には、テキスト
201に出現する全ての3文字の文字連鎖とその文字連
鎖のテキスト201における出現位置を示すポインタが
格納される。例えば、本図に示すテキスト201では、
“abc”という文字連鎖は、テキスト201でポイン
タpt1、pt2、・・・として示される位置に現われ
るので、文字連鎖インデックス200には文字連鎖“a
bc”とこれに対応した形でポインタpt1、pt2、
・・・が格納される。検索時には、まず、検索タームが
文字連鎖抽出部203に入力され、検索ターム中に存在
する全ての3文字の文字連鎖とその文字連鎖の検索ター
ム中における出現位置を示す番号として文字連鎖位置が
生成される。次に、生成された文字連鎖とこれに対応す
る文字連鎖位置がインデックス検索部204に入力され
る。インデックス検索部204では、検索タームから抽
出された文字連鎖に対応するインデックスが文字連鎖イ
ンデックス200から読み込まれ、これらのインデック
スの間でポインタによって示される文字位置が隣接して
いるものが抽出され検索結果として出力される。例え
ば、検索タームとして“abcd”が入力された場合に
は、まず、文字連鎖抽出部203において、検索ターム
“abcd”から〈文字連鎖“abc”、文字連鎖位置
“0”〉と〈文字連鎖“bcd”、文字連鎖位置
“1”〉が抽出される。ここで、文字連鎖位置“0”は
検索タームの先頭、文字連鎖位置“1”はその次の文字
位置を示している。次に、インデックス検索部204に
おいて、文字連鎖インデックス200から文字連鎖“a
bc”および“bcd”に対応するインデックスが読み
込まれる。これらのインデックスにおける位置ポインタ
が文字連鎖位置“0”と文字連鎖位置“1”のようにそ
の位置関係の連続するものが、すなわち隣接するものが
抽出され検索結果として出力される。本図では、文字連
鎖“abc”のポインタpt1と文字連鎖“bcd”の
ポインタpt3が示す位置が隣接するため、文字連鎖
“abcd”が文字列として存在することが分かり、テ
キスト中に検索ターム“abcd”が出現することが示
される。
【0005】しかし、この方式では、特定文字数を1と
すると、すなわち単一文字を文字連鎖とすると、単一文
字は全文書中における出現頻度が高いため、一つの文字
連鎖に対する位置情報が増え、個々のインデックスの容
量が大きくなる。このためインデックスの読み込みに時
間が掛かるばかりでなく、位置情報による隣接条件判定
の回数も増えるため、検索に時間が掛かるという問題が
生じる。そこで検索を高速にするためには特定文字数を
大きくする必要があるが、特定文字数を大きくすると、
すなわち文字連鎖の連鎖数を増やすと文字連鎖の種類が
文字種のべき乗に比例して増えてくる。公知例2のよう
なインデックス型の文書検索方法では、“情報検索”
(中原啓一著、電子通信情報学会出版、1974)に記
載されているようにツリーなどの木構造で文字列を管理
する必要があり、文字列の種類が増えるにつれ木構造の
ノード数が増加するため、木構造全体の規模が大きくな
ってしまうという問題が生じ、実用的でない。
【0006】上述した文字列を管理する木構造として、
他にトライと呼ばれるものがある。このトライは“キー
探索技法−IV トライとその応用”(青江順一著、情
報処理Vol.34、No.2、1993、pp.24
4−251)で具体的に述べられている。トライとは検
索対象となる文字列すなわちキーワードの集合(以下、
キー集合と呼ぶ)における各キーワード(以下、キーと
呼ぶ)に共通な前方部分文字列を共通の節で括り出して
作られる木構造である。このトライは検索の際にも用い
られ、検索ターム中の文字列でキーを辿ってトライを探
索することにより、その文字列に対応するインデックス
を指し示すポインタを獲得することができる。トライの
探索に掛かる時間はキーの数に依存しないため、大規模
なデータベースに適用した場合でも、高速にキーワード
を探索できるという特徴がある。図3にキー集合{ba
by、badge、badger、jar}に対応する
トライを示す。このトライでは節1(300)から節2
(301)へ枝ラベルb(302)が定義され、二重丸
で示すキーの末尾の節にはそのキーに対するインデック
スへのポインタが設定されている。例えば、検索ターム
として“baby”が指定された場合には、文字列“b
aby”で本図のトライを探索することにより、節5
(303)に設定されているポインタPt1が得られ、
このポインタPt1が示す先に検索ターム“baby”
に対応するインデックスが格納されていることになる。
公知例2において、このトライを用いて文字連鎖を管理
する際、個々のインデックスの容量を小さくし、検索を
高速にするために特定文字数を大きくすると、文字連鎖
の種類が増え、トライの節が増えるため、トライ全体の
規模が大きくなってしまうという問題がある。
【0007】この問題を解決するために「特開平2−1
86476号」(以下、公知例3と呼ぶ)で、文書中の
文字列の出現頻度(公知例3では、出現数と呼んでい
る)に応じてディスクリプタテーブル(インデックスと
同じ意味を表わし、公知例3では、インデックスがディ
スクリプタテーブルと呼ばれている)を作成することに
より、出現頻度の高い文字列については出現頻度が少な
くなるまで文字列の長さを増やしてインデックス(ディ
スクリプタテーブル)の容量を小さくして検索レスポン
スの低下を防ぎ、かつ出現頻度の低い文字列については
文字列の長さを増やさずにディスクリプタテーブルを作
成することにより、ディスクリプタテーブルの容量や文
字列管理用の木構造(公知例3では、文字インデックス
テーブルと呼ばれている)の規模を抑える方式が提案さ
れている。本公知例では、文字列管理用のテーブルであ
る文字インデックステーブルに文書中に出現する文字と
その出現頻度が格納されている。この出現頻度が所定値
以上の場合には、文字インデックステーブルが分割さ
れ、その文字に続く次の文字とその文字を元の文字に追
加した文字列の出現頻度が別の文字インデックステーブ
ルに格納される。そして、この文字インデックステーブ
ルが元の文字インデックステーブルの下位に位置付けら
れて、階層的にインデックスが構成されるようにしてい
る。すなわち、出現頻度の高い文字列については文字列
の長さを増やして出現頻度を小さくしていくことにな
る。このように出現頻度の高い文字列については文字列
の長さを増やして階層構造を深くしていき、出現頻度が
所定値より小さくなったところで、その文字列のディス
クリプタテーブルが階層構造の末端に位置付けられるよ
うに作成される。こうすることにより、出現頻度が小さ
くなった文字列に対してのみディスクリプタテーブルを
作成することになるため、一つのディスクリプタテーブ
ルの容量を抑えることができるようになる。これらのテ
ーブルは登録時に予め作成しておき、検索時には、階層
構造をなす文字インデックステーブルを探索し、該当す
るディスクリプタテーブルを参照して、検索タームを構
成する文字列の隣接条件判定を行うことにより、検索タ
ームが出現するか否かを調べる。この方式では、出現頻
度が小さいためディスクリプタテーブルの読み込みや隣
接条件判定に時間が掛からない文字列については、直接
その文字列のディスクリプタテーブルを作成するととも
に、出現頻度の高い文字列については、文字列の長さを
1文字ずつ増やして出現頻度が小さくなったところでそ
の文字列のディスクリプタテーブルを作成することによ
り、検索レスポンスの低下を防ぎながら、文字列の種類
の増加を抑える工夫を行っている。その結果、文字列管
理用テーブルである文字インデックステーブルの規模と
ともに文字列のインデックスであるディスクリプタテー
ブルの容量を小さくすることが可能となる。
【0008】上記テーブルの構成について、図4に具体
例を示し説明する。文字インデックステーブルには文書
中に出現する文字とその出現頻度が格納されている。こ
の出現頻度が所定値以上の場合には、その文字に続く次
の文字とその文字を元の文字に追加した文字列の出現頻
度が格納されている次文字目用の文字インデックステー
ブルが元の文字インデックステーブルの下位に設けられ
る。次文字目用の文字インデックステーブルの位置付け
にはポインタが用いられており、次文字目用の文字イン
デックステーブルを示すポインタが元の文字インデック
ステーブルに格納されている。本図に示す1文字目用の
文字インデックステーブル400では、文字“A”の出
現頻度NAが所定値(ここでは1、024とする)以上
であるので、文字“A”に続く2文字目の文字とその文
字を文字“A”に追加した文字列の出現頻度が格納され
ている2文字目用の文字インデックステーブル401が
その下位に位置付けられている。2文字目用の文字イン
デックステーブル401において、出現頻度NAAは1
文字目が“A”でかつ2文字目が“A”、すなわち文字
列“AA”の出現頻度のことである。このような階層処
理を繰り返し、出現頻度が所定値より小さくなったとこ
ろでその文字列のディスクリプタテーブルが階層構造の
末端に設けられる。本図に示す1文字目用の文字インデ
ックステーブル400に格納されている文字“X”は出
現頻度NXが所定値(1、024)未満であるので、こ
の文字インデックステーブル400の下位にディスクリ
プタテーブル402が設けられる。本例では、ディスク
リプタテーブル402に文字列が「第何項目の第何パラ
グラフ目の何文字目に出現する」といった情報が格納さ
れている。ここで項目とは、例えば、登録文書の文書番
号である。階層レベルの最大値は予め定められており、
最下位層の文字インデックステーブルにおいて出現頻度
が所定値よりも小さくならない場合でも、これ以上の階
層処理は行わずに、その文字列のディスクリプタテーブ
ルが最下位層の文字インデックステーブルの下位に設け
られる。
【0009】このように階層構造をなす文字インデック
ステーブルを用いて文字列を管理することにより、出現
頻度が高いためにインデックスとしてのディスクリプタ
テーブルが大きくなりその読み込みや隣接条件判定に時
間が掛かる文字列については、出現頻度が少なくなるま
で文字列を長くし、ディスクリプタテーブルの容量を小
さくする。その結果、読み込みや隣接条件判定を高速化
することができるため、検索レスポンスの低下を防ぐこ
とが可能となる。また、出現頻度が少ない文字列につい
ては文字列の長さを増やさずに直接ディスクリプタテー
ブルを作成する。その結果、文字列の種類を増やさずに
済ませることができるために、文字列を管理し階層構造
をなす文字インデックステーブルの規模を抑えることが
可能となる。
【0010】
【発明が解決しようとする課題】以上説明した公知例3
は、検索レスポンスの低下を防ぎながら、文字列の種類
の増加を抑え、文字列を管理するテーブルの規模を抑え
ることができるが、新聞記事や特許明細書のように日々
件数が増大していく大規模な文書データベースに対して
は、以下に示す問題を残している。
【0011】(1)文書の追加登録のないデータベース
に対しては有効であるが、追加登録が頻繁に発生するよ
うなデータベースでは登録に時間が掛かる。文書の追加
登録が行われると、それに伴い文字列の出現頻度も増加
するため、それまで出現頻度が所定値より小さくディス
クリプタテーブルを直接参照することができた文字列で
も、出現頻度が所定値以上になり、文字列数を1文字増
やして出現頻度を所定値より小さくしなければならない
場合がある。この際、1文字増やした文字列に対応する
文字インデックステーブルやディスクリプタテーブルを
新たに作成しなければならなくなる。しかし、既に登録
されているテキスト中における1文字増やした文字列の
出現頻度や出現位置などの情報はこの時点でのデータベ
ース中にまったく記録されていないため、既登録のテキ
スト全件に関して再度、1文字増やした新規の文字列の
出現状況を調べ直して、文字インデックステーブルやデ
ィスクリプタテーブルを作成し直す必要がある。このた
め追加登録が生じる度に長大な登録時間が掛かってしま
う問題がある。
【0012】(2)データベース中での出現頻度が高
く、しかも予め定められた階層レベルの最大値よりも長
さが短い検索タームが指定された場合には、検索に時間
が掛かってしまう。公知例3では、文字列の出現頻度が
所定値以下になるか、あるいは最下位層にたどりつかな
ければ、文字列のテキストにおける出現位置を格納した
ディスクリプタテーブルが作成されない。そのため、デ
ータベース中での出現頻度が高く、しかも予め定められ
た階層レベルの最大値よりも長さが短い検索タームが指
定された場合には、関連する文字インデックステーブル
を辿って、その検索タームを構成する文字列とインデッ
クステーブル中の前方部分が一致する文字列を全て探索
しなければならないため、検索に長時間を要してしま
う。例えば、検索タームとして“文字”を指定したとす
る。“文字”という文字列はデータベース中での出現頻
度が高いため、“文字”に続く3文字目以降の文字イン
デックステーブルが作成されていたとすると、“文字
列”、“文字種”、“文字認識”、“文字位置”、“文
字情報”、・・・など“文字”と前方部分が一致する文
字列のインデックスを全て読み込み、それらを総合しな
ければ、求める“文字”の出現位置を得ることができな
い。そのため、“文字”のようにデータベース中での出
現頻度が高く、しかも予め定められた階層レベルの最大
値よりも長さが短い検索タームが指定された場合には、
検索に長時間が掛かるという問題がある。
【0013】(3)文字数が多く、かつ出現頻度が高い
文字列で構成される検索タームが入力された場合には、
検索に時間が掛かる。階層レベルの最大値が予め定めら
れているため、出現頻度が所定値より小さくならなくと
も最大レベルに到達した場合には、それ以上文字列数を
増やして出現頻度を減らすことができない。そのため、
最大レベルまで文字列数を増やしても出現頻度が所定値
より小さくならない文字列に関しては、対応するディス
クリプタテーブルの容量が大きくなる。このため、ディ
スクリプタテーブルの読み出しや隣接条件判定に時間が
掛かり、結果として検索に時間が掛かってしまうという
問題がある。
【0014】こうした問題に対し、本発明では以下の課
題を解決することを目的とする。すなわち、新聞記事や
特許明細書のように日々件数が増大していく大規模な文
書データベースに対して、 (1)文書の追加登録に際しても時間が掛からない登録
を実現する。 (2)データベース中での出現頻度が高く、しかも予め
定められた階層レベルの最大値よりも長さが短い検索タ
ームが指定された場合でも、高速な検索を実現する。 (3)文字数が多く、かつ出現頻度が高い文字列で構成
される検索タームが入力された場合でも、高速な検索を
実現する。
【0015】
【課題を解決するための手段】上記課題を解決するため
に、本発明は、文書情報を文字コードデータとして蓄積
したテキストデータベースを対象として、対象テキスト
データから所定の部分文字列と、該部分文字列の対象テ
キストデータにおける文字位置情報及びテキストデータ
指定情報を含む位置情報を抽出し、該位置情報をインデ
ックスとして記憶し、前記部分文字列と前記インデック
スの記憶位置を管理するための文字列テーブルを更新す
るインデックス作成登録ステップと、検索タームから所
定の部分文字列を抽出し、前記文字列テーブルを参照し
て該当インデックスを読み出し、該検索タームにおける
部分文字列と同じ位置関係を持つ位置情報を抽出するイ
ンデックス検索ステップを有する文書検索方法におい
て、テキストデータから作成した部分文字列に対応する
インデックスのサイズと予め定められた基準インデック
スサイズとを比較するインデックスサイズ比較ステップ
と、該インデックスのサイズが該基準インデックスサイ
ズより大きい場合には、該インデックスに対応する部分
文字列に1文字を追加した拡張部分文字列と該拡張部分
文字列に対応するインデックスを作成する文字列インク
リメントステップを有するようにしている。また、前記
文字列インクリメントステップは、前記文字列テーブル
を参照し前記基準インデックスサイズより大きいインデ
ックスサイズのインデックスに対応する部分文字列の後
に続く後続文字を前記文字列テーブルおいて探索し、該
後続文字に対応するインデックスを抽出するステップ
と、該部分文字列と該後続文字に対応する各インデック
スの間で位置情報を比較し、文字位置が隣接する条件と
テキストデータ指定情報が一致する条件を満たす前記部
分文字列の位置情報を抽出し、該位置情報中の前記文字
位置が隣接する条件を満たす文字位置情報とテキストデ
ータ指定情報を含む位置情報を作成し、該作成した位置
情報を前記拡張部分文字列に対するインデックスとして
登録するステップを有するようにしている。さらに、前
記インデックス作成登録ステップは、前記部分文字列の
直前および直後に現われる文字を前記対象テキストデー
タから抽出し、該直前と直後に現われる文字を夫々前方
文字と後方文字として前記位置情報に含め、前記文字列
インクリメントステップは、前記基準インデックスサイ
ズより大きいインデックスに対応する部分文字列に該部
分文字列の位置情報中の後方文字を追加して拡張部分文
字列を作成するステップと、前記部分文字列の位置情報
中の文字位置情報とテキストデータ指定情報と前方文字
と、前記部分文字列の後方文字を前記文字列テーブルお
いて探索し該後方文字に対応するインデックスを抽出
し、該後方文字と前記部分文字列に対応する各インデッ
クスの間で位置情報を比較し、文字位置が隣接する条件
とテキストデータ指定情報が一致する条件を満たす前記
後方文字の位置情報を抽出し、該抽出した位置情報中の
後方文字とを前記拡張部分文字列の位置情報とし、該位
置情報を該拡張部分文字列に対するインデックスとして
格納するステップを有するようにしている。
【0016】
【作用】上記手段により、本発明では、単一文字から始
めて、基準インデックスサイズを超えた全ての文字ある
いは文字列についてインクリメント処理を行って新たに
インデックスを追加生成していくため、インクリメント
結果文字列より長さが短い文字列についても必ずインデ
ックスが作成されていることになる。その結果、出現頻
度が高く、かつ文字長が短い検索タームが指定された場
合でも、一つのインデックスの読み出しだけで済むた
め、高速な検索を実現することが可能となる。また、文
字列インクリメント処理は、基準インデックス超過文字
列に対して再帰的に行われるため、どんなに長くなった
基準インデックス超過文字列に対しても文字列インクリ
メント処理が施されることになる。つまり、出現頻度が
高い文字列であれば文字列がどんなに長くとも基準イン
デックスサイズ以下のインデックス容量になるまで、文
字列インクリメント処理が加えられることになる。その
結果、検索時には常に基準インデックスより小さいサイ
ズのインデックスの読み込み処理と、これらのインデッ
クス間の隣接条件判定で処理が済むため、検索タームを
構成する文字列の長短および出現頻度によらず、常に、
高速な検索が実現されることになる。したがって、新聞
記事や特許明細書のように日々件数が増大していく大規
模な文書データベースに対しても、追加登録時に既登録
文書の再登録を行う必要がないため、時間の掛からない
登録が実現できる。また、単一文字から始めて、基準イ
ンデックスを超えた全ての文字あるいは文字列について
インクリメント処理を施し新たにインデックスを追加生
成していくため、インクリメント結果文字列より長さが
短い文字列についても必ずインデックスが作成されてい
ることになるため、文字列長が短く、かつ出現頻度の高
い検索タームが指定された場合でも、一つのインデック
スの読み出しだけで済み高速な検索が実現できる。さら
に、出現頻度が高い文字列であれば、文字列長にかかわ
らず、文字列インクリメント処理が再帰的に施され、必
ず基準インデックスサイズより容量の小さいインデック
スが作成されることになるため、文字列長が長く出現頻
度が高い検索タームが指定された場合でも常に高速な検
索が実現できることになる。
【0017】
【実施例】以下、本発明を適用した第一の実施例の文書
検索システムについて図1を用いて説明する。本発明を
適用した文書検索システムは、ディスプレイ100、キ
ーボード101、中央演算装置(CPU)102、テキ
スト103およびインデックス104を格納する二次記
憶装置の一つである磁気ディスク装置105、フロッピ
ディスクドライバ(FDD)106、主メモり109か
ら構成される。バス108にはCPU102、磁気ディ
スク装置105、FDD106および主メモり109が
接続されている。フロッピディスク107に格納されて
いる情報は、FDD106によりアクセスされる。
【0018】主メモリ109には、文書登録制御プログ
ラム110、テキスト登録プログラム111、インデッ
クス作成登録プログラム112、検索制御プログラム1
17、検索条件式解析プログラム118、位置情報検索
型インデックス検索プログラム119およびトライ格納
テーブル120が格納されるとともにワークエリア12
1が確保される。インデックス作成登録プログラム11
2はトライ初期化プログラム113、位置情報検索型文
字列抽出プログラム114、位置情報検索型インデック
ス作成プログラム115および位置情報検索型インクリ
メント処理プログラム116で構成される。文書登録制
御プログラム110および検索制御プログラム117は
ユーザによるキーボード101からの指示に応じてCP
U102で実行される。
【0019】以下、本実施例における登録処理と検索処
理について説明する。登録の際は図7のPAD(Pro
blem Analysis Diagram)図に示
すように、ステップ700でキーボード101からコマ
ンドを入力し、文書登録制御プログラム110を起動す
る。次に、ステップ701で上記文書登録制御プログラ
ム110はテキスト登録プログラム111を起動して、
FDD106に挿入されたフロッピディスク107から
登録文書のテキストデータをワークエリア121に読み
込み、これをテキスト103として磁気ディスク装置1
05へ格納する。テキストデータはフロッピディスクを
用いて入力するだけに限らず、通信回線やCD−ROM
装置(図1には示していない)等を用いて他の装置から
入力するような構成をとることも可能である。最後に、
ステップ702で文書登録制御プログラム110は、イ
ンデックス作成登録プログラム112を起動して、テキ
スト103から所定の文字列とテキスト103における
その位置情報を抽出し、インデックス104として磁気
ディスク装置105へ格納する。
【0020】インデックス作成登録プログラム112
は、図8に示すように、まずステップ800でトライ初
期化プログラム113を起動し、データベースにテキス
ト103を最初に登録する前に、トライの初期設定を行
う。次に、ステップ801で位置情報検索型文字列抽出
プログラム114を起動し、磁気ディスク装置105に
格納されたテキスト103をワークエリア121に読み
込む。そして、このテキスト103から所定の文字列と
テキスト103におけるその文字位置を全て抽出する。
次に、ステップ802で位置情報検索型インデックス作
成プログラム115を起動し、前記位置情報検索型文字
列抽出プログラム114によってテキスト103から抽
出された文字列とテキスト103におけるその文字位置
(文字位置情報)とテキスト番号(テキスト指定情報)
からなる位置情報をインデックス104として磁気ディ
スク装置105へ格納する。最後に、ステップ803で
位置情報検索型インクリメント処理プログラム116を
起動し、位置情報検索型インデックス作成プログラム1
15によって作成されたインデックス104の中で予め
定められた基準インデックスサイズより大きくなったイ
ンデックスに対応する文字列(基準インデックス超過文
字列)に対して後述する文字列インクリメント処理を行
う。
【0021】検索の際には、検索制御プログラム117
がキーボード101から入力された検索条件式を検索条
件式解析プログラム118へ渡す。そして、検索条件式
解析プログラム118の処理が終了した後、検索制御プ
ログラム117は位置情報検索型インデックス検索プロ
グラム119を起動する。この検索制御プログラム11
7による検索処理について、図9を用いて以下に説明す
る。検索制御プログラム117は、まずステップ900
で検索条件式解析プログラム118を起動し、キーボー
ド101から入力された検索条件式を検索条件式解析プ
ログラム118へ渡す。そして、本プログラム118
は、前記検索条件式から検索タームを抽出する。次に、
ステップ901で位置情報検索型インデックス検索プロ
グラム119を起動し、上記検索条件式解析プログラム
118によって抽出された検索タームのテキスト103
における出現位置を求める。次に、ステップ902でキ
ーボード101から入力された検索条件式の中の検索タ
ーム数を判定し、検索タームが検索条件式中に一つしか
存在しない場合には、ステップ901で位置情報検索型
インデックス検索プログラム119によって求められた
テキスト103における検索タームの位置情報を検索結
果としてステップ904で出力する。もし、検索条件式
の中に複数の検索タームが存在し、それら複数の検索タ
ーム間の論理的な関係、あるいはテキスト103中での
位置関係が検索条件式中に指定されている場合には、ス
テップ903で位置情報検索型インデックス検索プログ
ラム119によって求められた複数の位置情報が検索条
件式に指定されている検索条件と合致するか否かを判定
し、ステップ904でその結果を検索結果として出力す
る。
【0022】ここで、複数の検索ターム間の論理的な関
係とは、例えば、 検索式「“文書”[AND]“検索”」 のように、「“文書”と“検索”の両方の文字列が現れ
る文書を探せ」という意味を持つAND条件や、 検索式「“文書”[OR]“検索”」 のように、「“文書”か“検索”のどちらかの文字列が
現れる文書を探せ」という意味を持つOR条件などであ
る。このような複数の検索ターム間の論理的な関係が検
索条件式中に指定されている場合には、前記位置情報検
索型インデックス検索プログラム119によって得られ
た複数の検索タームに対応する各位置情報で論理積や論
理和をとり、その結果を検索結果としてステップ904
で出力する。また、複数の検索ターム間のテキスト10
3中での位置関係とは、例えば、 検索式「“文書”[S]“検索”」 のように、「“文書”と“検索”が同一の文(センテン
ス)に共起(同時に出現)する文書を探せ」という意味
を持つ文脈条件や、 検索式「“文書”[2C]“検索”」 のように、「“文書”と“検索”が2文字以内に近接し
て現れる文書を探せ」という意味を持つ近傍条件、ある
いは 検索式「“文書”[A]“検索”」 のように、「“文書”と“検索”が隣接して現れる文書
を探せ」という意味を持つ隣接条件などである。このよ
うに複数の検索タームのテキスト103中での位置関係
が検索条件式中に指定されている場合には、前記位置情
報検索型インデックス検索プログラム119によって得
られた複数の検索タームの位置情報のうちで検索条件式
に合致するものを抽出し、その結果を検索結果としてス
テップ904で出力する。以上が本発明の文書検索方法
を適用した第一の実施例の概略である。
【0023】以下、図8に示した本実施例におけるイン
デックス作成登録の処理手順について、図10〜図19
を用いて詳細に説明する。まず、ステップ800におけ
るトライ初期化プログラム113の処理の詳細について
図10を用いて説明する。トライ初期化プログラム11
3はインデックス作成登録プログラム112によって起
動される。ここでは、まずステップ1000で、既にト
ライが作成され文字列テーブルであるトライ格納テーブ
ル120が設定されているかどうかを判定する。そし
て、未だ、トライが作成されていないときのみ、ステッ
プ1001においてデータベースで用いられる全ての単
一文字をキーとしてトライを作成し、トライ格納テーブ
ル120を設定する。次に、ステップ1002で全ての
単一文字のポインタの値として“0”を設定する。トラ
イは図3に示すものを用いる。具体的には図11に示す
ような形式のトライ格納テーブルとして主メモリ109
に設定する。
【0024】図11は図3に示したトライに対するトラ
イ格納テーブルの構成を示したものである。節番号に対
する枝ラベル位置に格納されている番号は、上記節番号
から上記枝ラベルを通って辿りつく次の節の番号を表わ
す。また、節番号に対する枝ラベル位置に“0”が格納
されている場合には、上記節番号に対して上記枝ラベル
が定義されていないことを表わす。例えば、図3では節
1と節2の間に定義された枝ラベルbに対応して、図1
1で節番号1に対する枝ラベルbの位置に節番号2を格
納する。図3においてキーの末尾に設定されているイン
デックスへのポインタは、図11のトライ格納テーブル
においてキーの末尾の節番号に対応して格納する。イン
デックスが設定されていない節番号の該当領域にはポイ
ンタの値として“0”を格納する。節番号5に対応して
格納されているポインタPt1はキー“baby”のイ
ンデックスを指し示し、節番号8に対応して格納されて
いるポインタPt2、節番号9に対応して格納されてい
るポインタPt3および節番号12に対応して格納され
ているポインタPt4はそれぞれ、キー“badg
e”、キー“badger”およびキー“jar”のイ
ンデックスを指し示す。データベースで用いられる全て
の単一文字をキーとして作成したトライを図5に示した
が、このトライに対応するトライ格納テーブルの構造は
図12に示すとおりである。
【0025】次に、図8に示したステップ801におけ
る位置情報検索型文字列抽出プログラム114の処理の
詳細について図13を用いて説明する。位置情報検索型
文字列抽出プログラム114は、まずステップ1300
でテキスト103をワークエリア121に読み込む。次
に、ステップ1301でワークエリア121に格納され
たテキスト103から全ての連続する2文字の文字列
と、テキスト103中に出現する文字列の中でトライを
構成するキー集合に存在するものを抽出し、テキスト1
03におけるそれらの文字位置とともにワークエリア1
21に格納する。図14に、テキスト1“あいまい検索
・・・”を登録する場合の文字列の抽出例を示す。この
段階では、まだテキストの登録はされておらず、トライ
は図5のように単一文字のみをキーとして作成されてい
るものとする。まず、テキスト1から連続する2文字の
文字列として“あい〈1、1〉、いま〈1、2〉、まい
〈1、3〉、い検〈1、4〉、検索〈1、5〉、・・
・”を抽出する。ここで、例えば、“いま〈1、2〉”
は「“いま”はテキスト1の2文字目に出現する」こと
を意味する。他も同様である。次に、トライを構成する
キー集合中に存在する文字列を抽出することになるが、
今トライには単一文字しかキーとして存在しないので、
“あ〈1、1〉、い〈1、2〉、ま〈1、3〉、い
〈1、4〉、検〈1、5〉、索〈1、6〉、・・・”が
抽出される。
【0026】次に、図8に示したステップ802におけ
る位置情報検索型インデックス作成プログラム115の
処理の詳細について図15を用いて説明する。まず、ス
テップ1500では位置情報検索型文字列抽出プログラ
ム114によって抽出された文字列のうちで単一文字の
個数分だけ、ステップ1501およびステップ1502
の一連の処理を繰り返す。ステップ1501では位置情
報検索型文字列抽出プログラム114によって抽出され
た単一文字に対して設定されているインデックスへのポ
インタの値が“0”であるか否かを判定する。ここで、
単一文字に設定されているポインタの値が“0”であれ
ば、ステップ1502で磁気ディスク装置105内にこ
の単一文字に対するインデックスの格納領域を確保し、
そのアドレスをポインタの値として設定する。図14の
例では、単一文字として、“あ、い、ま、い、検、索、
・・・”が抽出されている。この段階のトライでは、図
12に示したように全ての単一文字のポインタの値が
“0”に設定されているため、抽出された全ての単一文
字“あ、い、ま、い、検、索、・・・”に対するインデ
ックスの格納領域を磁気ディスク装置105内に確保
し、そのインデックスのアドレスをポインタの値として
設定する。図12のトライ格納テーブルにインデックス
へのポインタを設定した状況を図16に示す。本図で
は、“あ”のインデックスへのポインタとして節番号2
に対してPt1が、“い”のインデックスへのポインタ
として節番号3に対してPt2が設定されている。
【0027】次に、ステップ1503で、位置情報検索
型文字列抽出プログラム114によって抽出された文字
列のうちで2文字の文字列の個数分だけ、ステップ15
04、ステップ1505およびステップ1506の一連
の処理を繰り返す。ステップ1504では位置情報検索
型文字列抽出プログラム114によって抽出された2文
字の文字列がトライを構成するキー集合中に存在するか
否かを判定する。ここで、上記2文字の文字列がトライ
を構成するキー集合中に存在しなければ、ステップ15
05でこの文字列をキーとして該当節番号をトライに追
加する。すなわち、トライ格納テーブル120に該当節
番号を書き込む。そして、ステップ1506でトライに
追加したキーに対応するポインタの値として“0”を設
定する。図14の例では、テキスト1から抽出された2
文字の文字列“あい、いま、まい、い検、検索、・・
・”を図5で示したトライにキーとして追加し、図6に
示すトライを作成する。このトライ情報を図17に示す
形式でトライ格納テーブル120に書き込む。
【0028】次に、ステップ1507では位置情報検索
型文字列抽出プログラム114によって抽出された全て
の文字列の個数分だけ、ステップ1508、ステップ1
509およびステップ1510の一連の処理を繰り返
す。ステップ1508では位置情報検索型文字列抽出プ
ログラム114によって抽出された文字列を用いて前述
のトライを辿ることによってその文字列と一致するキー
の末尾の節番号を得る。そして、トライ格納テーブル1
20における該当キーの末尾の節番号に対応するポイン
タの値が“0”か否かを調べる。“0”以外の値が格納
されている場合には、このポインタ値が当該キーに対応
するインデックスを指し示すことになる。この場合に
は、ステップ1509でそのポインタが指し示すインデ
ックス104を磁気ディスク装置105からワークエリ
ア121へ読み込む。そして、位置情報検索型文字列抽
出プログラム114によってワークエリア121に格納
されていた文字列のテキスト103における位置情報を
ステップ1510でワークエリア121内のインデック
ス104に追加して書き込み、その後磁気ディスク装置
105に格納する。図14の例では、図6のトライに対
応して図17のトライ格納テーブルが設定されている。
すなわち、単一文字“あ、い、ま、い、検、索、・・
・”にのみインデックスが存在し、そのインデックスを
指し示すポインタPt1、Pt2、Pt18などが設定
されていることがわかる。したがって、単一文字“あ
〈1、1〉、い〈1、2〉、ま〈1、3〉、い〈1、
4〉、検〈1、5〉、索〈1、6〉、・・・”のみをイ
ンデックスに追加して書き込む。このインデックスの内
容を図18に示す。ここで、テキスト番号はテキストに
つけられている固有の番号であり、テキストを指定する
テキスト指定情報となる。、文字位置はそのテキストの
何文字目にその文字列が出現するかを示す文字位置番号
であり、文字位置を指定する文字位置情報となる。ま
た、テキスト番号の直前には、例えば“−1”などの特
定値を持つテキスト区分コードを設定し、他の位置情報
と区別できるようにする。
【0029】最後に、図8に示したステップ803にお
ける位置情報検索型インクリメント処理プログラム11
6の処理の詳細について図19を用いて説明する。ステ
ップ1900では位置情報検索型インデックス作成プロ
グラム115によって作成されたインデックスの個数分
だけ、ステップ1901およびステップ1902の一連
の処理を繰り返す。ステップ1901では位置情報検索
型インデックス作成プログラム115によって作成され
たインデックスの大きさと主メモリ109内に記憶され
ている基準インデックスサイズ(図1には示されていな
い)とを比較する。この基準インデックスサイズは予め
定めておくものであり、使用するデータベースにおける
文字列の出現特性(出現文書数に対する出現頻度の割合
等)や使用するCPUおよび磁気ディスク装置の性能等
を考慮し、実用的な検索時間に収まるようなインデック
スの容量を設定する。基準インデックスサイズより大き
くなったインデックスに対してのみ、ステップ1902
で後述する文字列インクリメント処理を行う。
【0030】この文字列インクリメント処理の内容を図
20を用いて説明する。まず、ステップ2000で基準
インデックスサイズを超えたインデックスに対応する文
字列、すなわち、基準インデックス超過文字列の末尾文
字とキーの先頭部分が一致するものをトライから探索
し、基準インデックス超過文字列の次に続く文字を抽出
する。そして、この文字のインデックスをワークエリア
121に読み込む。次に、ステップ2001で基準イン
デックス超過文字列に対応するインデックスとステップ
2000においてワークエリア121に読み込まれた上
記インデックスの間で位置情報を比較し、相互に隣接す
る位置情報を抽出する。この位置情報はインクリメント
結果文字列の位置情報を表わすことになるため、ステッ
プ2002で本インクリメント結果文字列に対応するイ
ンデックス104として磁気ディスク装置105に格納
する。次に、ステップ2003でインクリメント結果文
字列がトライを構成するキー集合中に存在するか否かを
判定する。ここで、インクリメント結果文字列がトライ
を構成するキー集合中に存在しない場合にのみ、ステッ
プ2004でインクリメント結果文字列をキーとしてト
ライに追加し、このトライ情報をトライ格納テーブルに
書き込む。最後に、ステップ2005でインクリメント
結果文字列と一致するキーの該当箇所にインクリメント
結果文字列に対応するインデックス104を指し示すポ
インタを設定する。
【0031】上述の処理を、図14に示すテキスト1を
登録する際、“い”のインデックスの大きさが基準イン
デックスサイズを超えた場合を例にして説明する。文字
列“い”は1文字なのでこの末尾文字は“い”である。
したがって、この“い”という文字と先頭部分が一致す
るキーを図6に示したトライで探索すると、“いま”と
“い検”であることが分かる。つまり、“い”の次には
“ま”あるいは“検”が続くことが分かる。したがっ
て、“ま”および“検”に対応するインデックス104
をワークエリア121に読み込む。次に、“い”と
“ま”および“い”と“検”のインデックス間で隣接す
る位置情報を抽出し、このデータを用いて“いま”と
“い検”のインデックスを作成する。
【0032】図21にその抽出の様子を示す。テキスト
1の2文字目に出現する“い”とテキスト1の3文字目
に出現する“ま”が隣接しているので、“いま”はテキ
スト1の2文字目に出現していることになる。また、テ
キスト1の4文字目に出現する“い”とテキスト1の5
文字目に出現する“検”が隣接しているので、“い検”
はテキスト1の4文字目に出現していることが分かる。
したがって、“いま〈1、2〉”および“い検〈1、
4〉”が抽出される。そして、“いま”のインデックス
としてテキスト番号“1”、文字位置“2”を、また
“い検”のインデックスとしてテキスト番号“1”、文
字位置“4”をワークエリア121に設定する。そし
て、ワークエリア121に設定されたインデックスを磁
気ディスク装置105に格納する。最後に、上記インク
リメント結果文字列“いま”および“い検”について、
トライの更新処理を行う。ここでは、文字列“いま”お
よび“い検”はともに図6のトライを構成するキー集合
中に既に存在するため、トライへのキーの追加は行わず
に、図17に示したトライ格納テーブルのキーの末尾の
節番号の位置に“いま”および“い検”のインデックス
へのポインタを格納する。図6のトライでは、“いま”
の末尾は節924であり、“い検”の末尾は節925で
ある。そこで、図22に示すように、トライ格納テーブ
ルの節番号924のポインタとして“いま”のインデッ
クスを示すポインタPt504を設定し、節番号925
のポインタとして“い検”のインデックスを示すポイン
タPt505を設定する。以上により、文字列インクリ
メント処理が終了する。この例では単一文字に対する文
字列インクリメント処理について説明したが、2文字以
上の文字列に対してもまったく同様に文字列インクリメ
ント処理を行うことができる。以上が本実施例における
インデックス作成登録の詳細な手順である。
【0033】次に、本実施例におけるインデックス検索
の処理手順について図23、図24および図25を用い
て詳細に説明する。まず、位置情報検索型インデックス
検索プログラム119の処理手順を図23に示す。位置
情報検索型インデックス検索プログラム119は検索制
御プログラム117によって起動される。本プログラム
119では、まず、ステップ2300で検索条件式解析
プログラム118によって抽出された検索タームを、ト
ライを構成するキー集合のうちポインタの値が“0”で
ないキーで分割する。具体的には、検索タームの1文字
目からトライを探索していき、ポインタの値が“0”で
ないキーのうち最長のキーを検索タームから切り出し、
残った文字列に対してさらにこの処理を繰り返すことに
より分割を行う。次に、ステップ2301では、検索タ
ームが分割されたキーの個数分だけステップ2302の
処理を繰り返す。ステップ2302では検索タームが分
割されたキーに設定されているポインタが示すインデッ
クスを磁気ディスク装置105からワークエリア121
に読み込む。最後に、ステップ2303で、ワークエリ
ア121に格納されたインデックス間で検索ターム中の
キーと同じ位置関係にある出現位置情報を抽出する。
【0034】“検索”が検索タームに指定された場合を
例に図24を用いて、この検索手順を具体的に説明す
る。本図に示されたトライの中で二重丸で示されている
節がインデックスへのポインタが設定されている節を表
わす。また、このトライに対応するトライ格納テーブル
は図22に示したものである。まず、検索ターム“検
索”でトライを探索する。しかし、図22のトライ格納
テーブルを見ても分かるように、“検索”の末尾の節9
27のポインタの値は“0”であり、このキーに対して
はインデックスが存在しないことが分かる。したがっ
て、“検”という単一文字をキーとして探索することに
なる。次に残った文字列(この場合は“索”という単一
文字になる)でトライを探索し、“索”というキーの存
在を探索する。この結果、検索ターム“検索”を“検”
および“索”に分割し、それぞれのキーに対応するイン
デックス2400および2401をワークエリア121
に読み込む。次に、ワークエリア121に格納された上
記インデックス間で位置情報を比較する。検索ターム
“検索”内で“検”と“索”は隣接しているので、それ
らのインデックス間で隣接する位置情報を抽出する。図
24では、テキスト1の5文字目に出現する“検”と6
文字目に出現する“索”、テキスト8の12文字目に出
現する“検”と13文字目に出現する“索”が隣接して
いるので、テキスト1およびテキスト8に検索ターム
“検索”が存在することが分かる。したがって、このテ
キスト番号“1”およびテキスト番号“8”を検索結果
2402として出力し、位置情報検索型インデックス検
索プログラム119の処理を終了する。
【0035】次に、同じトライを用いて、検索ターム
“いま”を検索する場合を図25を用いて説明する。検
索ターム“いま”でトライを探索すると、図22のトラ
イ格納テーブルの“いま”の末尾の節924のポインタ
の値は“0”でなく、Pt504が設定されているた
め、“いま”に対応するインデックスが存在することが
分かる。したがって、検索ターム“いま”は一つのキー
“いま”として取り扱うことができ、このキーに対応す
るインデックス2500をワークエリア121に読み込
む。このインデックス2500は検索ターム“いま”の
位置情報そのものを格納している。このため、隣接条件
判定を行う必要がなく、インデックス2500に格納さ
れているテキスト番号“1”、テキスト番号“5”およ
びテキスト番号“7”を検索結果2501としてこのま
ま出力し、位置情報検索型インデックス検索プログラム
119の処理を終了する。
【0036】以上説明したように、本実施例では、文書
を登録する際に、文書を文字コード化したテキストから
抽出した連続する2文字の文字列をキーとして作成した
トライを探索することにより、基準インデックス超過文
字列の後にどのような文字が続くのかを調べることがで
きるため、その文字に対応するインデックスを読み出
し、隣接条件判定を行うだけで、文字列インクリメント
処理を行うことができる。そのため、既登録の全テキス
トに関して再度、文字列の出現状況を調べ直すことな
く、新たなインデックスを追加生成することができるた
め、時間が掛からない文書の追加登録を実現することが
できる。また、単一文字から1文字ずつ文字列長を増や
しながらインデックスを作成していくため、出現頻度が
高く、かつ短い検索タームが指定された場合でも、一つ
のインデックスの読み出しだけで済み、高速な検索を実
現することができる。さらに、文字列インクリメント処
理の回数に制限を設けていないため、出現頻度が高い文
字列であれば文字列の長さによらず基準インデックスサ
イズよりインデックス容量が小さくなるまで、文字列イ
ンクリメント処理が行える。この結果、検索時には常に
基準インデックスより小さいサイズのインデックスの読
み込み処理と、これらのインデックス間の隣接条件判定
で処理が済むため、検索タームを構成する文字列の長短
および出現頻度によらず、常に、高速な検索を実現する
ことが可能となる。なお、本実施例では文字列テーブル
としてトライ格納テーブルを用いているが、文字列テー
ブルとしてトライ格納テーブル以外のテーブルを用いて
もよい。例えば、文字列テーブルとして図4に示す文字
インデックステーブルのようなテーブルを用いてもよ
い。
【0037】以上により、新聞記事や特許明細書のよう
に日々件数が増大していく大規模な文書データベースに
対しても、追加登録時に時間の掛からない登録が実現で
き、また、単一文字から1文字ずつ文字列長を増やしな
がらインデックスを作成していくため、出現頻度が高
く、かつ短い検索タームが指定された場合でも、高速な
検索が実現できる。さらに、文字列長が長くかつ、出現
頻度が高い文字列に対しても、インデックスの大きさが
基準インデックスサイズより小さくなるまで文字列イン
クリメント処理を行うため、文字列長が長く、かつ出現
頻度が高い検索タームが指定された場合でも常に高速な
検索が実現できることになる。
【0038】次に、本発明の第二の実施例について説明
する。本実施例は文書の登録時にテキストから文字列を
抽出する際、文字列の出現する文字位置だけでなくその
文字列の直前の文字(以下、前方文字と呼ぶ)および直
後の文字(以下、後方文字と呼ぶ)も抽出してインデッ
クスに格納しておくことにより、これらの文字を参照す
るだけで文字列インクリメント処理が行えるようにする
方法である。この方法によれば、基準インデックスサイ
ズを超えた文字列に対するインデックスの更新処理を高
速に実現できることになる。
【0039】本実施例は基本的に第一の実施例(図1)
と同様の構成をとるが、その中のインデックス作成登録
プログラム112と、検索制御プログラム117の制御
下にあるインデックス検索プログラムが異なる。このイ
ンデックス作成登録プログラム112および検索制御プ
ログラム117の制御下にあるインデックス検索プログ
ラムは図26および図27に示すような構成となる。イ
ンデックス作成登録プログラム112aはトライ初期化
プログラム113、連接文字格納型文字列抽出プログラ
ム2600、連接文字格納型インデックス作成プログラ
ム2601および連接文字格納型インクリメント処理プ
ログラム2602で構成される。検索制御プログラム1
17に制御されるプログラムは、検索条件式解析プログ
ラム118と連接文字格納型インデックス検索プログラ
ム2700で構成される。
【0040】インデックス作成登録プログラム112a
では、図28に示すように、まずステップ2800でト
ライ初期化プログラム113を起動し、データベースに
テキスト103を最初に登録する前に、トライの初期設
定を行う。次に、ステップ2801で連接文字格納型文
字列抽出プログラム2600を起動し、磁気ディスク装
置105に格納されたテキスト103をワークエリア1
21に読み込む。そして、このテキスト103から所定
の文字列とテキスト103におけるその出現する文字位
置および前方文字と後方文字を全て抽出する。次に、ス
テップ2802で連接文字格納型インデックス作成プロ
グラム2601を起動し、前記連接文字格納型文字列抽
出プログラム2600によってテキスト103から抽出
された文字列とテキスト103におけるその文字位置
(文字位置情報)とテキスト番号(テキスト指定情報)
および前方文字と後方文字からなる位置情報をインデッ
クス104として磁気ディスク装置105へ格納する。
最後に、ステップ2603で連接文字格納型インクリメ
ント処理プログラム2602を起動し、連接文字格納型
インデックス作成プログラム2601によって作成され
たインデックス104の中で予め定められた基準インデ
ックスサイズより大きくなったインデックスに対応する
文字列(基準インデックス超過文字列)に対して後述す
る文字列インクリメント処理を施す。
【0041】検索の際には、検索制御プログラム117
がキーボード101から入力された検索条件式を検索条
件式解析プログラム118へ渡す。そして、検索条件式
解析プログラム118の処理が終了した後、検索制御プ
ログラム117が連接文字格納型インデックス検索プロ
グラム2700を起動する。この検索制御プログラム1
17による検索処理について、図29を用いて以下に説
明する。
【0042】検索制御プログラム117は、まずステッ
プ2900で検索条件式解析プログラム118を起動
し、キーボード101から入力された検索条件式を検索
条件式解析プログラム118へ渡す。そして、本プログ
ラム118では、前記検索条件式から検索タームを抽出
する。次に、ステップ2901で連接文字格納型インデ
ックス検索プログラム2700を起動し、上記検索条件
式解析プログラム118によって抽出された検索ターム
のテキスト103における位置情報を求める。次に、ス
テップ2902でキーボード101から入力された検索
条件式の中の検索ターム数を判定し、検索タームが検索
条件式中に一つしか存在しない場合には、ステップ29
01で連接文字格納型インデックス検索プログラム27
00によって求められたテキスト103における検索タ
ームの位置情報を検索結果としてステップ2904で出
力する。もし、検索条件式の中に複数の検索タームが存
在し、それら複数の検索ターム間の論理的な関係、ある
いはテキスト103中での位置関係が検索条件式中に指
定されている場合には、ステップ2903で連接文字格
納型インデックス検索プログラム2700によって求め
られた複数の位置情報が検索条件式に指定されている検
索条件と合致するか否かを判定し、ステップ2904で
その結果を検索結果として出力する。
【0043】以上が本発明の文書検索方法を適用した第
二の実施例の概略である。以下、図28に示した本実施
例におけるインデックス作成登録の処理手順のうち、第
一の実施例と異なる連接文字格納型文字列抽出プログラ
ム2600、連接文字格納型インデックス作成プログラ
ム2601および連接文字格納型インクリメント処理プ
ログラム2602の処理手順について詳細に説明する。
【0044】まず、ステップ2801における連接文字
格納型文字列抽出プログラム2600の処理の詳細につ
いて図30を用いて説明する。連接文字格納型文字列抽
出プログラム2600では、まずステップ3000でテ
キスト103をワークエリア121に読み込む。次に、
ステップ3001でワークエリア121に格納されたテ
キスト103からこの中に出現する文字列の中でトライ
を構成するキー集合に存在するものを抽出し、テキスト
103におけるそれらの文字位置および前方文字と後方
文字とともにワークエリア121に格納する。図31
に、テキスト1“あいまい検索・・・”を登録する場合の
文字列の抽出例を示す。この段階では、まだテキストは
登録されておらず、トライは図5のように単一文字のみ
をキーとして作成されているものとする。このトライに
対応するトライ格納テーブルは図12に示したものであ
る。まず、テキスト1からトライを構成するキー集合中
に存在する文字列を抽出することになるが、今トライに
は単一文字しかキーとして存在しないので、“あ〈1、
1、×、い〉、い〈1、2、あ、ま〉、ま〈1、3、
い、い〉、い〈1、4、ま、検〉、検〈1、5、い、
索〉、索〈1、6、検、・・・〉、・・・”が抽出される。こ
こで、例えば、“い〈1、2、あ、ま〉”は「“い”は
テキスト1の2文字目に出現し、前方文字は“あ”、後
方文字は“ま”である」ことを意味する。また、“あ
〈1、1、×、い〉”で前方文字が“×”となっている
のは、前方文字がない、すなわち、その文字列がテキス
トの先頭にあることを意味する。もし、後方文字が
“×”となっていれば、後方文字がない、すなわちその
文字列がテキストの末尾にあることを意味する。
【0045】次に、図28に示したステップ2802に
おける連接文字格納型インデックス作成プログラム26
01の処理の詳細について図32を用いて説明する。ま
ず、ステップ3200では連接文字格納型文字列抽出プ
ログラム2600によって抽出された文字列のうちで単
一文字の個数分だけ、ステップ3201およびステップ
3202の一連の処理を繰り返す。ステップ3201で
は連接文字格納型文字列抽出プログラム2600によっ
て抽出された単一文字に対して設定されているインデッ
クスへのポインタの値が“0”であるか否かを判定す
る。ここで、単一文字に設定されているポインタの値が
“0”であれば、ステップ3202で磁気ディスク装置
105内にこの単一文字に対するインデックスの格納領
域を確保し、そのアドレスをポインタの値として設定す
る。図31の例では単一文字として“あ、い、ま、い、
検、索、・・・”が抽出されており、第一の実施例と同様
に、図12に示したトライ格納テーブルにこれらの単一
文字”に対するインデックスのアドレスがポインタの値
として設定され、図16のトライ格納テーブルが構成さ
れる。ステップ3203では連接文字格納型文字列抽出
プログラム2600によって抽出された全ての文字列の
個数分だけ、ステップ3204およびステップ3205
の一連の処理を繰り返す。ステップ3204では連接文
字格納型文字列抽出プログラム2600によって抽出さ
れた文字列を用いてトライを辿ることによってその文字
列と一致するキーの末尾の節番号を得る。そして、その
節番号に対応するポインタが示すインデックスをワーク
エリア121へ読み込む。次に、連接文字格納型文字列
抽出プログラム2600によってワークエリア121に
格納されていた文字列のテキスト103における文字位
置(文字位置情報)とテキスト番号(テキスト指定情
報)および前方文字と後方文字からなる位置情報をステ
ップ3205でワークエリア121内のインデックス1
04に追加して書き込み、その後磁気ディスク装置10
5へ格納する。図31の例では、“あ〈1、1、×、
い〉、い〈1、2、あ、ま〉、ま〈1、3、い、い〉、
い〈1、4、ま、検〉、検〈1、5、い、索〉、索
〈1、6、検、・・・〉、・・・”によってインデックスが作
成される。このインデックスの内容を図33に示す。こ
こで、テキスト番号、文字位置およびテキスト区分コー
ドは第一の実施例で説明したとおりである。また、イン
デックス内の個々の文字位置の次には必ず、前方文字お
よび後方文字がこの順序で格納されている。
【0046】最後に、図28に示したステップ2803
における連接文字格納型インクリメント処理プログラム
2602の処理の詳細について図34を用いて説明す
る。ステップ3400では前述の連接文字格納型インデ
ックス作成プログラム2601によって作成されたイン
デックスの個数分だけ、ステップ3401およびステッ
プ3402の一連の処理を繰り返す。ステップ3401
では連接文字格納型インデックス作成プログラム260
1によって作成されたインデックスの大きさと主メモリ
109内に記憶されている基準インデックスサイズとを
比較する。この基準インデックスサイズも第一の実施例
と同様に、実用的な検索時間に収まるようなインデック
スの容量を予め設定する。基準インデックスサイズより
大きくなったインデックスに対してのみ、ステップ34
02で後述する文字列インクリメント処理を行う。
【0047】この文字列インクリメント処理の内容を図
35を用いて説明する。まず、ステップ3500で基準
インデックスサイズを超えたインデックスに対応する文
字列、すなわち、基準インデックス超過文字列に後方文
字を追加した文字列をインクリメント結果文字列とし、
このインクリメント結果文字列に対応するインデックス
を格納する領域をワークエリア121に確保する。そし
て、連接文字格納型インデックス作成プログラム260
1によってワークエリア121内に作成された基準イン
デックス超過文字列に対応するインデックスからインク
リメント結果文字列の末尾文字と後方文字が一致する出
現位置と前方文字を抽出し、ワークエリア121内のイ
ンデックスに格納する。次に、ステップ3501でイン
クリメント結果文字列の先頭文字を除いた文字列をキー
としてトライを探索し、キーに設定されているポインタ
が示すインデックス104をワークエリア121に読み
込む。次に、ステップ3502で、読み込まれたインデ
ックス104の中からインクリメント結果文字列の先頭
文字と等しくなる前方文字の位置情報を抽出する。そし
て、その位置情報に対応する後方文字をインクリメント
結果文字列の後方文字としてワークエリア121内のイ
ンデックスに書き込み、磁気ディスク装置105へ格納
する。最後に、ステップ3503でインクリメント結果
文字列をキーとしてトライに追加し、このトライ情報を
トライ格納テーブル120に書き込む。そして、インク
リメント結果文字列と一致するキーの該当箇所にインク
リメント結果文字列に対応するインデックス104を指
し示すポインタを設定する。
【0048】上述の処理を、図31に示すテキスト1を
登録する際、“い”のインデックスの大きさが基準イン
デックスサイズを超えた場合を例にして、図36を用い
て説明する。まず、基準インデックス超過文字列である
“い”に対応するインデックスに格納されている後方文
字を抽出する。ここで、“い”に対応するインデックス
には“ま”および“検”が後方文字として格納されてい
ることが分かるため、インクリメント結果文字列として
は、この後方文字“ま”および“検”を基準インデック
ス超過文字列“い”の後に追加した“いま”および“い
検”となることが分かる。したがって、この“いま”お
よび“い検”に対応するインデックスを格納する領域を
ワークエリア121に確保する。次に、“い”のインデ
ックスから、まず、後方文字が“ま”となる位置情報
(テキスト番号“1”、文字位置“2”)と前方文字
(“あ”)を抽出する。この位置情報および前方文字は
“いま”の位置情報と前方文字に相当するので、これら
の位置情報をインクリメント結果文字列“いま”のイン
デックスとしてワークエリア121に書き込む。同様に
“い”のインデックスの中で、後方文字が“検”となる
位置情報(テキスト番号“1”、文字位置“4”)と前
方文字(“ま”)をインクリメント結果文字列“い検”
のインデックスとして書き込む。ここで作成されたイン
デックスには未だ、後方文字が格納されていない。そこ
で、トライを探索してインクリメント結果文字列から先
頭文字を削除した文字列に対応するインデックスを読み
出し、この中から後方文字を抽出する。具体的には、ま
ず、インクリメント結果文字列“いま”から先頭文字を
削除した文字列“ま”をキーとしてトライを探索し、
“ま”のインデックス104をワークエリア121に読
み込む。次に、読み込んだ“ま”のインデックスに格納
されている前方文字がインクリメント結果文字列の先頭
文字“い”と等しくなる位置情報に対応する後方文字
“い”を抽出する。この後方文字“い”がインクリメン
ト結果文字列“いま”の後方文字に相当するので、“い
ま”のインデックスにこの“い”を後方文字として格納
する。“い検”のインデックスについても同様に、トラ
イを用いて“検”のインデックスを参照して“索”を後
方文字として設定する。その後、“いま”および“い
検”のインデックスを磁気ディスク装置105に書き込
む。最後に、上記インククリメント結果文字列“いま”
および“い検”について、トライの更新処理を行う。す
なわち、図5に示した単一文字のみをキーとして作成し
たトライに“いま”および“い検”をキーとして追加す
る。
【0049】追加が行われたトライを図37に示す。こ
のトライ情報をトライ格納テーブル120に書き込み、
キーの末尾の節番号に対して“いま”および“い検”の
インデックスへのポインタを設定する。図37のトライ
では、“いま”の末尾は節812であり、“い検”の末
尾は節813である。そこで、図38に示すように、ト
ライ格納テーブルの節番号812のポインタとして“い
ま”のインデックスを示すポインタPt504を設定
し、節番号813のポインタとして“い検”のインデッ
クスを示すポインタPt505を設定する。以上によ
り、文字列インクリメント処理が終了する。この例では
単一文字に対する文字列インクリメント処理について説
明したが、2文字以上の文字列に対してもまったく同様
に文字列インクリメント処理を行うことができる。以上
が本実施例におけるインデックス作成登録の詳細な手順
である。
【0050】次に、本実施例における検索の処理手順に
ついて図39、図40および図41を用いて詳細に説明
する。まず、連接文字格納型インデックス検索プログラ
ム2700の処理手順を図39に示す。連接文字格納型
インデックス検索プログラム2700は検索制御プログ
ラム117によって起動される。本プログラム2700
では、まず、ステップ3900で検索条件式解析プログ
ラム118によって抽出された検索タームを、セット文
字列に分割する。セット文字列とは“単一文字、トライ
を構成するキー集合中に含まれる文字列、単一文字”で
構成される文字列である。具体的には、まず検索ターム
の1文字目をセット文字列の最初の単一文字として切り
出し、検索タームの2文字目からトライを探索する。そ
して、探索された最長のキーを検索タームから切り出
し、その次の文字をセット文字列の最後の単一文字とし
て切り出す。さらに、残った文字列に対してもこの処理
を繰り返し行って、検索タームの分割を行う。次に、ス
テップ3901で検索タームを分割したセット文字列の
個数分だけ、ステップ3902およびステップ3903
の一連の処理を繰り返す。ステップ3902ではセット
文字列内のトライを構成するキー集合中に含まれる文字
列に対応するインデックス104をワークエリア121
に読み込む。そして、ステップ3903でワークエリア
121内のインデックス104に格納されている前方文
字および後方文字がセット文字列内の単一文字とそれぞ
れ一致するかどうかを判定し、一致するものについて、
その位置情報を抽出し、それをワークエリア121に格
納する。最後に、ステップ3904において、ステップ
3903でワークエリア121へ抽出された出現位置の
うち、検索ターム中のセット文字列と同じ位置関係にあ
る位置情報を抽出する。
【0051】“あいまい検索”が検索タームに指定され
た場合を例に図40を用いて、この検索手順を具体的に
説明する。本図に示したトライに対応するトライ格納テ
ーブルは図38に示されている。まず、検索ターム“あ
いまい検索”の2文字目以降の文字列“いまい検索”で
トライが探索される。ここで、キー“いま”が探索さ
れ、その前後の文字“あ、い”も含め、検索タームから
セット文字列“あ、いま、い”が抽出される。次に、残
った文字列“検索”の2文字目以降の文字列“索”でト
ライが探索され、“索”というキーが探索される。した
がって、その前の文字“検”も含め、検索タームからセ
ット文字列“検、索、?”が抽出される。ここで、
“?”は後方文字はどのような単一文字でもよいことを
意味する。この結果、検索ターム“あいまい検索”はセ
ット文字列“あ、いま、い”および“検、索、?”に分
割されることになる。次に、セット文字列においてトラ
イを構成するキー集合中に含まれる文字列“いま”およ
び“索”に対応するインデックス4000および400
1がワークエリア121に読み込まれる。そして、ワー
クエリア121内の上記インデックスに格納されている
前方文字および後方文字がセット文字列内のそれぞれの
単一文字と一致するかどうかが判定され、一致するもの
が抽出され、その位置情報が出力される。“いま”のイ
ンデックスからは、前方文字が“あ”で後方文字が
“い”となるテキスト番号“1”と文字位置“2”が位
置情報4002として抽出される。“索”のインデック
スからは、前方文字が“検”となる(後方文字はどのよ
うなものでもよい)テキスト番号“1”と文字位置
“6”が位置情報4003として抽出される。最後に、
抽出された“いま”の位置情報4002と“索”の位置
情報4003を比較する。検索ターム“あいまい検索”
内でセット文字列“あ、いま、い”と“検、索、?”の
文字位置は文字位置“1”と文字位置“5”であり、4
文字離れて隣接している。したがって、上記位置情報の
中で4文字離れて隣接しているものが検索ターム“あい
まい検索”と一致することになる。図40では、テキス
ト1の2文字目に出現する“いま”と6文字目に出現す
る“索”が4文字離れて隣接しているので、テキスト1
に検索ターム“あいまい検索”が存在することが分か
る。したがって、このテキスト番号“1”を検索結果4
004として出力し、連接文字格納型インデックス検索
プログラム2700の処理を終了する。
【0052】次に、同じトライを用いて、検索ターム
“あいまい”を検索する場合を図41を用いて説明す
る。まず、検索ターム“あいまい”の2文字目以降の文
字列“いまい”でトライが探索される。ここで、キー
“いま”が探索され、その前後の文字“あ、い”も含
め、検索タームからセット文字列“あ、いま、い”が抽
出される。したがって、検索ターム“あいまい”は一つ
のセット文字列“あ、いま、い”に分割され、セット文
字列においてトライを構成するキー集合中に含まれる文
字列“いま”に対応するインデックス4100がワーク
エリア121に読み込まれる。そして、ワークエリア1
21の“いま”のインデックスに格納されている前方文
字および後方文字の内セット文字列内のそれぞれの単一
文字と一致するものが抽出され、その位置情報が出力さ
れる。すなわち、“いま”のインデックスから前方文字
が“あ”で後方文字が“い”となる位置情報を持つテキ
スト番号“1”と文字位置“2”が抽出される。この文
字位置は検索ターム“あいまい”の文字位置そのものに
相当するので、隣接条件判定を行う必要がない。そこ
で、このテキスト番号“1”を検索結果4101として
このまま出力し、連接文字格納型インデックス検索プロ
グラム2700の処理を終了する。
【0053】以上説明したように、本実施例では、文書
を登録する際に、文書を文字コード化したテキストから
抽出した文字列の直後の文字をインデックスに格納して
おくことにより、その文字を参照するだけでインクリメ
ント結果文字列のインデックスを作成することができる
ため、第一の実施例に比べインデックスの更新処理を高
速に行うことができる。そのため、既登録の全テキスト
に関して再度、文字列の出現状況を調べ直すことなく、
新たなインデックスを短時間に追加生成することができ
るため、高速な文書の追加登録を実現することができ
る。また、テキストから抽出した文字列の直前の文字も
インデックスに格納しておき、この文字を参照すること
により、インクリメント結果文字列の直後の文字を割り
出すことができるため、文字列インクリメント処理を再
帰的に行うことができる。このため、出現頻度が高い文
字列であれば文字列の長さによらず基準インデックスサ
イズよりインデックス容量が小さくなるまで、文字列イ
ンクリメント処理が高速に行えることになる。この結
果、検索時には常に基準インデックスより小さいサイズ
のインデックスの読み込み処理と、これらのインデック
ス間の隣接条件判定で処理が済むため、検索タームを構
成する文字列の長短および出現頻度によらず、常に、高
速な検索を実現することが可能となる。さらに、単一文
字から1文字ずつ文字列長を増やしながらインデックス
を作成していくため、出現頻度が高く、かつ短い検索タ
ームが指定された場合でも、一つのインデックスの読み
出しだけで済み、高速な検索を実現することができる。
なお、本実施例では文字列テーブルとしてトライ格納テ
ーブルを用いているが、文字列テーブルとしてトライ格
納テーブル以外のテーブルを用いてもよい。例えば、文
字列テーブルとして図4に示す文字インデックステーブ
ルのようなテーブルを用いてもよい。
【0054】以上により、新聞記事や特許明細書のよう
に日々件数が増大していく大規模な文書データベースに
対しても、追加登録時に高速な登録が実現でき、また、
単一文字から1文字ずつ文字列長を増やしながらインデ
ックスを作成していくため、出現頻度が高く、かつ短い
検索タームが指定された場合でも高速な検索が実現でき
る。さらに、文字列長が長くかつ、出現頻度が高い文字
列に対しても、インデックスの大きさが基準インデック
スサイズより小さくなるまで文字列インクリメント処理
を行うため、文字列長が長く、かつ出現頻度が高い検索
タームが指定された場合でも常に高速な検索が実現でき
ることになる。
【0055】
【発明の効果】本発明によれば、大規模な文書データベ
ースを検索する場合でも、インデックス容量が小さくな
るように文字列長を長くすることにより、常に容量の小
さなインデックスの読み込みと隣接条件判定で検索が済
むため、高速な検索を実現することが可能となる。ま
た、文書を追加登録する際にインデックス容量が大きく
なった場合でも、インデックス作成時に抽出しておいた
情報を参照することにより、既登録文書を再度見直すこ
となく文字列長を長くしたインデックスを作成すること
ができるため、追加登録時にも時間の掛からない登録が
可能となる。この結果、新聞記事や特許明細書のように
日々件数が増大していく大規模な文書データベースでも
時間の掛からない登録とどんな検索タームに対しても高
速な検索が行える文書検索システムを提供することが可
能となる。
【図面の簡単な説明】
【図1】本発明を適用した第一の実施例の文書検索シス
テムの構成を示す図である。
【図2】「特開昭64−35627号」の内容を説明す
るための図である。
【図3】トライを説明するための図である。
【図4】「特開平2−186476号」の内容を説明す
るための図である。
【図5】トライの初期化を説明するための図である。
【図6】2文字の連続する文字列をキーとして追加した
トライを説明するための図である。
【図7】文書の登録手順を示すPAD図である。
【図8】第一の実施例のインデックス作成登録プログラ
ム112の処理手順を示すPAD図である。
【図9】文書の検索手順を示すPAD図である。
【図10】第一の実施例のトライ初期化プログラム11
3の処理手順を示すPAD図である。
【図11】トライ格納テーブルを説明するための図であ
る。
【図12】トライ格納テーブルの初期化を説明するため
の図である。
【図13】第一の実施例の位置情報検索型文字列抽出プ
ログラム114の処理手順を示すPAD図である。
【図14】第一の実施例における文字列抽出を説明する
ための図である。
【図15】第一の実施例の位置情報検索型インデックス
作成プログラム115の処理手順を示すPAD図であ
る。
【図16】単一文字のインデックスへのポインタを設定
したトライ格納テーブルを説明するための図である。
【図17】2文字の文字列を追加したトライ格納テーブ
ルを説明するための図である。
【図18】インデックス作成を説明するための図であ
る。
【図19】第一の実施例の位置情報検索型インクリメン
ト処理プログラム116の処理手順を示すPAD図であ
る。
【図20】第一の実施例の文字列インクリメント処理を
示すPAD図である。
【図21】文字列インクリメント処理を説明するための
図である。
【図22】インクリメント結果文字列を追加したトライ
格納テーブルを説明するための図である。
【図23】第一の実施例の位置情報検索型インデックス
検索プログラム119の処理手順を示すPAD図であ
る。
【図24】検索ターム“検索”での検索手順を説明する
ための図である。
【図25】検索ターム“いま”での検索手順を説明する
ための図である。
【図26】本発明の第二の実施例のインデックス作成登
録プログラム112aの構成を示す図である。
【図27】本発明の第二の実施例の検索制御プログラム
117の制御下にあるプログラムの構成を示す図であ
る。
【図28】第二の実施例のインデックス作成登録プログ
ラム112aの処理手順を示すPAD図である。
【図29】第二の実施例の文書の検索手順を示すPAD
図である。
【図30】第二の実施例の連接文字格納型文字列抽出プ
ログラム2600の処理手順を示すPAD図である。
【図31】第二の実施例における文字列抽出を説明する
ための図である。
【図32】第二の実施例の連接文字格納型インデックス
作成プログラム2601の処理手順を示すPAD図であ
る。
【図33】第二の実施例のインデックス作成を説明する
ための図である。
【図34】第二の実施例の連接文字格納型インクリメン
ト処理プログラム2602の処理手順を示すPAD図で
ある。
【図35】第二の実施例の文字列インクリメント処理を
示すPAD図である。
【図36】第二の実施例の文字列インクリメント処理を
説明するための図である。
【図37】第二の実施例のインクリメント結果文字列を
追加したトライを説明するための図である。
【図38】第二の実施例のインクリメント結果文字列を
追加したトライ格納テーブルを説明するための図であ
る。
【図39】第二の実施例の連接文字格納型インデックス
検索プログラム2700の処理手順を示すPAD図であ
る。
【図40】第二の実施例の検索ターム“あいまい検索”
での検索手順を説明するための図である。
【図41】第二の実施例の検索ターム“あいまい”での
検索手順を説明するための図である。
【符号の説明】 100 ディスプレイ 101 キーボード 102 CPU 103 テキスト 104 インデックス 105 磁気ディスク装置 106 FDD 107 フロッピディスク 108 バス 109 主メモリ 110 文書登録制御プログラム 111 テキスト登録プログラム 112 インデックス作成登録プログラム 113 トライ初期化プログラム 114 位置情報検索型文字列抽出プログラム 115 位置情報検索型インデックス作成プログラム 116 位置情報検索型インクリメント処理プログラム 117 検索制御プログラム 118 検索条件式解析プログラム 119 位置情報検索型インデックス検索プログラム 120 トライ格納テーブル 121 ワークエリア 112a インデックス作成登録プログラム 2600 連接文字格納型文字列抽出プログラム 2601 連接文字格納型インデックス作成プログラム 2602 連接文字格納型インクリメント処理プログラ
ム 2700 連接文字格納型インデックス検索プログラム
───────────────────────────────────────────────────── フロントページの続き (72)発明者 畠山 敦 神奈川県川崎市麻生区王禅寺1099番地 株式会社日立製作所 システム開発研究 所内 (72)発明者 多田 勝己 神奈川県川崎市麻生区王禅寺1099番地 株式会社日立製作所 システム開発研究 所内 (72)発明者 加藤 寛次 神奈川県川崎市麻生区王禅寺1099番地 株式会社日立製作所 システム開発研究 所内 (72)発明者 浅川 悟志 神奈川県横浜市戸塚区戸塚町5030番地 株式会社日立製作所 ソフトウェア開発 本部内 (56)参考文献 特開 平6−251070(JP,A) 青江順一,(キー探索技法IV)トラ イとその応用,情報処理,情報処理学 会,1993年 2月15日,第34巻,第2 号,第244〜251頁 増井俊之,効率の良いトライ/状態遷 移機械の構成方式,情報処理学会研究報 告(94−PRG−15),1994年 1月21 日,第94巻,第7号,第73〜80頁 (58)調査した分野(Int.Cl.7,DB名) G06F 17/30 G06F 12/00 JICSTファイル(JOIS)

Claims (12)

    (57)【特許請求の範囲】
  1. 【請求項1】 文書情報を文字コードデータとして蓄積
    したテキストデータベースを対象として、対象テキスト
    データから所定の部分文字列と、該部分文字列の対象テ
    キストデータにおける文字位置情報及びテキスト指定情
    報を含む位置情報を抽出し、該位置情報をインデックス
    として記憶し、前記部分文字列と前記インデックスの記
    憶位置を管理するための文字列テーブルを更新するイン
    デックス作成登録ステップと、 検索タームから所定の部分文字列を抽出し、前記文字列
    テーブルを参照して該当インデックスを読み出し、該検
    索タームにおける部分文字列と同じ位置関係を持つ位置
    情報を抽出するインデックス検索ステップを有する文書
    検索方法において、 テキストデータから作成した部分文字列に対応するイン
    デックスのサイズと予め定められた基準インデックスサ
    イズとを比較するインデックスサイズ比較ステップと、 該インデックスのサイズが該基準インデックスサイズよ
    り大きい場合には、該インデックスに対応する部分文字
    列に1文字を追加した拡張部分文字列と該拡張部分文字
    列に対応するインデックスを作成する文字列インクリメ
    ントステップを有することを特徴とする文書検索方法。
  2. 【請求項2】 請求項1記載の文書検索方法において、 前記文字列インクリメントステップは、前記文字列テー
    ブルを参照し前記基準インデックスサイズより大きいイ
    ンデックスサイズのインデックスに対応する部分文字列
    の後に続く後続文字を前記文字列テーブルおいて探索
    し、該後続文字に対応するインデックスを抽出するステ
    ップと、 該部分文字列と該後続文字に対応する各インデックスの
    間で位置情報を比較し、文字位置が隣接する条件とテキ
    スト指定情報が一致する条件を満たす前記部分文字列の
    位置情報を抽出し、該位置情報中の前記文字位置が隣接
    する条件を満たす文字位置情報とテキスト指定情報を含
    む位置情報を作成し、該作成した位置情報を前記拡張部
    分文字列に対するインデックスとして登録するステップ
    を有することを特徴とする文書検索方法。
  3. 【請求項3】 請求項1記載の文書検索方法において、 前記インデックス作成登録ステップは、前記部分文字列
    の直前および直後に現われる文字を前記対象テキストデ
    ータから抽出し、該直前と直後に現われる文字を夫々前
    方文字と後方文字として前記位置情報に含め、 前記文字列インクリメントステップは、前記基準インデ
    ックスサイズより大きいインデックスに対応する部分文
    字列に該部分文字列の位置情報中の後方文字を追加して
    拡張部分文字列を作成するステップと、 前記部分文字列の位置情報中の文字位置情報とテキスト
    指定情報と前方文字と、前記部分文字列の後方文字を前
    記文字列テーブルおいて探索し該後方文字に対応するイ
    ンデックスを抽出し、該後方文字と前記部分文字列に対
    応する各インデックスの間で位置情報を比較し、文字位
    置が隣接する条件とテキスト指定情報が一致する条件を
    満たす前記後方文字の位置情報を抽出し、該抽出した位
    置情報中の後方文字とを前記拡張部分文字列の位置情報
    とし、該位置情報を該拡張部分文字列に対するインデッ
    クスとして格納するステップを有することを特徴とする
    文書検索方法。
  4. 【請求項4】 文書情報を文字コードデータとして蓄積
    したテキストデータベースを対象として、対象テキスト
    データから所定の部分文字列と、該部分文字列の対象テ
    キストデータにおける文字位置情報及びテキスト指定情
    報を含む位置情報を抽出し、該位置情報をインデックス
    として記憶し、前記部分文字列と前記インデックスの記
    憶位置を管理するための文字列テーブルを更新するイン
    デックス作成登録手段と、 検索タームから所定の部分文字列を抽出し、前記文字列
    テーブルを参照して該当インデックスを読み出し、該検
    索タームにおける部分文字列と同じ位置関係を持つ位置
    情報を抽出するインデックス検索手段を備える文書検索
    装置において、 テキストデータから作成した部分文字列に対応するイン
    デックスのサイズと予め定められた基準インデックスサ
    イズとを比較するインデックスサイズ比較手段と、 該インデックスのサイズが該基準インデックスサイズよ
    り大きい場合には、該インデックスに対応する部分文字
    列に1文字を追加した拡張部分文字列と該拡張部分文字
    列に対応するインデックスを作成する文字列インクリメ
    ント手段を備えることを特徴とする文書検索装置。
  5. 【請求項5】 請求項4記載の文書検索装置において、 前記文字列インクリメント手段は、前記文字列テーブル
    を参照し前記基準インデックスサイズより大きいインデ
    ックスサイズのインデックスに対応する部分文字列の後
    に続く後続文字を前記文字列テーブルおいて探索し、該
    後続文字に対応するインデックスを抽出する手段と、 該部分文字列と該後続文字に対応する各インデックスの
    間で位置情報を比較し、文字位置が隣接する条件とテキ
    スト指定情報が一致する条件を満たす前記部分文字列の
    位置情報を抽出し、該位置情報中の前記文字位置が隣接
    する条件を満たす文字位置情報とテキスト指定情報を含
    む位置情報を作成し、該作成した位置情報を前記拡張部
    分文字列に対するインデックスとして登録する手段を備
    えることを特徴とする文書検索装置。
  6. 【請求項6】 請求項4記載の文書検索装置において、 前記インデックス作成登録手段は、前記部分文字列の直
    前および直後に現われる文字を前記対象テキストデータ
    から抽出し、該直前と直後に現われる文字を夫々前方文
    字と後方文字として前記位置情報に含め、 前記文字列インクリメント手段は、前記基準インデック
    スサイズより大きいインデックスに対応する部分文字列
    に該部分文字列の位置情報中の後方文字を追加して拡張
    部分文字列を作成する手段と、 前記部分文字列の位置情報中の文字位置情報とテキスト
    指定情報と前方文字と、前記部分文字列の後方文字を前
    記文字列テーブルおいて探索し該後方文字に対応するイ
    ンデックスを抽出し、該後方文字と前記部分文字列に対
    応する各インデックスの間で位置情報を比較し、文字位
    置が隣接する条件とテキスト指定情報が一致する条件を
    満たす前記後方文字の位置情報を抽出し、該抽出した位
    置情報中の後方文字とを前記拡張部分文字列の位置情報
    とし、該位置情報を該拡張部分文字列に対するインデッ
    クスとして格納する手段を備えることを特徴とする文書
    検索装置。
  7. 【請求項7】 文書の集合を対象として、対象文書集合
    から所定の部分文字 列と、該部分文字列の対象文書集合
    における位置情報を抽出するとともにインデックスとし
    て記憶するインデックス作成ステップと、指定された検
    索語から所定の部分文字列を抽出するとともに該部分文
    字列に対応するインデックスを参照して該検索語が含ま
    れる文書を検索するインデックス検索ステップを有する
    文書検索方法において、 前記インデックス作成ステップで作成したインデックス
    の中で、所定の大きさより大きいインデックスに対し
    て、該インデックスに対応する部分文字列に文字を追加
    した拡張部分文字列に対応するインデックスを作成する
    文字列拡張ステップを有することを特徴とした文書検索
    方法。
  8. 【請求項8】 請求項7記載の文書検索方法において、 前記インデックス作成ステップで抽出した前記部分文字
    列と前記インデックスの記憶位置を管理するための文字
    列テーブルを有し、 前記文字列拡張ステップは、所定の大きさより大きいイ
    ンデックスに対応する部分文字列に続く接続文字を前記
    文字列テーブルを用いて検索し、該接続文字に対応する
    インデックスを取得するステップと、 該部分文字列と該接続文字に対応するインデックス間で
    位置情報を比較して出現位置が隣接する位置情報を抽出
    し、該位置情報を前記拡張部分文字列に対応するインデ
    ックスとして記憶するステップを有することを特徴とし
    た文書検索方法。
  9. 【請求項9】 請求項7記載の文書検索方法において、 前記インデックスとして記憶する情報として、前記位置
    情報と、前記部分文字列の直前に現れる前方文字と直後
    に現れる後方文字を含む出現情報を用い、 前記文字列拡張ステップは、所定の大きさより大きいイ
    ンデックスに対応する部分文字列に該部分文字列の出現
    情報中の後方文字を追加して前記拡張部分文字列を作成
    するステップと、 該拡張部分文字列の位置情報と前方文字を、前記部分文
    字列の位置情報と前方文字から取得するステップと、 該拡張部分文字列の後方文字を、前記部分文字列に追加
    した後方文字に対応するインデックスの出現情報を参照
    して取得するステップと、 取得した前記拡張部分文字列の位置情報と前方文字と後
    方文字を含む出現情報を、該拡張部分文字列に対するイ
    ンデックスとして記憶するステップを有することを特徴
    とした文書検索方法。
  10. 【請求項10】 請求項7または請求項8または請求項
    9記載の文書検索方法において、 前記所定の大きさとして、前記対象文書集合における部
    分文字列の出現頻度に基づいて、所定の算出式で算出さ
    れるインデックスの大きさを設定することを特徴とした
    文書検索方法。
  11. 【請求項11】 請求項7または請求項8または請求項
    9記載の文書検索方法において、 前記所定の大きさとして、使用する中央演算装置および
    二次記憶装置の性能に基づいて、所定の算出式で算出さ
    れるインデックスの大きさを設定することを特徴とした
    文書検索方法。
  12. 【請求項12】 文書の集合を対象として、対象文書集
    合から所定の部分文字列と、該部分文字列の対象文書集
    合における位置情報を抽出するとともにインデックスと
    して記憶するインデックス作成手段と、指定された検索
    語から所定の部分文字列を抽出するとともに該部分文字
    列に対応するインデックスを参照して該検索語が含まれ
    る文書を検索するインデックス検索手段を備える文書検
    索装置において、 前記インデックス作成手段で作成したインデックスの中
    で、所定の大きさより大きいインデックスに対して、該
    インデックスに対応する部分文字列に文字を追加した拡
    張部分文字列に対応するインデックスを作成する文字列
    拡張手段を備えることを特徴とした文書検索装置。
JP01967395A 1995-01-12 1995-01-12 文書検索方法および装置 Expired - Fee Related JP3459053B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP01967395A JP3459053B2 (ja) 1995-01-12 1995-01-12 文書検索方法および装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP01967395A JP3459053B2 (ja) 1995-01-12 1995-01-12 文書検索方法および装置

Publications (2)

Publication Number Publication Date
JPH08194718A JPH08194718A (ja) 1996-07-30
JP3459053B2 true JP3459053B2 (ja) 2003-10-20

Family

ID=12005765

Family Applications (1)

Application Number Title Priority Date Filing Date
JP01967395A Expired - Fee Related JP3459053B2 (ja) 1995-01-12 1995-01-12 文書検索方法および装置

Country Status (1)

Country Link
JP (1) JP3459053B2 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3649472B2 (ja) * 1995-05-22 2005-05-18 松下電器産業株式会社 情報検索装置
JP3887867B2 (ja) 1997-02-26 2007-02-28 株式会社日立製作所 構造化文書の登録方法
JP3554459B2 (ja) * 1997-02-26 2004-08-18 株式会社日立製作所 テキストデータ登録検索方法
JP3564952B2 (ja) * 1997-07-22 2004-09-15 株式会社日立製作所 高速文書登録検索方法および装置
JP3456127B2 (ja) * 1997-11-11 2003-10-14 株式会社日立製作所 インデクスキーの高速拡張機能を備えた文書検索方法および装置
JP3275816B2 (ja) 1998-01-14 2002-04-22 日本電気株式会社 記号列検索方法及び記号列検索装置並びに記号列検索プログラムを記録した記録媒体
JP3620968B2 (ja) * 1998-08-05 2005-02-16 株式会社日立製作所 文書検索方法及びその実施装置並びにその処理プログラムを記録した媒体
JP3696745B2 (ja) 1999-02-09 2005-09-21 株式会社日立製作所 文書検索方法及び文書検索システム及び文書検索プログラムを記録したコンピュータ読み取り可能な記録媒体
US7099898B1 (en) 1999-08-12 2006-08-29 International Business Machines Corporation Data access system
JP2006134191A (ja) 2004-11-09 2006-05-25 Hitachi Ltd 文書検索方法およびそのシステム
JP4368889B2 (ja) 2006-12-21 2009-11-18 株式会社日立製作所 検索装置、検索方法、及びプログラム
JP4491480B2 (ja) * 2007-10-11 2010-06-30 株式会社日立製作所 インデクス構築方法、文書検索装置及びインデクス構築プログラム
JP5483166B2 (ja) * 2009-07-02 2014-05-07 日本電気株式会社 文書検索装置、文書検索方法、及びプログラム
JP5522017B2 (ja) * 2010-12-14 2014-06-18 キヤノンマーケティングジャパン株式会社 情報処理装置、情報処理装置の制御方法、及びコンピュータプログラム
KR101793578B1 (ko) * 2011-04-08 2017-11-20 삼성전자 주식회사 효율적으로 질의를 처리하는 방법 및 장치
US10394870B2 (en) 2014-06-30 2019-08-27 Hitachi, Ltd. Search method

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2785168B2 (ja) * 1993-02-23 1998-08-13 国際電信電話株式会社 単語検索のための電子辞書圧縮方法及び装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
増井俊之,効率の良いトライ/状態遷移機械の構成方式,情報処理学会研究報告(94−PRG−15),1994年 1月21日,第94巻,第7号,第73〜80頁
青江順一,(キー探索技法IV)トライとその応用,情報処理,情報処理学会,1993年 2月15日,第34巻,第2号,第244〜251頁

Also Published As

Publication number Publication date
JPH08194718A (ja) 1996-07-30

Similar Documents

Publication Publication Date Title
JP3459053B2 (ja) 文書検索方法および装置
US5995962A (en) Sort system for merging database entries
US7178100B2 (en) Methods and apparatus for storing and manipulating variable length and fixed length data elements as a sequence of fixed length integers
US20070198566A1 (en) Method and apparatus for efficient storage of hierarchical signal names
EP0672283B1 (en) Language-sensitive collation system
JP3152868B2 (ja) 検索装置および辞書/テキスト検索方法
Mukherjee et al. Automatic annotation of content-rich html documents: Structural and semantic analysis
US4468732A (en) Automated logical file design system with reduced data base redundancy
Baeza-Yates Introduction to Data Structures and Algorithms Related to Information Retrieval.
Giancarlo A generalization of the suffix tree to square matrices, with applications
US6754650B2 (en) System and method for regular expression matching using index
JP5038939B2 (ja) 情報検索システム、方法及びプログラム
KR100638695B1 (ko) 구조화 문서의 데이터를 검색하는 장치 및 방법
JPH02271468A (ja) データ処理方法
US20020165707A1 (en) Methods and apparatus for storing and processing natural language text data as a sequence of fixed length integers
US20020038319A1 (en) Apparatus converting a structured document having a hierarchy
JPH02501514A (ja) 属性データ モデル データベースを使用するソフトウエア応用プログラムを結合する方法
JP3263963B2 (ja) 文書検索方法及び装置
JPH11242676A (ja) 構造化文書登録方法、検索方法、およびそれに用いられる可搬型媒体
JP2000231563A (ja) 文書検索方法及び文書検索システム及び文書検索プログラムを記録したコンピュータ読み取り可能な記録媒体
JP3003915B2 (ja) 単語辞書検索装置
US6470334B1 (en) Document retrieval apparatus
JP2005190163A (ja) 構造化データ検索方法、構造化データ検索装置およびプログラム
JP3518933B2 (ja) 構造化文書検索方法
US6701328B1 (en) Database management system

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20040316

A072 Dismissal of procedure [no reply to invitation to correct request for examination]

Free format text: JAPANESE INTERMEDIATE CODE: A072

Effective date: 20040706

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

Free format text: PAYMENT UNTIL: 20070808

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20080808

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20080808

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20090808

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20100808

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees