説明

文書データベース更新処理装置、文書データベース検索装置、文書データベース索引作成方法及び文書データベース検索方法

【課題】 文書データベースの更新処理における記憶容量の消費を抑え、効率的な文書DBの更新・検索を可能とする文書データベース更新処理装置、文書データベース検索装置、文書データベース索引作成方法及び文書データベース検索方法を提供すること。
【解決手段】 文書DB更新処理装置102は、世代管理方式の文書DBにおいて、現世代から次世代への索引更新の際に、新版で削除される単語と、その出現位置リストの組のリストを記録した負の索引と、変更後の索引で特に追加、変更のあった文字列の出現位置と位置シフト値を記録した正の索引の組を有する更新情報を作成し、この更新情報と、索引の組で次世代の文書DBを表現する。また、文書DB更新処理装置102は、複数世代の更新情報をマージする更新情報マージ処理機能を有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、文書データベース更新装置、文書データベース検索装置、文書データベース索引作成方法及び文書データベース検索方法に関し、特に、文書データベースの更新処理及び検索処理を行う文書データベース更新装置、文書データベース検索装置、文書データベース索引作成方法及び文書データベース検索方法に関する。
【背景技術】
【0002】
近年、電子計算機やネットワークの高性能化、低価格化、インターネット通信環境の整備、普及に伴い、情報技術の利用が盛んになってきている。その中で、情報蓄積、情報検索の基盤として、データベース、データベース管理システムが盛んに利用されている。
【0003】
このようなデータベース管理システムの中には、データベースの「世代」という概念を導入し、世代管理を行うものがある。世代管理型のデータベース管理システムでは、更新処理において、補助記憶装置等に記憶された更新元のデータベースの実体を変更せずに、次の世代のデータベースを作成する。
【0004】
このような従来の世代管理型のデータベース管理システムとしては、文書データベースの世代を管理するものがあり、例えば、非特許文献1に記載されるような文書データベース管理システムが存在する。この文書データベース管理システムでは、文書データベース(以下、文書DBという)の更新内容を考慮して、投入データ期間で複数のDBに分割して、差分更新を効率化している。
【0005】
以下、この文書DB管理システムについて図21を参照して説明する。図21に示す文書DB管理システム2100おいて、2101は投入された更新文書と、世代N−1の索引及び文書を用いて世代Nを作成する文書DB更新処理装置、2102は文書を入力する文書入力装置、2103は複数世代に渡る文書DBの実体を永続的に補助記憶装置2110に記録または、検索処理の高速化のために、最新の数世代の更新情報を主記憶装置2109に記録する文書DB保持装置、2104は文書から初期世代の索引を作成する文書DB作成装置、2105はキーボード等の入力インタフェースを備え、文書DBを検索するための検索キーワード及び検索対象とする世代を入力する検索キーワード入力部、2106は入力された検索キーワードを文書DBより検索する文書DB検索部、2107は検索結果をディスプレイなどの表示装置に表示する検索結果出力部、2108は検索キーワード入力部2105、文書DB検索部2106及び検索結果出力部2107を含む文書DB検索装置である。
【0006】
以上の構成の文書DB管理システム2100において、その動作と、簡単な更新及び検索の具体例について図3を用いて説明する。
【0007】
図3(a)〜(c)は、文書DBとして、個人の日記等の雑感を格納した文書DBの例である。
【0008】
図3(a)の更新前の文書DBの例301に示すように、文書DBは、タグ(<doc ID=X>と表記(X:ID番号))で区切られた複数の文書レコードとして表現され、各文書レコードは、「文書ID」と「本文」の2項目を、ID番号順に並べ、特に文書IDについては、文書IDがXの場合、タグの要素として、<doc ID=X>のように記録して表現するものとする。なお、この文書DBは、高速な検索、更新処理を行うために、図4の更新前の文書DBの索引例401に示すように、文書DBから、各文書レコードに出現する単語と、その単語の出現する文書IDと、出現文字位置が記録されている。301の例では、文書IDが1、2、3の3つの文書レコードがあり、更新の際には、文書IDで各雑感文書を識別し、追加・変更・削除のそれぞれの更新処理を行う。図3(b)、(c)は、それぞれ文書DB301に対する更新用文書の例302及び更新後の文書DBの例303を示している。
【0009】
これらの例では、文書ID1、ID3の既存の文書レコードに対する変更データと、文書ID2の既存の雑感文書の削除レコード(本文が空の雑感文書は文書IDで指定した既存の文書の削除を指示するものとする)と、文書ID4の新たに追加された文書レコードが含まれており、302の更新用文書を入力として差分更新処理を行うと、303のような次の世代の文書DB(更新後の文書DB)が作成される。
【0010】
文書DB更新処理装置2101と、文書DB作成装置2104では、図3(b)に示すような更新用文書302を入力として受け取ると、新たな更新用文書の内容を検索し、更新するためのデータ構造である差分索引を、図22に示す更新後の文書DBの索引例2201のように作成し、文書DB保持装置2103に格納する。
【0011】
この文書DB管理システム2100では、このように動作する事で、文書DBの更新内容を考慮して、投入データ期間で複数の文書DBに分割して、世代管理型の文書DBの差分更新を効率化している。
【0012】
なお、他に従来データベースと重ね合わせて検索を可能とする世代管理型のデータ更新装置としては、例えば、特許文献1に記載されている概念辞書管理装置が存在する。この装置では、複数の利用者が共用する基本概念辞書をその内容を変更することなく、分野別または利用者別に調整された概念辞書を作成して、これらを重ね合わせて検索できるようにする事で、基本概念辞書を破壊することなく拡張、縮小することを可能にしている。
【特許文献1】特開平6−075989号公報
【非特許文献1】Narayanan Shivakumar, Hector Garcia-Molina: Wave-Indices: Indexing Evolving Databases. SIGMOD Conference 1997: 381-392
【発明の開示】
【発明が解決しようとする課題】
【0013】
しかし、上記従来の非特許文献1の文書DB管理システムでは、文書DB中のある文書IDの一単語だけを変更するような小規模な更新でも、変更の発生した文書IDの全ての文字列の切出しを行い、切り出された文字列全てについて索引を作成するため、更新情報を格納する補助記憶領域の容量を多く消費し、かつ、更新速度が更新情報量に比例してかかるため、更新処理の効率が低下するという問題がある。
【0014】
また、上記従来の特許文献1の概念辞書管理装置では、変更部分の単語のみに関する少量の差分概念辞書と元の概念辞書とを組み合わせることで、効率的な更新処理は行えるが、あくまでも概念辞書であり、文書を高速に検索するための索引は持たないため、文書DBの世代更新処理を実現できるものではない。
【0015】
本発明はかかる点に鑑みてなされたものであり、文書データベースの更新処理における記憶容量の消費を抑え、効率的な文書データベースの更新・検索を可能とする文書データベース更新処理装置、文書データベース検索装置、文書データベース索引作成方法及び文書データベース検索方法を提供することを目的としている。
【課題を解決するための手段】
【0016】
本発明の第1の態様にかかる文書データベース更新処理装置は、世代管理された文書データベースを更新する文書データベース更新処理装置であって、一意に識別されるIDを持つ複数のレコード単位で構成される初期世代文書から、レコード毎に文字列を切出し、その切出された文字列と、その文字列の出現文字位置とを対で示す索引と、前記初期世代文書を文書データベースに記録する文書データベース記録部と、更新用文書を入力する文書入力部と、前記初期世代文書と前記更新用文書間における変更箇所の文字列の部分を判定する更新文書判定部と、前記判定により該当文字列部分について、切出された文字列とその出現位置及び文字列の変更において発生する文字列長の差分値の組を索引要素として正の索引を作成する正の索引作成部と、前記判定により削除されるべき初期世代の索引要素を負の索引として作成する負の索引作成部と、前記判定により削除されたレコードについては、その文書IDを削除レコード表として作成する削除レコード表作成部と、から成り、前記作成された正の索引、負の索引及び削除レコード表を新たな世代の更新情報として更新・登録する文書データベース更新処理部と、を備えた構成を採る。
【0017】
この構成によれば、初期世代から次世代への索引更新の際に、新版で削除されるべき初期世代の索引要素を記録した負の索引と、追加、変更のあった文字列の出現位置と文字列長の差分値の組を記録した正の索引と、削除されたレコードの文書IDを記録した削除レコード表の組を有する更新情報を作成し、この更新情報と、索引の組で次世代の文書データベースを表現することにより、変更した文字列部分のみに比例した量の更新情報となるため、更新情報の記憶領域を削減でき、同時に、更新情報量の削減に比例して、更新情報作成処理時間も短縮することができる。
【0018】
本発明の第2の態様にかかる文書データベース更新処理装置は、世代管理された文書データベースを更新する文書データベース更新処理装置であって、一意に識別されるIDを持つ複数のレコード単位で構成される初期世代から世代Nまでの文書と、負の索引、正の索引及び削除レコード表からなる索引情報を、それぞれ文書データベースに記録する文書データベース記録部と、世代N+1の更新用文書を入力する文書入力部と、前記初期世代から世代Nまでの文書と、負の索引、正の索引及び削除レコード表からなる索引情報と、前記世代N+1の更新用文書から変更箇所の文字列の部分を判定する更新文書判定部と、前記判定により該当文字列部分について、切出された文字列とその出現位置及び文字列の変更において発生する文字列長の差分値の組を索引要素として正の索引を作成する正の索引作成部と、前記判定により削除されるべき初期世代の索引要素を負の索引として作成する負の索引作成部と、前記判定により削除されたレコードについては、その文書IDを削除レコード表として作成する削除レコード表作成部と、から成り、前記判定により作成された正の索引、負の索引及び削除レコード表を世代N+1の更新情報として更新・登録する文書データベース更新処理部と、を備えた構成を採る。
【0019】
この構成によれば、初期世代から世代Nへの索引更新の際に、新版で削除されるべき初期世代の索引要素を記録した負の索引と、追加、変更のあった文字列の出現位置と文字列長の差分値の組を記録した正の索引と、削除されたレコードの文書IDを記録した削除レコード表の組を有する世代N+1の更新情報を作成し、この更新情報と、索引の組で世代N+1の文書データベースを表現することにより、世代毎に変更した文字列部分のみに比例した量の更新情報となるため、各世代の更新情報の記憶領域を削減でき、同時に、更新情報量の削減に比例して、更新情報作成処理時間も短縮することができる。
【0020】
本発明の第3の態様は、第2の態様にかかる文書データベース更新処理装置において、前記初期世代から世代Nまでの文書と、前記負の索引、前記正の索引及び前記更新用文書に基づく世代i+1(0<i<N)の更新処理においては、世代i〜世代Nの負の索引、正の索引及び削除レコード表に基づいて削除する索引要素と、追加・変更された索引要素と、削除されたレコードとを解釈する複数更新情報解釈部を備えることにより、前記世代N+1の更新情報を作成する構成を採る。
【0021】
この構成によれば、初期世代から世代Nへの索引更新の際に、世代i〜世代Nの負の索引、正の索引及び削除レコード表の要素を解釈して世代N+1の更新情報を作成することができ、世代Nまでに追加・変更された文字列部分のみの更新情報作成処理となるため、更新情報作成処理の効率化を図ることができる。
【0022】
本発明の第4の態様は、第1または第2の態様にかかる文書データベース更新処理装置において、前記更新文書判定部は、更新前世代の索引から、更新後世代の索引への更新処理時に、更新対象レコードの変更される文字列の数が任意の閾値より多いか否かを判定し、多い場合には、そのレコードを変更レコードとみなして索引を作成し、当該レコード番号を前記削除レコード表に記録する構成を採る。
【0023】
この構成によれば、変更される文字列数が予め決定した閾値を超える場合は、削除対象レコードとして削除レコード表に記録することにより、常に更新情報を適用して更新処理を行う場合よりも処理効率の向上を図ることができる。
【0024】
本発明の第5の態様は、第2の態様にかかる文書データベース更新処理装置において、前記複数世代にわたる更新により蓄積される複数世代の更新情報を一つの更新情報に纏める処理を行う更新情報マージ処理部を、更に備える構成を採る。
【0025】
この構成によれば、複数世代にわたる更新情報を一つの更新情報に纏めることにより、以降の世代更新処理、検索処理の際の処理速度を向上させることができる。
【0026】
本発明の第6の態様は、第5の態様にかかる文書データベース更新処理装置において、前記更新情報マージ処理部により、必要のなくなった更新情報は削除する構成を採る。
【0027】
この構成によれば、必要のなくなった更新情報は削除することにより、文書データベースを格納する記憶領域を効率よく使用することができる。
【0028】
本発明の第7の態様は、第4の態様にかかる文書データベース更新処理装置において、前記更新文書判定部は、前記更新用文書から比較対照とする文書レコードを指定し、この文書レコードと、前記初期文書の該当文書レコードとの間の差分文字列リストを求め、当該差分文字列リストの要素数が前記閾値より多いか否かを判定する構成を採る。
【0029】
この構成によれば、差分文字列リストの要素数と予め決定した閾値との大小を判定することにより、削除すべきレコードの判定処理を効率よく実行することができる。
【0030】
本発明の第8の態様にかかる文書データベース検索装置は、検索対象とする文字列を入力する検索文字列入力部と、複数世代の正の索引、負の索引及び削除レコード表からなる更新情報と、その各世代の文書情報を記憶する文書データベース保持部と、前記入力された文字列を解析して文字列に分割し、分割した各文字列について、前記文書データベース保持部から複数世代に渡る更新情報と、初期世代の索引及び文書とを用いて検索する文書データベース検索部と、前記文書データベース検索部により得られたレコード集合を出力する検索結果出力部と、を具備する構成を採る。
【0031】
この構成によれば、検索対象文字列を正の索引、負の索引及び削除レコード表から成る更新情報から検索するため、索引に記録された各要素から検索対象を検索できるため、世代管理型文書データベースに対する検索処理効率の向上を図ることができる。
【0032】
本発明の第9の態様は、第8の態様にかかる文書データベース検索装置において、世代N+1の前記正の索引と、世代0と世代1から世代N+1までの更新情報を用いて、世代i(i=1〜N+1)の検索時に、世代N+1から世代i+1までの負の索引の要素と、削除レコード表の要素に基づいて削除された索引要素と、削除されたレコードを累積的に解釈する負索引・削除レコード表解釈部を備え、前記文書データベース検索部は、世代N+1の索引検索において、前記分割された文字列毎に、前記世代N+1の正の索引を検索して該当する文字列があれば、当該文字列を検索候補とし、世代Nの索引検索において、前記分割された文字列毎に該当する文字列があれば、当該文字列を前記負索引・削除レコード表解釈部に出力し、前記負索引・削除レコード表解釈部は、前記文書データベース検索部から入力された文字列に該当する文字列が前記世代N+1の負の索引にあれば、当該文字列を検索対象とせず、前記世代N+1の削除レコード表に登録されたレコード番号の文書データを解釈して、前記入力された文字列の要素があれば、その要素を検索対象としない構成を採る。
【0033】
この構成によれば、複数世代に渡る更新処理により作成された文書データベースから検索対象を効率よく検索することができる。
【0034】
本発明の第10の態様は、第9の態様にかかる文書データベース検索装置において、前記世代N+1の正の索引から前記世代i+1の正の索引までの各要素の位置シフト値を累算する位置シフト累算部を、更に備え、前記文書データベース検索部は、前記世代N+1の正の索引から検索された文字列の出現位置に、前記位置シフト累算部により累算された位置シフト値を加算して、当該文字列より前に検索された文字列の出現位置と連接するか否かを判定し、連接していれば、前記検索された文字列を検索対象とする構成を採る。
【0035】
この構成によれば、複数世代に渡る更新処理により作成された文書データベースから検索対象の位置シフト後の出現位置と、他の検索対象の出現位置との連接関係も考慮して検索することができ、検索対象を正確に検索することができる。
【0036】
本発明の第11の態様は、第9または第10の態様にかかる文書データベース検索装置において、前記文書データベース検索部は、前記分割した各文字列に対して、前記世代0〜N+1の各世代の正の索引から該当文字列を検索する処理を繰り返し実行し、検索した該当文字列毎に前記連接の判定を行って、前記分割した全ての文字列に対して、前記世代N+1の正の索引から前記世代i+1の正の索引までの全要素から検索対象を検索する構成を採る。
【0037】
この構成によれば、複数世代に渡る更新処理により作成された文書データベースから検索対象の文字列を検索する際に、索引の各要素の出現位置集合等に対する加減算の演算だけで処理できるため、検索処理速度を低下させずに、正確かつ効率的な検索処理を実現することができる。
【0038】
本発明の第12の態様にかかる文書データベース索引作成方法は、世代管理された文書データベースの索引を作成する文書データベース索引作成方法であって、一意に識別されるIDを持つ複数のレコード単位で構成される初期世代文書から、レコード毎に文字列を切出し、その切出された文字列と、その文字列の出現文字位置とを対で示す索引と、前記初期世代文書を文書データベースに記録する文書データベース記録ステップと、更新用文書を入力する文書入力ステップと、前記初期世代文書と前記更新用文書間における変更箇所の文字列の部分を判定する更新文書判定ステップと、前記判定により該当文字列部分について、切出された文字列とその出現位置及び文字列の変更において発生する文字列長の差分値の組を索引要素として正の索引を作成する正の索引作成ステップと、前記判定により削除されるべき初期世代の索引要素を負の索引として作成する負の索引作成ステップと、前記判定により削除されたレコードについては、その文書IDを削除レコード表として作成する削除レコード表作成ステップと、前記作成された正の索引、負の索引及び削除レコード表を新たな世代の更新情報として更新・登録する更新・登録ステップと、を具備するようにした。
【0039】
この方法によれば、初期世代から次世代への索引更新の際に、新版で削除されるべき初期世代の索引要素を記録した負の索引と、追加、変更のあった文字列の出現位置と文字列長の差分値の組を記録した正の索引と、削除されたレコードの文書IDを記録した削除レコード表の組を有する更新情報を作成し、この更新情報と、索引の組で次世代の文書データベースを表現することにより、変更した文字列部分のみに比例した量の更新情報となるため、更新情報の記憶領域を削減でき、同時に、更新情報量の削減に比例して、更新情報作成処理時間も短縮することができる。
【0040】
本発明の第13の態様にかかる文書データベース索引作成方法は、世代管理された文書データベースの索引を作成する文書データベース索引作成方法であって、一意に識別されるIDを持つ複数のレコード単位で構成される初期世代から世代Nまでの文書と、負の索引、正の索引及び削除レコード表からなる索引情報を、それぞれ文書データベースに記録する文書データベース記録ステップと、世代N+1の更新用文書を入力する文書入力ステップと、前記初期世代から世代Nまでの文書と、負の索引、正の索引及び削除レコード表からなる索引情報と、前記世代N+1の更新用文書から変更箇所の文字列の部分を判定する更新文書判定ステップと、前記判定により該当文字列部分について、切出された文字列とその出現位置及び文字列の変更において発生する文字列長の差分値の組を索引要素として正の索引を作成する正の索引作成ステップと、前記判定により削除されるべき初期世代の索引要素を負の索引として作成する負の索引作成ステップと、前記判定により削除されたレコードについては、その文書IDを削除レコード表として作成する削除レコード表作成ステップと、前記判定により作成された正の索引、負の索引及び削除レコード表を世代N+1の更新情報として更新・登録する更新・登録ステップと、を具備するようにした。
【0041】
この方法によれば、初期世代から世代Nへの索引更新の際に、新版で削除されるべき初期世代の索引要素を記録した負の索引と、追加、変更のあった文字列の出現位置と文字列長の差分値の組を記録した正の索引と、削除されたレコードの文書IDを記録した削除レコード表の組を有する世代N+1の更新情報を作成し、この更新情報と、索引の組で世代N+1の文書データベースを表現することにより、世代毎に変更した文字列部分のみに比例した量の更新情報となるため、各世代の更新情報の記憶領域を削減でき、同時に、更新情報量の削減に比例して、更新情報作成処理時間も短縮することができる。
【0042】
本発明の第14の態様にかかる文書データベース検索方法は、検索対象とする文字列を入力する検索文字列入力ステップと、複数世代の正の索引、負の索引及び削除レコード表からなる更新情報と、その各世代の文書情報を記憶する文書データベース保持ステップと、前記入力された文字列を解析して文字列に分割し、分割した各文字列について、前記文書データベースから複数世代に渡る更新情報と、初期世代の索引及び文書とを用いて検索する文書データベース検索ステップと、前記文書データベース検索ステップにより得られたレコード集合を出力する検索結果出力ステップと、を具備するようにした。
【0043】
この方法によれば、検索対象文字列を正の索引、負の索引及び削除レコード表からなる更新情報から検索するため、索引に記録された各要素から検索対象を検索できるため、世代管理型文書データベースに対する検索処理効率の向上を図ることができる。
【発明の効果】
【0044】
本発明によれば、初期世代から次世代への索引更新の際に、新版で削除されるべき初期世代の索引要素を記録した負の索引と、追加、変更のあった文字列の出現位置と文字列長の組を記録した正の索引と、削除されたレコードの文書IDを記録した削除レコード表の組を有する更新情報を作成し、この更新情報と、索引の組で次世代の文書データベースを表現することにより、変更した文字列部分のみに比例した量の更新情報となるため、更新情報の記憶領域を削減でき、同時に、更新情報量の削減に比例して、更新情報作成処理時間も短縮することができる。
【発明を実施するための最良の形態】
【0045】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
【0046】
図1は、本発明の実施の形態に係る世代管理型の文書データベース処理システムの全体構成を示す図である。図1において、文書データベース処理システム100は、文書入力装置101と、文書DB更新処理装置102と、文書DB保持装置103と、文書DB検索装置104と、主記憶装置108,110と、補助記憶装置109とから構成される。
【0047】
文書入力装置101は、文書データを入力するためのキーボード等を備え、文書DB更新処理装置102に対して文書データを入力する。
【0048】
文書DB更新処理装置102は、文書入力装置101から入力された初期文書(世代0)からレコード単位に文字列を切り出して初期索引を作成して、初期文書と初期索引を世代0の文書DB103aとして文書DB保持装置103に記録する。
【0049】
また、文書DB更新処理装置102は、文書入力装置101から新たに更新用文書が入力されると、その更新用文書と、世代0の文書DB103aの初期文書との文字列の差分情報からレコード単位に索引(後述する正の索引と負の索引)と、後述する削除レコード表を作成する。これらと、入力された更新用文書を、世代0→1の更新情報103bとして文書DB保持装置103に記録する。
【0050】
また、文書DB更新処理装置102は、文書入力装置101から入力された新たなN−1世代目の更新用文書と、一世代前(N−2世代)の更新情報(図示せず)から更新用文書と初期文書との文字列の差分情報である各世代に記録された更新情報の索引(正の索引、負の索引)を解釈した上で、今回の更新に対応する索引(正の索引、負の索引)と削除レコード表を作成する。作成された索引(正の索引、負の索引)と削除レコード表と入力された更新用文書を、世代N−2→N−1の更新情報103cとして文書DB保持装置103に記録する。
【0051】
また、文書DB更新処理装置102は、文書入力装置101から新たなN世代目の更新用文書が入力されると、上記の説明と同様に、索引(正の索引、負の索引)と削除レコード表を作成し、入力された更新用文書とともに、世代N−1→Nの更新情報103dとして文書DB保持装置103に記録する。
【0052】
また、文書DB更新処理装置102は、文書DB保持装置103に記録した複数世代の更新情報をマージする更新情報マージ処理機能を有する。これについては、後述する。
【0053】
文書DB保持装置103は、世代0の文書DB103aを永続的に保持するとともに、文書DB更新処理装置102により更新用文書が入力される毎に作成される世代間の更新情報103a〜103dを保持する。なお、図1に示す世代0の更新情報103aには、初期文書1031と初期索引401が記録されていることを示している。
【0054】
主記憶装置108は、文書DB更新処理装置102において実行される文書DB更新処理の処理プログラムを記憶するとともに、後述する更新情報マージ処理において、比較対照となる索引の各要素(検索対象文字列)等を一時的に記憶する。
【0055】
補助記憶装置109は、更新情報マージ処理において複数世代の更新情報の索引から作成された索引等を記憶する。
【0056】
文書DB検索装置104は、検索キーワード入力部105と、文書DB検索部106と、検索結果出力部107とから構成される。
【0057】
検索キーワード入力部105は、ユーザが文書DBを検索する検索文字列を入力するためのキーボード等を備え、入力された検索文字列を文書DB検索部106に出力する。
【0058】
文書DB検索部106は、検索キーワード入力部105から検索キーワードが入力されると、検索文字列に含まれる文字列毎に、文書DB保持装置103に記録された複数世代の更新情報と、世代0の文書DBを入力として、世代Nの更新情報を検索する検索機能を有し、その検索結果を検索結果出力部107に出力する。
【0059】
検索結果出力部107は、文書DB検索部106から入力される検索結果を、ディスプレイ等に表示する。
【0060】
主記憶装置110は、文書DB検索装置104において実行される文書DB検索処理の処理プログラムを記憶するとともに、文書DB検索処理の検索結果等を記憶する。
【0061】
次に、文書DB更新処理装置102で実行される更新情報作成処理について、図2に示す文書DB更新処理装置102のブロック図、図3に示す文書DBの更新例、図4に示す更新前の文書DBの索引例、図5に示す更新後の文書DBの索引例、図6に示す削除レコード表の例及び図7に示すフローチャートを参照して説明する。
【0062】
なお、この更新情報作成処理では、最初に入力された文書である初期世代文書(世代0の文書)と、次に更新用文書として入力された世代1の更新用文書との間の差分文字列に対して、更新情報を作成する場合を説明する。
【0063】
図2は、初期の文書から作成された初期世代の文書DBから、次世代つまり世代1の文書DBを作成する文書DB更新処理装置102の構成を示す図である。
【0064】
図2において、文書DB更新処理装置102は、更新文書判定部201と、正の索引作成部202、負の索引作成部203及び削除レコード表作成部205を含む文書DB更新処理部204と、索引作成部206と、から構成される。
【0065】
図3(a)〜(c)は、文書DBとして、個人の雑感を記録した文書の更新例を示す図であり、従来で説明したものと同じ内容の文書DBである。
【0066】
図3(a)に示すように、更新前の文書DB301は、タグ(<doc Id=X>と表記)で区切られた複数の文書レコードの列として表現され、各文書レコードは、「文書ID」と「本文」の2項目を、文書ID順に並べて記述されている。特に文書IDについては、文書IDがXの場合、タグの要素として、<doc Id=X>のように記録して表現するものとする。なお、この文書DBは高速な検索、更新処理を行うために、図4に示す更新前の文書DBの索引(初期索引)401のように、各文書レコードから、文書に出現する単語と、その単語の出現する文書IDと、出現文字位置が記録されている。
【0067】
図3(a)の更新前の文書DB301では、文書IDが1、2、3の3つの文書レコードがあり、更新の際には、文書IDで各文書レコードを識別し、追加・変更・削除のそれぞれの更新処理を行う。図3(b)、(c)は、それぞれ更新前の文書DB301に対する更新用文書302及び更新後の文書DB303である。
【0068】
この更新用文書302の例では、文書ID1、ID3の既存の文書レコードに対する変更データと、文書ID2の既存の文書レコードの削除データ(本文が空の雑感文書は文書IDで指定した既存の雑感文書の削除を指示するものと定める)と、文書ID4の新たな追加文書レコードが含まれており、文書DB更新処理装置102において差分更新処理を行うと、図3(c)に示すような次の世代の雑感文書DB、すなわち、更新後の文書DB303が作成される。
【0069】
図2の文書DB更新処理部204では、図3(b)に示す更新用文書302あるいは初期文書(更新処理でなく初めての文書データの場合を特別にこのように呼ぶこととする)を入力として受け取り、図3(a)のような更新前の文書DB301を高速に検索し、更新するために、文書ID及び本文から切り出す文字列に対して初期索引あるいは初期索引からの差分索引である更新情報を作成し、更新文書あるいは初期文書と共に、文書DB保持装置103に記録する。
【0070】
図2において、索引作成部206は、世代0の文書DB103aから初期文書1031(図3(a)の更新前の文書DB301に含まれる文書レコードのこと)を読み出し、従来の全文検索DB作成における既知の手法であるN−gram分割方式や、各文書レコードに対して単語辞書を用いて単語で分割する方式等といった方式を用いて、初期文書に含まれる各文書レコードから文字列の切出しを行い、その出現位置を記録して、図4に示すような更新前の文書DBの索引、すなわち、初期索引401を作成する。そして、索引作成部206は、作成した初期索引401を世代0の文書DB103aに記録する。
【0071】
次に、文書入力装置101から次の世代(世代1)の更新用文書302(図3(b)参照)が入力されて、世代0の文書DB103a内の初期文書1031を次の世代1に更新する際に、世代0→1の更新情報103bを作成する更新情報作成処理について、図2の構成図及び図7に示すフローチャートを参照して説明する。また、図5(a)、(b)は、図2の文書DB更新処理装置102による更新処理おいて作成される正の索引501の例と、負の索引502の例を示す図である。
【0072】
図2において、世代Nの更新用文書302が文書DB更新処理装置102に入力される(ステップS701)。更新文書判定部201は、更新用文書302の総レコード数を判定し、比較対照とする文書レコードj(j:レコード番号、すなわち、文書ID)を指定し、その指定文書レコードjが判定した総レコード数以下か否かを判定する(ステップS702)。
【0073】
更新文書判定部201は、指定文書レコードjが総レコード数以下であると判定した場合(ステップS702:YES)、指定文書レコードjと初期文書1031の対応する文書レコードjとの比較を行い、レコード間の差分文字列リストL(図示せず)を求める(ステップS703)。
【0074】
次に、更新文書判定部201は、差分文字列リストLの要素数が、予め設定した閾値εを越えるか否かを判定する(ステップS704)。更新文書判定部201は、要素数が閾値εを越えないと判定した場合(ステップS704:NO)、その差分文字列リストLを文書DB更新処理部204に通知する。
【0075】
次に、文書DB更新処理部204は、更新文書判定部201から差分文字列リストLの通知を受けると、差分文字列リストLの各要素である文字列に基づいて、従来のN−gramや、極大単語切出し方式などの従来の索引作成方法により、更新用文書302の文書レコードjから文字列Word(l)〜Word(M)の分割切出しを行う(ステップS705)。
【0076】
次に、文書DB更新処理部204は、切り出した文字列Word(l)〜Word(M)の中から、最初の文字列Word(i)(i=l)を指定し(ステップS706:YES)、その文字列Word(i)の出現位置に、世代0の初期索引401の要素Word(p)で削除されるべき文字列が存在するかどうかを判定する(ステップS707)。
【0077】
文書DB更新処理部204は、文字列Word(i)の出現位置に削除されるべき文字列Word(p)が存在しないと判定した場合(ステップS707:NO)、文字列Word(i)の文書ID、出現位置及び文字列長の差分値の情報を正の索引作成部202に渡す。正の索引作成部202は、文書DB更新処理部204から渡された文字列Word(i)の文書ID、出現位置及び文字列長の差分値の情報を組み合わせて、位置ポスティングとして、図5(a)に示すような正の索引501に記録する(ステップS708)。
【0078】
また、ステップS707において、文書DB更新処理部204は、文字列Word(i)の出現位置に削除されるべき文字列Word(p)が存在すると判定した場合(ステップS707:YES)、文字列Word(p)の文書ID及び出現位置を負の索引作成部203に渡す。負の索引作成部203は、文書DB更新処理部204から渡された文字列Word(p)の文書ID及び出現位置の対を、図5(b)に示すような負の索引502に記録する(ステップS709)。
【0079】
以後、文書DB更新処理部204は、切り出した文字列Word(l)〜Word(M)の中から、文字列Word(i)を順次指定(i++)して(ステップS706)、切り出した文字列Word(i)の全てを指定し、同様に、文書DB更新処理部204は、指定された各文字列Word(i)に対して、ステップS707〜ステップS709の処理を繰り返し実行して、正の索引501及び負の索引502を作成する。
【0080】
以上の処理により、文書DB更新処理部204は、文書IDにより示される1つの文書レコードに対して、初期文書との差分文字列Lと、差分文字列Lからの文字列の切り出しと、正の索引501及び負の索引502の各作成処理が終了し、その正の索引501と負の索引502を、図2に示す世代0→1の更新情報103b内に記録する。
【0081】
次に、更新文書判定部201は、切り出した文字列Word(i)の全ての指定を終了すると(i=Mの条件成立)(ステップS706:NO)、次に比較対照とする文書レコードjを指定するため、jを加算する(j++)(ステップS710)。
【0082】
次に、更新文書判定部201は、ステップS710で加算したjに基づいて、比較対照とする文書レコードjを指定し、その指定文書レコードjが判定した総レコード数以上か否かを判定する(ステップS702)。
【0083】
更新文書判定部201は、指定文書レコードjが総レコード数以下であると判定した場合(ステップS702:YES)、指定文書レコードjと初期文書1031の対応する文書レコードjとの比較を行い、レコード間の差分文字列リストLを求め(ステップS703)、ステップS704以下の処理を繰り返し実行する。
【0084】
また、更新文書判定部201は、ステップS704において、差分文字列リストLの要素数が、予め設定した閾値εを越えると判定した場合(ステップS704:YES)、初期文書と更新用文書において、指定文書レコードj間の違いが多すぎるため、その指定文書レコードjの情報を削除レコード表作成部205に通知する。削除レコード表作成部205は、更新文書判定部201から指定文書レコードjの情報が通知されると、図6に示すような削除レコード表に文書レコードjを記録する(ステップS711)。
【0085】
また、更新文書判定部201は、文書DB更新処理部204に更新用文書302の文書レコードjを、追加レコードとして処理するように通知する。文書DB更新処理部204は、更新文書判定部201から更新用文書302の文書レコードjを追加レコードとして処理する通知を受けると、位置ポスティングが全て0の正の索引である当該文書レコードjの索引を作成する(ステップS712)。
【0086】
以上のステップS711及びステップS712の処理は、更新用文書302の全ての文書レコードjに対して実行されて、削除レコード表601の作成が完了し、図2に示すように世代0→1の更新情報103b内に記録される。
【0087】
また、ステップS702において、更新文書判定部201は、指定文書レコードjが総レコード数を越えたと判定した場合(j>総レコード数)(ステップS702:NO)、更新用文書302の全ての文書レコードjに対する処理が終了したため、本更新情報作成処理を終了する。
【0088】
以上の更新情報作成処理により、図3(a)の更新前の文書DB301に記録された初期文書1031の各文書レコードと、図3(b)の更新用文書302の各文書レコードとの間の差分文字列から、図5(a)の正の索引501が作成され、図5(b)の負の索引502が作成され、図6の削除レコード表601が作成されて、図2の世代0→1の更新情報103bとして、図1の文書DB保持装置103に記録される。
【0089】
ここで、図3(a)、(b)、図4、図5(a)、(b)及び図6を参照して、上記更新情報作成処理に基づく更新情報103bの作成過程を具体的に説明する。
【0090】
まず、図3(a)の更新前の文書DB301に対しては、図4に示す更新前の文書DBの索引(以下、初期索引という)401が作成済みである。この初期索引401では、更新前の文書DB301内の文書ID<doc ID=1>で示される文書レコードから切り出した4つの要素の文字列を示している。図中の(1,1)、(1,2)、(1,3)、(1,6)は、それぞれ前者の数値が文書IDを示し、後者の数値が要素の出現位置(文字桁数)を示している。
【0091】
そして、更新文書判定部201は、図3(b)の更新用文書302が入力されると、更新用文書301の総レコード数が「4」であることを判定し、比較対照とする文書レコード1(<doc ID=1>)を指定し、この文書レコード1と初期文書1031の文書レコード1との間の差分文字列リストLを求める。
【0092】
この場合、初期索引401に記録された文書レコード1の要素に基づいて、初期文書1031の文書レコード1と更新用文書302の文書レコード1との間の差分文字列は、図3(a)、(b)に示す各下線部分である。すなわち、差分文字列リストLには、初期文書1031の文書レコード1の“だというのに”、“暑い。”、“気温”、“30度”と、更新用文書302の文書レコード1の“に”、“近づいている”、“が”、“未だ”、“暑く、”、“最高気温”、“35度”が、要素として記録される。
【0093】
次に、更新文書判定部201は、差分文字列リストLの要素数が、予め設定した閾値ε(例えば、20)を越えるか否かを判定する。この場合、図3(a)、(b)の各文書レコード1に示す差分文字列リストLの要素の要素数は11であるため、要素数が閾値εを越えないと判定される。
【0094】
そして、更新文書判定部201は、その差分文字列リストLを文書DB更新処理部204に通知する。次に、文書DB更新処理部204は、更新文書判定部201から差分文字列リストLを受けると、差分文字列リストLの各要素に基づいて、従来のN−gramや、極大単語切出し方式などの従来の索引作成方法により、更新用文書302の文書レコード1から、上記文字列Word(l)〜Word(M)に相当する“に”、“近づいている”、“が、”、“未だ”、“暑く、”、“最高気温”、“35度”の分割切出しを行う。
【0095】
次に、文書DB更新処理部204は、切り出した文字列Word(l)〜Word(M)の中から、上記文字列Word(i)に相当する文書レコード1の“に”を指定し、その出現位置「6」に、初期文書1031の文書レコード1で削除されるべき文字列Word(p)が存在するか否かを判定する。
【0096】
図3(a)の文書レコード1では、出現位置「6」に文字列“だというのに”が存在するため、文書DB更新処理部204は、削除されるべき文字列Word(p)が存在すると判定し、文字列“だというのに”の文書ID「1」及び出現位置「6」を負の索引作成部203に渡す。負の索引作成部203は、文書DB更新処理部204から渡された文字列“だというのに”の文書ID「1」及び出現位置「6」の対(1,6)を、図5(b)に示す負の索引502に記録する。
【0097】
また、文書DB更新処理部204は、文字列“に”は、初期文書1031の文書レコード1の文字列“だというのに”と比較して、文字列長が5文字分短くなっているため、文字列“に”の文書ID「1」、出現位置「6」及び文字列長の差分値「−5」の情報を、正の索引作成部202に渡す。正の索引作成部202は、文書DB更新処理部204から渡された文字列“に”の文書ID「1」、出現位置「6」及び文字列長の差分値「−5」の情報を組み合わせて位置ポスティング(1,6,−5)として、図5(a)に示すような正の索引501に記録する。
【0098】
また、文書DB更新処理部204は、切り出した文字列Word(l)〜Word(M)の中から、次の文字列“近づいている”を指定し、その出現位置「7」に、初期文書1031の文書レコード1で削除されるべき文字列Word(p)が存在するか否かを判定する。
【0099】
図3(a)の文書レコード1では、出現位置「7」には、削除されるべき文字列Word(p)が存在しない。このため、文書DB更新処理部204は、文字列「近づいている」の文書ID「1」、出現位置「7」及び文字列長「6」の情報を、正の索引作成部202に渡す。正の索引作成部202は、文書DB更新処理部204から渡された文字列“近づいている”の文書ID「1」、出現位置「7」及び文字列長の差分値「6」の情報を組み合わせて位置ポスティング(1,7,6)として、図5(a)に示すような正の索引501に記録する。
【0100】
以上の処理を、文書レコード1の他の差分文字列及び他の文書レコード2〜3の各差分文字列に対しても実行するにより、図5(a)に示すような正の索引501が作成される。
【0101】
次に、更新文書判定部201は、更新用文書302の次の文書レコード2(<doc ID=2>)を指定し、この文書レコード2と、初期文書1031の文書レコード2との間の差分文字列リストLを同様に求めるが、更新用文書302の文書レコード2には、文書が存在しないため、差分文字列数が閾値εを越えることになり、その文書レコード2の情報を削除レコード表作成部205に渡す。
【0102】
また、更新文書判定部201は、更新用文書302の文書レコード3についても、初期文書1031の文書レコード3との間の差分文字列リストLを求めるが、図3(a)、(b)の下線部分が差分文字列であり、上記閾値εとして「20」を越えるため、その文書レコード3の情報を削除レコード表作成部205に渡す。
【0103】
削除レコード表作成部205は、更新文書判定部201から渡された文書レコード2,3の情報に基づいて、図6に示す削除レコード表601を作成して、図2の世代0→1の更新情報103bに記録する。
【0104】
以上のように、文書DB更新処理装置102では、初期文書DB103aに対して、次の世代の更新用文書が入力されると、更新情報として正の索引、負の索引及び削除レコード表が作成されて、図1の文書DB保持装置103に記録される。また、図3(c)に示す更新後の文書DB303が作成される。
【0105】
したがって、正の索引とは、入力された更新用文書の各文書レコードにおいて、初期文書1031の各文書レコードから新たに追加された文字列を切り出し、その文書ID、出現位置及び位置ポスティングとを組み合わせて索引として記録するためのものである。
【0106】
また、負の索引とは、入力された更新用文書の各文書レコードに対して、初期文書1031の各文書レコードで不要になった文字列の文書IDと出現位置とを組み合わせて索引として記録するためのものである。
【0107】
また、削除レコード表とは、入力された更新用文書の各文書レコードにおいて、初期文書1031から削除された文書レコード、又は大幅に変更された文書レコードを記録するためのものである。
【0108】
以上の更新情報作成処理では、世代0から世代1の更新情報を作成する場合を説明したが、より一般的な世代1から世代2以降の更新情報作成処理について、図8に示す文書DB更新処理装置102のブロック図、図9に示す文書DBの更新例、図10に示す更新用文書の例、図11に示す初期文書DBの索引例、図12に示す更新文書DBの更新情報の例及び図13に示すフローチャートを参照して説明する。
【0109】
図8は、世代0から世代1、世代2以降の更新情報を作成する文書DB更新処理装置102の構成を示す図であり、上記図2の文書DB更新処理装置102と同一の構成部分には、同一符号を付している。
【0110】
図8において、文書DB更新処理装置102は、複数更新情報解釈部801を含む更新文書判定部201と、正の索引作成部202及び負の索引作成部203を含む文書DB更新処理部204と、削除レコード表作成部205と、から構成される。
【0111】
複数更新情報解釈部801は、図13のフローチャートに示す複数更新情報解釈処理を実行し、世代Nの更新用文書iが入力されたとき、世代1〜N−1の各世代0→1〜世代N−2→N−1の各更新情報に含まれる削除レコード表i+1に記述される削除対象となる文書レコード番号のレコードについて、既に削除済みとして解釈する(ステップS1301,S1302)。
【0112】
図9(a)〜(c)は、上記図3(a)に示した世代0の更新前の文書DB301と、図3(c)に示した世代1の更新文書DB又は更新後の文書DB303とから更に更新を行い、世代2の更新文書DB901を作成する例を示している。
【0113】
図10(a)は、上記図3(b)に示した世代1の更新用文書302と、同図(b)は世代2の更新用文書1001とをそれぞれ示している。
【0114】
また、図11は、上記図4に示した初期索引401と、図1に示した初期文書1031とを含む世代0の文書DB103aを示している。図12(a)は、上記図5(a)に示した正の索引501と、図5(b)に示した負の索引502と、図6に示した削除レコード表601と、図3(b)に示した更新用文書302とを含む世代0→1の更新情報103bを示している。
【0115】
図12(b)は、世代1→2の更新情報1201に含まれる正の索引1201aと、負の索引1201bと、削除レコード表1201cと、更新用文書1001とを示している。
【0116】
図9(a)の世代0の文書DB301から、同図(b)の世代1の更新文書DB303を作成するところまでは、上記図7に基づく更新情報作成処理において説明したが、図10(b)の更新用文書1001が入力されると、文書ID3の文書レコードが削除され、文書ID4の文書レコードは内容が変更されるため、世代2の更新文書DBは、同図(c)の901のように作成される。図12(b)は、図9の例において、図8の文書DB更新処理部204により世代1→2の更新情報1201を作成した場合を示す図である。
【0117】
図12(b)の世代1→2の更新情報1201では、図10(a)の更新用文書302中の文書ID3の文書レコードは、同図(b)の更新用文書1001により削除対象となるので、削除レコード表1201cに記録される。また、世代1から世代2への更新において、文書ID4の文書レコードは、更新情報判定部201により、図10(a)の更新用文書302と同図(b)の更新用文書1001の各該当文書レコードが比較され、差分文字列数が判定されると、この例ではほとんど変更が無いものと判定され、その判定結果が文書DB更新処理部204に通知される。
【0118】
そして、文書DB更新処理部204において、上記図7で説明した通常の更新処理が実行されると、図12(b)に示す正の索引1201aのように文字列が切り出され、世代1の正の索引501と比較されることにより、削除対象となる文字列が負の索引1201bのように記録される。
【0119】
また、複数更新情報解釈部801において、図13のフローチャートに示す複数更新情報解釈処理を実行することにより、図12(b)に示す削除レコード表1201cが記録される。
【0120】
上記の図9〜図12の例のように、世代0→1の更新情報103bと、世代1→2の更新情報1201と、世代0の初期索引401を組にすることで、図9(c)に示す世代2の更新文書DB901を表現することができる。これらの複数世代における世代間の索引の関係を概念的な式で表現すると下記のようになる。
【0121】
(正の索引N)=F(正の索引N−1)−(負の索引N)−(削除レコード表N)
但し、N:世代番号(1<=N)
F(索引n):世代nの正の索引Nにおける位置シフト値を反映させる関数
【0122】
したがって、本実施の形態による更新情報作成処理では、世代管理方式の文書DBにおいて、現世代から次世代への索引更新の際に、新版で削除される単語と、その出現位置リストの組のリストを記録した負の索引と、変更後の索引で特に追加、変更のあった文字列の出現位置と位置シフト値を記録した正の索引と、削除されたレコードの文書IDを記録した削除レコード表の組を有する更新情報を作成し、この更新情報と、索引の組で次世代の文書DBを表現することにより、変更した文字列部分のみに比例した量の更新情報となるため、更新情報の記憶領域を削減でき、同時に、更新情報量の削減に比例して、更新情報作成処理時間も短縮することができる。
【0123】
なお、本実施の形態による更新情報作成処理では、文字列の切出し方法については、従来の全文検索の索引作成時に用いられている既知の技術である、N−gram分割方式や、辞書単語による分割方式など、すなわち、切出し文字列とその出現位置で情報を記録している索引であれば、どのような方式にも適用できる。
【0124】
また、本実施の形態の更新情報作成処理では、更新情報作成の際に、変更される文字列箇所が多い文書レコードは、従来方式よりも更新・検索処理共に、オーバーヘッドが大きくなる。このため、本実施の形態の更新情報作成処理では、変更される文字列数が予め決定した閾値εを超える場合は、削除対象レコードとして削除レコード表に記録し、通常通りの索引更新を行う事により、常に更新情報を適用して更新処理を行う場合よりも処理効率の向上を図ることができる。
【0125】
なお、閾値の決定については、管理者の経験的な値でも良いし、更新データの性質に合わせて、前もって更新処理の統計を採っておき、その値に基づいて経験的に決める事も可能であり、また、ユーザにその最適な閾値を決定させることもできる。
【0126】
次に、本実施の形態の更新情報作成処理により、更新用文書が入力される度に作成される各世代間の更新情報、特に、複数世代にわたる更新情報を効率化する手段であるマージ処理について説明する。
【0127】
図14は、文書DB更新処理装置102に、新たな機能として、複数の更新情報を一つの更新情報にまとめる更新情報マージ処理部1401と、マージ処理に伴い、複数の更新情報を場合に応じて消去する更新情報削除部1402とを新たに設けた文書DB更新処理装置102の構成を示すブロック図である。また、図15は、文書DB更新処理装置102において実行される、世代jの更新情報〜世代kの更新情報を一つの更新情報にまとめるための更新情報マージ処理を示すフローチャートである。
【0128】
なお、図16は、図12(a)、(b)で説明した世代0〜世代2の更新情報の作成において、作成される二つの更新情報(世代0→1の更新情報103bと、世代1→2の更新情報1201)を本実施の形態の更新情報マージ処理部1401において、一つの更新情報にまとめて、世代0→2の更新情報1601とする例を示す図である。
【0129】
まず、更新情報マージ処理部1401は、世代1→2の更新情報1201である、正の索引1201a、負の索引1201bの全要素を、不揮発メモリ等である主記憶装置108に、累積正要素集合(図示せず)及び累積負要素集合(図示せず)として記録する(ステップS1501)。次に、更新情報マージ処理部1401は、削除レコード表1201cの要素を累積削除レコード集合として主記憶装置108に記録する(ステップS1502)。
【0130】
次に、更新情報マージ処理部1401は、一時変数iの値をjになるまで1増加させつつ、ステップS1504以降の処理を実行する(ステップS1503)。「i<j」の条件が成立するまでの更新情報マージ処理部1401は、一時正要素集合と呼ぶことにする正の索引の要素集合の格納領域を主記憶装置108内に用意して初期化し、正の索引1201aの全要素を一時正要素集合に記録する(ステップS1504)。但し、この際、更新情報マージ処理部1401は、削除レコード表1201cに記録された文書IDを持つ要素、つまり文書IDが3の文書レコードについては、一時正要素集合には記録しない。
【0131】
次に、更新情報マージ処理部1401は、累積負要素集合の各要素MWord(m)をそれぞれ取り出しつつ(ステップS1505)、一時正要素集合(図示せず)にMWord(m)が存在するかを調べる(ステップS1506)。存在する場合(ステップS1506:YES)、更新情報マージ処理部1401は、一時正要素集合からMWord(m)を削除し、累積負要素集合からMWord(m)を削除する(ステップS1507)。
【0132】
図12(b)の世代1→2の更新情報1201の例では、現時点で負の索引1201bに記録されている情報が累積負要素集合に記録されており、累積負要素集合の“M電器(4,1,0)”と、一時正要素集合の“M電器(4,1,0)”が共に存在するため、“M電器(4,1,0)”は一時正要素集合から削除される。
【0133】
次に、更新情報マージ処理部1401は、累積負要素集合の要素を全て比較が終わると(ステップS1505:NO)、世代0→1の削除レコード表601の要素を累積削除レコード集合(図示せず)として主記憶装置108に記録する(ステップS1508)。さらに、一時正要素集合を累積正要素集合に追加記録し(ステップS1509)、世代0→1の負の索引502の要素を累積負要素集合(図示せず)に追加記録する(ステップS1510)。
【0134】
その後、更新情報マージ処理部1401は、ステップS1503の処理における比較式が成立しない場合(ステップS1503:NO)、これまでに求めた累積負要素集合を図16に示す世代0→2の更新情報1601内に、負の索引(0_2)1603として、累積正要素集合を正の索引(0_2)1602、累積削除レコード集合を削除レコード表(0_2)1604として記録し(ステップS1511)、更新処理を終了する。
【0135】
このように複数世代にわたる更新情報を一つの更新情報にまとめることにより、以降の世代更新処理、検索処理の際の処理速度を向上させることができる。
【0136】
また、マージ処理が終了すると、文書データベースの管理者が予め指定した条件等に応じて、更新情報削除部1402は、世代0→1の更新情報103bと、世代1→2の更新情報1201を文書DB保持装置103より消去することもでき、文書DB保持装置103の記憶領域を有効に活用できる。また、その削除の際に他の記憶メディア、例えば、ディスクメディア等の外部記憶メディアへのバックアップ書き出しを行った上で消去する事で、より安全に削除を行うことができる。
【0137】
また、本実施の形態の更新情報作成処理では、複数回の更新を行い、更新情報が蓄積されると、その更新情報に比例し、更新速度、検索速度共に遅くなるが、複数の更新情報に対して更新情報マージ処理を行うため、更新及び検索処理速度の低下を緩和することができる。同時に、マージ処理完了後に必要のなくなった更新情報を削除する事で、文書DBを格納する記憶領域を効率よく使用することができる。
【0138】
ここまでは、文書DBの更新処理について述べたが、以下、上記の動作で作成した文書DBを検索する文書DB検索装置104の動作について、以下に説明する。
【0139】
図17は、文書DB検索装置104の構成を示すブロック図である。図17において、文書DB検索装置104は、検索キーワード入力部105と、索引検索部1701と、位置シフト累算部1702と、負索引・削除レコード表解釈部1703と、検索結果出力部107と、から構成される。
【0140】
図18は、文書DB検索装置104において実行される文書DB検索処理を示すフローチャートである。これらの図を参照して、検索処理を説明する。
【0141】
ユーザにより検索キーワード入力部105から検索文字列が入力される(ステップS1801)。文書DB検索装置104は、入力された検索文字列を辞書単語に基づいてキーワード分割処理により切り出す(ステップS1802)。
【0142】
次に、文書DB検索装置104は、初期準備として、負の索引の要素と、削除レコード表の要素を格納する一時負集合(図示せず)と、上記キーワード分割処理で得られた文字列で、かつ、正の索引で検索が可能な場合に、その先頭出現位置のリストを、複数世代に渡って累積的に格納する累積結果集合(図示せず)と、累積結果集合の各要素に対して複数世代の正の索引における位置シフト値を累算する位置シフト累算集合(図示せず)とを初期化する(ステップS1803)。
【0143】
以後、文書DB検索装置104は、分割された各切出し文字列についてiがMを越えるまで処理を行う(ステップS1804)。次に、世代を表す添え字として用いるjを、最初に検索対象とする世代Nをjに代入しておき、これを1ずつ減らしながら、jが0以上の間処理を続ける(ステップS1805)。
【0144】
jが0以上の場合(ステップS1805:YES)、索引検索部1701は、前述の切り出した文字列Word(i)に対して、正の索引jで検索可能か否かを判定する(ステップS1806)。検索可能と判定した場合は(ステップS1806:YES)、ステップS1807に移行する。なお、正の索引jの添え字として用いるjには、世代を表す「0〜N」を代入する。以後の負の世代jまたは削除レコード表jについても同様である。
【0145】
また、ステップS1806において、位置シフト累算部1702は、位置シフト累算集合の値を算出する。また、この際、負索引・削除レコード表解釈部1703は、索引検索部1701により検索された文字列Word(i)が、一時負集合に登録されている負の索引の要素と同じ文字出現位置、または削除レコード表の要素を持つレコードであるか否かを判定する。
【0146】
また、ステップS1806において、負索引・削除レコード表解釈部1703は、検索された文字列Word(i)が、一時負集合に登録されている負の索引の要素と同じ文字出現位置、または削除レコード表の要素を持つレコードに該当する場合、その位置では検索対象としないものとして処理を行い、一時負集合から該当要素である文字列Word(i)を削除する。この結果として、検索可能な正の索引の要素が存在するか否かにより次の処理として、ステップS1807に移行するか、ステップS1808に移行するかを決定する。
【0147】
索引検索部1701は、累積結果集合の各要素sと、前述の索引検索処理により求まった正の索引の要素集合の要素pに対し、出現位置が連接するか判定し、連接する要素pについては、位置シフト累算集合の要素e(p)に位置シフト値を合算する。また、索引検索部1701は、j==0である初期索引の場合であり、かつ、連接するpが存在しない場合、累積結果集合から要素sを削除する(ステップS1807)。
【0148】
次に、位置シフト累算部1702は、一時負集合に負の索引j及び削除レコード表jの集合を一時負集合に累積して格納する(ステップS1808)。なお、ステップS1806において、検索可能な正の索引の要素が存在しない場合(ステップS1806:NO)、位置シフト累算部1702によりステップS1808の処理を行うように遷移する。
【0149】
また、ステップS1805において、0<=jの条件が成立しなくなると(ステップS1805:NO)、文書DB検索装置104は、累積結果集合が空集合か否かを判定し(ステップS1809)、空集合なら検索結果が無いとして(ステップS1809:YES)、結果レコード集合を返し、検索処理を終了する(ステップS1810)。
【0150】
また、文書DB検索装置104は、空集合で無い場合は(ステップS1809:NO)、次の切出し文字列について、これまでと同様に、ステップS1804〜ステップS1809の処理を行う。また、文書DB検索装置104は、全ての切出し文字列についてステップS1804〜ステップS1809の処理を繰り返し行い、求まった累積結果集合を結果集合として、検索結果出力部107に出力する。
【0151】
このような検索処理により、文書DB更新処理装置102において複数世代に渡る更新処理により作成された文書DBを効率よく検索することができる。
【0152】
次に、文字列検索処理の具体例について、図19,20を参照して説明する。
【0153】
図19の例では、“H社”という検索文字列1901の入力に対して、索引検索部1701は、世代0の文書DB1902の初期索引1902aから“H社 (1,7,0)”という文字列1903の切り出しを行う(ステップS1910)。
【0154】
次に、索引検索部1701は、更新情報(世代0→1)1904の正の索引1904aを検索して“H社”がヒットしないため(ステップS1911)、次に、負の索引1904bを検索して(ステップS1912)、“H社 (1,7,0)”がヒットしたため、これを累積負集合B1905に登録する(ステップS1913)。
【0155】
次に、索引検索部1701は、初期索引1902aから検索した文字列1903である“H社”は、出現位置7番目でヒットするが、累積負集合B1905に同じ出現位置でヒットするものが存在するため、この位置では“H社”はヒットしない。すなわち、図中に示す初期索引1902aから切り出した文字列1903は、累積負集合1905から削除されて(ステップS1914)、その結果集合φ1906が出力される。
【0156】
次に、図20の例では、図19の世代0の文書DB1902に対して、“MEI社とSO社が”という検索文字列2001が入力された場合の検索処理の例を示している。
【0157】
まず、索引検索部1701は、検索文字列2001を、“MEI社”、“と”、“SO社”、“が”というように文字列の切出しを行う。
【0158】
次に、索引検索部1701は、図19の例と同様に、正の索引1904aを検索して(ステップS2010)、“MEI社”、と、“SO社”が出現するため、これらを累積結果集合(図示せず)に格納する。
【0159】
次に、索引検索部1701は、負の索引1904bの全要素を累積負集合(図示せず)に格納する(ステップS2011)。その後、索引検索部1701は、世代0の初期索引1902aを検索し(ステップS2012)、累積負集合に登録された要素と、初期索引1902aに登録された要素とで、同じ文字列でかつ、同じ出現位置のものを検索対象からは省き、その上で、世代0でヒットする文字列を探す。
【0160】
この場合、まず、初期索引1902aには“MEI社”は存在しないため、累積結果集合は、正の索引1904aでヒットした“MEI社 (1,4,2)”の先頭位置「4」が記録され、その位置シフト値である「2」が位置シフト累算集合に記録される。
【0161】
次に、索引検索部1701は、検索文字列から切り出した文字列“と”については、正の索引1904aでは検索されず、負の索引1904bにも記録されないため、世代0の初期索引1902aの検索時に初めて“と (1,6,0)”がヒットする。次に、累積結果集合に保存されている唯一つの“MEI社”と連接するかどうかを判定するに当たり、“と”の出現位置「6」に、位置シフト累算集合に記録した位置シフト値「2」を加算した上で、連接を判定する。
【0162】
この処理により、図中2002で示すように、“と”の出現位置は「8」となり、“MEI社”の出現位置が「4」でその文字列長が「4」であるため、出現位置的に連接すると判定することで、この位置は累積結果集合に残る。
【0163】
また、切り出し文字列“が”についても同様に検索処理を行い、その出現位置と位置シフト値を加算して、正の索引1904aでヒットした“SO社”との連接を判定することで、その位置は累積結果集合に残る。
【0164】
このように、切出された文字列毎に処理を繰り返すことによって、最終的に、この文書IDが「1」の出現文字位置が「4」である部分でヒットするように検索することができる。
【0165】
したがって、本実施の形態の文書DB検索装置104による検索処理では、従来の検索処理に加え、更新情報を解釈する処理が発生するが、この処理は、文字列の出現位置集合に対する加減算の演算だけで処理できるため、検索処理速度の低下は無く、また、変更の無い文字列の検索処理については、従来の索引を用いて検索すればよいため、検索速度が低下しない。
【産業上の利用可能性】
【0166】
本発明の文書データベース更新処理装置、文書データベース検索装置、文書データベース索引作成方法及び文書データベース検索方法は、世代管理型文書データベースの更新情報量を削減し、文字列検索の効率化を図ることができるため、文書データベース処理システム等に適用することが可能である。
【図面の簡単な説明】
【0167】
【図1】本発明の実施の形態に係る文書データベース処理システムの構成を示すブロック図
【図2】本実施の形態に係る世代1の文書DBを作成する文書DB更新処理装置の構成を示すブロック図
【図3】本実施の形態に係る(a)は更新前の文書DBの例を示す図、(b)は更新用文書の例を示す図、(c)は更新後の文書DBの例を示す図
【図4】本実施の形態に係る更新前の文書DBの索引例を示す図
【図5】本実施の形態に係る(a)は更新後の文書DBの正の索引例を示す図、(b)は更新後の文書DBの負の索引例を示す図
【図6】本実施の形態に係る更新後の文書DBの削除レコード表の例を示す図
【図7】本実施の形態に係る更新情報作成処理を示すフローチャート
【図8】本実施の形態に係る世代0から世代1、世代2以降の更新情報を作成する文書DB更新処理装置の構成を示すブロック図
【図9】本実施の形態に係る(a)は世代0の文書DBの例を示す図、(b)は世代1の更新文書DBの例を示す図、(c)は世代2の更新文書DBの例を示す図
【図10】本実施の形態に係る(a)は更新用文書の例を示す図、(b)は他の更新用文書の例を示す図
【図11】本実施の形態に係る世代0の文書DBの例を示す図
【図12】本実施の形態に係る(a)は世代0→1の更新情報の例を示す図、(b)は世代1→2の更新情報の例を示す図
【図13】本実施の形態に係る複数更新情報解釈処理を示すフローチャート
【図14】本実施の形態に係る更新情報マージ処理を実行する文書DB更新処理装置の構成を示すブロック図
【図15】本実施の形態に係る更新情報マージ処理を示すフローチャート
【図16】本実施の形態に係る更新情報マージ処理により作成した世代0→2の更新情報の例を示す図
【図17】本実施の形態に係る文書DB検索装置の構成を示すブロック図
【図18】本実施の形態に係る文書DB検索処理を示すフローチャート
【図19】本実施の形態に係る文字列検索処理の具体例を示す図
【図20】本実施の形態に係るその他の文字列検索処理の具体例を示す図
【図21】従来の文書DB管理システムの構成を示すブロック図
【図22】従来の更新後の文書DBの索引例を示す図
【符号の説明】
【0168】
100 文書データベース処理システム
101 文書入力装置
102 文書DB更新処理装置
103 文書DB保持装置
103a 世代0の文書DB
103b 世代0→1の更新情報
103c 世代N−2→N−1の更新情報
103d 世代N−1→Nの更新情報
104 文書DB検索装置
105 検索キーワード入力部
106 文書DB検索部
107 検索結果出力部
108、110 主記憶装置
110 補助記憶装置
201 更新文書判定部
202 正の索引作成部
203 負の索引作成部
204 文書DB更新処理部
205 削除レコード表作成部
206 索引作成部
801 複数更新情報解釈部
1401 更新情報マージ処理部
1402 更新情報削除部
1701 索引検索部
1702 位置シフト累算部
1703 負索引・削除レコード表解釈部


【特許請求の範囲】
【請求項1】
世代管理された文書データベースを更新する文書データベース更新処理装置であって、
一意に識別されるIDを持つ複数のレコード単位で構成される初期世代文書から、レコード毎に文字列を切出し、その切出された文字列と、その文字列の出現文字位置とを対で示す索引と、前記初期世代文書を文書データベースに記録する文書データベース記録部と、
更新用文書を入力する文書入力部と、
前記初期世代文書と前記更新用文書間における変更箇所の文字列の部分を判定する更新文書判定部と、
前記判定により該当文字列部分について、切出された文字列とその出現位置及び文字列の変更において発生する文字列長の差分値の組を索引要素として正の索引を作成する正の索引作成部と、
前記判定により削除されるべき初期世代の索引要素を負の索引として作成する負の索引作成部と、
前記判定により削除されたレコードについては、その文書IDを削除レコード表として作成する削除レコード表作成部と、から成り、前記作成された正の索引、負の索引及び削除レコード表を新たな世代の更新情報として更新・登録する文書データベース更新処理部と、を備えたことを特徴とする文書データベース更新処理装置。
【請求項2】
世代管理された文書データベースを更新する文書データベース更新処理装置であって、
一意に識別されるIDを持つ複数のレコード単位で構成される初期世代から世代Nまでの文書と、負の索引、正の索引及び削除レコード表からなる索引情報を、それぞれ文書データベースに記録する文書データベース記録部と、
世代N+1の更新用文書を入力する文書入力部と、
前記初期世代から世代Nまでの文書と、負の索引、正の索引及び削除レコード表からなる索引情報と、前記世代N+1の更新用文書から変更箇所の文字列の部分を判定する更新文書判定部と、
前記判定により該当文字列部分について、切出された文字列とその出現位置及び文字列の変更において発生する文字列長の差分値の組を索引要素として正の索引を作成する正の索引作成部と、
前記判定により削除されるべき初期世代の索引要素を負の索引として作成する負の索引作成部と、
前記判定により削除されたレコードについては、その文書IDを削除レコード表として作成する削除レコード表作成部と、から成り、前記判定により作成された正の索引、負の索引及び削除レコード表を世代N+1の更新情報として更新・登録する文書データベース更新処理部と、を備えたことを特徴とする文書データベース更新処理装置。
【請求項3】
前記初期世代から世代Nまでの文書と、前記負の索引、前記正の索引及び前記更新用文書に基づく世代i+1(0<i<N)の更新処理においては、世代i〜世代Nの負の索引、正の索引及び削除レコード表に基づいて削除する索引要素と、追加・変更された索引要素と、削除されたレコードとを解釈する複数更新情報解釈部を備えることにより、前記世代N+1の更新情報を作成することを特徴とする請求項2記載の文書データベース更新処理装置。
【請求項4】
前記更新文書判定部は、更新前世代の索引から、更新後世代の索引への更新処理時に、更新対象レコードの変更される文字列の数が任意の閾値より多いか否かを判定し、多い場合には、そのレコードを変更レコードとみなして索引を作成し、当該レコード番号を前記削除レコード表に記録することを特徴とする請求項1または2記載の文書データベース更新処理装置。
【請求項5】
前記複数世代にわたる更新により蓄積される複数世代の更新情報を一つの更新情報に纏める処理を行う更新情報マージ処理部を、更に備えること特徴とする請求項2記載の文書データベース更新処理装置。
【請求項6】
前記更新情報マージ処理部により、必要のなくなった更新情報は削除することを特徴とする請求項5記載の文書データベース更新処理装置。
【請求項7】
前記更新文書判定部は、前記更新用文書から比較対照とする文書レコードを指定し、この文書レコードと、前記初期文書の該当文書レコードとの間の差分文字列リストを求め、当該差分文字列リストの要素数が前記閾値より多いか否かを判定することを特徴とする請求項4記載の文書データベース更新処理装置。
【請求項8】
検索対象とする文字列を入力する検索文字列入力部と、
複数世代の正の索引、負の索引及び削除レコード表からなる更新情報と、その各世代の文書情報を記憶する文書データベース保持部と、
前記入力された文字列を解析して文字列に分割し、分割した各文字列について、前記文書データベース保持部から複数世代に渡る更新情報と、初期世代の索引及び文書とを用いて検索する文書データベース検索部と、
前記文書データベース検索部により得られたレコード集合を出力する検索結果出力部と、を具備することを特徴とする文書データベース検索装置。
【請求項9】
世代N+1の前記正の索引と、世代0と世代1から世代N+1までの更新情報を用いて、世代i(i=1〜N+1)の検索時に、世代N+1から世代i+1までの負の索引の要素と、削除レコード表の要素に基づいて削除された索引要素と、削除されたレコードを累積的に解釈する負索引・削除レコード表解釈部を備え、
前記文書データベース検索部は、世代N+1の索引検索において、前記分割された文字列毎に、前記世代N+1の正の索引を検索して該当する文字列があれば、当該文字列を検索候補とし、世代Nの索引検索において、前記分割された文字列毎に該当する文字列があれば、当該文字列を前記負索引・削除レコード表解釈部に出力し、
前記負索引・削除レコード表解釈部は、前記文書データベース検索部から入力された文字列に該当する文字列が前記世代N+1の負の索引にあれば、当該文字列を検索対象とせず、前記世代N+1の削除レコード表に登録されたレコード番号の文書データを解釈して、前記入力された文字列の要素があれば、その要素を検索対象としないことを特徴とする請求項8記載の文書データベース検索装置。
【請求項10】
前記世代N+1の正の索引から前記世代i+1の正の索引までの各要素の位置シフト値を累算する位置シフト累算部を、更に備え、
前記文書データベース検索部は、前記世代N+1の正の索引から検索された文字列の出現位置に、前記位置シフト累算部により累算された位置シフト値を加算して、当該文字列より前に検索された文字列の出現位置と連接するか否かを判定し、連接していれば、前記検索された文字列を検索対象とすることを特徴とする請求項9記載の文書データベース検索装置。
【請求項11】
前記文書データベース検索部は、前記分割した各文字列に対して、前記世代0〜N+1の各世代の正の索引から該当文字列を検索する処理を繰り返し実行し、検索した該当文字列毎に前記連接の判定を行って、前記分割した全ての文字列に対して、前記世代N+1の正の索引から前記世代i+1の正の索引までの全要素から検索対象を検索することを特徴とする請求項9または10記載の文書データベース検索装置。
【請求項12】
世代管理された文書データベースの索引を作成する文書データベース索引作成方法であって、
一意に識別されるIDを持つ複数のレコード単位で構成される初期世代文書から、レコード毎に文字列を切出し、その切出された文字列と、その文字列の出現文字位置とを対で示す索引と、前記初期世代文書を文書データベースに記録する文書データベース記録ステップと、
更新用文書を入力する文書入力ステップと、
前記初期世代文書と前記更新用文書間における変更箇所の文字列の部分を判定する更新文書判定ステップと、
前記判定により該当文字列部分について、切出された文字列とその出現位置及び文字列の変更において発生する文字列長の差分値の組を索引要素として正の索引を作成する正の索引作成ステップと、
前記判定により削除されるべき初期世代の索引要素を負の索引として作成する負の索引作成ステップと、
前記判定により削除されたレコードについては、その文書IDを削除レコード表として作成する削除レコード表作成ステップと、
前記作成された正の索引、負の索引及び削除レコード表を新たな世代の更新情報として更新・登録する更新・登録ステップと、
を具備することを特徴とする文書データベース索引作成方法。
【請求項13】
世代管理された文書データベースの索引を作成する文書データベース索引作成方法であって、
一意に識別されるIDを持つ複数のレコード単位で構成される初期世代から世代Nまでの文書と、負の索引、正の索引及び削除レコード表からなる索引情報を、それぞれ文書データベースに記録する文書データベース記録ステップと、
世代N+1の更新用文書を入力する文書入力ステップと、
前記初期世代から世代Nまでの文書と、負の索引、正の索引及び削除レコード表からなる索引情報と、前記世代N+1の更新用文書から変更箇所の文字列の部分を判定する更新文書判定ステップと、
前記判定により該当文字列部分について、切出された文字列とその出現位置及び文字列の変更において発生する文字列長の差分値の組を索引要素として正の索引を作成する正の索引作成ステップと、
前記判定により削除されるべき初期世代の索引要素を負の索引として作成する負の索引作成ステップと、
前記判定により削除されたレコードについては、その文書IDを削除レコード表として作成する削除レコード表作成ステップと、
前記判定により作成された正の索引、負の索引及び削除レコード表を世代N+1の更新情報として更新・登録する更新・登録ステップと、
を具備することを特徴とする文書データベース索引作成方法。
【請求項14】
検索対象とする文字列を入力する検索文字列入力ステップと、
複数世代の正の索引、負の索引及び削除レコード表からなる更新情報と、その各世代の文書情報を記憶する文書データベース保持ステップと、
前記入力された文字列を解析して文字列に分割し、分割した各文字列について、前記文書データベースから複数世代に渡る更新情報と、初期世代の索引及び文書とを用いて検索する文書データベース検索ステップと、
前記文書データベース検索ステップにより得られたレコード集合を出力する検索結果出力ステップと、
を具備することを特徴とする文書データベース検索方法。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate


【公開番号】特開2006−185368(P2006−185368A)
【公開日】平成18年7月13日(2006.7.13)
【国際特許分類】
【出願番号】特願2004−380955(P2004−380955)
【出願日】平成16年12月28日(2004.12.28)
【出願人】(000005821)松下電器産業株式会社 (73,050)
【Fターム(参考)】