(57)【特許請求の範囲】
【請求項１】
登録指示された文書データから所定の部分文字列を抽出し、該部分文字列の該文書データにおける文字位置情報および該文書データの文書番号を含む識別情報を該部分文字列に対応するインデクスに記憶し、該文書番号と該文書データを対応付けて文書番号管理テーブルに記憶する文書登録ステップと、
検索タームから所定の部分文字列を抽出し、該部分文字列に対応するインデクスを読み出し、該検索タームにおける部分文字列と同じ位置関係を持つ文字位置情報を含む識別情報を抽出する文書検索ステップを有する文書検索方法において、
上記文書登録ステップは、上記登録指示された文書データの文書番号が既に記憶済みの文書番号である場合には、上記文書番号管理テーブルを参照して該文書番号と対応付けて記憶されている文書データを既登録文書データとして取得し、該既登録文書データと該登録指示された文書データ間で所定の部分文字列を抽出して比較し、文字位置情報が変更となった部分文字列に対してのみ、対応するインデクスに該登録指示された文書データにおける識別情報を追記する文書更新ステップを有し、
上記文書検索ステップは、抽出した識別情報の中で同じ文書番号を含む識別情報が複数存在する場合には、最新に記憶した識別情報以外の識別情報を削除する無効識別情報削除ステップを有することを特徴とする文書検索方法。
【請求項２】
請求項１記載の文書検索方法において、
上記所定の部分文字列とはＮ文字（Ｎは１以上の整数）の連続する文字列または単語であることを特徴とする文書検索方法。
【請求項３】
請求項１または請求項２記載の文書検索方法において、
上記文書更新ステップは、上記既登録文書データと上記登録指示された文書データ間で所定の部分文字列を比較した結果、該既登録文書データのみに存在する部分文字列である場合には該部分文字列の削除情報を該登録指示された文書データの識別情報として該部分文字列に対応するインデクスに追記し、それ以外の場合には該登録指示された文書データにおける識別情報を該部分文字列に対応するインデクスに追記し、
上記無効識別情報削除ステップは、抽出した識別情報の中で同じ文書番号を含む識別情報が複数存在する場合には最新に記憶した識別情報以外の識別情報を削除するとともに、最新に記憶した識別情報が削除情報である場合のみ、最新に記憶した識別情報を削除することを特徴とする文書検索方法。
【請求項４】
登録指示された文書データから所定の部分文字列を抽出し、該部分文字列の該文書データにおける文字位置情報および該文書データの文書番号を含む識別情報を該部分文字列に対応するインデクスに記憶し、該文書番号と該文書データを対応付けて文書番号管理テーブルに記憶する文書登録ステップと、
検索タームから所定の部分文字列を抽出し、該部分文字列に対応するインデクスを読み出し、該検索タームにおける部分文字列と同じ位置関係を持つ文字位置情報を含む識別情報を抽出する文書検索ステップを有する文書検索方法において、
上記文書登録ステップは、上記登録指示された文書データの文書番号が既に記憶済みの文書番号である場合には、上記文書番号管理テーブルを参照して該文書番号と対応付けて記憶されている文書データを既登録文書データとして取得し、該既登録文書データと該登録指示された文書データを比較する文書データ比較ステップと、
文書データ比較ステップの結果、上記登録指示された文書データが上記既登録文書データの一部分を削除あるいは挿入して作成された文書であると判断した場合には、削除あるいは挿入部分から後方に位置する文字列から所定の部分文字列を抽出し、該既登録文書データと該登録指示された文書データにおける文字位置情報の差分を移動量管理テーブルに格納する移動量登録ステップと、
文書データ比較ステップの結果、上記登録指示された文書データが上記既登録文書データの一部分を削除あるいは挿入して作成された文書ではないと判断した場合には、該既登録文書データと該登録指示された文書データ間で文字位置情報が変更となった部分文字列に対してのみ、対応するインデクスに該登録指示された文書データにおける識別情報を追記する識別情報追記ステップを有し、
上記文書検索ステップは、抽出した識別情報の中で同じ文書番号を含む識別情報が複数存在する場合には、最新に記憶した識別情報以外の識別情報を削除する無効識別情報削除ステップと、
上記移動量管理テーブルに格納されている文字位置情報の差分を取得し、上記識別情報に該文字位置情報の差分を加算する移動量修正ステップを有することを特徴とする文書検索方法。
【請求項５】
登録指示された文書データから所定の部分文字列を抽出し、該部分文字列の該文書データにおける文字位置情報および該文書データの文書番号を含む識別情報を該部分文字列に対応するインデクスに記憶し、該文書番号と該文書データを対応付けて文書番号管理テーブルに記憶する文書登録手段と、
検索タームから所定の部分文字列を抽出し、該部分文字列に対応するインデクスを読み出し、該検索タームにおける部分文字列と同じ位置関係を持つ文字位置情報を含む識別情報を抽出する文書検索手段を有する文書検索装置において、
上記文書登録手段は、上記登録指示された文書データの文書番号が既に記憶済みの文書番号である場合には、上記文書番号管理テーブルを参照して該文書番号と対応付けて記憶されている文書データを既登録文書データとして取得し、該既登録文書データと該登録指示された文書データ間で所定の部分文字列を抽出して比較し、文字位置情報が変更となった部分文字列に対してのみ、対応するインデクスに該登録指示された文書データにおける識別情報を追記する文書更新手段を備え、
上記文書検索手段は、抽出した識別情報の中で同じ文書番号を含む識別情報が複数存在する場合には、最新に記憶した識別情報以外の識別情報を削除する無効識別情報削除手段を備えたことを特徴とする文書検索装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、文書管理システムやグループウェアなどで管理される、編集が頻繁に行われる文書を対象として、指定された検索文字列の存在を探索するフルテキストサーチのための文書検索方法および装置に関する。
【０００２】
【従来の技術】
大規模な文書データベースから指定された検索文字列（以下、検索タームと呼ぶ）が含まれる文書を高速に探し出す方式として、ｎ−ｇｒａｍインデクス方式（以下、方式１と呼ぶ）がある。
ｎ−ｇｒａｍインデクス方式とは、文書の登録時に文書中の全てのｎ−ｇｒａｍ（連続するｎ文字からなる文字列）についてその位置情報をインデクスとして格納しておき、検索時には検索ターム中のｎ−ｇｒａｍに対しそのインデクスを参照し、検索ターム中の位置関係とインデクス中の位置関係が等しいかどうかを判定（以下、隣接判定と呼ぶ）することによって、検索タームが出現する文書を探し出す方式である。
図２に１−ｇｒａｍインデクス方式の例を示す。
本図に示すように、方式１では、文書の登録時に文書中の全てのｎ−ｇｒａｍ（図２の例ではｎ＝１）についてその位置情報をインデクスとして格納する。
例えば、“に”という１−ｇｒａｍは文書‘００１’の‘３’文字目に出現するので、その文書番号‘００１’と文字位置‘３’を“に”に対応するインデクス２００に格納する。
検索時には、指定された検索タームから抽出したｎ−ｇｒａｍ（図２の例ではｎ＝１）のインデクス間で位置情報の隣接判定を行うことにより、検索タームが存在する位置情報を取得する。
例えば、“微生物”が検索タームとして指定された場合には、この検索タームからまず、１−ｇｒａｍ“微”、“生”および“物”を抽出する。
そして、“微”に対応するインデクス２０１、“生”に対応するインデクス２０２および“物”に対応するインデクス２０３の間で位置情報の隣接判定を行うことによって、“微生物”が出現する位置情報を取得する。
本図の例では、“微”、“生”および“物”が文書番号‘００１’の‘９’文字目から隣り合い、また、文書番号‘０５６’の‘５’文字目から隣り合っているので、それらの出現位置に“微生物”が存在することが分かる。
以上のように、方式１では、文書を走査することなしに、インデクスの読込みと位置情報の隣接判定だけで検索が行えるため、大規模な文書データベースに適用した場合でも高速なフルテキストサーチを実現できる可能性がある。
【０００３】
しかし、方式１において、ある番号の文書を別の文書に置き換えて登録する、例えば、番号３のＡ文書を番号３はそのままにして文書をＡ文書からＤ文書に置き換えて登録する、すなわち置換する場合には、置換前の文書から全てのｎ−ｇｒａｍを抽出し、それらに対応するインデクスから置換前の文書における位置情報を全て削除して新たな文書を登録しなければならず、時間が掛かることになる。
この問題を解決するために、ユーザが文書を識別するために文書に付与する番号（以下、外部文書番号と呼ぶ）と、システムが文書を識別するために文書に付与する番号（以下、内部文書番号と呼ぶ）を対応付けるテーブル（以下、文書番号変換テーブルと呼ぶ）を持ち、インデクスに格納する文書番号として内部文書番号を用いる方式（以下、方式２と呼ぶ）がある。
図３に方式２における文書置換方法を示す。
本方式において、ユーザが指定した外部文書番号の文書を、別の文書に置換する場合には、指定された外部文書番号に対応する内部文書番号を文書番号変換テーブル１２１上で無効化し、新たに登録した文書の内部文書番号と指定された外部文書番号を対応付ける。
【０００４】
以下、図３を用いて具体的に説明する。
（１）指定された外部文書番号‘００１’と対応付けられている内部文書番号‘Ｄ０１’に対して、文書番号変換テーブル１２１の該当箇所に無効フラグを設定し、文書を無効化する。
（２）新たに置き換える文書を内部文書番号‘Ｄ５７’として追加登録する。
（３）（２）で登録した内部文書番号‘Ｄ５７’と指定された外部文書番号‘００１’を、文書番号変換テーブル１２１で対応付ける。
このようにして置換された文書は、図４に示す方法を用いて検索する。
（４）検索ターム“生物”から抽出されたｎ−ｇｒａｍ（図４の例ではｎ＝１）に対応するインデクスの間で位置情報の隣接判定を行うことにより、指定された検索タームが出現する内部文書番号と文字位置を得る。
（５）文書番号変換テーブル１２１を用いて、（４）で得られた内部文書番号を対応する外部文書番号に変換する。
このとき、無効フラグが設定されている内部文書番号とその文字位置は削除する。
以上のように、方式２を用いることにより、インデクスに格納されている位置情報を削除することなく、指定された文書を無効化し、新たな文書に置換することができる。
その結果、高速な文書の置換機能を実現することが可能となる。
【０００５】
【発明が解決しようとする課題】
以上説明した方式２によると、ユーザが文書を識別するために文書に付与する外部文書番号と、システムが文書を識別するために文書に付与する内部文書番号を対応付ける文書番号変換テーブルを持ち、この文書番号変換テーブル上で文書を無効化することにより、インデクスに格納されている位置情報を削除することなく、置換する前の文書を削除し、新たな文書に置き換えて登録することができるため、高速な文書の置換機能を実現することが可能となる。
しかし、方式２では、図５に示すように文書の一部を編集して登録し直す、すなわち文書を更新する場合でも、全く別の文書として登録しなおす、すなわち置換するので、位置情報に変更のないｎ−ｇｒａｍに対してもインデクスへの位置情報の追加が行われる。
その結果、文書の更新に時間が掛かるとともに、同じ位置情報を二重に登録することになるため、総インデクス容量が増加する。
こうした問題に対し、本発明では以下の課題を解決することを目的とする。
すなわち、本発明の目的は、文書を編集することによって存在する位置が変更した文字列に関する位置情報のみをインデクスに追加することにより、高速な文書更新機能を実現することにある。
また、位置情報の二重登録を防止することにより、総インデクス容量の増加を抑えることにある。
【０００６】
【課題を解決するための手段】
上記課題を解決するために、本発明は、
文書検索方法であって、
第１の文書に含まれる第１のテキストデータから所定の部分文字列を抽出して該部分文字列と上記第１の文書の識別情報とをインデクスとして予め記憶し、
第２の文書に含まれる第２のテキストデータを入力して上記第２のテキストデータからそれぞれ所定の部分文字列を抽出し、
上記第１のテキストデータから抽出した部分文字列と上記第２のテキストデータから抽出した部分文字列とを比較し、異なる部分文字列について上記インデクスの更新を行うようにしている。
【０００７】
また、文書検索方法であって、
第１の文書に含まれる第１のテキストデータから所定の部分文字列を抽出して該部分文字列と上記第１の文書の識別情報とをインデクスとして予め記憶し、
第２の文書に含まれる第２のテキストデータを入力して、該第２のテキストデータと上記第１のテキストデータとから差分を抽出して該差分から所定の部分文字列を抽出し、
上記差分から抽出した部分文字列について上記インデクスの更新を行うようにしている。
【０００８】
また、上記部分文字列の抽出では、上記部分文字列と該部分文字列の上記テキストデータにおける文字位置を抽出し、
上記インデクスは、上記部分文字列と上記文字位置のペアと上記テキストデータの識別情報との対応付けを記憶し、
上記部分文字列の比較では、上記部分文字列と上記文字位置のペア同士で比較するようにしている。
【０００９】
また、上記比較結果、第２の文書のみに存在する部分文字列である場合には、該部分文字列の情報を上記インデクスに追加するようにしている。
【００１０】
また、上記比較結果、第１の文書のみに存在する部分文字列である場合には、該部分文字列の情報を上記インデクスから削除するようにしている。
【００１１】
また、文書検索装置であって、
第１の文書に含まれる第１のテキストデータから所定の部分文字列を抽出して該部分文字列と上記第１の文書の識別情報とをインデクスとして予め記憶するインデクス作成手段と、
第２の文書に含まれる第２のテキストデータを入力して上記第２のテキストデータからそれぞれ所定の部分文字列を抽出する抽出手段と、
上記第１のテキストデータから抽出した部分文字列と上記第２のテキストデータから抽出した部分文字列とを比較し、異なる部分文字列について上記インデクスの更新を行う更新手段とを備えるようにしている。
【００１２】
また、文書検索装置であって、
第１の文書に含まれる第１のテキストデータから所定の部分文字列を抽出して該部分文字列と上記第１の文書の識別情報とをインデクスとして予め記憶するインデクス作成手段と、
第２の文書に含まれる第２のテキストデータを入力して、該第２のテキストデータと上記第１のテキストデータとから差分を抽出して該差分から所定の部分文字列を抽出する抽出手段と、
上記差分から抽出した部分文字列について上記インデクスの更新を行うインデクス更新手段とを備えるようにしている。
【００１３】
【発明の実施の形態】
以下、本発明の実施例について図１を用いて説明する。
本発明を適用した文書検索システムは、ディスプレイ１００、キーボード１０１、中央演算処理装置（ＣＰＵ）１０２、テキスト１０７およびインデクス１０８を格納する二次記憶装置としての磁気ディスク装置１０６、フロッピディスクドライバ（ＦＤＤ）１０４、主記憶装置１０９から構成される。
また、バス１０３にはＣＰＵ１０２、磁気ディスク装置１０６、ＦＤＤ１０４および主記憶装置１０９が接続されている。
フロッピディスク１０５に格納されている情報は、ＦＤＤ１０４によりアクセスされる。
主記憶装置１０９には、システム制御プログラム１１０、文書登録制御プログラム１１１、文書更新制御プログラム１１２、文書検索制御プログラム１１３、文書登録プログラム１１４、位置情報変更文字列抽出プログラム１１５、位置情報変更文字列登録プログラム１１６、文書番号対応付けプログラム１１７、位置情報取得プログラム１１８、文書番号変換プログラム１１９、無効位置情報削除プログラム１２０が格納されるとともに文書番号変換テーブル１２１およびワークエリア１２２が確保される。
以上のプログラムは磁気ディスク装置１０６、フロッピディスク１０５などのコンピュータで読み書きできる記憶媒体に格納することもできる。
【００１４】
システム制御プログラム１１０はキーボード１０１からの指示を受け起動する。
文書登録制御プログラム１１１はキーボード１０１からの文書登録指示により、システム制御プログラム１１０によって起動され、文書登録プログラム１１４の制御を行う。
文書更新制御プログラム１１２はキーボード１０１からの文書更新指示により、システム制御プログラム１１０によって起動され、位置情報変更文字列抽出プログラム１１５、位置情報変更文字列登録プログラム１１６および文書番号対応付けプログラム１１７の制御を行う。なお、ここで更新とは部分的な変更を意味する。
文書検索制御プログラム１１３はキーボード１０１からの文書検索指示により、システム制御プログラム１１０によって起動され、位置情報取得プログラム１１８、文書番号変換プログラム１１９および無効位置情報削除プログラム１２０の制御を行う。
【００１５】
以下、本実施例における処理内容の概要を説明する。
文書を登録する際には、キーボード１０１からの文書登録指示により、システム制御プログラム１１０が文書登録制御プログラム１１１を起動する。
そして、文書登録制御プログラム１１１は文書登録プログラム１１４を起動し、フロッピディスク１０５からテキストデータを読み込みテキスト１０７として磁気ディスク装置１０６に格納するとともに、テキスト１０７における所定の文字列の出現位置情報を、インデクス１０８として磁気ディスク装置１０６に格納する。
テキストデータはフロッピディスク１０５を用いて入力するだけに限らず、通信回線やＣＤ−ＲＯＭ装置（図１には示していない）等を用いて他の装置から入力するような構成をとることも可能である。
この文書登録プログラム１１４の処理内容は方式２に開示されている方式と同様である。
文書を更新する際には、キーボード１０１からの文書更新指示により、システム制御プログラム１１０が文書更新制御プログラム１１２を起動し、文書更新制御プログラム１１２が位置情報変更文字列抽出プログラム１１５、位置情報変更文字列登録プログラム１１６および文書番号対応付けプログラム１１７による一連の文書更新処理を制御する。
【００１６】
文書更新処理の処理内容を図８のＰＡＤ（Ｐｒｏｂｌｅｍ  ＡｎａｌｙｓｉｓＤｉａｇｒａｍ）に示す。
文書更新制御プログラム１１２は、図８に示すように、まずステップ８００で、位置情報変更文字列抽出プログラム１１５を起動し、指定された外部文書番号と文書番号変換テーブル１２１によって対応付けられている内部文書番号の文書、すなわち更新前の文書と、指定された更新後の文書の間で、文字位置が変更となった文字列とその更新後文書における文字位置を全て抽出する。
文字位置の変更情報を取得する方法としては、既存の差分抽出方法を用いる。ただし、ここで抽出単位とする文字列としてはインデクス作成単位と同じ文字列を用いる。
次にステップ８０１で、位置情報変更文字列登録プログラム１１６を起動し、ステップ８００で抽出した文字列とその更新後文書における文字位置を、新たな内部文書番号の文字位置として登録する。
最後にステップ８０２で、文書番号対応付けプログラム１１７を起動し、ステップ８０１で新たに登録した内部文書番号と指定された外部文書番号を、文書番号変換テーブル１２１上で対応付ける。
【００１７】
文書を検索する際には、キーボード１０１からの文書検索指示により、システム制御プログラム１１０が文書検索制御プログラム１１３を起動し、文書検索制御プログラム１１３が位置情報取得プログラム１１８、文書番号変換プログラム１１９および無効位置情報削除プログラム１２０による一連の文書検索処理を制御する。
文書検索制御プログラム１１３は、図９のＰＡＤ図に示すように、まずステップ９００で、位置情報取得プログラム１１８を起動し、指定された検索タームから所定の文字列を抽出し、その文字列に対応するインデクスを読み出し、検索タームにおける文字列と同じ位置関係を持つ文字位置とその内部文書番号を抽出する。すなわち、対応するインデクス間で位置情報の隣接判定を行う。
ただしこのとき、インデクス内に削除を示す文字位置が存在した場合には、その内部文書番号と削除を示す文字位置も抽出しておく。
次にステップ９０１で、文書番号変換プログラム１１９を起動し、ステップ９００で取得した位置情報に含まれる内部文書番号を、文書番号変換テーブル１２１を参照して対応する外部文書番号に変換する。
最後にステップ９０２で、無効位置情報削除プログラム１２０を起動し、ステップ９０１で外部文書番号に変換した位置情報の中に、同じ外部文書番号が複数存在する場合には、最新の外部文書番号以外の外部文書番号を含む位置情報を削除し、その結果の中に削除を示す文字位置を含む位置情報が含まれている場合には、その文字位置を含む位置情報を削除する。
以上が本実施例における処理内容の概要である。
【００１８】
以下、本実施例における処理内容のうち、方式１および方式２と異なる文書更新制御プログラム１１２による文書更新処理および文書検索制御プログラム１１３による文書検索処理の内容を具体例を用いて詳細に説明する。
文書更新制御プログラム１１２による文書更新処理の内容は図８に示す通りである。
以下、外部文書番号‘００１’、内部文書番号‘Ｄ０１’として登録されている文書「海洋には数万の微生物が生息する…」を、「海洋には数万の生物が生息する…」に編集して、同じ外部文書番号‘００１’として登録し直す場合を例に、図６を用いて説明する。
まずステップ８００で、位置情報変更文字列抽出プログラム１１５を起動し、指定された外部文書番号と文書番号変換テーブル１２１によって対応付けられている内部文書番号の文書、すなわち更新前の文書「海洋には数万の微生物が生息する…」と、指定された更新後の文書「海洋には数万の生物が生息する…」の間で、文字位置が変更となった文字列と更新後文書における文字位置を全て抽出する。
ここで、文字位置の変更情報を取得する方法としては、既存の差分抽出方法を用いる。
また、ここで抽出単位とする文字列としてはインデクス作成単位と同じ文字列を用いる。
その結果、文字位置が変更となった文字列として、“微：−１、生：９、１２、物：１０、が：１１、…”が抽出される。
ここで、“物：１０”は文字列“物”の文字位置が変更となり、更新後の文書の‘１０’文字目に存在することを表す。
また、“微：−１”は更新前の文書に存在した文字列“微”が、更新後の文書から全て削除されたことを表す。
【００１９】
次にステップ８０１で、位置情報変更文字列登録プログラム１１６を起動し、ステップ８００で抽出した文字列と更新後文書における文字位置を、新たな内部文書番号の文字位置として登録する。
図６の例では、内部文書番号‘Ｄ５７’として、文字位置“生：９、１２、物：１０、が：１１、…”をインデクスに追加登録する。
また、削除された文字列“微”については、削除を示す文字位置‘−１’をインデクスに追加登録する。
【００２０】
最後にステップ８０２で、文書番号対応付けプログラム１１７を起動し、ステップ８０１で新たに登録した内部文書番号と指定された外部文書番号を、文書番号変換テーブル１２１上で対応付ける。
図６に示すように、文書番号変換テーブル１２１は内部文書番号と外部文書番号を対応付けて格納したテーブルである。
本図に示す例では、新たに登録した内部文書番号‘Ｄ５７’と指定された外部文書番号‘００１’が、文書番号変換テーブル１２１の該当箇所に対応付けて格納される。
【００２１】
文書検索制御プログラム１１３による文書検索処理の内容は図９に示す通りである。
以下、図７を用いて具体的に説明する。
まずステップ９００で、位置情報取得プログラム１１８を起動し、指定された検索タームから所定の文字列を抽出し、その文字列に対応するインデクスを読み出し、検索タームにおける文字列と同じ位置関係を持つ文字位置とその内部文書番号を抽出する。すなわち、対応するインデクス間で位置情報の隣接判定を行う。
ただしこのとき、インデクス内に後述する削除を示す文字位置が存在した場合には、その内部文書番号と削除を示す文字位置も抽出しておく。
図７の例では、検索タームとして指定された“微生物”から、インデクス作成単位である１−ｇｒａｍ“微”、“生”および“物”が抽出され、これらに対応するインデクス間で隣接判定を行うことにより、検索ターム“微生物”が出現する内部文書番号とその文字位置〈Ｄ０１、９〉、〈Ｄ５６、５〉を抽出する。
ここで、〈Ｄ０１、９〉とは“微生物”が内部文書番号‘Ｄ０１’の‘９’文字目に出現することを示す。
また、“微”のインデクスに削除を示す文字位置が格納されていたので〈Ｄ５７、−１〉も抽出しておく。
【００２２】
次にステップ９０１で、文書番号変換プログラム１１９を起動し、ステップ９００で取得した位置情報に含まれる内部文書番号を、文書番号変換テーブル１２１を参照して対応する外部文書番号に変換する。
図７に示す例では、位置情報〈Ｄ０１、９〉、〈Ｄ５６、５〉、〈Ｄ５７、−１〉の内部文書番号が、文書番号変換テーブルによって対応する外部文書番号に変換され、《００１、９》、《０５６、５》、《００１、−１》が得られる。
【００２３】
ここで、《Ｄ０１、９》とは“微生物”が外部文書番号‘００１’の‘９’文字目に出現することを示す。
【００２４】
最後にステップ９０２で、無効位置情報削除プログラム１２０を起動し、ステップ９０１で外部文書番号に変換された位置情報の中に、同じ外部文書番号が複数存在する場合には、最新の外部文書番号以外の外部文書番号を含む位置情報を削除する。
そして、その結果の中に削除を示す文字位置を含む位置情報が含まれている場合には、その文字位置を含む位置情報を削除する。
図７に示す例では、まず、位置情報《００１、９》、《０５６、５》、《００１、−１》の中に、同じ外部文書番号‘００１’が存在するので、最新の位置情報《００１、−１》を残して削除する。
その結果、位置情報《０５６、５》、《００１、−１》が得られる。
【００２５】
そして、この結果の中に削除を示す文字位置‘−１’を含む位置情報が存在するので、この位置情報《００１、−１》を削除する。
最終的に、検索ターム“微生物”の位置情報として《０５６、５》が得られ、外部文書番号‘０５６’の‘５’文字目に“微生物”が存在することが分かる。
【００２６】
以上説明したように、本方式では、文書を編集することによって存在する位置が変更した文字列を調べ、その文字列に関するインデクスにのみ、その位置情報を同じ外部文書番号の文書として登録する。
そして、検索時に、同じ外部文書番号の位置情報が複数得られた場合には、最新の位置情報以外の位置情報を削除する。
こうすることにより、文書を編集することによって存在する位置が変更した文字列に関するインデクスのみを書き換えることになるので、文書の更新を高速化することができる。
また、存在する位置が変更しなかった文字列に対しては、その位置情報を二重に登録してしまうことを防ぐことができるので、総インデクス容量を抑えることが可能となる。
以上により、文書管理システムやグループウェアなどで管理される、編集が頻繁に行われる文書を対象とした場合でも、高速で、かつ無駄なインデクスの増加を防ぐことが可能な文書更新機能が実現できることになる。
【００２７】
本実施例では、ｎ文字の文字列に対して作成されたインデクスの場合について説明したが、単語単位に作成されたインデクスの場合についても上述した文字位置として単語位置を用いることにより、同様な処理が可能である。これは、上記の説明から明らかであろう。
また、本実施例では、インデクスに格納する位置情報として文書番号と文字位置を含む場合について説明したが、文書が構造化されており、位置情報として文書番号と文字位置だけでなく、構造番号を含むようにした場合、編集が行われた構造のみを対象として同様な処理を行うようにすることもできる。
【００２８】
以下、本発明の第二の実施例について説明する。
本実施例は、挿入、削除などの編集が行われた文字列から後ろに出現する文字列のように、文字の並びに変更がないにもかかわらず、文字位置が移動することによって変更となる文字列に対して、移動開始位置と移動量を登録しておき、それを利用して検索時に位置情報の修正を行う方法である。
本方式を用いることにより、編集が行われた文字列から後ろに位置し、文字位置が移動しただけで文字の並びに変更のない文字列に対しては、インデクスへの位置情報の追加を行わずにすむため、高速かつインデクスの増加を抑えることが可能な文書更新機能が実現できることになる。
【００２９】
本実施例は基本的に第一の実施例（図１）と同様の構成をとるが、その中の主記憶装置１０９内の構成が異なる。この主記憶装置１０９ａは図１０に示すような構成となる。
主記憶装置１０９ａには、システム制御プログラム１１０、文書登録制御プログラム１１１、文書更新制御プログラム１１２ａ、文書検索制御プログラム１１３ａ、文書登録プログラム１１４、位置情報変更文字列および移動量抽出プログラム１０００、位置情報変更文字列登録プログラム１１６、文書番号対応付けプログラム１１７、移動量登録プログラム１００１、位置情報取得プログラム１１８、移動量修正プログラム１００２、文書番号変換プログラム１１９、無効位置情報削除プログラム１２０が格納されるとともに文書番号変換テーブル１２１、移動量管理テーブル１００３およびワークエリア１２２が確保される。
以上のプログラムは磁気ディスク装置１０６、フロッピディスク１０５などのコンピュータで読み書きできる記憶媒体に格納することもできる。
【００３０】
システム制御プログラム１１０はキーボード１０１からの指示を受け起動する。
文書登録制御プログラム１１１はキーボード１０１からの文書登録指示により、システム制御プログラム１１０によって起動され、文書登録プログラム１１４の制御を行う。
文書更新制御プログラム１１２ａはキーボード１０１からの文書更新指示により、システム制御プログラム１１０によって起動され、位置情報変更文字列および移動量抽出プログラム１０００、位置情報変更文字列登録プログラム１１６、文書番号対応付けプログラム１１７および移動量登録プログラム１００１の制御を行う。
文書検索制御プログラム１１３ａはキーボード１０１からの文書検索指示により、システム制御プログラム１１０によって起動され、位置情報取得プログラム１１８、移動量修正プログラム１００２、文書番号変換プログラム１１９および無効位置情報削除プログラム１２０の制御を行う。
【００３１】
以下、第一の実施例と異なる文書更新制御プログラム１１２ａおよび文書検索制御プログラム１１３ａの処理概要を説明する。
文書を更新する際には、キーボード１０１からの文書更新指示により、システム制御プログラム１１０が文書更新制御プログラム１１２ａを起動し、文書更新制御プログラム１１２ａが位置情報変更文字列および移動量抽出プログラム１０００、位置情報変更文字列登録プログラム１１６、文書番号対応付けプログラム１１７および移動量登録プログラム１００１による一連の文書更新処理を制御する。
【００３２】
文書更新処理の処理内容を図１１のＰＡＤに示す。
文書更新制御プログラム１１２ａは、図１１に示すように、まずステップ１１００で、位置情報変更文字列および移動量抽出プログラム１０００を起動し、指定された外部文書番号と文書番号変換テーブル１２１によって対応付けられている内部文書番号の文書、すなわち更新前の文書と、指定された更新後の文書の間で、編集された文字列とその更新後文書における文字位置を抽出する。
文字列の編集情報を取得する方法としては、既存の差分抽出方法を用いる。
ただし、ここで抽出単位とする文字列としてはインデクス作成単位と同じ文字列を用いる。
そしてステップ１１０１で、編集された文字列から後ろに位置する、すなわち文字位置が移動となった文字列の移動開始位置および移動量を抽出する。
次にステップ１１０２で、位置情報変更文字列登録プログラム１１６を起動し、ステップ１１００で抽出した文字列とその更新後文書における文字位置を、新たな内部文書番号の文字位置として登録する。
そしてステップ１１０３で、文書番号対応付けプログラム１１７を起動し、ステップ１１０２で新たに登録した内部文書番号と指定された外部文書番号を、文書番号変換テーブル１２１上で対応付ける。
最後にステップ１１０４で、移動量登録プログラム１００１を起動し、ステップ１１０１で抽出した移動開始位置と移動量を、後述する移動量管理テーブル１００３に更新前文書の内部文書番号と対応付けて登録する。
【００３３】
文書を検索する際には、キーボード１０１からの文書検索指示により、システム制御プログラム１１０が文書検索制御プログラム１１３ａを起動し、文書検索制御プログラム１１３ａが位置情報取得プログラム１１８、移動量修正プログラム１００２、文書番号変換プログラム１１９および無効位置情報削除プログラム１２０による一連の文書検索処理を制御する。
文書検索制御プログラム１１３ａは、図１２のＰＡＤ図に示すように、まずステップ１２００で、位置情報取得プログラム１１８を起動し、指定された検索タームから所定の文字列を抽出し、その文字列に対応するインデクスを読み出し、検索タームにおける文字列と同じ位置関係を持つ文字位置とその内部文書番号を抽出する。すなわち、対応するインデクス間で位置情報の隣接判定を行う。
ただしこのとき、インデクス内に削除を示す文字位置が存在した場合には、その内部文書番号と削除を示す文字位置も抽出しておく。
そしてステップ１２０１で、移動量修正プログラム１００２を起動し、ステップ１２００で取得した位置情報の中で、移動量管理テーブル１００３に格納されている移動開始位置以降に存在する位置情報を移動量にしたがって修正する。
次にステップ１２０２で、文書番号変換プログラム１１９を起動し、ステップ１２０１で修正した位置情報に含まれる内部文書番号を、文書番号変換テーブル１２１を参照して対応する外部文書番号に変換する。
最後にステップ１２０３で、無効位置情報削除プログラム１２０を起動し、ステップ１２０２で外部文書番号に変換した位置情報の中に、同じ外部文書番号が複数存在する場合には、最新の外部文書番号以外の外部文書番号を含む位置情報を削除し、その結果の中に削除を示す文字位置を含む位置情報が含まれている場合には、その文字位置を含む位置情報を削除する。
以上が本実施例における処理内容の概要である。
【００３４】
以下、本実施例における処理内容のうち、第一の実施例と異なる文書更新制御プログラム１１２ａによる文書更新処理および文書検索制御プログラム１１３ａによる文書検索処理の内容を具体例を用いて詳細に説明する。
文書更新制御プログラム１１２ａによる文書更新処理の内容は図１１に示す通りである。
以下、外部文書番号‘００１’、内部文書番号‘Ｄ０１’として登録されている文書「海洋には数万の微生物が生息する…」を、「海洋には数万の生物が生息する…」に編集して、同じ外部文書番号‘００１’として登録し直す場合を例に、図１３を用いて説明する。
まずステップ１１００で、位置情報変更文字列および移動量抽出プログラム１０００を起動し、指定された外部文書番号と文書番号変換テーブル１２１によって対応付けられている内部文書番号の文書、すなわち更新前の文書「海洋には数万の微生物が生息する…」と、指定された更新後の文書「海洋には数万の生物が生息する…」の間で、編集された文字列とその更新後文書における文字位置を抽出する。
ここで、文字列の編集情報を取得する方法としては、既存の差分抽出方法を用いる。
また、ここで抽出単位とする文字列としてはインデクス作成単位と同じ文字列を用いる。
その結果、編集された文字列として、“微：−１”が抽出される。
ここで、“微：−１”は更新前の文書に存在した文字列“微”が、更新後の文書から全て削除されたことを表す。
そしてステップ１１０１で、編集された文字列から後ろに位置する、すなわち文字位置が移動となった文字列の移動開始位置および移動量を抽出する。
図１３の例では、‘９’文字目に存在した文字列“微”が削除されたため、‘１０’文字目以降の文字列が一文字ずつ左へ移動し、文字位置が１つずつ小さくなっている。
そのため、“移動開始位置：１０、移動量：−１”が得られる。
次にステップ１１０２で、位置情報変更文字列登録プログラム１１６を起動し、ステップ１１００で抽出した文字列とその更新後文書における文字位置を、新たな内部文書番号の文字位置として登録する。
図１３の例では、削除された文字列“微”に対して、内部文書番号‘Ｄ５７’と削除を示す文字位置‘−１’をインデクスに追加登録する。
そしてステップ１１０３で、文書番号対応付けプログラム１１７を起動し、ステップ１１０２で新たに登録した内部文書番号と指定された外部文書番号を、文書番号変換テーブル１２１上で対応付ける。
図１３に示す例では、新たに登録された内部文書番号‘Ｄ５７’と指定された外部文書番号‘００１’が、文書番号変換テーブル１２１の該当箇所に対応付けて格納される。
最後にステップ１１０４で、移動量登録プログラム１００１を起動し、ステップ１１０１で抽出した移動開始位置と移動量を、移動量管理テーブル１００３に更新前文書の内部文書番号と対応付けて登録する。
図１３に示すように、移動量管理テーブル１００３は内部文書番号、移動開始位置および移動量を対応付けて格納したテーブルである。
本図に示す例では、移動開始位置‘１０’と移動量‘−１’が、移動量管理テーブル１００３の更新前文書の内部文書番号‘Ｄ００’と対応付けて格納される。
【００３５】
文書検索制御プログラム１１３ａによる文書検索処理の内容は図１２に示す通りである。
以下、図１４を用いて具体的に説明する。
まずステップ１２００で、位置情報取得プログラム１１８を起動し、指定された検索タームから所定の文字列を抽出し、その文字列に対応するインデクスを読み出し、検索タームにおける文字列と同じ位置関係を持つ文字位置とその内部文書番号を抽出する。すなわち、対応するインデクス間で位置情報の隣接判定を行う。
ただしこのとき、インデクス内に削除を示す文字位置が存在した場合には、その内部文書番号と削除を示す文字位置も抽出しておく。
図１４の例では、検索タームとして指定された“生物”から、インデクス作成単位である１−ｇｒａｍ“生”および“物”が抽出され、これらに対応するインデクス間で隣接判定を行うことにより、検索ターム“生物”が出現する内部文書番号とその文字位置〈Ｄ０１、１０〉、〈Ｄ５６、６〉を抽出する。
ここで、〈Ｄ０１、１０〉とは“生物”が内部文書番号‘Ｄ０１’の‘１０’文字目に出現することを示す。
そしてステップ１２０１で、移動量修正プログラム１００２を起動し、ステップ１２００で取得した位置情報の中で、移動量管理テーブル１００３に格納されている移動開始位置以降に存在する位置情報を移動量にしたがって修正する。
図１４に示す例では、内部文書番号‘Ｄ０１’の‘１０’文字目以降に出現する文字列が‘−１’移動していることが分かるので、位置情報〈Ｄ０１、１０〉を〈Ｄ０１、９〉に修正する。
次にステップ１２０２で、文書番号変換プログラム１１９を起動し、ステップ１２０１で修正した位置情報に含まれる内部文書番号を、文書番号変換テーブル１２１を参照して対応する外部文書番号に変換する。
図１４に示す例では、位置情報〈Ｄ０１、９〉、〈Ｄ５６、６〉の内部文書番号が、文書番号変換テーブルによって対応する外部文書番号に変換され、《００１、９》、《０５６、６》が得られる。
ここで、《Ｄ０１、９》とは“生物”が外部文書番号‘００１’の‘９’文字目に出現することを示す。
最後にステップ１２０３で、無効位置情報削除プログラム１２０を起動し、ステップ１２０２で外部文書番号に変換した位置情報の中に、同じ外部文書番号が複数存在する場合には、最新の外部文書番号以外の外部文書番号を含む位置情報を削除する。
そして、その結果の中に削除を示す文字位置を含む位置情報が含まれている場合には、その文字位置を含む位置情報を削除する。
図１４に示す例では、同じ外部文書番号は一つずつしか存在せず、また削除を示す文字位置を含む位置情報は含まれていないので、変更はない。
最終的に、検索ターム“生物”の位置情報として《００１、９》、《０５６、６》が得られ、外部文書番号‘００１’の‘９’文字目、外部文書番号‘０５６’の‘６’文字目に“生物”が存在することが分かる。
【００３６】
以上説明したように、本方式では、挿入、削除などの編集が行われた文字列から後ろに出現する文字列のように、文字の並びに変更がないにもかかわらず、文字位置が移動することによって変更となる文字列に対して、移動開始位置と移動量を登録しておき、それを利用して検索時に位置情報の修正を行う。
こうすることにより、編集された文字列に関するインデクスのみの書き換えで文書更新が実現できるため、文書更新の高速化が図れる。
また、編集されなかった文字列に対しては、その位置情報を二重に登録してしまうことを防ぐことができるので、総インデクス容量を抑えることが可能となる。
以上により、文書管理システムやグループウェアなどで管理される、編集が頻繁に行われる文書を対象とした場合でも、高速で、かつ無駄なインデクスの増加を防ぐことが可能な文書更新機能が実現できることになる。
【００３７】
本実施例では、ｎ文字の文字列に対して作成されたインデクスの場合について説明したが、単語単位に作成されたインデクスの場合についても上述した文字位置として単語位置を用いることにより、同様な処理が可能である。
これは、上記の説明から明らかであろう。
また、本実施例では、インデクスに格納する位置情報として文書番号と文字位置を含む場合について説明したが、文書が構造化されており、位置情報として文書番号と文字位置だけでなく、構造番号を含むようにした場合、編集があった構造のみを対象として同様な処理を行うようにすることもできる。
【００３８】
以下、本発明の第三の実施例について説明する。
本実施例は、文書更新処理が頻繁に実施され、インデクスが増大した際に、増大したインデクスを作成し直すことにより、インデクスを最小に最適化する方法である。
本方式を用いた最適化処理を定期的に実施することにより、高速かつインデクスを常に最小の状態にしておくこと可能な文書更新機能が実現できることになる。
【００３９】
本実施例は基本的に第二の実施例（図１０）と同様の構成をとるが、その中の主記憶装置１０９ａ内の構成が異なる。
この主記憶装置１０９ｂは図１５に示すような構成となる。
主記憶装置１０９ｂには、システム制御プログラム１１０ｂ、文書登録制御プログラム１１１、文書更新制御プログラム１１２ａ、文書検索制御プログラム１１３ａ、最適化制御プログラム１５００、文書登録プログラム１１４、位置情報変更文字列および移動量抽出プログラム１０００、位置情報変更文字列登録プログラム１１６、文書番号対応付けプログラム１１７、移動量登録プログラム１００１、位置情報取得プログラム１１８、移動量修正プログラム１００２、文書番号変換プログラム１１９、無効位置情報削除プログラム１２０、最適化対象文書取得プログラム１５０１、最適化対象文字列取得プログラム１５０２、最適化プログラム１５０３が格納されるとともに文書番号変換テーブル１２１、移動量管理テーブル１００３およびワークエリア１２２が確保される。
以上のプログラムは磁気ディスク装置１０６、フロッピディスク１０５などのコンピュータで読み書きできる記憶媒体に格納することもできる。
【００４０】
システム制御プログラム１１０ｂはキーボード１０１からの指示を受け起動する。
文書登録制御プログラム１１１はキーボード１０１からの文書登録指示により、システム制御プログラム１１０ｂによって起動され、文書登録プログラム１１４の制御を行う。
文書更新制御プログラム１１２ａはキーボード１０１からの文書更新指示により、システム制御プログラム１１０ｂによって起動され、位置情報変更文字列および移動量抽出プログラム１０００、位置情報変更文字列登録プログラム１１６、文書番号対応付けプログラム１１７および移動量登録プログラム１００１の制御を行う。
文書検索制御プログラム１１３ａはキーボード１０１からの文書検索指示により、システム制御プログラム１１０ｂによって起動され、位置情報取得プログラム１１８、移動量修正プログラム１００２、文書番号変換プログラム１１９および無効位置情報削除プログラム１２０の制御を行う。
最適化制御プログラム１５００はキーボード１０１からの最適化指示により、システム制御プログラム１１０ｂによって起動され、最適化対象文書取得プログラム１５０１、最適化対象文字列取得プログラム１５０２および最適化プログラム１５０３の制御を行う。
【００４１】
以下、第二の実施例と異なる最適化制御プログラム１５００による最適化処理の概要を説明する。
最適化を行う際には、キーボード１０１からの最適化指示により、システム制御プログラム１１０ｂが最適化制御プログラム１５００を起動し、最適化制御プログラム１５００が最適化対象文書取得プログラム１５０１、最適化対象文字列取得プログラム１５０２および最適化プログラム１５０３による一連の最適化処理を制御する。
最適化処理の処理内容を図１６のＰＡＤに示す。
最適化制御プログラム１５００は、図１６に示すように、まずステップ１６００で、最適化対象文書取得プログラム１５０１を起動し、文書番号変換テーブル１２１を参照して、同じ外部文書番号と対応付けられている内部文書番号の組を、最適化の対象として取得する。
次にステップ１６０１で、ステップ１６００で取得した全ての内部文書番号の組について、ステップ１６０２から１６０３による一連の処理を繰り返す。
この繰り返し処理では、まずステップ１６０２で、最適化対象文字列取得プログラム１５０２を起動し、処理対象である内部文書番号の文書群から文字列を抽出し、最適化対象の文字列とする。
ただし、ここで取得単位とする文字列としてはインデクス作成単位と同じ文字列を用いる。
そしてステップ１６０３で、最適化プログラム１５０３を起動し、ステップ１６０２で抽出した文字列に対応するインデクス１０８、文書番号変換テーブル１２１および移動量管理テーブル１００３を最適化する。
【００４２】
ステップ１６０３における最適化プログラム１５０３では、図１７に示すように、まずステップ１７００で、最適化対象文字列取得プログラム１５０２で抽出した文字列について、ステップ１７０１から１７０４による一連の処理を繰り返す。
この繰り返し処理では、まずステップ１７０１で、移動量管理テーブル１００３を参照し、最適化プログラム１５０３の処理対象である内部文書番号群に対応する移動開始位置、移動量にしたがって、処理対象である文字列に対応するインデクス１０８に格納されている位置情報を修正する。
次にステップ１７０２で、処理対象である内部文書番号群の中で、最古の内部文書番号に対応する文字位置を最新の内部文書番号に対応する文字位置で置き換え、最古の内部文書番号以外の内部文書番号を含む位置情報をインデクス１０８から削除する。
そしてステップ１７０３で、ステップ１７０２で置き換えられた文字位置が削除を示す文字位置であると判断された場合には、ステップ１７０４でその文字位置を含む位置情報を削除する。
次にステップ１７０５で、処理対象である内部文書番号群に対応する移動開始位置、移動量を移動量管理テーブル１００３上でクリアする。
最後にステップ１７０６で、処理対象である内部文書番号群の中で、最古の内部文書番号以外の内部文書番号に対応する外部文書番号を文書番号変換テーブル１２１上でクリアする。
以上が本実施例における処理内容の概要である。
【００４３】
以下、本実施例における処理内容のうち、第二の実施例と異なる最適化制御プログラム１５００による最適化処理の内容を具体例を用いて詳細に説明する。
最適化制御プログラム１５００による最適化処理の内容は図１６に示す通りである。
以下、図１８を用いて具体的に説明する。
まずステップ１６００で、最適化対象文書取得プログラム１５０１を起動し、文書番号変換テーブル１２１を参照して、同じ外部文書番号と対応付けられている内部文書番号の組を、最適化の対象として取得する。
図１８の例では、文書番号変換テーブル１２１において、内部文書番号‘Ｄ０１’と‘Ｄ５７’が同じ外部文書番号‘００１’と対応付けられているので、最適化対象として‘Ｄ０１’と‘Ｄ５７’という一つの内部文書番号の組を取得する。
次にステップ１６０１で、ステップ１６００で取得した全ての内部文書番号の組について、ステップ１６０２から１６０３による一連の処理を繰り返す。
この繰り返し処理では、まずステップ１６０２で、最適化対象文字列取得プログラム１５０２を起動し、処理対象である内部文書番号の文書群から文字列を抽出し、最適化対象の文字列とする。
ただし、ここで取得単位とする文字列としてはインデクス作成単位と同じ文字列を用いる。
図１８の例では、内部文書番号‘Ｄ０１’の文書“海洋には数万種の微生物が生息する…”と内部文書番号‘Ｄ５７’の文書“海洋には数万種の生物が生息する…”から、文字列“海、洋、に、は、数、万、種、の、微、生、物、が、生、息、す、る、…”と“海、洋、に、は、数、万、種、の、生、物、が、生、息、す、る、…”を抽出し、これらを併合して重複排除することにより、最適化対象文字列として“が、す、に、の、は、る、海、洋、数、万、種、微、生、物、息、…”を抽出する。
そしてステップ１６０３で、最適化プログラム１５０３を起動し、ステップ１６０２で抽出した文字列“が、す、に、の、は、る、海、洋、数、万、種、微、生、物、息、…”に対応するインデクス１０８、文書番号変換テーブル１２１および移動量管理テーブル１００３を最適化する。
【００４４】
ステップ１６０３における最適化プログラム１５０３の処理内容は図１７に示す通りである。
以下、‘Ｄ０１’と‘Ｄ５７’という内部文書番号の組を最適化対象文書と、“が、す、に、の、は、る、海、洋、数、万、種、微、生、物、息、…”を最適化対象文字列とした場合を例に、図１９から図２２を用いて説明する。
まずステップ１７００で、最適化対象文字列取得プログラム１５０２で抽出した文字列、すなわち最適化対象文字列について、ステップ１７０１から１７０４による一連の処理を繰り返す。
この繰り返し処理では、まずステップ１７０１で、移動量管理テーブル１００３を参照し、最適化プログラム１５０３の処理対象である内部文書番号群に対応する移動開始位置、移動量にしたがって、処理対象である文字列に対応するインデクスに格納されている位置情報を修正する。
図１９の例では、最適化対象文書である内部文書番号‘Ｄ０１’と‘Ｄ５７’のうち、‘Ｄ０１’には移動開始位置‘１０’、移動量‘−１’が移動量管理テーブル１００３に設定されている。
そこでこの移動開始位置以降の位置情報“生〈Ｄ０１，１０〉〈Ｄ０１，１３〉，物〈Ｄ０１，１１〉”を移動量にしたがって修正し、“生〈Ｄ０１，９〉〈Ｄ０１，１２〉，物〈Ｄ０１，１０〉”に変更する。
ここで、“生〈Ｄ０１，９〉”とは“生”が内部文書番号‘Ｄ０１’の‘９’文字目に出現することを示す。
【００４５】
次にステップ１７０２で、処理対象である内部文書番号群の中で、最古の内部文書番号に対応する文字位置を最新の内部文書番号に対応する文字位置で置き換え、最古の内部文書番号以外の内部文書番号を含む位置情報をインデクスから削除する。
図２０の“微”のインデクスの例では、まず最古の内部文書番号‘Ｄ０１’に対応する文字位置‘９’を、最新の内部文書番号‘Ｄ５７’に対応する文字位置‘−１’で置き換える。
そして、最古の内部文書番号‘Ｄ０１’以外の内部文書番号‘Ｄ５７’を含む位置情報〈Ｄ５７、−１〉を削除する。
そしてステップ１７０３で、ステップ１７０２で置き換えた文字位置が１７０４でその文字位置を含む位置情報を削除する。
図２０の“微”のインデクスの例では、ステップ１７０２で置き換えた文字位置が削除を示す文字位置‘−１’であるので、その文字位置を含む位置情報〈Ｄ０１、−１〉を削除する。
【００４６】
次にステップ１７０５で、処理対象である内部文書番号群に対応する移動開始位置、移動量を移動量管理テーブル１００３上でクリアする。
図２１の例では、内部文書番号‘Ｄ０１’と‘Ｄ５７’のうち、‘Ｄ０１’に移動開始位置‘１０’と移動量‘−１’が設定されているので、その移動開始位置と移動量を移動量管理テーブル１００３上でクリアする。
最後にステップ１７０６で、処理対象である内部文書番号群の中で、最古の内部文書番号以外の内部文書番号に対応する外部文書番号を文書番号変換テーブル１２１上でクリアする。
図２２の例では、最古の内部文書番号‘Ｄ０１’以外の内部文書番号‘Ｄ５７’に対応付けられている外部文書番号‘００１’を、文書番号変換テーブル１２１上でクリアする。
【００４７】
以上説明したように、本方式では、文書更新処理が頻繁に実施され、インデクスが増大した際に、増大したインデクスを作成し直すことにより、インデクスを最小に最適化する。
本方式を用いた最適化処理を定期的に実施することにより、インデクスを常に最小の状態にしておくことができる。
以上により、文書管理システムやグループウェアなどで管理される、編集が頻繁に行われる文書を対象とした場合でも、高速で、かつ無駄なインデクスの増加を防ぐことが可能な文書更新機能が実現できることになる。
【００４８】
本実施例では、ｎ文字の文字列に対して作成されたインデクスの場合について説明したが、単語単位に作成されたインデクスの場合についても上述した文字位置として単語位置を用いることにより、同様な処理が可能である。
これは、上記の説明から明らかであろう。
また、本実施例では、文書登録処理、文書更新処理および文書検索処理として第二の実施例に記載した方法を用いて説明したが、第一の実施例に記載した方法を用いた場合についても同様な処理が可能である。
【００４９】
以下、本発明の第四の実施例について説明する。
本実施例は、ある番号の文書を別の文書に置き換えて登録する文書置換機能を備えた文書検索方法において、文書の一部を編集して登録し直す文書更新機能を実現する方法である。
本方式を用いることにより、ある番号の文書を別の文書に置き換える際には文書置換機能を、文書の一部を編集して登録し直す際には高速でインデクスの増加が少ない文書更新機能を、ユーザの選択によって実行できることになる。
【００５０】
本実施例は基本的に第三の実施例（図１５）と同様の構成をとるが、その中の主記憶装置１０９ｂ内の構成が異なる。
この主記憶装置１０９ｃは図２３に示すような構成となる。
主記憶装置１０９ｃには、システム制御プログラム１１０ｃ、文書登録制御プログラム１１１、文書置換制御プログラム２３００、文書更新制御プログラム１１２ａ、文書検索制御プログラム１１３ａ、最適化制御プログラム１５００、文書登録プログラム１１４、文書置換プログラム２３０１、位置情報変更文字列および移動量抽出プログラム１０００、位置情報変更文字列登録プログラム１１６、文書番号対応付けプログラム１１７、移動量登録プログラム１００１、位置情報取得プログラム１１８、移動量修正プログラム１００２、文書番号変換プログラム１１９、無効位置情報削除プログラム１２０、最適化対象文書取得プログラム１５０１、最適化対象文字列取得プログラム１５０２、最適化プログラム１５０３が格納されるとともに文書番号変換テーブル１２１、移動量管理テーブル１００３およびワークエリア１２２が確保される。
以上のプログラムは磁気ディスク装置１０６、フロッピディスク１０５などのコンピュータで読み書きできる記憶媒体に格納することもできる。
【００５１】
システム制御プログラム１１０ｃはキーボード１０１からの指示を受け起動する。
文書登録制御プログラム１１１はキーボード１０１からの文書登録指示により、システム制御プログラム１１０ｃによって起動され、文書登録プログラム１１４の制御を行う。
文書置換制御プログラム２３００はキーボード１０１からの文書置換指示により、システム制御プログラム１１０ｃによって起動され、文書置換プログラム２３０１の制御を行う。
文書更新制御プログラム１１２ａはキーボード１０１からの文書更新指示により、システム制御プログラム１１０ｃによって起動され、位置情報変更文字列および移動量抽出プログラム１０００、位置情報変更文字列登録プログラム１１６、文書番号対応付けプログラム１１７、移動量登録プログラム１００１の制御を行う。
文書検索制御プログラム１１３ａはキーボード１０１からの文書検索指示により、システム制御プログラム１１０ｃによって起動され、位置情報取得プログラム１１８、移動量修正プログラム１００２、文書番号変換プログラム１１９および無効位置情報削除プログラム１２０の制御を行う。
最適化制御プログラム１５００はキーボード１０１からの最適化指示により、システム制御プログラム１１０ｃによって起動され、最適化対象文書取得プログラム１５０１、最適化対象文字列取得プログラム１５０２および最適化プログラム１５０３の制御を行う。
【００５２】
本実施例におけるシステム制御プログラム１１０ｃの処理内容を図２４のＰＡＤ図に示す。
システム制御プログラム１１０ｃはキーボード１０１からの指示を受け起動する。
キーボード１０１からの指示がステップ２４００で文書登録指示であると判断した場合には、ステップ２４０１で文書登録制御プログラム１１１を起動し、文書登録処理を行う。
ステップ２４０２で文書置換指示であると判断した場合には、ステップ２４０３で文書置換制御プログラム２３００を起動し、文書置換処理を行う。
ステップ２４０４で文書更新指示であると判断した場合には、ステップ２４０５で文書更新制御プログラム１１２ａを起動し、文書更新処理を行う。
ステップ２４０６で文書検索指示であると判断した場合には、ステップ２４０７で文書検索制御プログラム１１３ａを起動し、文書検索処理を行う。
ステップ２４０８で最適化指示であると判断した場合には、ステップ２４０９で最適化制御プログラム１５００を起動し、最適化処理を行う。
文書登録制御プログラム１１１による文書登録処理と文書置換制御プログラム２３００による文書置換処理は、前述の従来の技術の項で説明した方式２と同様である。
また、文書更新制御プログラム１１２ａによる文書更新処理、文書検索制御プログラム１１３ａによる文書検索処理および最適化制御プログラム１５００による最適化処理は第三の実施例と同様である。
【００５３】
以下、図２４に示すシステム制御プログラム１１０ｃの処理内容を具体例を用いて詳細に説明する。
キーボード１０１による指示は、例えば、次のような形式でシステム制御プログラム１１０ｃに渡される。
「ＲＥＧＩＳＴ  データベース名  登録文書ファイル名  外部文書番号」
「ＲＥＰＬＡＣＥ  データベース名  置換文書ファイル名  外部文書番号」
「ＲＥＮＥＷ  データベース名  更新文書ファイル名  外部文書番号」
「ＳＥＡＲＣＨ  データベース名  検索条件式」
「ＣＯＮＤＥＮＳＥ  データベース名」
ここで、‘ＲＥＧＩＳＴ’は文書登録指示、‘ＲＥＰＬＡＣＥ’は文書置換指示、‘ＲＥＮＥＷ’は文書更新指示、‘ＳＥＡＲＣＨ’は文書検索指示、‘ＣＯＮＤＥＮＳＥ’は最適化指示を示すコマンドである。
‘データベース名’には文書登録処理、文書置換処理、文書更新処理、文書検索処理または最適化処理の対象となるデータベースの名称を指定する。
‘登録文書ファイル名’には登録する文書を格納したファイルの名称、‘置換文書ファイル名’には置換する文書を格納したファイルの名称、‘更新文書ファイル名’には更新する文書を格納したファイルの名称を指定する。
‘外部文書番号’には‘登録文書ファイル名’、‘置換文書ファイル名’、‘更新文書ファイル名’で指定された文書の登録、置換または更新の対象となる外部文書番号を指定する。
‘検索条件式’には検索の条件文を指定する。
【００５４】
例えば、「ＲＥＧＩＳＴ  新聞記事  ＤＯＣ１．ＴＸＴ  ００１」がキーボード１０１から入力された場合には、ステップ２４００で文書登録指示が入力されたと判断する。
そして、ステップ２４０１で文書登録制御プログラム１１１を起動し、ファイル‘ＤＯＣ１．ＴＸＴ’に格納されている文書を‘新聞記事’データベースに、外部文書番号‘００１’の文書として登録する。
この文書登録処理の処理内容は、前述の従来の技術の項で説明した方式２と同様である。
【００５５】
「ＲＥＰＬＡＣＥ  新聞記事  ＤＯＣ１．ＴＸＴ  ００１」がキーボード１０１から入力された場合には、ステップ２４０２で文書置換指示が入力されたと判断する。
そして、ステップ２４０３で文書置換制御プログラム２３００を起動し、‘新聞記事’データベースの外部文書番号‘００１’の文書を、ファイル‘ＤＯＣ１．ＴＸＴ’に格納されている文書に置換する。
この文書置換処理の処理内容は、前述の従来の技術の項で方式２と同様である。
【００５６】
「ＲＥＮＥＷ  新聞記事  ＤＯＣ１．ＴＸＴ  ００１」がキーボード１０１から入力された場合には、ステップ２４０４で文書更新指示が入力されたと判断する。
そして、ステップ２４０５で文書更新制御プログラム１１２ａを起動し、‘新聞記事’データベースの外部文書番号‘００１’の文書を、ファイル‘ＤＯＣ１．ＴＸＴ’に格納されている文書に更新する。
この文書更新処理の処理内容は第三の実施例と同様である。
【００５７】
「ＳＥＡＲＣＨ  新聞記事  “日本”ＡＮＤ“経済”」がキーボード１０１から入力された場合には、ステップ２４０６で文書検索指示が入力されたと判断する。
そして、ステップ２４０７で文書検索制御プログラム１１３ａを起動し、‘新聞記事’データベースの中で“日本”と“経済”を両方含む文書を検索する。
この文書検索処理の処理内容は第三の実施例と同様である。
【００５８】
「ＣＯＮＤＥＮＳＥ  新聞記事」がキーボード１０１から入力された場合には、ステップ２４０８で最適化指示が入力されたと判断する。
そして、ステップ２４０９で最適化制御プログラム１５００を起動し、‘新聞記事’データベースのインデクス１０８、文書番号変換テーブル１２１および移動量管理テーブル１００３を最適化する。
この最適化処理の処理内容は第三の実施例と同様である。
【００５９】
以上説明したように、本方式では、ある番号の文書を別の文書に置き換えて登録する文書置換指示と、文書の一部を編集して登録し直す文書更新指示を分けることにより、文書置換機能を備えた文書検索方法において文書更新機能を実現する。
こうすることにより、ある番号の文書を別の文書に置き換える際には文書置換機能を、文書の一部を編集して登録し直す際には高速でインデクスの増加が少ない文書更新機能を、ユーザの選択によって実行できることになる。
以上により、文書管理システムやグループウェアなどで管理される、編集が頻繁に行われる文書を対象とした場合でも、高速で、かつ無駄なインデクスの増加を防ぐことが可能な文書更新機能を、文書置換機能を備えた文書検索方法においても実現できることになる。
【００６０】
本実施例では、文書更新処理、文書検索処理および最適化処理として第三の実施例に記載した方法を用いて説明したが、第一の実施例および第二の実施例に記載した方法を用いた場合についても同様な処理が可能である。
これは、上記の説明から明らかであろう。
本実施例では、システムへの指示内容としてコマンド形式を用いて説明したが、同じ引数による関数形式を用いた場合に付いても同様な処理が可能である。
また、本実施例では、システムへの指示内容としてキーボードから入力された指示を用いた場合について説明したが、コマンドや関数を用いてシステムが自動的に指示内容を実行することも可能である。
さらに、上述したコマンドおよび関数は第一の実施例から第三の実施例についても使用可能である。
【００６１】
【発明の効果】
本発明によれば、文書が編集されたことによって存在する位置が変更した文字列に関するインデクスにのみ、その編集後の位置情報を追加登録しておき、検索時に同じ文書番号を含む位置情報が複数得られた場合には、最新の位置情報以外の位置情報を削除することにより、位置情報が変更した文字列に関するインデクスのみの書き換えで文書更新が実現できるので、文書更新の高速化が図れる。
また、存在する位置が変更しなかった文字列に対しては、その位置情報を二重に登録してしまうことを防ぐことができるので、総インデクス容量を抑えることが可能となる。
その結果、高速で、かつ無駄なインデクスの増加を防ぐことが可能な文書更新機能を有する文書検索システムを実現することができる。
【図面の簡単な説明】
【図１】本発明の第一の実施例の構成を示す図である。
【図２】従来技術の方式１の処理内容を示す図である。
【図３】従来技術の方式２の文書置換処理の内容を示す図である。
【図４】従来技術の方式２の文書検索処理の内容を示す図である。
【図５】従来技術の方式２の問題点を説明するための図である。
【図６】本発明の文書更新処理の内容を示す図である。
【図７】本発明の文書検索処理の内容を示す図である。
【図８】文書更新制御プログラム１１２の処理内容を示すＰＡＤ図である。
【図９】文書検索制御プログラム１１３の処理内容を示すＰＡＤ図である。
【図１０】本発明の第二の実施例の構成を示す図である。
【図１１】文書更新制御プログラム１１２ａの処理内容を示すＰＡＤ図である。
【図１２】文書検索制御プログラム１１３ａの処理内容を示すＰＡＤ図である。
【図１３】本発明の第二の実施例の文書更新処理の内容を示す図である。
【図１４】本発明の第二の実施例の文書検索処理の内容を示す図である。
【図１５】本発明の第三の実施例の構成を示す図である。
【図１６】最適化制御プログラム１５００の処理内容を示すＰＡＤ図である。
【図１７】最適化プログラム１５０３の処理内容を示すＰＡＤ図である。
【図１８】本発明の第三の実施例の最適化対象文字列抽出処理の内容を示す図である。
【図１９】本発明の第三の実施例の位置情報修正処理の内容を示す図である。
【図２０】本発明の第三の実施例の位置情報削除処理の内容を示す図である。
【図２１】本発明の第三の実施例の移動量管理テーブル１００３のクリア処理の内容を示す図である。
【図２２】本発明の第三の実施例の文書番号変換テーブル１２１のクリア処理の内容を示す図である。
【図２３】本発明の第四の実施例の構成を示す図である。
【図２４】システム制御プログラム１１０ｃの処理内容を示すＰＡＤ図である。
【符号の説明】
１００  ディスプレイ
１０１  キーボード
１０２  ＣＰＵ
１０３  バス
１０４  フロッピディスクドライバ
１０５  フロッピディスク
１０６  磁気ディスク装置
１０７  テキスト
１０８  インデクス
１０９  主記憶装置
１０９ａ、１０９ｂ、１０９ｃ  主記憶装置
【図１】
0003832545.tif 000002
【図２】
0003832545.tif 000003
【図３】
0003832545.tif 000004
【図４】
0003832545.tif 000005
【図５】
0003832545.tif 000006
【図６】
0003832545.tif 000007
【図７】
0003832545.tif 000008
【図８】
0003832545.tif 000009
【図９】
0003832545.tif 000010
【図１０】
0003832545.tif 000011
【図１１】
0003832545.tif 000012
【図１２】
0003832545.tif 000013
【図１３】
0003832545.tif 000014
【図１４】
0003832545.tif 000015
【図１５】
0003832545.tif 000016
【図１６】
0003832545.tif 000017
【図１７】
0003832545.tif 000018
【図１８】
0003832545.tif 000019
【図１９】
0003832545.tif 000020
【図２０】
0003832545.tif 000021
【図２１】
0003832545.tif 000022
【図２２】
0003832545.tif 000023
【図２３】
0003832545.tif 000024
【図２４】
0003832545.tif 000025