(57)【特許請求の範囲】
【請求項１】
複数の文書が記憶されている記憶ボリュームのための内容インデックスを与える形式のインデックスデータを圧縮する方法であって、上記文書の各々は独特の文書識別子を有しそして上記内容インデックスは複数のデータキーに対する上記記憶ボリューム内の発生数と位置とを指示する情報を与えるものである方法において、
（ａ）ターゲットデータキーが現れる文書の対応セットを指示する文書識別子のセットを含む文書識別子データを与え、上記ターゲットデータキーは、複数のデータキーのうちの特定の１つであり、そして上記文書識別子のセットの中の文書識別子は、最小文書識別子ＭｉｎＤｏｃから最大文書識別子ＭａｘＤｏｃまでの範囲内の値を有しており、上記文書識別子データを次のサブ段階に基づいて圧縮し、即ち、
(i)上記文書識別子の範囲を第１及び第２グループに仕切るための値Ｍを選択し、Ｍより小さい値を有する文書識別子は第１グループに関連させそしてＭより大きい値を有する文書識別子は第２グループに関連させ、
(ii)第１グループに関連した文書識別子の数と第２グループに関連した文書識別子の数との差が１より大きいかどうかを指示する第１の文書識別子データビットを与え、
(iii)第１グループに関連した文書識別子の数が第２グループに関連した文書識別子の数より大きいかどうかを指示する第２の文書識別子データビットを与え、
(iv)第１グループに関連した文書識別子の数と第２グループに関連した文書識別子の数との差を指示するために差のデータキーを与え、
(v) ＭａｘＤｏｃ、ＭｉｎＤｏｃ及びＭの新たな値を選択して新たな仕切りを定め、そして上記段階ａ(i) ないし(iv)を繰り返し、そして
(vi)全ての文書識別子がエンコードされるまで上記段階ａ(i) ないし(v) を繰り返し、そして
（ｂ）複数のデータキーオフセット値セットを与え、各データキーオフセット値セットは、特定の文書内におけるターゲットデータキーの次々の発生間の位置オフセット値を指示するための複数のデータキーオフセット値を含むものであり、各データキーオフセット値セットを次のサブ段階に基づいて圧縮し、即ち、
(i) データキーオフセット値と数Ｎのデータビットを有するベースデータキーオフセット値長さとを選択し、
(ii)データビットにより表示できる残りの指示値であって、Ｎより小さい値の所定の定数をｒとすれば、Ｎ−ｒのデータビットにより表すことのできる最大数よりも大きい残りの指示値を選択し、
(iii)選択したデータキーオフセット値が上記残りの指示値よりも大きいかどうかを判断し、もしそうであれば、段階ｂ(iv)ないし(vii) を実行し、そしてもしそうでなければ、Ｎ個のデータビットを用いてデータキーオフセット値を表しそして段階ｂ(viii)を実行し、
(iv)データキーオフセット値の下位のＮ−ｒのデータビットを使用しそして上位のｒ個のデータビットをセットして残りが存在することを指示し、
(v) 残りの上位データビットから１を減算して次のｓビットのエンコードを決定し、ここでｓは所定の定数であり、そして次のｓビットをエンコードとして使用し、
(vi)データキーオフセット値の全てのデータビットがエンコードされたかどうかを決定し、もしそうでなければ、段階ｂ(vii) を実行し、そしてもしそうであれば、データキーオフセット値が完全にエンコードされたことを指示するマーカーを与えて、段階ｂ(viii)を実行し、
(vii)マーカービットを加えて更に上位データビットが残っていることを指示し、ｓを所定値ｔだけ増加し、そして段階ｂ(v) を実行し、そして
(viii)データキーオフセット値セットの中の全てのデータキーオフセット値が段階ｂ(iii)で表され又は段階ｂ(iv)ないし(vii)でエンコードされるまで段階ｂ(iii) ないし(vii) を繰り返す
ことを特徴とする方法。
【請求項２】
ベースデータキーオフセット値長さを選択する上記の段階ｂ(i)は、
更に、Ｎ＋１のデータビットを有する２進データ値の最上位ビットにより表された値が平均オフセット値より大きくなるようにする最小の整数としてＮを選択するサブ段階を備え、
上記平均オフセット値は、記憶媒体の一部分におけるデータキーの総数を記憶媒体のその一部分におけるターゲットデータキーの発生数で除算したものに等しい
ことを特徴とする請求項１に記載の方法。
【請求項３】
上記残りの指示値は、３Ｎ−２に等しくなるよう選択される請求項１に記載の方法。
【請求項４】
差のデータキーを与える上記段階ａ(iv)は、
（ｃ）第１グループに関連した文書識別子の数と第２グループに関連した文書識別子の数との差の絶対値をとりそしてその差を２で除算することにより差のデータを与える、
というサブ段階を含む請求項１に記載の方法。
【請求項５】
差のデータを与える上記段階ｃは、更に、
（ｄ）差のデータから１を減算しそして差のデータの下位ａビットを差のデータキーの第１のエンコードされたビットとして使用し、
（ｅ）差のデータの全てのデータビットがエンコードされたかどうかを決定しそしてもしそうでなければ、段階ｆを実行し、もしそうであれば、差のデータキーが完了したことを指示するマーカービットを追加し、そして
（ｆ）付加的な上位データビットが残っていることを指示するマーカービットを追加し、ａを所定値ｂだけ増加し、そして上記段階ｄを繰り返す、
というサブ段階を含む請求項４に記載の方法。
【請求項６】
ベースデータキーオフセット値長さを選択する上記の段階ｂ(i)は、
更に、Ｎ＋１のデータビットを有する２進データ値の最上位ビットにより表された値が平均オフセット値より大きくなるようにする最小の整数としてＮを選択するサブ段階を備え、
上記平均オフセット値は、記憶媒体の一部分におけるデータキーの総数を記憶媒体のその一部分におけるターゲットデータキーの発生数で除算したものに等しい
ことを特徴とする請求項５に記載の方法。
【請求項７】
複数の文書が記憶されている記憶ボリュームのための圧縮された内容インデックスを与える方法であって、上記文書の各々は独特の文書識別子を有しそして複数のデータキーを含み、上記内容インデックスは、複数のデータキーのターゲットデータキーに対する上記記憶ボリューム内の発生数と位置とを指示する情報を与えるものである方法において、
（ａ）上記データキーフィールドの目的であるターゲットデータキーを識別するためのデータキー識別子を与え、
（ｂ）ターゲットデータキーが配置された複数のターゲット文書を識別し、識別されたターゲット文書の各々はターゲット文書を識別する独特のターゲット文書識別子を有し、
（ｃ）第１の所定の圧縮機構に基づいて上記複数のターゲット文書識別子を圧縮して、圧縮された上記複数のターゲット文書識別子が圧縮解除される時に上記複数のターゲット文書識別子が回復されるようにし、ここで圧縮は以下の段階を含み、即ち、
(i)最小ターゲット文書識別子から最大ターゲット文書識別子までの範囲において上記複数のターゲット文書識別子を順序付けし、
(ii)最小ターゲット文書識別子と最大ターゲット文書識別子との間の中点を選択して、
(iii)選択した中点で上記範囲を第１グループと第２グループに仕切り、そして
(iv)上記第１グループと第２グループとの間でターゲット文書がどのように分布しているかを特徴付けるエンコードされた文書識別子データビットを与え、このエンコードされたデータビットは上記範囲においてターゲット文書識別子の各々を識別し、そして
（ｄ）複数のカウント値を与え、各カウント値は、上記文書データセットにおける複数のターゲット文書識別子の各々に関連されていて、その各々のターゲット文書識別子により識別されたターゲット文書においてターゲットデータキーの発生数がいくつであるかを識別するものであり、そして
（ｅ）複数のデータキーオフセット値セットを与え、各データキーオフセット値セットは上記複数のターゲット文書の各々に関連され、そして各データキーオフセット値セットは、データキーオフセット値セットに関連するターゲット文書におけるターゲットデータキーの発生数に数値が等しい複数のデータオフセット値を含み、各データキーオフセット値は、そのデータキーオフセット値セットに関連したターゲット文書におけるターゲットデータキーの位置を識別するものである
という段階を備えたことを特徴とする方法。
【請求項８】
上記段階ｃは、
(v)上記第１グループが１つのターゲット文書識別子から成り又は上記第１グループにおいて各段階ごとにターゲット文書識別子を含むかを決定し、
(vi)上記第１グループが１つのターゲット文書識別子から成るならば、そのとき上記１つのターゲット文書識別子の指示を出力し、
(vii)上記第１グループが上記第１グループにおいて各段階ごとにターゲット文書識別子を含むならば、そのとき上記第１グループに対するエンコードをやめ、そして
(viii)上記第１グループが、２以上のターゲット文書識別子を含み、上記第１グループにおける各段階ごとのターゲット文書識別子未満を含むならば、そのとき第１グループをサブグループに仕切り、第１サブグループと第２サブグループとの間でターゲット文書がどのように分布しているかを特徴付けるエンコードされた文書識別子データビットを与え、このエンコードされたデータビットは上記第１グループにおいてターゲット文書識別子の各々を識別する、という段階を更に含む
ことを特徴とする請求項７に記載の方法。
【請求項９】
（ｍ）複数のデータキーオフセット値を圧縮する段階
を更に備えたことを特徴とする請求項７に記載の方法。
【請求項１０】
複数の文書が記憶されている記憶ボリュームのための内容インデックスを与える形式のインデックスデータ用のデータキーフィールドを形成する方法であって、上記文書の各々は独特の文書識別子を有しそして複数のデータキーを含み、上記データキーフィールドは、複数のデータキーのターゲットデータキーに対する上記記憶ボリューム内の発生数と位置とを指示する情報を与えるものである方法において、
（ａ）上記データキーフィールドの目的であるターゲットデータキーを識別するためのデータキー識別子を与え、
（ｂ）複数の文書識別子を含む文書データセットを定義し、各文書識別子は、ターゲットデータキーが配置された複数のターゲット文書を記述するものであり、
（ｃ）第１の所定の圧縮機構に基づいて上記文書データセットを文書識別子データに圧縮して、圧縮解除時にその文書データセットが回復されるようにし、
（ｄ）複数のカウント値を与え、各カウント値は、上記文書データセットにおける複数の文書識別子の各々に関連されていて、その各々の文書識別子により識別された文書においてターゲットデータキーの発生数がいくつであるかを識別するものであり、そして
（ｅ）複数のデータキーオフセット値セットを与え、各データキーオフセット値セットは上記複数のカウント値の各々に関連され、そして各データキーオフセット値セットは、その各々のカウント値によって識別されたターゲットデータキーの発生数に数値が等しい複数のデータオフセット値を含み、各データキーオフセット値は、その各データキーオフセット値セットに関連したカウント値に関連した文書識別子によって識別された文書におけるターゲットデータキーの位置を識別するものであり、そして
（ｍ）次のサブ段階によって、複数のデータキーオフセット値を圧縮し、即ち、
(i)データビットのベース数Ｎを選択し、
(ii)データキーオフセット値がエンコードされたことを指示するためにデータビットのベース数Ｎから最上位ビット側の上位複数ビットの一部分ｒを選択し、そして残りの最下位データビット側の下位複数ビットｑをベース数として識別して、ｒ＋ｑ＝Ｎとし、
(iii)ｒ個の最上位ビット側の上位複数ビットをセットせずにＮビットでデータキーオフセット値を表示できるかどうかを決定し、もしそうであれば、データキーオフセット値をＮビットで表示し、もしそうでなければ、Ｎベースビットのｒ個の最上位ビット側の上位複数ビットをセットし、データキーオフセット値のｑ個の最下位ビット側の下位複数ビットを表示すると共にデータキーオフセット値の残りの最上位ビット側の上位複数ビットをエンコードする
という段階を備えたことを特徴とする方法。
【請求項１１】
データビットのベース数Ｎを選択する上記段階ｍ(i)は、
エンコードされるべき複数のデータキーオフセット値の平均値を決定しそしてその平均値を表すのに必要なビット数としてＮを選択する、というサブ段階を備えた
ことを特徴とする請求項１０に記載の方法。
【請求項１２】
複数のデータ値をエンコードするためのコンピュータ実行方法において、
（ａ）最小データ値と最大データ値を範囲の終了点として選択することにより複数のデータ値の範囲を定め、
（ｂ）上記複数のデータ値の範囲の終了点間の中点を選択して、
（ｂ-2）上記中点で複数のデータ値の範囲を第１サブ範囲と第２サブ範囲に仕切り、そして
（ｃ）上記第１サブ範囲と第２サブ範囲との間でデータ値がどのように分布しているかを特徴付けるエンコードされたデータを与え、このエンコードされたデータは上記範囲においてデータ値の各々を識別するものである
という段階を備えたことを特徴とする方法。
【請求項１３】
(ｄ)上記第１サブ範囲が１つのデータ値から成り又は上記第１サブ範囲において各段階ごとにデータ値を含むかを決定し、
(ｅ)上記第１サブ範囲が１つのデータ値から成るならば、そのとき上記１つのデータ値の指示を出力し、
(ｆ)上記第１サブ範囲が上記第１サブ範囲において各段階ごとにデータ値を含むならば、そのとき上記第１サブ範囲に対するエンコードをやめ、そして
(ｇ)上記第１サブ範囲が、２以上のデータ値を含み、上記第１サブ範囲における各段階ごとのデータ値未満を含むならば、そのとき第１サブ範囲をサブサブ範囲に仕切り、サブサブ範囲の間でデータ値がどのように分布しているかを特徴付けるエンコードされたデータを与え、このエンコードされたデータは上記第１サブ範囲においてターゲット文書識別子の各々を識別する
という段階を更に備えたことを特徴とする請求項１２に記載の方法。
【請求項１４】
複数のデータ値をエンコードするためのコンピュータ実行方法において、
（ａ）データビットのベース数Ｎを選択し、
（ｂ）上記複数のデータ値の各々がエンコードされたかどうかを指示するためにデータビットのベース数Ｎから最上位データビット側の上位ｒビットを選択し、そしてベース数Ｎの上記データビットの最下位データビット側の下位ｑビットを識別して、ｒ＋ｑ＝Ｎとし、そして
（ｃ）論理状態１に最上位データビット側の上位ｒビットの全てをセットせずにＮビットで上記複数のデータ値の現在のデータ値を表示できるかどうかを決定し、もしそうであれば、上記現在のデータ値をＮデータビットで表示し、もしそうでなければ、論理状態１にエンコードされたデータ値の最上位データビット側の上位ｒビットをセットすることによって上記現在のデータ値をエンコードされたデータ値として表示し、現在のデータ値の最下位データビット側の下位ｑビットを表示すると共に最下位データビット側の上記下位ｑビットより上位である上記現在のデータ値のデータビットをエンコードする
という段階を備えたことを特徴とする方法。
【請求項１５】
データビットのベース数Ｎを選択する上記段階ａは、
（ｄ）エンコードされるべき複数のデータ値の平均値を決定しそしてその平均値を表すのに必要なビット数としてＮを選択する、というサブ段階を備えた
ことを特徴とする請求項１４に記載の方法。
【請求項１６】
データビットのベース数Ｎを選択する上記段階ａは、
２N ＞（最大−最小）／ｋ
となるようにＮを選択するサブ段階を備え、
ここで、ｋはデータ値の数を表し、最大は最大データ値を表しそして最小は最小データ値を表す
ことを特徴とする請求項１４に記載の方法。
【請求項１７】
論理状態１に最上位データビット側の上位ｒビットの全てをセットせずにＮビットで現在のデータ値を表示できるかどうかを決定する上記段階ｃは、
上記現在のデータ値が３（２N-r ）未満であるかどうかを決定するサブステップを含む
ことを特徴とする請求項１４に記載の方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、データベース記憶技術に係り、より詳細には、全テキストインデックスを圧縮する改良された方法に係る。
【０００２】
【従来の技術】
全テキストインデックスを記憶するためのコンピュータデータベースがテキスト記憶及び検索に対して一般的となってきている。これらデータベースは、記憶されたテキスト内の特定のデータストリングに対するインデックスをユーザがサーチできるようにする。典型的に、インデックスデータは、データベースのテキストデータとは個別のデータ構造体に記憶され、それ故、メモリオーバーヘッドを構成する。インデックスはユーザが所望のデータストリングに対するテキストデータを迅速にサーチできるようにするので、このメモリオーバーヘッドは正当とされる。しかしながら、インデックスに必要とされるメモリオーバーヘッドを最小にすることが所望される。
【０００３】
【発明が解決しようとする課題】
多数の公知方法は、各データストリングを識別しそしてそのデータストリングが現れるデータベース内の各位置の識別子をデータストリングに関連させることによりインデックスを形成する。これらのインデックスは明らかにやっかいなもので、多量のメモリオーバーヘッドを使用する。同様に、このようなインデックスを用いる他の公知方法は、必要なメモリオーバーヘッドを減少するためにデータ圧縮技術を使用している。しかしながら、これらの方法は、データベースに必要なメモリの５０％ないし１００％に等しいインデックス用メモリを必要とし、即ち５０％ないし１００％のオーバーヘッドを必要とする。
【０００４】
テキストインデックスを形成する他の方法は、あるデータシーケンスにコードを指定し、データシーケンスを上記したようにインデックスできるようにする。この方法は、データシーケンスに強力なパターンを示すデータベースについては良好に機能するが、データシーケンスに比較的僅かなパターンしかもたないデータベースには受け入れられない。それ故、インデックスに必要なメモリオーバーヘッドがデータベースに必要な記憶容量の２０％未満であるようにして全テキストインデックスを記憶する方法及び装置を提供することが所望される。
【０００５】
【課題を解決するための手段】
本発明は、複数の文書が記憶されている記憶ボリュームのための内容インデックスを与える形式のインデックスデータを記憶する方法を提供する。各文書は独特の文書識別子を有し、複数のデータキーを含んでいる。データキーのフィールドは、ターゲットデータキーに対する記憶ボリューム内の発生数及び位置を与える。この方法は、データキーフィールドの目的であるターゲットデータキーを識別するためのデータキー識別子を与える段階を備えている。ターゲットデータキーが配置された複数のターゲット文書を各々記述する複数の文書識別子を含む文書データセットを定義し、その後、第１の所定の圧縮機構に基づいてこの文書データセットを文書識別子データに圧縮し、圧縮解除のときに、文書データセットが回復されるようにする。複数のカウント値を与え、各カウント値は文書データセット内の複数の文書識別子の各々に関連したものであり、そして各文書識別子により識別された文書におけるターゲットデータキーの発生数を識別する。又、この方法は、複数のデータキーオフセット値のセットを与える段階も備え、各々のデータキーオフセット値セットは上記複数のカウント値の各々に関連され、そして各データキーオフセット値セットは、各々のカウント値によって識別されたターゲットデータキーの発生数に数値が等しい複数のデータオフセット値を含んでいる。従って、各データキーオフセット値は、各データキーオフセット値セットのカウント値に関連した文書識別子により識別された文書内におけるターゲットデータキーの位置を識別する。
【０００６】
本発明の第１の実施例では、文書識別子の範囲の終了点として最小文書識別子及び最大文書識別子を選択することにより文書識別子の範囲を定義する段階を備えた方法によって文書データセットが圧縮される。上記範囲が選択された後に、文書識別子の上記範囲の終了点間の中点が識別され、文書識別子の上記範囲が第１及び第２のグループに仕切られる。次いで、第１グループと第２グループとの間の文書の分布を特徴付ける文書識別子データを設けることによって文書識別子が圧縮され、文書識別子データは上記範囲内の文書識別子の各々を識別するものである。
【０００７】
本発明の第２の実施例では、データビットＮのベース数を選択する段階を含む方法に基づいて複数のデータキーオフセット値が圧縮される。この方法では、更に、データキーオフセット値がエンコードされたことを指示するためにデータビットのベース数から最上位ビット側の一部分ｒを選択し、そして残りの最下位データビット側のｑをベース数として識別し、ｒ＋ｑ＝Ｎとする段階を備えている。その後に、ｒ個の最上位ビット側のビットがセットされない状態でデータキーオフセット値をＮビットで表すことができるかどうかの判断を行い、もしできるならば、データキーオフセット値をＮビットで表示する。しかしながら、ｒ個の最上位ビット側のビットがセットされない状態でデータキーオフセット値をＮビットで表すことができない場合には、ｒ個の最上位ビット側のビットをセットし、そしてこのｒ個の最上位ビット側のビットと共に使用されるデータキーオフセット値のｑ個の最下位ビット側のビットをセットして、データキーオフセット値の最上位ビット側のビットがエンコードされたことを指示する。
【０００８】
【実施例】
上記したように、本発明は、インデックスを記憶するのに必要なメモリオーバーヘッドを最小にするようにして全テキストインデックスを記憶する方法を提供する。一般に、本発明のインデックスは、複数のデータキーフィールド１００を備え、その構造が図１に示されている。各データキーフィールド１００は、データキー識別子１０２と、文書識別子データ１０４と、オフセットフィールド１０６とを含んでいる。データキー識別子１０２は、インデックスされるべきテキスト或いはデータシーケンスを識別するのに使用されるデータワードである。例えば、月刊誌のような定期刊行物からの文献のテキストを記録するためのテキストデータベースを開発することができる。テキストインデックスは、定期刊行物の文献に現れるワードで構成される。テキストインデックスのデータキー識別子１０２は、定期刊行物内に探索されるべき個別のワードを識別するのに使用されるものである。
【０００９】
データキーフィールド１００は、データキー識別子１０２をその各々の文書識別子データ１０４及びオフセットフィールド１０６に関連させるために設けられる。文書識別子データ１０４は、データキー識別子１０２に関連したテキストシーケンスが現れるデータベースにおいて各文書を識別するデータである。上記の例において、文書識別子データ１０４は、データキー識別子１０２によって識別されたワードが現れる定期刊行物データベースにおいて各文献を識別する。
【００１０】
オフセットフィールド１０６は、図２に示すように、複数のオフセットデータシーケンス２００−１ないし２００−ｉを備えている。本発明によれば、オフセットデータシーケンス２００は、文書識別子データ１０４（図１）によって識別された各文書ごとに設けられる。各オフセットデータシーケンス２００は、複数のオフセットｎを含み、各オフセットは、そのオフセットデータシーケンスに対応する文書におけるデータキー識別子１０２の位置を識別する。例えば、第１のオフセットデータシーケンス２００−１は、文書識別子データ１０４により識別された第１文書に対応する。オフセット＃１は、第１文書内のデータキー識別子１０２によって識別されたテキストシーケンスの第１オフセットを識別する。オフセット＃２は、第１文書内のテキストシーケンスの第２オフセットを識別し、等々となる。以下に詳細に述べるように、本発明の現在好ましいと考えられる１つの実施例は、各オフセットをその手前のオフセットから測定することによりオフセットデータシーケンス２００に与えられるオフセットの値を最小にするように構成される。しかしながら、本発明の範囲から逸脱せずに複数のオフセットを与える他の方法も存在することが当業者に明らかであろう。
【００１１】
定期刊行物のデータベースの上記例を更に説明すれば、所定ワードを識別するためにデータキー識別子１０２が与えられる。データキーフィールド１００は、そのワードが現れる各文献を識別するためにこのデータキー識別子１０２を文書識別子データと共に含んでいる。オフセットフィールド１０６は、文書識別子データ１０４により識別された各文書に関連したオフセットのカウントを含む。各オフセットは、手前のオフセットからのワードのオフセットを表す値を与えることにより文書内のそのワードの位置を識別する。例えば、第１のオフセットは、２０であり、これはそのワードが文書の２０番目のワードとして最初に現れることを示す。第２のオフセットは５０であり、これはそのワードが２回目に現れるのが最初の発生から５０ワード目であり、文書の始めから７０ワードであることを示している。
【００１２】
上記した方法によれば、テキストインデックスは、ユーザがオフセットデータシーケンスをデータベース内で見つけられるように効率的に記憶することができる。テキストインデックスを記憶する上記の方法は、メモリを効率的に保存し、メモリオーバーヘッドを減少する。しかしながら、データキーフィールド１００の種々の成分を圧縮する方法を提供することにより、テキストインデックスを記憶するのに必要なメモリオーバーヘッドの量のそれ以上の減少を達成することができる。特に、以下に詳細に述べるように、文書識別データ１０４及びオフセットフィールド１０６を圧縮するための方法が提供される。
【００１３】
図３、４及び５には、上記複数のデータキーフィールド１００を与える方法が示されている。最初に、ステップ３００において、ターゲットデータキーと称するテキストシーケンスを識別するためにデータキー識別子１０２が指定される。ターゲットデータキーは、データキーフィールドが所望される何らかのテキスト又はデータシーケンスである。上記の例では、ターゲットデータキーは、定期刊行物のデータベースに現れる特定のワードである。その後、ステップ３０２において、ターゲットデータキーが現れる各文書が識別されて文書データセットが定められ、文書データセットは、ターゲットデータキーが現れる各文書の文書識別子を含む。上記例を更に参照すれば、文書データセットは、ターゲットデータキー即ち特定のワードが現れる各文献を識別するための文書識別子を含む。その後に、ステップ３０４において、文書データセットから第１文書が選択されて、オフセットフィールド１０６（図１）が決定される。
【００１４】
オフセットフィールド１０６を形成するために、ステップ３０６において、選択された文書におけるターゲットデータキーの発生数を決定し、その発生数を表す現在値を与える。その後、ステップ３０８（図４）において、データキーオフセットシーケンスが与えられ、これは、上記したように第１文書内のターゲットデータキーの位置を指示する複数のデータキーオフセット値を含む。本発明の方法によれば、ステップ３１０において、当該文書のオフセットシーケンスを表すのに必要なデータを最小にするために各データキーオフセットシーケンスが圧縮される。データキーオフセットシーケンスを圧縮するには種々の方法が使用できるが、本発明のここに述べる好ましい実施例では、図６及び７を参照して以下に詳細に述べるように、特定の方法が使用される。
【００１５】
選択された何らかの方法によってデータキーオフセット値セットが圧縮された後に、ステップ３１２において、その圧縮されたデータがカウント値と共にアッセンブルされ、選択された文書に対するオフセットフィールドが作られる。次いで、文書データセット（上記ステップ３０２で定めた）の最後の文書が選択されたかどうかの判断がなされ、もしそうでなければ、ステップ３１６において、次の文書が選択され、文書データセットで識別された各文書に対しオフセットフィールドが与えられるまでステップ３０６ないし３１６が繰り返される。その後、ステップ３１８（図５）において、文書データセットが圧縮されて、図１に示す文書識別子データ１０４が作られる。ステップ３１０を参照して述べたデータキーオフセット値の圧縮と同様に、文書データセットの圧縮は、公知の種々の方法で行うことができる。しかしながら、文書データセットを圧縮するためのここに示す好ましい方法は、図８、９、１０及び１１を参照して以下に説明する。
【００１６】
ステップ３２０において、データキー識別子１０２、文書識別子データ及びオフセットフィールドを用いて、データキーフィールド１００が組み立てられる。ステップ３２２において、次のターゲットデータキーを選択し、各ターゲットデータキーにデータキーフィールド１００が設けられるまで図３、４及び５の方法が繰り返される。
【００１７】
上記したように、オフセットフィールド１０６及び文書識別子データ１０４は両方とも圧縮され、複数のデータキーフィールド１００を記憶するに必要なメモリが減少される。又、上記したように、オフセットフィールド１０６は、データキーの手前の位置を参照として使用して文書内のデータキーの位置を各々識別する複数のオフセットを備えている。オフセットフィールド１０６を圧縮するためのここに示す好ましい方法は、図６及び７の判断流れ線図に示されている。
【００１８】
一般に、各オフセットデータシーケンス（図４のステップ３０８）は、図６に示す方法に基づいてシーケンスをエンコードすることにより圧縮される。図６には、可変長さエンコード技術が示されており、先ず、ステップ４００において、参照数Ｎを、
２N ＞（ｍａｘ−ｍｉｎ）／ｋ                                        （１）
であるような最小の整数として定義する。ここで、ｍａｘ（最大）は文書における最後のデータキーオフセット、即ち７０番目のワードを識別するオフセットであり、そしてｍｉｎ（最小）は文書における最初のデータキーオフセット、即ち２０番目のワードを識別するオフセットであり、従って、最大−最小は、文書におけるデータキーの範囲を指し、そして更に、ｋはステップ３０６（図３）を参照して上記したように文書におけるデータキーの数、即ちオフセットのカウントである。基準数Ｎが定められた後に、エンコード変数ＥＤが次のように定められる。即ち、
ＥＤ＝３ｘ（２Ｎ−２）                                                （２）
ＥＤは、２つの最上位ビット側のビットの両方を１に等しくセットすることなくＮビットを用いて表すことのできる最大数より１大きいものである。例えば、基準数Ｎが７に等しい場合には、エンコード変数ＥＤは９６に等しい。この例では、両方の最上位データビット側のビットをセットすることなく表すことのできる最大数が９５であり、即ち、両方の最上位データビット側のビットをセットせずに表すことのできる最大２進数は１０１１１１１であって、９５に等しい。
【００１９】
図６に戻ると、ステップ４０４において、各オフセットがエンコード変数ＥＤと比較される。オフセット値が変数ＥＤより小さく、上記例では９５より小さい場合には、ステップ４０６において、そのオフセット値はエンコードせずに使用される。しかしながら、オフセットが変数ＥＤに等しいか又はそれより大きい場合には、ステップ４０８において、そのオフセットの下位のＮ−２ビットが「１１」との組み合わせで使用される。当業者に明らかなように、エンコード変数ＥＤより小さいオフセットだけはエンコードせずに使用されるので、いかなるフィールドの２つの最上位ビット側のビットをセットしても、オフセットがＥＤより大きいことが指示され、そしてオフセットの最下位側のＮ−２ビットのみが与えられる。別の言い方をすれば、フィールドの最上位側の２ビットのいずれかがセットされないときには、オフセット値が変数ＥＤより小さく、上記例では９６より小さく、そのフィールドはエンコードされない。逆に、フィールドの両方の最上位ビット側のビットがセットされる場合には、オフセット値が変数ＥＤより大きく、フィールドはエンコードされる。
【００２０】
上記したように、オフセットが変数ＥＤより大きい場合には、そのオフセットの最下位側のＮ−２ビットが使用され、「１１」と組み合わされて、フィールドがエンコードされたことを指示する。次いで、オフセットの残りの最上位ビット側のビットが、ステップ４１０において、所定のエンコード方法によりエンコードされる。ステップ４１２において、インデックス変数ｊがオフセット値の数と比較されて各オフセットがエンコードされたかどうか判断され、もしそうでなければ、インデックス変数ｊはステップ４１４において増加され、そしてオフセットデータシーケンスの各オフセットがエンコードされるまでステップ４０４ないし４１４が繰り返される。
【００２１】
残りのデータビットをエンコードするここに示す好ましい方法は、「マーカーエンコード方法」と称するもので、ステップ４１０を参照して述べたが、これが図７に示されている。図７を参照すれば、ステップ５００において、多数のインデックス値ｍ、ｒ及びｂが各々１にセットされる。その後、ステップ５０２において、残りのビットの２進表示として、即ちエンコードされるべきオフセットの最上位ビット側のビットとして（上記のステップ４１０を参照）、Ｑが定められる。２進表示は非ゼロであることが知られており、即ち１より大きいことが知られているので、ステップ５０４において、Ｑから１を減算し、残りのビットに対するメモリオーバーヘッドを更に少なくする。その後に、ステップ５０５において、第１のエンコードされたビットＥＱ１がＱの最下位ビットに等しくセットされる。例えば、図６のステップ４０８及び４１０で最下位側のＮ−２のビットが選択された後に残っているビットが次のものである場合には、
Ｑ＝１０１０                                                    （３）
ステップ５０４において、次のようになり、
Ｑ−１＝１００１                                                （４）
そしてステップ５０５において最下位ビット即ちＥＱ１が１に等しくなる。その後、ステップ５０６においてインデックス変数ｂ及びｒが増加され、そしてステップ５０８においてインデックス変数ｒがインデックス変数ｍと比較される。本発明の方法によれば、残りのビットの数が小さいと仮定する。従って、最初はＱの１ビットだけがエンコードされ、即ちＮ＝１である。その後、更にエンコードが必要な場合には、ｍが増加され、付加的なビットが以下に述べるようにエンコードされる。それ故、ｍは、エンコードされるべき残りのビット数である。ステップ５０８でのｒとｍの比較は、残りの適当な数のビットがエンコードされたかどうか判断することである。
【００２２】
上記例では、増加の後に、ｒは２に等しくなりそしてｍは１に等しくなり、従って、ｒはｍより大きくなり、ステップ５１０が実行され、ｍは１だけ増加されそしてｒは１の値に戻される。次いで、ステップ５１２において、Ｑは、最初のビット（１つ又は複数）がエンコードされた後に残っているビットの２進表示に等しくセットされる。上記例において、１００１の最下位ビットがエンコードされて、ＥＱ１＝１となった後に、残りのビットの２進表示は「１００」となる。ステップ５１４においてＱが０に等しい場合には、ステップ５２０においてこの方法は終了する。しかしながら、上記例のように、Ｑが０に等しくない場合は、次にエンコードされるビットがステップ５１６において１に等しくセットされ、ステップ５１８においてインデックス変数ｂが１だけ増加される。ステップ５１４においてＱが０に等しくなるまでステップ５０４ないし５１８が繰り返され、Ｑが０になった時点で、次にエンコードされるビットＥＱｂがステップ５２０において０に等しくセットされる。
【００２３】
当業者に明らかなように、ステップ５１６及び５２０は、エンコードが完了したかどうかの指示を与えるように作用し、即ち「１」は更にエンコードが行われることを指示し、一方「０」はエンコードが終了したことを指示する。更に、エンコードは一度に１ビットづつ行うことができ、更にエンコードが存在するかどうかを１つおきのビットが指示する。しかしながら、上記したように、ステップ５０８の判断により、第１ビットがエンコードされた後に指示が与えられる。この指示がその後のエンコード動作を示す場合には、ｍが増加されて２ビットがエンコードされた後に、指示が与えられる。この指示がそれに続くエンコード動作を示す場合には、ｍが増加されて、３ビットがエンコードされた後に次の指示が与えられる、等々となる。当業者であれば、エンコード動作を増加する他の方法が容易に明らかであろう。
【００２４】
オフセットフィールド１０６（図１）を圧縮するのに加えて、文書識別子データ１０４も圧縮される。文書識別子データ１０４を圧縮するためのここに示す好ましい方法は、図８、９、１０及び１１の判断流れ線図を参照して説明する。図１、３、４及び５を参照して上記した文書識別子データ１０４に関してこの方法を説明したが、図８、９、１０及び１１に示された方法は、データシーケンスに適用でき、特に、データが比較的均一に分布されたデータシーケンスに適用できることが当業者に明らかであろう。
【００２５】
図８、９、１０及び１１を参照し、仕切りエンコード方法に従って文書識別子データをエンコードする方法を説明する。ステップ６００において、カウンタｊ及びスタックが初期化される。カウンタｊは、エンコードされる文書識別子データのビットを識別するのに使用され、これらビットは、ビット「ａ」のビットアレイＤＩｊに記憶される。スタックは、図８、９、１０及び１１の方法を以下で詳細に述べるように繰り返し実行するように使用される。文書識別子データ又は他のシーケンスが最初に検査され、シーケンス中のエレメント数、即ち文書識別子データによって識別された文書の数Ｋ、シーケンス中のエレメントの最小値ＭＩＮ、及びシーケンス中のエレメントの最大数ＭＡＸの記述がなされる。その後に、ステップ６０２において、変数Ｋ、ＭＩＮＤＯＣ及びＭＡＸＤＯＣが定義される。最初に、ＭＩＮＤＯＣ及びＭＡＸＤＯＣが各々ＭＩＮ及びＭＡＸに等しくされる。その後、ＭＩＮＤＯＣとＭＡＸＤＯＣとの間の中点が、ステップ６０４において、Ｍとして次のように記述される。
Ｍ＝ シーリング((ＭＩＮＤＯＣ＋ＭＡＸＤＯＣ）／２）          （５）
【００２６】
ステップ６０６において、上記範囲内の文書数が上記範囲に等しいかどうか、即ち文書が互いに離間されているかどうかを決定する判断がなされ、もしそうであれば、方法はステップ７００へと続き、以下に述べるようにスタックが評価される。その後、ステップ６０８において、その範囲内の文書の数が１に等しいかの判断がなされ、もしそうであれば、文書識別子Ｋは、ステップ６０７及び６０９においてエンコードの次のｔビットとして使用され、方法はステップ７００へと続く。上記基準のいずれも真でなければ、ステップ６１０において、Ｍに等しいか又はそれより大きい文書識別子を有する文書の数、及びＭより小さい文書識別子を有する文書の数として各々Ｃ+ 及びＣ- が定義される。Ｃ+ 及びＣ- は、ステップ６１２において、Ｃ+ がＣ- と「０」だけ異なる（即ち、Ｃ+ はＣ- に等しい）か又は「１」だけ異なる（即ち、Ｃ+ はＣ- より１大きいか１小さい）かを決定するための比較が行われ、もしそうであれば、ステップ６１４及び６１６において、エンコードされた識別子ビットが「０」に等しくセットされそしてインデックス変数ｊが１だけ増加される。しかしながら、相当数の文書が上記範囲においてＭより大きいか又は小さい場合には、ステップ６１８において、エンコードされたデータビットが「１」に等しくセットされる。その後、ステップ６２０において、インデックス変数ｊが増加される。次いで、ステップ６２２において、Ｃ+ がＣ- より大きいかどうかの判断が行われ、もしそうであれば、エンコードされたデータビットはステップ６２４において「０」に等しくセットされそしてもしそうでなければ、エンコードされたデータビットはステップ６２６において「１」に等しくセットされる。その後、インデックス変数ｊはステップ６２８において再び増加される。次いで、ステップ６３２が実行され、上位範囲における文書の数と下位範囲における文書の数との差が表示され、エンコードされた差は、ステップ６３４において、エンコードされた文書識別子データの次のｔビットとして使用される。その後、インデックス変数ｊがインデックス変数ｔだけ増加される。次いで、ステップ６０４へ復帰し、別の仕切りが識別される。
【００２７】
ステップ６１０（図９）へ戻ると、ステップ６１２でＣ+ がＣ- と比較されてそれらが０だけ異なるか１だけ異なるかが判断されそしてその比較結果が肯定である場合にステップ６１４及び６１６において０のエンコードビットが加えられた後に、その差の性質を特徴付けるために追加のデータビットが与えられる。特に、ステップ６４０においてＣ+ がＣ- より大きいかどうかの判断がなされ、もしそうであれば、ステップ６４２において、次のエンコードデータビットとして０ビットが与えられ、そしてステップ６４４においてｊが１だけ増加される。ステップ６４０においてＣ+ がＣ- より大きくなければ、ステップ６４６においてＣ- がＣ+ より大きいかどうかの判断がなされる。もしそうであれば、ステップ６４８において、次のエンコードデータビットに１が加えられ、そしてステップ６５０においてインデックス変数ｊが１だけ増加される。Ｃ+ がＣ- に等しく、即ちステップ６４０及び６４６の両方の判断が否定であれば、追加のエンコードデータビットは加えられない。当業者に明らかなように、ステップ６１０ないし６２８及び６４０ないし６５０は、ＭＩＮＤＯＣないしＭＡＸＤＯＣの範囲内における文書の分布を特徴付けるために設けられたものである。この範囲は値Ｍによって仕切られ、そしてエンコードデータビットが与えられ、その第１は、その範囲においてＭより上にＭの下と同数の文書があるかどうかを識別し、そしてその第２は、その範囲においてＭの上の方がＭの下のよりも多数の文書が与えられるかどうかを識別する。
【００２８】
この方法を繰り返し実行できるように、ステップ６１０ないし６２８及び６４０ないし６５０によって特徴付けられた範囲が半分に分割され、各半分の範囲に対してステップ６０４ないし６３６の方法が繰り返される。スタックは、後で動作するためにセーブされたその範囲の部分の状態を思い出すのに使用される。従って、スタックの状態は１だけ増加され、そして思い出すべき範囲の上位部分を定める変数がステップ７０２においてスタックに記憶される。その後、仕切られた範囲の下位部分に作用する変数がステップ７０４で定められる。同様に、ある範囲内の文書の数がステップ６０６においてその範囲に等しいか又はある範囲内の文書の数がステップ６０８において１に等しいことが決定された後に、ステップ７００において、スタックを調べて、上位部分がエンコードすべきものとして残っているかどうか判断する。変数ＳＴＡＴＥが０に等しい場合には、上位部分は残っておらず、この方法は終了となる。或いは又、変数ＳＴＡＴＥが非ゼロの場合には、作用すべき範囲がスタックへの最後の入力によって定められ、変数ＳＴＡＴＥは、ステップ７０６において、１だけ減少される。
【００２９】
以上、本発明の特定の実施例を説明したが、本発明の精神及び範囲内で種々の変更がなされ得ることが当業者に明らかであろう。従って、本発明は、特許請求の範囲のみによって限定されるものとする。
【図面の簡単な説明】
【図１】本発明の方法によって記憶されるテキストインデックスデータベースの全構造を示す図である。
【図２】本発明の方法によって記憶されるテキストインデックスのオフセットフィールドの構造を示す図である。
【図３】テキストインデックスデータを記憶するための本発明の方法を示す判断フローチャートである。
【図４】テキストインデックスデータを記憶するための本発明の方法を示す判断フローチャートである。
【図５】テキストインデックスデータを記憶するための本発明の方法を示す判断フローチャートである。
【図６】図１及び２に示したオフセットフィールドデータを記憶する方法の判断フローチャートである。
【図７】図１及び２に示したオフセットフィールドデータを記憶する方法の判断フローチャートである。
【図８】図１及び２に示した文書識別子データを記憶する方法の判断フローチャートである。
【図９】図１及び２に示した文書識別子データを記憶する方法の判断フローチャートである。
【図１０】図１及び２に示した文書識別子データを記憶する方法の判断フローチャートである。
【図１１】図１及び２に示した文書識別子データを記憶する方法の判断フローチャートである。
【符号の説明】
１００  データキーフィールド
１０２  データキー識別子
１０４  文書識別子データ
１０６  オフセットフィールド
２００  オフセットデータシーケンス
【図１】
0003550173.tif 000002
【図２】
0003550173.tif 000003
【図３】
0003550173.tif 000004
【図４】
0003550173.tif 000005
【図５】
0003550173.tif 000006
【図６】
0003550173.tif 000007
【図７】
0003550173.tif 000008
【図８】
0003550173.tif 000009
【図９】
0003550173.tif 000010
【図１０】
0003550173.tif 000011
【図１１】
0003550173.tif 000012