JP3564952B2 - 高速文書登録検索方法および装置 - Google Patents

高速文書登録検索方法および装置 Download PDF

Info

Publication number
JP3564952B2
JP3564952B2 JP19540997A JP19540997A JP3564952B2 JP 3564952 B2 JP3564952 B2 JP 3564952B2 JP 19540997 A JP19540997 A JP 19540997A JP 19540997 A JP19540997 A JP 19540997A JP 3564952 B2 JP3564952 B2 JP 3564952B2
Authority
JP
Japan
Prior art keywords
index
character string
position information
partial character
text data
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
JP19540997A
Other languages
English (en)
Other versions
JPH1139326A (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 JP19540997A priority Critical patent/JP3564952B2/ja
Publication of JPH1139326A publication Critical patent/JPH1139326A/ja
Application granted granted Critical
Publication of JP3564952B2 publication Critical patent/JP3564952B2/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】
【従来の技術】
大規模な文書データベースから指定された検索文字列(以下、検索タームと呼ぶ)が含まれる文書を高速に探し出す方式として、n文字インデクス方式がある。本方式については、「特開昭64−35627号」(以下、公知例1と呼ぶ)に詳細に開示されている。本公知例では、文書の登録時に、データベースへ登録する文書を文字コード化したテキストから文字連鎖と呼ばれる連続するn文字の部分文字列とその部分文字列のテキストにおける出現位置を示す情報をインデクスとして磁気ディスク装置に格納しておく。検索時には検索タームから連続するn文字の部分文字列、すなわち文字連鎖を抽出し、これらに対応するインデクスを上記磁気ディスク装置から読み込み、検索ターム中の文字連鎖の位置関係とインデクス中の文字連鎖の位置情報の関係が等しいかを判定することによって、指定された検索タームが出現する文書を高速に探し出すことができる。以下、この公知例1について図2を用いて具体的にその内容を説明する。本公知例では文字連鎖の長さを3に想定している。まず、文書の登録時にデータベースに登録するテキスト100がインデクス作成部200に読み込まれ、文字連鎖インデクス201が作成される。この文字連鎖インデクス201には、テキスト100に出現する全ての3文字の部分文字列、すなわち文字連鎖とその文字連鎖のテキスト100における出現位置を示すポインタが格納される。例えば、本図に示すテキスト100では、“abc”という文字連鎖は、テキスト100でポインタpt1,pt2,・・・として示される位置に現われるので、文字連鎖インデクス201には文字連鎖“abc”とこれに対応した形でポインタpt1,pt2,・・・が格納される。検索時には、まず、検索タームが文字連鎖抽出部202に入力され、検索ターム中に存在する全ての3文字の文字連鎖とその文字連鎖の検索ターム中における出現位置を示す番号として文字連鎖位置が生成される。次に、生成された文字連鎖とこれに対応する文字連鎖位置がインデクス検索部203に入力される。インデクス検索部203では、検索タームから抽出された文字連鎖に対応するインデクスが文字連鎖インデクス201から読み込まれ、これらのインデクスの間でポインタによって示される文字位置が隣接しているものが抽出され検索結果として出力される。例えば、検索タームとして“abcd”が入力された場合には、まず、文字連鎖抽出部202において、検索ターム“abcd”から〈文字連鎖“abc”、文字連鎖位置“0”〉と〈文字連鎖“bcd”、文字連鎖位置“1”〉が抽出される。ここで、文字連鎖位置“0”は検索タームの先頭、文字連鎖位置“1”はその次の文字位置を示している。次に、インデクス検索部203において、文字連鎖インデクス201から文字連鎖“abc”および“bcd”に対応するインデクスが読み込まれる。これらのインデクスにおける位置ポインタが文字連鎖位置“0”と文字連鎖位置“1”のようにその位置関係の連続するものが、すなわち隣接するものが抽出され検索結果として出力される。本図では、文字連鎖“abc”のポインタpt1と文字連鎖“bcd”のポインタpt3が示す位置が隣接するため、文字連鎖“abcd”が文字列として存在することが分かり、テキスト中に検索ターム“abcd”が出現することが示される。
【0003】
公知例1において、インデクスは登録テキストの数倍の容量となるため、大規模な文書データベースを対象とした場合には、磁気ディスク装置などの大容量な二次記憶装置に格納する必要がある。ここで、このインデクスを磁気ディスク装置上に作成する方法として従来より用いられている方法を以下に示す。
【0004】
(1)1文字毎の逐次登録方法(以下、公知例2と呼ぶ)
公知例2は、登録するテキストの先頭から1つずつ所定の部分文字列を抽出し、その部分文字列の出現位置を示す情報を対応するインデクスに順次格納していく方法である。図3に本公知例における登録方法を示す。本図では所定の部分文字列として長さ1の部分文字列を用いている。また、本図においては部分文字列の出現位置を示す情報として、文書番号と文字位置を用いている。
【0005】
まず、登録するテキスト100の先頭から1つ目の部分文字列“海”を抽出し、その部分文字列が出現する文書の番号“023”および文字位置“0”を磁気ディスク装置102上の“海”のインデクス106に追加する。次に、2つ目の部分文字列“洋”を抽出し、その部分文字列が出現する文書の番号“023”および文字位置“1”を磁気ディスク装置102上の“洋”のインデクス300に追加する。この処理を登録するテキスト100の先頭から末尾まで繰り返す。すなわち、登録するテキストの文字数分の磁気ディスク装置102上のインデクスへの書込みが発生する。
【0006】
本公知例における登録方法は、特にインデクス作成用の主メモリは必要なく、単純な処理で登録を実現することができる。しかし、インデクスへの出現位置情報の格納の際に、登録するテキストの文字数分、磁気ディスク装置へのランダムな書込みが発生するため、登録処理に長時間を要する。
【0007】
(2)主メモリを使用した複数件一括登録方法(以下、公知例3と呼ぶ)
主メモリを使用すれば、インデクスのまとめ書きが可能となり、磁気ディスク装置への書込回数を削減することができる。そのため、公知例3では、登録するテキストに出現する可能性のある部分文字列全てに対してワークインデクス用の主メモリを割り当て、テキストから抽出した部分文字列の出現位置を示す情報を一時的にワークインデクスに格納する。複数件のテキストについて処理を行った後、ワークインデクス内の出現位置情報を磁気ディスク装置上のインデクスへ追加する。
【0008】
図4に本公知例における登録方法を示す。本図では所定の部分文字列として長さ1の部分文字列を用いている。また、本図においては部分文字列の出現位置を示す情報として、文書番号と文字位置を用いている。
【0009】
まず、登録するテキスト100の先頭から1つ目の部分文字列“海”を抽出し、その部分文字列が出現する文書の番号“023”および文字位置“0”を主メモリ101上の“海”のワークインデクス104に格納する。次に、2つ目の部分文字列“洋”を抽出し、その部分文字列が出現する文書のその部分文字列が出現する文書の番号“023”および文字位置“1”を主メモリ101上の“洋”のワークインデクス105に格納する。この処理を登録するテキスト100全ての先頭から末尾まで繰り返す。以上の処理の間にいずれかのワークインデクスがいっぱいになった場合には、一時的に部分文字列の抽出処理を中断し、主メモリ101上のワークインデクスに格納されている出現位置情報を磁気ディスク装置102上のインデクスに追加する。例えば、部分文字列“海”のワークインデクス104に格納されている出現位置情報を、磁気ディスク装置102上の“海”のインデクス106に追加する。本処理は部分文字列の抽出処理が全て終了した際にも行う。
【0010】
本公知例における登録方法では、主メモリ上のワークインデクスに出現位置情報を複数件分まとめてから磁気ディスク装置上のインデクスへ追加するため、磁気ディスク装置への書込回数を削減することが可能となる。
【0011】
【発明が解決しようとする課題】
以上説明した公知例3に示された登録方法によると、テキストから抽出した部分文字列の出現位置情報を、主メモリ上のワークインデクスに複数件分まとめてから磁気ディスク装置上のインデクスへ追加するため、磁気ディスク装置への書込回数を削減することが可能となる。しかし、登録テキストにおける部分文字列の出現頻度は事前には分からない。そこで、登録テキストに出現する可能性のある部分文字列全てに対し、同じようにワークインデクスを割り当てるとすると、ワークインデクスとして使用可能な主メモリ容量が少ない場合には、個々の部分文字列に割り当てられるワークインデクス容量が少なくなり、まとめて処理できる件数が減ることになる。その分、磁気ディスク装置への書込みが多発することになるため、テキストの登録に時間が掛かることになる。
【0012】
こうした問題に対し、本発明では以下の課題を解決することを目的とする。すなわち、本発明の目的は、使用可能な主メモリ容量が少ない場合でも、その主メモリを効率的に用いて大量件数のインデクスのまとめ書きを行うことによって、大量文書の登録を高速に行うことが可能な文書登録検索システムを提供することにある。
【0013】
【課題を解決するための手段】
上記課題を解決するために、文書登録処理として、
(ステップ1)登録するテキストの先頭から1文字ずつ走査し、テキストに存在する所定の部分文字列のインデクス容量を算出するインデクス容量算出ステップ(ステップ2)上記インデクス容量算出ステップで算出したインデクス容量に応じて、各部分文字列に対して主メモリ上のワークインデクスを配分するワークインデクス初期化ステップ
(ステップ3)上記登録テキストを再び走査し、各部分文字列のテキストにおける出現位置を示す情報を、上記ワークインデクス初期化ステップで配分されたワークインデクスに格納するワークインデクス作成ステップ
(ステップ4)上記ワークインデクス作成ステップでワークインデクスに格納した各部分文字列の出現位置を示す情報を、磁気ディスク装置上のインデクスに追加するインデクス作成ステップ
を含む文書登録方法を用いる。
【0014】
以下、この文書登録方法による処理内容について図1を用いて順に説明する。本図では所定の部分文字列として長さ1の部分文字列を用いている。また、本図においては部分文字列の出現位置を示す情報として、文書番号と文字位置を用い、それぞれ4バイトとしてインデクスに格納している。
【0015】
本文書登録方法ではまず、登録するテキスト100を走査し、テキスト100に存在する各部分文字列の出現位置情報をインデクス化した際のインデクス容量を算出し、インデクス容量テーブル103に格納する。図1に示す例の場合、テキスト100に存在する部分文字列“海”は〈文書番号“023”、文字位置“0”〉、〈文書番号“024”、文字位置“2”〉および〈文書番号“025
”、文字位置“3”〉に出現しており、インデクス容量は24バイトとなるため、その“24”をインデクス容量テーブル103に格納する。次に、算出されたインデクス容量に応じて、各部分文字列に対して主メモリ上のワークインデクスを配分する。たとえば、部分文字列“海”に対してはインデクス容量として算出された24バイトのワークインデクスを割り当てる。次に、再び登録テキスト100の先頭から1文字ずつ走査し、テキスト100に存在する各部分文字列の出現位置を示す情報を該当するワークインデクスに格納する。例えば、図1に示す例の場合、まずテキスト100から部分文字列“海”を抽出し、その出現位置を示す情報〈文書番号“023”、文字位置“0”〉を主メモリ101上の“海”のワークインデクス104に格納する。次にテキスト100から次の部分文字列“洋”を抽出し、その出現位置を示す情報〈文書番号“023”、文字位置“1”〉を主メモリ101上の“洋”のワークインデクス105に格納する。最後に、主メモリ101上のワークインデクスに格納した各部分文字列の出現位置情報を、磁気ディスク装置102上のインデクスに追加する。例えば、部分文字列“海”に対応するワークインデクス104に格納されている出現位置を示す情報〈文書番号“023”、文字位置“0”〉、〈文書番号“024”、文字位置“2”〉および〈文書番号“025”、文字位置“3”〉を、磁気ディスク装置102上の部分文字列“海”に対応するインデクス106に格納する。
【0016】
本方式では、登録するテキストを予め一度走査することによって、登録テキスト中に存在する各部分文字列のインデクス容量を算出し、その容量に応じて主メモリ上のワークインデクスを配分している。このように、ワークインデクスとして使用可能な主メモリ容量が少ない場合でも、必要のない部分文字列に対してワークインデクスを割り当てることなく、効率的に主メモリを利用して、大量件数のテキストから作成されたインデクスをまとめて磁気ディスク装置へ書き込んでいる。その結果、磁気ディスク装置への書込回数を削減することができるため、使用可能な主メモリ容量が少ない場合でも文書登録時間を短縮することが可能となる。
【0017】
【発明の実施の形態】
以下、本発明の第一の実施例について図5を用いて説明する。
【0018】
本発明を適用した文書登録検索システムは、ディスプレイ500、キーボード501、中央演算処理装置(CPU)502、テキスト100およびインデクス503を格納する二次記憶装置の一つである磁気ディスク装置102、フロッピディスクドライバ(FDD)504、主メモリ101から構成される。バス506にはCPU502、磁気ディスク装置102、FDD504および主メモリ101が接続されている。フロッピディスク505に格納されている情報は、FDD504によりアクセスされる。
【0019】
主メモリ101には、文書登録制御プログラム507、テキスト登録プログラム509、インデクス作成登録プログラム510、検索制御プログラム508、インデクス検索プログラム515が格納されるとともにワークインデクス516、インデクス容量テーブル103およびワークエリア517が確保される。インデクス作成登録プログラム510はインデクス容量算出プログラム511、ワークインデクス初期化プログラム512、ワークインデクス作成プログラム513およびインデクス作成プログラム514で構成される。文書登録制御プログラム507および検索制御プログラム508はユーザによるキーボード501からの指示に応じてCPU502で実行される。
【0020】
以下、本実施例における登録処理と検索処理について説明する。登録の際は図6のPAD(Problem Analysis Diagram)図に示すように、ステップ600でキーボード501からコマンドを入力し、文書登録制御プログラム507を起動する。次に、ステップ601で上記文書登録制御プログラム507はテキスト登録プログラム509を起動して、FDD504に挿入されたフロッピディスク505から登録文書のテキストデータをワークエリア517に読み込み、これをテキスト100として磁気ディスク装置102へ格納する。テキストデータはフロッピディスクを用いて入力するだけに限らず、通信回線やCD−ROM装置(図5には示していない)等を用いて他の装置から入力するような構成をとることも可能である。最後に、ステップ602で文書登録制御プログラム507は、インデクス作成登録プログラム510を起動して、テキスト100から所定の部分文字列とテキスト100における出現位置を示す情報を抽出し、インデクス503として磁気ディスク装置102へ格納する。
【0021】
インデクス作成登録プログラム510は図7に示すように、まずステップ700で、ステップ701からステップ704の一連の処理を、全ての登録テキストからインデクスを作成するまで繰り返す。次に、ステップ701でインデクス容量算出プログラム511を起動し、磁気ディスク装置102に格納されたテキスト100をワークエリア517に読み込む。そして、このテキスト100に出現する所定の部分文字列のインデクス容量を算出する。本処理は、各部分文字列のインデクス容量の合計がワークインデクスとして使用可能な主メモリ容量に収まらなくなったところで終了する。次に、ステップ702でワークインデクス初期化プログラム512を起動し、前記インデクス容量算出プログラム511によって算出されたインデクス容量に応じて、各部分文字列にワークインデクス516を配分する。次に、ステップ703でワークインデクス作成プログラム513を起動し、テキスト100を再度ワークエリア517に読み込む。そして、このテキスト100から所定の部分文字列とそのテキスト100における出現位置情報を抽出し、それをインデクスとしてワークインデクス516に格納する。本処理は、ステップ701でインデクス容量算出プログラム511が処理したテキスト全てに対して行われる。最後に、ステップ704でインデクス作成プログラム514を起動し、ワークインデクス516に格納されている出現位置情報をインデクス503として磁気ディスク装置102へ格納する。
【0022】
検索の際には、検索制御プログラム508がキーボード501から入力された検索条件式をインデクス検索プログラム515へ渡す。このインデクス検索プログラム515の処理内容は公知例1と同様である。
【0023】
以上が本発明の文書登録方法を適用した第一の実施例の概略である。
【0024】
以下、図7に示した本実施例におけるインデクス作成登録プログラム510の処理手順について詳細に説明する。
【0025】
まず、図7に示すインデクス作成登録プログラム510のステップ701におけるインデクス容量算出プログラム511の処理について図8を用いて説明する。インデクス容量算出プログラム511はインデクス作成登録プログラム510によって起動される。ここでは、まずステップ800で、図1に示すインデクス容量テーブル103を“0”にリセットする。リセット後のインデクス容量テーブル103を図9に示す。インデクス容量テーブル103には、登録テキストに出現する可能性のある全ての所定の部分文字列に対してインデクス容量格納領域が設けられており、そのインデクス容量格納領域を全て“0”にリセットする。次に、ステップ801で各部分文字列のインデクス容量の合計がワークインデクスとして使用可能な主メモリ容量に収まらなくなるか、全ての登録テキストからインデクス容量を算出するまで、ステップ802からステップ804の一連の処理を繰り返す。本処理では、まずステップ802で、磁気ディスク装置102からテキスト100を一文書分ワークエリア517に読み込む。そして、ステップ803で、ステップ802でワークエリア517に読み込んだテキスト100から所定の部分文字列とその部分文字列のテキスト100における出現位置情報を抽出する。最後に、ステップ804で、ステップ803で抽出した部分文字列の出現位置情報の容量をインデクス容量テーブル103の該当するインデクス容量格納領域に加算する。ステップ802からステップ804の一連の処理を図10を用いて具体的に説明する。本図においては、所定の部分文字列として1文字の部分文字列を用いている。また、出現位置を示す情報としては文書番号と文字位置を用い、それぞれ4バイトとしてインデクスに格納している。まず、ステップ802で、登録するテキスト100を一文書分ワークエリア517に読み込む。図10では、登録テキストとして文書番号023「海洋には数万種の微生物が生息する…」が読み込まれたとする。次に、ステップ803で、ステップ802でワークエリア517に読み込んだテキスト100から所定の部分文字列とその部分文字列のテキスト100における出現位置情報を抽出する。図10に示す例では、文書番号023のテキストから部分文字列と出現位置として“海〈023,0〉、洋〈023,1〉、に〈023,2〉、は〈023,3〉、数〈023,4〉…”が抽出される。ここで、“海〈023,0〉”とは部分文字列“海”が文書番号“023”のテキストの先頭に出現していることを示しており、“洋〈023、1〉”とは部分文字列“洋”が文書番号“023”のテキストの先頭の次の文字位置に出現していることを示す。最後に、ステップ804で、ステップ803で抽出した部分文字列の出現位置情報の容量をインデクス容量テーブル103の該当するインデクス容量格納領域に加算する。図10に示す例では、文書番号、文字位置としてそれぞれ4バイトを用いているので、“海”、“洋”、“に”、“は”、“数”のインデクス容量テーブル103における該当箇所に文書番号分の4バイトと文字位置分の4バイトをそれぞれ加算する。
【0026】
以上が、図7のインデクス作成登録プログラム510のステップ701におけるインデクス容量算出プログラム511の詳細な処理内容である。
【0027】
次に、図7に示すインデクス作成登録プログラム510のステップ702におけるワークインデクス初期化プログラム512の処理について説明する。ワークインデクス初期化プログラム512はインデクス作成登録プログラム510によってインデクス容量算出プログラム511の次に起動される。ここでは、インデクス容量算出プログラム511によって算出した各部分文字列のインデクス容量に応じて、各部分文字列にワークインデクス516を配分する。例えば、インデクス容量算出プログラム511によって、図11に示すように各部分文字列のインデクス容量が算出されたとすると、部分文字列“に”に対して16バイト、部分文字列“は”に対して24バイト、部分文字列“海”に対して24バイト、部分文字列“洋”に対して8バイト、部分文字列“数”に対して8バイト、…と主メモリ101上のワークインデクス516を配分する。
【0028】
次に、図7に示すインデクス作成登録プログラム510のステップ703におけるワークインデクス作成プログラム513の処理について図12を用いて説明する。ワークインデクス作成プログラム513はインデクス作成登録プログラム510によってワークインデクス初期化プログラム512の次に起動される。ここでは、まずステップ1200で、インデクス容量算出プログラム511でインデクス算出処理を行ったテキストについて、ステップ1201からステップ1203の一連の処理を繰り返す。本処理では、まずステップ1201で、磁気ディスク装置102からテキスト100を一文書分ワークエリア517に読み込む。そして、ステップ1202で、ステップ1201でワークエリア517に読み込んだテキスト100から所定の部分文字列とその部分文字列のテキスト100における出現位置情報を抽出する。最後に、ステップ1203で、ステップ1202で抽出した部分文字列の出現位置情報をインデクスとして主メモリ101上のワークインデクス516に格納する。ステップ1201からステップ1203の一連の処理を図13を用いて具体的に説明する。本図においては、所定の部分文字列として1文字の部分文字列を用いている。また、出現位置を示す情報として文書番号と文字位置を用いている。まず、ステップ1201で、登録するテキスト100を一文書分ワークエリア517に読み込む。図13では、登録テキストとして文書番号023「海洋には数万種の微生物が生息する…」が読み込まれたとする。次に、ステップ1202で、ステップ1201でワークエリア517に読み込んだテキスト100から所定の部分文字列とその部分文字列のテキスト100における出現位置情報を抽出する。図13に示す例では、文書番号023のテキストから部分文字列とその出現位置情報として“海〈023,0〉、洋〈023,1〉、に〈023,2〉、は〈023,3〉、数〈023,4〉…”が抽出される。ここで、“海〈023,0〉”とは部分文字列“海”が文書番号“023”のテキストの先頭に出現していることを示しており、“洋〈023,1〉”とは部分文字列“洋”が文書番号“023”のテキストの先頭の次の文字位置に出現していることを示す。最後に、ステップ1203で、ステップ1202で抽出した部分文字列の出現位置情報をインデクスとして主メモリ101上のワークインデクス516に格納する。図13に示す例では、部分文字列“海”の出現位置情報として、文書番号“023”と文字位置“0”が抽出されているので、それらの情報を“海”のワークインデクス106に格納する。
【0029】
以上が、図7のインデクス作成登録プログラム510のステップ703におけるワークインデクス作成プログラム513の詳細な処理内容である。
【0030】
最後に、図7に示すインデクス作成登録プログラム510のステップ704におけるインデクス作成プログラム514の処理について図14を用いて説明する。インデクス作成プログラム514はインデクス作成登録プログラム510によってワークインデクス作成プログラム513の次に起動される。ここでは、まずステップ1400で、ワークインデクス作成プログラム513でワークインデクスを作成した部分文字列について、ステップ1401を繰り返す。このステップ1401では、主メモリ101上のワークインデクスを磁気ディスク装置102上の該当するインデクス503に追加する。図1に示す例を用いて、本処理を具体的に説明する。例えば、部分文字列“海”のワークインデクス104には、文書番号“023”とそれに対応して文字位置“0”、文書番号“024”とそれに対応して文字位置“2”、文書番号“025”とそれに対応して文字位置“3”が格納されているので、それらの情報を磁気ディスク装置102上の“海”のインデクス106に追加する。
【0031】
以上が、図7のインデクス作成登録プログラム510のステップ704におけるインデクス作成プログラム514の詳細な処理内容である。
【0032】
以上のように、本発明では登録するテキストから作成される各部分文字列のインデクス容量を予め算出しておき、その容量に応じて主メモリの使用領域を各部分文字列に配分することによって、主メモリを無駄なく、効率的に用いている。その結果、主メモリに一時的に格納しておけるインデクス容量が増え、すなわち磁気ディスク装置へ一度に書き込めるインデクス容量が増えるため、磁気ディスク装置への書き込み回数を削減でき、登録処理の高速化が実現できる。なお、本実施例では所定の部分文字列として1文字の部分文字列を用いているが、2文字以上の部分文字列を用いる場合でも同様の処理で実現できる。また、所定の部分文字列として、単語などのように部分文字列によってその長さが異なるようなものを用いてもよい。
【0033】
以上により、使用可能な主メモリ容量が少ない場合でも、その主メモリを効率的に用いて大量件数のインデクスのまとめ書きを行うことによって、大量件数の文書登録を高速に行うことが可能となる。
【0034】
以下、本発明の第二の実施例について説明する。
【0035】
本実施例はインデクスの作成登録処理が二回以上行われる場合に、前回のインデクス作成登録処理で作成したインデクスの容量を統計情報として利用して、各部分文字列に対する主メモリ容量の配分を行う方法である。この方法によれば、一番最初に行われるインデクス作成登録処理時のみ、インデクス容量算出処理を実行すればよく、二回目以降のインデクス作成登録処理におけるインデクス容量算出処理が不要となる。この結果、二回目以降のインデクス作成登録処理においてインデクス容量を算出するための文書読込み、走査処理を削減することができるため、大量件数の高速な文書登録を実現できることになる。
【0036】
本実施例は基本的に第一の実施例(図5)と同様の構成をとるが、その中のインデクス作成登録制御プログラム510が異なる。このインデクス作成登録制御プログラム510は図15に示すような構成となる。インデクス作成登録プログラム510aはインデクス容量算出プログラム511、ワークインデクス初期化プログラム512、ワークインデクス更新プログラム1500、ワークインデクス作成プログラム513、予備メモリ利用型ワークインデクス作成プログラム1501、インデクス容量テーブル更新プログラム1502およびインデクス作成プログラム514で構成される。
【0037】
以下、第一の実施例と異なるインデクス作成登録プログラム510aの処理内容について説明する。
【0038】
インデクス作成登録プログラム510aでは、図16に示すように、まずステップ1600で、図7に示すステップ701からステップ704の一連の処理を実行する。本処理の内容は第一の実施例で詳細に述べたので省略する。次に、ステップ1601で、全ての登録テキストからインデクスを作成するまで、ステップ1602からステップ1605の一連の処理を繰り返す。ここで、もしステップ1600で全ての登録テキストに対する処理が終了している場合には、ステップ1602からステップ1605の一連の処理は行われない。繰り返し処理においては、まずステップ1602で、ワークインデクス更新プログラム1500を起動し、ワークインデクス516として使用可能な主メモリ101から予め定められた割合で予備インデクス用にワークインデクス516を配分する。そして、インデクス容量テーブル103に格納されているインデクス容量に比例して、各部分文字列に残りのワークインデクス516を配分する。次に、ステップ1603で予備インデクス利用型ワークインデクス作成プログラム1501を起動し、テキスト100をワークエリア517に読み込む。そして、このテキスト100から所定の部分文字列とその部分文字列のテキスト100における出現位置情報を抽出し、それをインデクスとしてワークインデクス516に格納する。本処理において、前回のインデクス作成登録処理で出現しなかった部分文字列が存在した場合には、その部分文字列に対してワークインデクスが割り当てられていないため、予備インデクスを利用して出現位置情報を格納する。次に、ステップ1604でインデクス容量テーブル更新プログラム1502を起動し、インデクス容量テーブル103に格納してあるインデクス容量を、予備インデクス利用型ワークインデクス作成プログラム1501によって作成されたワークインデクス容量で書き換える。最後に、ステップ1605でインデクス作成プログラム514を起動し、ワークインデクス516に格納されている出現位置情報をインデクス503として磁気ディスク装置102へ格納する。
【0039】
以上が本発明の文書登録方法を適用した第二の実施例の概略である。
【0040】
以下、図16に示した本実施例におけるインデクス作成登録プログラム510aの処理内容について、第一の実施例と処理内容が異なるステップ1602におけるワークインデクス更新プログラム1500、ステップ1603における予備インデクス利用型ワークインデクス作成プログラム1501およびステップ1604におけるインデクス容量テーブル更新プログラム1502の処理内容を詳細に説明する。
【0041】
まず、図16に示すインデクス作成登録プログラム510aのステップ1602におけるワークインデクス更新プログラム1500の処理について図17を用いて説明する。ワークインデクス更新プログラム1500はインデクス作成登録プログラム510aによって起動される。ここでは、まずステップ1700で、ワークインデクス516として使用可能な主メモリ101から予め定められた割合で予備インデクス用にワークインデクス516を配分する。この予め定められた割合としては、ワークインデクス516として使用可能な主メモリ101容量の0.1%などを用いる。次に、ステップ1701で、インデクス容量テーブル103に格納されているインデクス容量に比例して、各部分文字列に残りのワークインデクス516を配分する。図18に本プログラムによって配分されたワークインデクス516の例を示す。本図では、前回インデクス作成登録処理を行った際にインデクスを作成した部分文字列“に”、“は”、“海”、“洋”、“数”、…と予備インデクス用にそれぞれワークインデクス516が配分されている。
【0042】
次に、図16に示すインデクス作成登録プログラム510aのステップ1603における予備インデクス利用型ワークインデクス作成プログラム1501の処理について図19を用いて説明する。予備インデクス利用型ワークインデクス作成プログラム1501はインデクス作成登録プログラム510aによってワークインデクス更新プログラム1500の次に起動される。ここでは、まずステップ1900で、いずれかのワークインデクスがいっぱいになるか、全ての登録テキストについて終了するまで、ステップ1901からステップ1906の一連の処理を繰り返す。本処理では、まずステップ1901で、磁気ディスク装置102からテキスト100を一文書分ワークエリア517に読み込む。そして、ステップ1902で、ステップ1901でワークエリア517に読み込んだテキスト100から所定の部分文字列とその部分文字列のテキスト100における出現位置情報を抽出する。そして、ステップ1903で、抽出した部分文字列について、ステップ1904からステップ1906の一連の処理を繰り返す。この繰り返し処理の中で、まずステップ1904で、処理対象である部分文字列に対してワークインデクス516が割り当てられているかどうかを判定する。もし、割り当てられていない場合には、ステップ1905で、予備インデクスとして確保してある主メモリを101を処理対象である部分文字列のワークインデクスとして割り当てる。最後に、ステップ1906で、抽出した部分文字列の出現位置情報をインデクスとして主メモリ101上のワークインデクス516に格納する。ステップ1901からステップ1906の一連の処理内容について図20を用いて具体的に説明する。本図においては、所定の部分文字列として1文字の部分文字列を用いている。また、出現位置情報として文書番号と文字位置を用いている。まず、ステップ1901で、登録するテキスト100を一文書分ワークエリア517に読み込む。図20では、登録テキストとして文書番号026「海で誕生した最初の生命は非常に…」が読み込まれたとする。次に、ステップ1902で、ステップ1901でワークエリア517に読み込んだテキスト100から所定の部分文字列とその部分文字列のテキスト100における出現位置情報を抽出する。図20に示す例では、文書番号026のテキストから部分文字列と出現位置として“海〈026,0〉、で〈026,1〉、誕〈026,2〉、…、は〈026,11〉、…”が抽出される。ここで、“海〈026,0〉”とは部分文字列“海”が文書番号“026”のテキストの先頭に出現していることを示しており、“で〈026,1〉”とは部分文字列“で”が文書番号“026”のテキストの先頭の次の文字位置に出現していることを示す。そして、ステップ1903で、抽出した部分文字列について、ステップ1904からステップ1906の一連の処理を繰り返す。この繰り返し処理の中で、まずステップ1904で、処理対象である部分文字列に対してワークインデクス516が割り当てられているかどうかを判定する。もし、割り当てられていない場合には、ステップ1905で、予備インデクスとして確保してある主メモリを101を処理対象である部分文字列のワークインデクスとして割り当てる。例えば、図20に示す例の場合、抽出された部分文字列の中で、“海”、“で”、“は”、…は、前回のインデクス作成登録処理の対象となったテキスト100中に出現していたので、ワークインデクス516が配分されている。しかし、部分文字列“誕”は前回のインデクス作成登録処理の対象となったテキスト100中に出現していなかったので、ワークインデクス516が配分されていない。このような部分文字列に対しては、確保しておいた予備インデクス2000を用いるようにする。最後に、ステップ1906で
、抽出した部分文字列の出現位置情報をインデクスとして主メモリ101上のワークインデクス516に格納する。図20に示す例では、部分文字列“海”の出現位置情報として、文書番号“026”と文字位置“0”が抽出されているので、それらの情報を“海”のワークインデクス106に格納する。
【0043】
最後に、図16に示すインデクス作成登録プログラム510aのステップ1604におけるインデクス容量テーブル更新プログラム1502の処理について説明する。インデクス容量テーブル更新プログラム1502はインデクス作成登録プログラム510aによって予備インデクス利用型ワークインデクス作成プログラム1501の次に起動される。ここでは、インデクス容量テーブル103に格納してあるインデクス容量を、予備インデクス利用型ワークインデクス作成プログラム1501によって作成されたワークインデクス容量で書き換える。図21にその具体例を示す。例えば、前回のインデクス作成登録処理で作成された部分文字列“海”のインデクス容量は24バイトだったので、インデクス容量テーブル103の“海”に該当するインデクス容量格納領域には“24”が格納されている。ここで、本図に示すように、今回のインデクス作成登録処理での部分文字列“海”のワークインデクス106に格納された情報の容量は、文書番号、文字位置ともに4バイトとすると16バイトであるため、書き換え後のインデクス容量テーブルには“16”が格納される。また、前回のインデクス作成登録処理では部分文字列“誕”のインデクスは作成されなかったため、該当するインデクス容量格納領域には“0”が格納されているが、今回のインデクス作成登録処理では8バイトのインデクスが作成されたので、“8”が格納される。
【0044】
以上のように、本発明ではインデクスの作成登録処理が二回以上行われる場合に、前回のインデクス作成登録処理で作成したインデクスの容量を統計情報を利用して、各部分文字列に対する主メモリ容量の配分を行っている。その結果、二回目以降のインデクス作成登録処理におけるインデクス容量を算出するための文書読込み、走査処理を削減できるため、大量件数の高速な文書登録を実現できる。なお、本実施例では所定の部分文字列として1文字の部分文字列を用いているが、2文字以上の部分文字列を用いる場合でも同様の処理で実現できる。また、所定の部分文字列として、単語などのように部分文字列によってその長さが異なるようなものを用いてもよい。
【0045】
以上により、使用可能な主メモリ容量が少ない場合でも、文書の読込み、走査処理を削減しつつ、主メモリを効率的に用いて大量件数のインデクスのまとめ書きを行うことによって、大量件数の文書登録を高速に行うことが可能となる。
【0046】
【発明の効果】
本発明によれば、登録する文書を一度走査して登録文書中に存在する部分文字列のインデクス容量を予め算出し、その容量に応じて主メモリを割り当てることによって、主メモリを効率的に用いることができるため、大量件数のインデクスのまとめ書きを実現することができる。その結果、使用可能な主メモリ容量が少ない場合でも、高速な大量件数の文書登録が行える文書登録検索システムを提供することが可能となる。
【図面の簡単な説明】
【図1】本発明の処理内容を示す図
【図2】公知例1「特開昭64−35627号」の構成を示す図
【図3】公知例2の構成を示す図
【図4】公知例3の構成を示す図
【図5】本発明の第一の実施例の構成を示す図
【図6】文書登録制御プログラム507の処理内容を示すPAD図
【図7】インデクス作成登録プログラム510の処理内容を示すPAD図
【図8】インデクス容量算出プログラム511の処理内容を示すPAD図
【図9】インデクス容量テーブル103の説明図
【図10】インデクス容量算出方法の説明図
【図11】ワークインデクス初期化方法の説明図
【図12】ワークインデクス作成プログラム513の処理内容を示すPAD図
【図13】ワークインデクス作成方法の説明図
【図14】インデクス作成プログラム514の処理内容を示すPAD図
【図15】本発明の第ニの実施例の構成を示す図
【図16】インデクス作成登録プログラム510aの処理内容を示すPAD図
【図17】ワークインデクス更新プログラム1500の処理内容を示すPAD図
【図18】ワークインデクス更新方法の説明図
【図19】予備インデクス利用型ワークインデクス作成プログラム1501の処理内容を示すPAD図
【図20】予備インデクスを利用したワークインデクス作成方法の説明図
【図21】インデクス容量テーブル更新方法の説明図
【符号の説明】
100…テキスト、 101…主メモリ、 102…磁気ディスク装置、
103…インデクス容量テーブル、
104…部分文字列“海”のワークインデクス、
105…部分文字列“洋”のワークインデクス、
106…部分文字列“海”のインデクス、 200…インデクス作成部、
201…文字連鎖インデクス、 202…文字連鎖抽出部、
203…インデクス検索部、 300…部分文字列“洋”のインデクス、
500…ディスプレイ、501…キーボード、502…CPU、
503…インデクス、 504…フロッピディスクドライバ、
505…フロッピディスク、 506…バス、
507…文書登録制御プログラム、508…検索制御プログラム、
509…テキスト登録プログラム、510…インデクス作成登録プログラム、
511…インデクス容量算出プログラム、
512…ワークインデクス初期化プログラム、
513…ワークインデクス作成プログラム、
514…インデクス作成プログラム、515…インデクス検索プログラム、
516…ワークインデクス、 517…ワークエリア、
510a…インデクス作成登録プログラム、
1500…ワークインデクス更新プログラム、
1501…予備メモリ利用型ワークインデクス作成プログラム、
1502…インデクス容量テーブル更新プログラム、
2000…予備インデクス。

Claims (8)

  1. 文字情報を文字コードとして蓄積したテキストデータベースを対象として、
    対象テキストデータから所定の部分文字列と、該部分文字列の対象テキストデータにおける出現位置情報を抽出し、該出現位置情報をインデクスとして二次記憶装置に格納するインデクス作成登録ステップと、
    検索タームから所定の部分文字列を抽出し、該部分文字列に対応するインデクスを読み出し、該検索タームにおける部分文字列と同じ位置関係を持つ出現位置情報を抽出するインデクス検索ステップを有する文書登録検索方法において、
    一つ以上のテキストデータにおける所定の部分文字列の出現位置情報の容量を加算することによって算出した該部分文字列のインデクス容量に基づき、主メモリ上にインデクス一時格納領域を確保するワークインデクス初期化ステップと、
    前記一つ以上のテキストデータから所定の部分文字列と、該部分文字列の対象テキストデータにおける出現位置情報を抽出し、該出現位置情報を一時的に前記インデクス一時格納領域に格納するワークインデクス作成ステップと、
    前記インデクス一時格納領域に格納した一つ以上のテキストデータから抽出した前記出現位置情報をインデクスとして二次記憶装置に格納するインデクス作成ステップとを有することを特徴とする文書登録検索方法。
  2. 請求項1記載の文書登録検索方法において、
    前記出現位置情報として、対象テキストデータにおける文字位置情報及びテキスト指定情報を含む位置情報を用いることを特徴とする文書登録検索方法。
  3. 文字情報を文字コードとして蓄積したテキストデータベースを対象として、
    対象テキストデータから所定の部分文字列と、該部分文字列の対象テキストデータにおける出現位置情報を抽出し、該出現位置情報をインデクスとして二次記憶装置に格納するインデクス作成登録ステップと、
    検索タームから所定の部分文字列を抽出し、該部分文字列に対応するインデクスを読み出し、該検索タームにおける部分文字列と同じ位置関係を持つ出現位置情報を抽出するインデクス検索ステップを有する文書登録検索方法において、
    一つ以上のテキストデータにおける所定の部分文字列の出現位置情報の容量を加算することによって算出したインデクス容量を記憶するインデクス容量記憶ステップと、
    上記記憶された該部分文字列のインデクス容量に基づき、主メモリ上にインデクス一時格納領域を確保するワークインデクス初期化ステップと、
    前記一つ以上のテキストデータから所定の部分文字列と、該部分文字列の対象テキストデータにおける出現位置情報を抽出し、該出現位置情報を一時的に前記インデクス一時格納領域に格納するワークインデクス作成ステップと、
    前記インデクス一時格納領域に格納した一つ以上のテキストデータから抽出した前記出現位置情報をインデクスとして二次記憶装置に格納するインデクス作成ステップとを有することを特徴とする文書登録検索方法。
  4. 請求項3記載の文書登録検索方法において、
    前記出現位置情報として、対象テキストにおける文字位置情報及びテキスト指定情報を含む位置情報を用いることを特徴とする文書登録検索方法。
  5. 文字情報を文字コードとして蓄積したテキストデータベースを対象として、
    対象テキストデータから所定の部分文字列と、該部分文字列の対象テキストデータにおける出現位置情報を抽出し、該出現位置情報をインデクスとして二次記憶装置に格納するインデクス作成登録手段と、
    検索タームから所定の部分文字列を抽出し、該部分文字列に対応するインデクスを読み 出し、該検索タームにおける部分文字列と同じ位置関係を持つ出現位置情報を抽出するインデクス検索手段を有する文書登録検索装置において、
    一つ以上のテキストデータにおける所定の部分文字列の出現位置情報の容量を加算することによって算出した該部分文字列のインデクス容量に基づき、主メモリ上にインデクス一時格納領域を確保するワークインデクス初期化手段と、
    前記一つ以上のテキストデータから所定の部分文字列と、該部分文字列の対象テキストデータにおける出現位置情報を抽出し、該出現位置情報を一時的に前記インデクス一時格納領域に格納するワークインデクス作成手段と、
    前記インデクス一時格納領域に格納した一つ以上のテキストデータから抽出した前記出現位置情報をインデクスとして二次記憶装置に格納するインデクス作成手段とを有することを特徴とする文書登録検索装置。
  6. 請求項5記載の文書登録検索装置において、
    前記出現位置情報として、対象テキストデータにおける文字位置情報及びテキスト指定情報を含む位置情報を用いることを特徴とする文書登録検索装置。
  7. 文字情報を文字コードとして蓄積したテキストデータベースを対象として、
    対象テキストデータから所定の部分文字列と、該部分文字列の対象テキストデータにおける出現位置情報を抽出し、該出現位置情報をインデクスとして二次記憶装置に格納するインデクス作成登録手段と、
    検索タームから所定の部分文字列を抽出し、該部分文字列に対応するインデクスを読み出し、該検索タームにおける部分文字列と同じ位置関係を持つ出現位置情報を抽出するインデクス検索手段を有する文書登録検索装置において、
    一つ以上のテキストデータにおける所定の部分文字列の出現位置情報の容量を加算することによって算出したインデクス容量を記憶するインデクス容量記憶手段と、
    上記記憶された該部分文字列のインデクス容量に基づき、主メモリ上にインデクス一時格納領域を確保するワークインデクス初期化手段と、
    前記一つ以上のテキストデータから所定の部分文字列と、該部分文字列の対象テキストデータにおける出現位置情報を抽出し、該出現位置情報を一時的に前記インデクス一時格納領域に格納するワークインデクス作成手段と、
    前記インデクス一時格納領域に格納した一つ以上のテキストデータから抽出した前記出現位置情報をインデクスとして二次記憶装置に格納するインデクス作成手段とを有することを特徴とする文書登録検索装置。
  8. 請求項7記載の文書登録検索装置において、
    前記出現位置情報として、対象テキストにおける文字位置情報及びテキスト指定情報を含む位置情報を用いることを特徴とする文書登録検索装置。
JP19540997A 1997-07-22 1997-07-22 高速文書登録検索方法および装置 Expired - Fee Related JP3564952B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP19540997A JP3564952B2 (ja) 1997-07-22 1997-07-22 高速文書登録検索方法および装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP19540997A JP3564952B2 (ja) 1997-07-22 1997-07-22 高速文書登録検索方法および装置

Publications (2)

Publication Number Publication Date
JPH1139326A JPH1139326A (ja) 1999-02-12
JP3564952B2 true JP3564952B2 (ja) 2004-09-15

Family

ID=16340628

Family Applications (1)

Application Number Title Priority Date Filing Date
JP19540997A Expired - Fee Related JP3564952B2 (ja) 1997-07-22 1997-07-22 高速文書登録検索方法および装置

Country Status (1)

Country Link
JP (1) JP3564952B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5108252B2 (ja) * 2006-04-27 2012-12-26 株式会社日立製作所 インデクス更新方法及びそのシステム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62287350A (ja) * 1986-06-06 1987-12-14 Nec Corp インデツクス一括更新方式
JP3578501B2 (ja) * 1994-11-15 2004-10-20 株式会社日立製作所 文書検索方法及び装置
JP3459053B2 (ja) * 1995-01-12 2003-10-20 株式会社日立製作所 文書検索方法および装置

Also Published As

Publication number Publication date
JPH1139326A (ja) 1999-02-12

Similar Documents

Publication Publication Date Title
JP3696745B2 (ja) 文書検索方法及び文書検索システム及び文書検索プログラムを記録したコンピュータ読み取り可能な記録媒体
JP3554459B2 (ja) テキストデータ登録検索方法
US20020165707A1 (en) Methods and apparatus for storing and processing natural language text data as a sequence of fixed length integers
KR890007156A (ko) 키 레코드 데이타 페칭 및 삽입, 삭제방법
LaPasha et al. A microcomputer based system for computer-aided wood identification
JPH05324722A (ja) 文書検索方式
JP3564952B2 (ja) 高速文書登録検索方法および装置
JPH02116936A (ja) 再編成方式
JPS61267129A (ja) 階層木構造型デ−タの蓄積・検索方式
JPH0452859A (ja) 文字処理装置
JPH1185585A (ja) 完全メモリ常駐型インデックス方法および装置
JP3896683B2 (ja) 使用者定義文字管理装置および記憶媒体
JPH03137772A (ja) データベース利用システム
JPS61278932A (ja) デ−タ追加処理方法
JP3581781B2 (ja) コードテーブルを出力する装置及び方法
JP3456127B2 (ja) インデクスキーの高速拡張機能を備えた文書検索方法および装置
JPH04250568A (ja) レコード検索装置
JPH043251A (ja) 文書検索方法および文書検索処理装置
JPH08101848A (ja) 文書処理装置及び検索方法
JPH1166076A (ja) データ派生装置及び方法、並びに、データ派生プログラムを格納した記憶媒体
Bank Ground Operations Aerospace Language
JPS63223871A (ja) 辞書作成システム
JPH02161564A (ja) 記憶装置のデータ格納方法
Reynolds Character string handling in FORTRAN
Herzberg et al. The Data Step and SAS Data Sets

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040210

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040405

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: 20040518

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040531

LAPS Cancellation because of no payment of annual fees