(57)【要約】【課題】高速な文書検索のために、復号化が高速に処理可能な符号化により、転置インデックスを高い圧縮率で圧縮する。【解決手段】文書識別番号をvariable byte法でバイト列へ圧縮する際に、バイト列のうちｗビットを当該索引語の当該文書中での出現回数を表現するために用い、ｘビットをポスティングの属性情報を表現するために用いる。ｗビットで表現できない出現回数は、ｗビットで表現しきれない数値であることを示す特殊な値をバイト列中に書き込んだ上で、variable byte法で記述し後置する。ここに、ｘ，ｗはパラメータとして与えられる整数である。また、転置リストの途中の位置からでも、圧縮されたポスティングを読める手段を提供し、転置リスト上の２分探索を可能とする。【選択図】図４
2008140357.tif 000002
【特許請求の範囲】
【請求項１】
それぞれに識別番号が割り当てられた複数の文書からなる文書集合の全ての索引語について、前記索引語が出現する文書の識別番号と前記文書中での当該索引語の出現回数の組であるポスティングを格納した転置インデックスを記録したコンピュータ読みとり可能な記録媒体であって、
前記転置インデックスは、各ポスティング中の文書の識別番号が可変長のバイト列で表現され、ｗを１以上８以下の与えられた整数として、前記バイト列中のｗビットで１から（２W−１）までの出現回数が表現され、２W以上の出現回数は追加のバイト列を用いて表現されていることを特徴とするコンピュータ読みとり可能な記録媒体。
【請求項２】
請求項１記載のコンピュータ読みとり可能な記録媒体において、ｘをｘ＋ｗが１以上8以下となる与えられた整数として、前記ポスティングを表現するバイト列中のｘビットに追加情報を書き込む領域が設けられていることを特徴とするコンピュータ読みとり可能な記録媒体。
【請求項３】
請求項１記載のコンピュータ読みとり可能な記録媒体において、前記バイト列の最初又は最後のバイトの上位又は下位ｗビットが前記出現回数に割り当てられていることを特徴とするコンピュータ読みとり可能な記録媒体。
【請求項４】
請求項２記載のコンピュータ読みとり可能な記録媒体において、前記バイト列の最初又は最後のバイトの上位又は下位ｘ＋ｗビットが前記出現回数及び追加情報に割り当てられていることを特徴とするコンピュータ読みとり可能な記録媒体。
【請求項５】
複数の文書を含む文書集合中の個々の文書から単語あるいは連続する複数の文字からなる索引語を切り出す索引語切り出し手段と、
それぞれの索引語が各文書中に出現する回数を取得する索引語出現回数取得手段と、    前記文書集合中の各文書にそれぞれ異なる文書識別番号を割り当てる文書識別番号割り当て手段と、
各々の索引語について得られた文書識別番号と索引語出現回数からなるポスティングを圧縮するポスティング圧縮手段とを有し、
前記ポスティング圧縮手段は、各ポスティング中の文書の識別番号を可変長のバイト列で表現し、ｗを１以上８以下の与えられた整数として、前記バイト列中のｗビットで１から（２W−１）までの出現回数を表現し、２W以上の出現回数は追加のバイト列を用いて表現することを特徴とする転置インデックス作成装置。
【請求項６】
請求項５記載の転置インデックス作成装置において、ｘをｘ＋ｗが１以上8以下となる与えられた整数として、前記ポスティングを表現するバイト列中のｘビットに追加情報を書き込む領域が設けられていることを特徴とする転置インデックス作成装置。
【請求項７】
請求項５記載の転置インデックス作成装置において、前記バイト列の最初又は最後のバイトの上位又は下位ｗビットが前記出現回数に割り当てられていることを特徴とする転置インデックス作成装置。
【請求項８】
請求項６記載の転置インデックス作成装置において、前記バイト列の最初又は最後のバイトの上位又は下位ｘ＋ｗビットが前記出現回数及び追加情報に割り当てられていることを特徴とする転置インデックス作成装置。
【請求項９】
複数の文書を含む文書集合を入力する工程と、
前記入力された文書集合中の個々の文書から単語あるいは連続する複数の文字からなる索引語を切り出す工程と、
それぞれの索引語が各文書中に出現する回数を取得する工程と、
前記文書集合中の各文書にそれぞれ異なる文書識別番号を割り当てる工程と、
各々の索引語について得られた文書識別番号と索引語出現回数からなるポスティングを圧縮するポスティング圧縮工程と、
圧縮されたポスティングを含む転置インデックスを出力する工程とを有し、
前記ポスティング圧縮工程では、各ポスティング中の文書の識別番号を可変長のバイト列で表現し、ｗを１以上８以下の与えられた整数として、出現回数が１から（２W−１）までのときは当該出現回数を前記バイト列中のｗビットで表現し、出現回数が２W以上のときは当該出現回数を追加のバイト列を用いて表現することを特徴とする転置インデックス作成方法。
【請求項１０】
請求項９記載の転置インデックス作成方法において、ｘをｘ＋ｗが１以上８以下となる与えられた整数として、前記ポスティングを表現するバイト列中のｘビットに追加情報を書き込むことを特徴とする転置インデックス作成方法。
【請求項１１】
請求項９記載の転置インデックス作成方法において、前記バイト列の最初又は最後のバイトの上位又は下位ｗビットを前記出現回数に割り当てることを特徴とする転置インデックス作成方法。
【請求項１２】
請求項１０記載の転置インデックス作成方法において、前記バイト列の最初又は最後のバイトの上位又は下位ｘ＋ｗビットを前記出現回数及び追加情報に割り当てることを特徴とする転置インデックス作成方法。
【請求項１３】
それぞれに識別番号が割り当てられた複数の文書からなる文書集合の全ての索引語について、前記索引語が出現する文書の識別番号と前記文書中での当該索引語の出現回数の組であるポスティングを格納した転置インデックスを記録したコンピュータ読みとり可能な記録媒体であって、
前記転置インデックスは、各ポスティング中の文書の識別番号が可変長のバイト列で表現され、ｗを１以上８以下の与えられた整数として、前記バイト列中のｗビットで１から（２W−１）までの出現回数が表現され、２W以上の出現回数は追加のバイト列を用いて表現されており、
前記文書の識別番号を表現するバイト列は、各バイト中の特定の位置のビットに当該バイト列の最終バイトか否かを表示し、
前記追加のバイト列は、各バイト中の前記特定の位置のビットに文書の識別番号を表現する最終バイトではないことを表示し、前記特定の位置のビットに隣接するビットに当該追加のバイト列の最終バイトか否かを表示することを特徴とするコンピュータ読みとり可能な記録媒体。
【請求項１４】
請求項１３記載のコンピュータ読みとり可能な記録媒体において、ｘをｘ＋ｗが１以上８以下となる与えられた整数として、前記ポスティングを表現するバイト列中のｘビットに追加情報を書き込む領域が設けられていることを特徴とするコンピュータ読みとり可能な記録媒体。
【請求項１５】
請求項１３記載のコンピュータ読みとり可能な記録媒体において、前記文書の識別番号を表現するバイト列の最初又は最後のバイトの上位又は下位ｗビットが前記出現回数を表現するために割り当てられていることを特徴とするコンピュータ読みとり可能な記録媒体。
【請求項１６】
請求項１４記載のコンピュータ読みとり可能な記録媒体において、前記バイト列の最初又は最後のバイトの上位又は下位ｘ＋ｗビットが前記出現回数及び追加情報を表現するために割り当てられていることを特徴とするコンピュータ読みとり可能な記録媒体。
【請求項１７】
複数の文書を含む文書集合中の個々の文書から単語あるいは連続する複数の文字からなる索引語を切り出す索引語切り出し手段と、
それぞれの索引語が各文書中に出現する回数を取得する索引語出現回数取得手段と、
前記文書集合中の各文書にそれぞれ異なる文書識別番号を割り当てる文書識別番号割り当て手段と、
各々の索引語について得られた文書識別番号と索引語出現回数からなるポスティングを圧縮するポスティング圧縮手段とを有し、
前記ポスティング圧縮手段は、各ポスティング中の文書の識別番号を可変長のバイト列で表現し、各バイト中の特定の位置のビットに文書の識別番号を表現するバイト列の最終バイトか否かを表示し、ｗを１以上８以下の与えられた整数として、前記バイト列中のｗビットで１から（２W−１）までの出現回数を表現し、２W以上の出現回数は追加のバイト列を用いて表現し、前記追加のバイト列は、各バイト中の前記特定の位置のビットに文書の識別番号を表現する最終バイトではないことを表示し、前記特定の位置のビットに隣接するビットに当該追加のバイト列の最終バイトか否かを表示することを特徴とする転置インデックス作成装置。
【請求項１８】
請求項１７記載の転置インデックス作成装置において、ｘをｘ＋ｗが１以上８以下となる与えられた整数として、前記ポスティングを表現するバイト列中のｘビットに追加情報を書き込む領域が設けられていることを特徴とする転置インデックス作成装置。
【請求項１９】
請求項１７記載の転置インデックス作成装置において、前記バイト列の最初又は最後のバイトの上位又は下位ｗビットが前記出現回数を表現するために割り当てられていることを特徴とする転置インデックス作成装置。
【請求項２０】
請求項１８記載の転置インデックス作成装置において、前記バイト列の最初又は最後のバイトの上位又は下位ｘ＋ｗビットが前記出現回数及び追加情報に割り当てられていることを特徴とする転置インデックス作成装置。
【請求項２１】
複数の文書を含む文書集合を入力する工程と、
前記入力された文書集合中の個々の文書から単語あるいは連続する複数の文字からなる索引語を切り出す工程と、
それぞれの索引語が各文書中に出現する回数を取得する工程と、
前記文書集合中の各文書にそれぞれ異なる文書識別番号を割り当てる工程と、
各々の索引語について得られた文書識別番号と索引語出現回数からなるポスティングを圧縮するポスティング圧縮工程と、
圧縮されたポスティングを含む転置インデックスを出力する工程とを有し、
前記ポスティング圧縮工程では、各ポスティング中の文書の識別番号を可変長のバイト列で表現し、各バイト中の特定の位置のビットに当該識別番号を表現するバイト列の最終バイトか否かを表示し、ｗを１以上８以下の与えられた整数として、前記バイト列中のｗビットで１から（２W−１）までの出現回数を表現し、２W以上の出現回数は追加のバイト列を用いて表現し、前記追加のバイト列は、各バイト中の前記特定の位置のビットに当該識別番号を表現する最終バイトではないことを表示し、前記特定の位置のビットに隣接するビットに当該追加のバイト列の最終バイトか否かを表示することを特徴とする転置インデックス作成方法。
【請求項２２】
請求項２１記載の転置インデックス作成方法において、ｘをｘ＋ｗが１以上８以下となる与えられた整数として、前記ポスティングを表現するバイト列中のｘビットに追加情報を書き込むことを特徴とする転置インデックス作成方法。
【請求項２３】
請求項２１記載の転置インデックス作成方法において、前記バイト列の最初又は最後のバイトの上位又は下位ｗビットを前記出現回数を表現するために割り当てることを特徴とする転置インデックス作成方法。
【請求項２４】
請求項２２記載の転置インデックス作成方法において、前記バイト列の最初又は最後のバイトの上位又は下位ｘ＋ｗビットを前記出現回数及び追加情報に割り当てることを特徴とする転置インデックス作成方法。
【請求項２５】
それぞれに識別番号が割り当てられた複数の文書からなる文書集合の全ての索引語について、前記索引語が出現する文書の識別番号と前記文書中での当該索引語の出現回数の組であるポスティングを格納した転置インデックスを用いた検索手段による検索方法であって、
前記転置インデックスは、各ポスティング中の文書の識別番号が可変長のバイト列で表現され、ｗを１以上８以下の与えられた整数として、前記バイト列中のｗビットで１から（２W−１）までの出現回数が表現され、２W以上の出現回数は追加のバイト列を用いて表現されており、前記文書の識別番号を表現するバイト列は、各バイト中の特定の位置のビットに当該バイト列の最終バイトか否かを表示し、前記追加のバイト列は、各バイト中の前記特定の位置のビットに文書識別番号の最終バイトではないことを表示し、前記特定の位置のビットに隣接するビットに当該追加のバイト列の最終バイトか否かを表示しているものであり、
入力部から第１の索引語と第２の索引語を受け付ける工程と、
前記転置インデックス中の前記第１の索引語の転置リストに含まれる文書の識別番号を取得する工程と、
前記取得した識別番号が前記第２の索引語の転置リストに含まれているかどうかを２分探索によって判定する工程と、
前記取得した識別番号のうち前記第２の索引語の転置リストに含まれている識別番号またはその識別番号に対応する文書を出力する工程とを有し、
前記２分探索に際しては、前記第２の索引語の転置リストの所望の読み位置のバイトに移動し、当該バイトが前記文書の識別番号を表現するバイト列の最終バイトか否かを判定し、最終バイトでない場合には最終バイトが見つかるまで前記転置リストの先頭の方向に１バイトずつ読み進み、前記文書の識別番号を表現するバイト列の最終バイト中の出現回数を表現するｗビットの情報から前記出現回数を表現する追加のバイト列が存在するか否かを判定し、追加のバイト列が存在しないと判定されたときは当該バイトの次のバイトをポスティングの先頭としてポスティングを読み取り当該ポスティング中の識別番号を取得し、追加のバイト列が存在すると判定されたときは追加のバイト列の最終バイトが見つかるまで前記転置リストの下流側に１バイトずつ読み進み、追加のバイト列の最終バイトの次のバイトをポスティングの先頭としてポスティングを読み取り当該ポスティング中の識別番号を取得する処理を実行することを特徴とする検索方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、大規模文書集合を対象に、高速な全文検索をするための、転置インデックスの圧縮方法、及びその転置インデックスを用いた検索方法に関する。
【背景技術】
【０００２】
現代社会では、膨大な量の電子文書が日々作成され、その量はますます増え続けている。オフィスでは文書作成やプレゼンテーションに、電子文書は不可欠なものとなっている。インターネットの拡大も、爆発的な数の電子文書が生み出される要因となっている。電子文書の量の増大とともに、多数の膨大な文書から、必要な情報が記された文書を、短時間で検索し出力できる文書検索技術が必須となっており、技術開発も進んでいる。
【０００３】
図１は、検索対象となる文書集合と、それに基づき構築される転置インデックスの概略図である。文書検索の典型的なスタイルは、与えられた文書集合101から、指定された単語を含む文書を、極力短時間で出力するというものである。この目的のために、転置インデックス102と呼ばれるデータ構造が使用される。ある単語103がある文書104に出現するとき、その文書の識別番号105、その文書中の当該単語の出現回数106から構成される情報をポスティング107と呼ぶ。検索対象文書の全単語について、全ポスティングのリストを格納したデータ構造が、転置インデックス102である。
【０００４】
ポスティングにおいて、当該単語の出現回数は用途により省略される場合があるが、本明細書では出現回数も格納する転置インデックスを扱う。なぜなら、出現回数は、検索された文書の重要度を計算する際に必要となる場合が多いためである。一方、ポスティングは当該単語の位置情報を含む場合もあるが、本明細書の技術は、文書識別番号と出現回数から成る部分の処理に適用される。
【０００５】
英語、フランス語、スペイン語のような単語がスペースで区切られている言語と異なり、日本語、韓国語や中国語では、文書を正確に単語に分割することが困難である。そこでn-gramと呼ばれる、連続するn文字からなる、文書中の任意の部分文字列を単語の代わりに用いて、転置インデックスを構築する場合があり、実用上有用であることが知られている(情報検索アルゴリズム、北研二他著、共立出版）。nは、主に1〜10の整数である。本明細書では、単語及び長さnの部分文字列を、索引語と表記する。
【０００６】
ポスティングを構成する文書識別番号及び出現回数は、いずれも整数値である。整数値を圧縮せず固定長のバイト列で表現する場合、数値を32ビットで表現するなら１つの整数を表現するために４バイトが必要であるが、数値を32ビットよりも小さいビット数で表現する複数の公知技術が存在する。Eliasγ符号(非特許文献１)は、小さな数値を少ないビット数で表現できる数値圧縮法であり、索引語の出現回数の圧縮に適している。Eliasγ符号は文書の識別番号を圧縮するためにも利用できるが、識別番号は出現回数ほどには小さい数値に集中しないため、Eliasδ符号(非特許文献１)が適している。Golomb符号(非特許文献２)、Rice符号(非特許文献３)は、整数値を可変長ビット列で圧縮するものの、Eliasγ、δ符号よりも高速に処理できる上に、圧縮率も高いと言われている。
【０００７】
整数値を可変長のバイト列で表現する方法も知られている。Variable byte法(非特許文献３、４)では、数値を２進数表現し、７ビットずつ可変長バイト列202に格納していく。図２は、variable byte法により圧縮された整数値の例を示す図である。最上位ビット201は、それを含む１バイトがバイト列の終端か否かを判別するために用いられる。最上位ビット201が１のバイトは、バイト列202の終端以外のバイトであり、最上位ビット201が0のバイトは、バイト列202の終端である。最上位ビット201の0と1の意味は、逆であっても構わない。図２の例は、整数123456（２進数表記では0000111 1000100 1000000）をvariable byte法で圧縮した場合を示している。この場合は３バイトで表現可能なので、もとの整数123456が32ビットで記録されていれば3/4=75%の圧縮ができたことになる。図２では、上位ビットから順に符号化しているが、下位ビットからでも構わない。Variable byte法の長所は、復号処理が簡便なため高速処理が可能なことである。
【０００８】
バイト列のみならず、32ビット又は64ビット計算機ワードごとに複数のポスティングをまとめて符号化する技術も知られている(非特許文献５)。非特許文献５の技術を拡張し、計算機ワードの境界を跨った符号化を行なう技術も提案されている（非特許文献６）。これらの他に、全文検索用の転置インデックスをコンパクトに表現する技術としては、特許文献１、特許文献２の技術が知られている。また、非特許文献７には、単語毎に用意されたポスティングのリスト、すなわち転置リスト108(図２３)を大きさの等しい複数のブロックに分割して２分探索を行なうことにより、転置リスト中で特定の文書に関するポスティングを高速に探索する技術が記載されている。
【０００９】
【特許文献１】特開2001-312517号公報
【特許文献２】特開平6-243009号公報
【非特許文献１】P. Elias, Universal codeword sets and representations of the integers, IEEE Transactions on Information Theory, IT-21(2):194-203, 1975.
【非特許文献２】S. Golomb, Run-length encodings, IEEE Transactions on Information Theory, IT-12(3):399-401, 1966.
【非特許文献３】F. Scholer, H.E. Williams, J. Zobel, Compression of Inverted Indexes for Fast Query Evaluation, Proc. 25th Ann. Int’l ACM SIGIR Conf. Research and Development in Information Retrieval, pp.222-229, 2002.
【非特許文献４】H. Williams and J. Zobel, Compressing integers for fast file access, Computer Journal, 42(3):193-201, 1999.
【非特許文献５】V.N. Anh and A. Moffat, Inverted Index Compression Using Word-Aligned Binary Codes, Information Retrieval, 8(1):151-166, 2005.
【非特許文献６】V.N. Anh and A. Moffat, Improved Word-Aligned Binary Compression For Text Indexing, IEEE Transactions on Knowledge and data engineering, 18(6):857-861, 2006.
【非特許文献７】I.H.Witten, A. Moffat, and T.C.Bell, Managing Gigabytes: Compressing and Indexing Documents and Images, second ed. San Francisco: Morgan Kaufmann, 1999.
【発明の開示】
【発明が解決しようとする課題】
【００１０】
転置インデックスのデータ構造は、高速な文書検索を実現するために、２つの相反する要求に答えなくてはならない。まず、転置インデックスのデータ構造は、高速なアクセスを実現するために、単純なものがよい。転置インデックスを計算機メモリに配置する場合に、簡明なデータ構造とすることで転置インデックスの読取時間を短縮できる。その一方で、転置インデックスは、可能な限り圧縮しデータサイズを小さく抑えることが望ましい。大規模な文書集合を扱うときは、転置インデックスがハードディスクを始めとする補助記憶装置上に配置されることが多いが、データサイズを小さくすればオンメモリ処理が可能となり、検索速度を大きく向上させることができる。転置インデックス全体をメモリに載せることが不可能でも、頻繁にアクセスされる部分をオンメモリ化するだけで大幅な高速化が期待される。また、補助記憶装置上で転置インデックスが占有する領域を抑制できれば、文書検索システムを小規模なストレージで稼動させることができる。
【００１１】
転置インデックスの圧縮方法の性能は、その大部分を占めるポスティングの圧縮方法に大きく依存する。前述したように、ポスティングは文書の識別番号と索引語の出現回数から成る。これらの数値データを、検索の高速性及びデータサイズの観点から、適切な方法で圧縮する必要がある。また、検索対象により、文書集合の文書が頻繁に追加・更新されることがある。これに対応するために、文書識別番号の分布について、事前情報無しに使用できる圧縮方法が望ましい。
【００１２】
更に、ブーリアン検索やフレーズ検索といった高度な検索を２分探索(アルゴリズムとデータ構造、平田富夫、森北出版)により高速化できるよう、転置リスト108の途中から、ポスティングを読み取ることができるデータ構造とすることが望ましく、そのために付加しなければならないデータの量を抑制する必要がある。
【００１３】
Eliasγ、δ符号による圧縮方法は、整数値を可変長ビット列で表現するため、圧縮率は高いが復号化に時間が掛かる。Golomb符号、Rice符号は、文書識別番号の分布に依存するパラメータが事前に適切に与えられなければ、その性能を発揮することはできない。
【００１４】
variable byte法は、小さい値であっても最低１バイトが必要な短所があり、可変長ビット列で整数を表現する方法に比べ、索引語の出現回数の圧縮には不向きである。
【００１５】
非特許文献５の技術は、圧縮対象とする文書識別番号の分布が前もってわからなければ、最適な符号化ができない。また、この技術は、各文書における単語の出現回数の圧縮を考慮していない。非特許文献６の技術でも、非特許文献５の技術の上記の問題は解決されていない。特許文献１は文書識別番号のみの圧縮をしており、索引語出現頻度は考慮されていない。また、特許文献２は文書の識別番号と文書中の単語出現位置の圧縮に関する技術であり、文書の識別番号と出現回数から成るポスティングを圧縮する技術ではない。また、非特許文献７に記載の方法は、ポスティングを複数のブロックに分割する際に未使用領域ができ、記憶領域を浪費してしまうほか、ブロックの大きさより狭い範囲の２分探索ができないという問題がある。
【００１６】
本発明の目的は、高速な文書検索のために、高速に復号可能な符号化により、可変長ビットを用いた数値圧縮法に比肩しうるポスティングの圧縮率を実現することにある。また本発明は、転置リストを途中から読んでもポスティングの境界がわかるようにする手段も提供する。
【課題を解決するための手段】
【００１７】
本発明は、variable byte法を拡張し、ポスティングをバイト列で表現しつつ、索引語の出現回数を少ないビット数で格納する。Variable byte法で単純に出現回数を圧縮すれば、最低でも１バイトが必要である。しかし、特定の索引語の１文書中での出現回数は多くの場合３以下であり、２ビットあれば表現できる。そこで、本発明では文書識別番号を表現するバイト列の中に、図３に示すように、出現回数を表現するための長さｗビットのビットフィールド301(以下、出現回数フィールド)を設ける。ここに、ｗはパラメータである。ｗは、１バイトの中に収めるために高々８とすることが好ましく、圧縮効率を上げるために極力小さな値とするべきである。３以下の出現回数を表現できるようｗ＝２とすることが好ましいが、出現回数１の場合が多ければ、ｗ＝１としてもよい。これにより、出現回数が２のｗ乗から１を減じた値までの場合、文書識別番号を表現するバイト列に埋め込んで符号化できる。２のｗ乗から１を減じた値より大きな出現回数を表現するときは、前記長さｗビットのビットフィールドに特殊な値を書き込み、出現回数のvariable byte表現を後置する。
【００１８】
ポスティングには、文書識別番号や索引語出現回数以外の属性情報を記録する必要が生じる場合がある。想定される例として、検索対象文書から特定の文書が外れたときに、転置インデックス内の当該文書に対応するポスティングが無効になったことを示すフラグがある。そこで本発明では、図４に示すように、文書識別番号を表現するバイト列の中に、出現回数を表現するためのビットフィールド301に加え、さらに長さｘビットのビットフィールド401(以下、属性フィールド)を確保し、ポスティングの属性情報を書き込めるようにする。ここに、ｘはパラメータである。
【００１９】
出現回数フィールド及び属性フィールドは、１バイトで表現できるよう１≦ｘ＋ｗ≦８を満たすことが好ましい。ｘ＋ｗ≧８の場合には、図１３に示すように、文書識別番号及び出現回数・属性フィールドの一部のビットを格納する可変長バイト列の後に、出現回数・属性フィールドの残りの部分を格納した固定長バイト列を加えてポスティングを表現することが好ましい。この場合も、可変長バイト列部分の終端を、最上位ビット201を用いて表現すればよい。
【００２０】
なお、出現回数及び属性情報用のビットフィールドを設けることにより、文書識別番号を表現するためのビットが不足し、ｘ＋ｗ＜８でも、追加の１バイトが必要になる場合がある。その場合でも、出現回数及び属性情報を表現するための専用の１バイトを追加する場合に比べれば、データサイズは増加しない。
【００２１】
また、転置インデックスを先頭から読まなくても、途中から読んでポスティングの境界がわかるようにすることもできる。例えば図１６に示すように、出現回数を表すバイト列1603において、各バイトの最上位ビット1601を１に固定して文書識別番号を表すバイト列と混同されることを防ぎつつ、その次のビット1602を用いて出現回数を表すバイト列の最後の１バイトかどうかを表現すればよい。
【発明の効果】
【００２２】
本発明により、特徴語の特定文書中の出現回数を、多くの場合に１バイト未満の少ないビット数で表現しつつも、バイト単位の符号により高速アクセスが可能な転置インデックスのデータ構造が提供される。また、転置インデックスを先頭から読まずに、途中から読んでもポスティングの境界がわかる手段を提供し、２分探索を可能とする。これにより、各索引語の転置リストにおいて特定の文書に対応するポスティングを探索する際、該文書に対応するポスティングが存在すれば該ポスティングに短時間で到達でき、該文書に対応するポスティングが存在しなければ存在しないことを短時間で判別できる。
【発明を実施するための最良の形態】
【００２３】
本発明の方法による、ポスティングの圧縮形態の一例を説明する。
［実施例１］
図４に示すように、variable byte法における文書識別番号の表現において、最後の１バイトの下位ｗビット301を出現回数の記録に使用し、その左側（上位側）のｘビット401を属性情報の記録に使用する。この図は、ｗ＝２，ｘ＝１の場合の例であるが、本発明ではｗ，ｘの値は２,１に限定されない。出現回数が２のｗ乗から１を減じた値以下の場合には、ｗビットの出現回数フィールドが、そのまま出現回数の２進数表現となる。それ以上の出現回数を記録する場合は、図５に示すように、出現回数フィールド301の全てのビットに０を書き込んでｗビットでは表現できない出現回数であることを表現した上で、variable byte法で表現した出現回数を表すバイト列501を後置する。図５は、文書識別番号1234(２進数で100110 10010)、出現回数4321(２進数で0100001 1100001)のポスティングを符号化した例を示す。
【００２４】
次に、本発明の方法によって圧縮された転置インデックスを作成する装置の一形態を説明する。装置全体の概観を図６に示す。中央演算装置(CPU)601に、主記憶602が接続されている。必要に応じ、補助記憶603、ＣＤ−ＲＯＭ・ＤＶＤ等のリムーバブルメディア604、ネットワーク605、ユーザ端末606が接続される。本実施形態の装置は、CPU 601により実行される主記憶602上のプログラムとして索引語切り出し手段S701、索引語出現回数取得手段S702、文書識別番号割り当て手段S703、ポスティング圧縮手段S704を備える。
【００２５】
本装置におけるデータ及び処理の流れを、図７に示す。まず、入力として検索対象文書104を、CPU 601が必要に応じ主記憶602、補助記憶603、リムーバブルメディア604、ネットワーク605に配置された検索対象文書集合101から取得する。各々の検索対象文書104に、２通りの処理が行なわれる。まず、索引語切り出し手段S701により、文書中の索引語が切り出される。前述のように、切り出し手段として、公知の形態素解析方法又はn-gramが使用できる(情報検索アルゴリズム、北研二他著、共立出版)。さらに、それぞれの索引語が、検索対象となる文書104において出現する回数が、出現回数取得手段S702により取得される。出現回数を取得するためには、単純に索引語ごとに整数変数をひとつ用意して０に初期化した後、文書中に当該索引語の出現が検出される度に１ずつ増加させればよい。さらに文書識別番号割り当て手段S703により、検索対象文書毎に文書識別番号を割り当てる。この手段の好ましい実施形態の１つは、１に初期化された整数変数を１つ保持し、新しい文書識別番号が必要な際にこの変数の値を割り当て、その直後に前記変数の値を１増やすことである。S701、S702、S703により、各々の索引語について、文書識別番号105及び索引語出現回数106からなるポスティング107が得られる。このポスティングを、ポスティング圧縮手段S704を用いて圧縮し、得られたバイト列402を、必要に応じ主記憶602、補助記憶603、リムーバブルメディア604、ネットワーク605に配置される圧縮転置インデックス607へ出力する。
【００２６】
ポスティング圧縮手段S704が実行する処理のフローを、図８に示す。入力として、ポスティングの文書識別番号d 105と、索引語出現回数f 106が与えられ、パラメータである整数ｘ，ｗも与えられる。まず、ポスティング圧縮手段S704は、出力するバイト列402の出現回数フィールド301に格納する値f’を決定する。ステップS801において、fがｗビットで表現できるか判定し、表現できればf’=f、表現できなければf’=0とする。次に、ステップS802において、dとf’を合成した整数d’を構築する。この整数d’は、下位ｗビットがf’に等しく、下位ｘ＋ｗビットを除いた値がdに等しい。ステップS803において、この整数d’のvariable byte表現を出力する。variable byte表現の出力方法は、後述する。fがｗビットで表現可能か否かを、ステップS804でf’=0か否かにより判定する。f’≠0ならば表現可能で、圧縮処理は終了である。f’=0ならばfはｗビットで表現できないことを意味し、fの値をステップS805においてvariable byte表現で出力する。
【００２７】
図９を用いて、整数Aのvariable byte表現の出力方法の一形態を説明する。まず、ステップS901-S903において、変数Lを、２の７×ｎ乗がAより大きい最小の自然数ｎにセットする。次に、S904-S905のループで、Aの下位７ビット以外のAの値を、７ビットずつ上位ビットから出力する。このとき、Aを右へＬ×７ビットシフトした後、127と論理積をとることにより下位７ビット以外のビットを０とし、128を加えることで下位から８ビット目を１とする。最後に、Aの下位７ビットをステップS906で出力する。ステップS906では、127と論理積を取ることで、下位７ビット以外のビットを０とする。
【００２８】
なお、本装置に検索対象文書ではなくポスティングが直接与えられる場合には、ステップS701からS703を省略して、ポスティング圧縮手段S704だけを実行すれば圧縮された転置インデックスを構築できる。
【００２９】
本発明の方法で、図１の転置インデックス102を圧縮した形態の１つを、図１４に示す。この図は、ｘ＝０，ｗ＝２の場合の例である。索引語103ごとにその索引語が出現する文書の識別番号と当該文書中の出現回数が複数記録されている。この例では、文書数が高々４であるため、文書識別番号は全て、最終バイト中の文書識別番号に割り当てられたビット領域203内で表現されている。出現回数も高々２でｗ＝２ビットで表現可能なため、全てのポスティングが１バイトで表現可能である。このため、バイト列の終端か否かを表す最上位ビット201は、全て０となっている。なお、転置インデックスには、各索引語に対するポスティングの列の終端を表す情報が必要である。図１４では、存在しない文書の文書識別番号０を表現するバイト1401をリストの終端の印として用いている。このような１バイトをリストの終端に置く代わりに、各索引語のポスティングの数あるいはポスティングの総バイト数を記録し、ポスティングの終端を認識させてもよい。
【００３０】
当業者には、本発明のポスティング圧縮方法に様々なバリエーションがあることが明らかであろう。図４の例では、文書識別番号の最上位ビットが先頭のバイトで最下位ビットが最終バイトに格納されているが、バイトの並び順を変更し、例えば図１０に示すように逆順としてもよい。最上位ビットによりバイト列の終端か否かを表現していたが、最下位ビットを用いてもよい(図１１)。出現回数フィールドと属性フィールドを最終バイトの下位ビットとしたが、上位ビットに配置してもよい(図１２)。また、出現回数フィールドと属性フィールドを先頭・末尾以外のバイトに格納してもよい。整数のvariable byte表現において、最下位から７ビット以外が出力される場合には、前記整数を右に７ビットシフトして得られる整数は常に１以上である。このように１以上の値を扱うとわかっている場合には、出力する前に１を減じ、復号する際に１を加えて、前記整数を表現するビット数の削減を試みても良い(F. Scholer, H.E. Williams, J. Zobel, Compression of Inverted Indexes for Fast Query Evaluation, Proc. 25th Ann. Int’l ACM SIGIR Conf. Research and Development in Information Retrieval, pp.222-229, 2002.)。上記のバリエーションを、組み合わせて使用してもよい。さらに、文書識別番号を昇順にソートし差分を取ることにより、圧縮率の向上を図っても良い（I.H.Witten, A. Moffat, and T.C.Bell, Managing Gigabytes: Compressing and Indexing Documents and Images, second ed. San Francisco: Morgan Kaufmann, 1999）。
【００３１】
本発明の方法で圧縮した転置インデックスの大きさ及び転置インデックスの読込速度を他の方式と実験により比較した。実験の対象としたのは、以下の各方式である。
(A) 本発明の方法。
(B) 文書識別番号、出現回数ともに圧縮なし。
(C) 文書識別番号、出現回数ともにvariable byte法。
(D) 文書識別番号、出現回数ともにEliasγ符号。
(E) 文書識別番号はEliasδ符号、出現回数はEliasγ符号。
【００３２】
実験に用いたデータは、日経新聞３年分の文書で、索引語は形態素解析で得られた単語とした。メインメモリ1GB、CPUがPentiumIV 1.7GHzのLinuxをOSとする計算機を使用した。処理の実装には、C++言語を使用した。転置インデックス全体の圧縮には、各索引語のポスティングのリストの終端を表現する手段が必要である。本発明の方法及び圧縮なしの場合には、文書識別番号が０の場合をポスティングの終端とした。その他の方式では、出現回数が４の場合に終端とし、４以上の出現回数nはn+1で表現することとした。実験では、文書識別番号を昇順にソートし差分を取った上で、各種圧縮法で実際に全てのポスティングを圧縮し、圧縮後のポスティング全体の大きさを計測した。さらに、全ポスティングを読み取る時間を測定し、読取速度を計算した。時間測定では、１０回測定を行ない、平均値を使用した。実験結果を表１に示す。
【００３３】
【表１】
2008140357.tif 000003
【００３４】
圧縮しない場合(B)にほぼ400MBにも達する転置インデックスの大きさは、(B)以外のどの方式でも圧縮前の1/3以下となった。文書識別番号の圧縮にEliasδ符号を使用したとき(E)に最大の圧縮率が得られ、Eliasγ符号の場合(D)がこれに続いた。Eliasδ符号は、Eliasγ符号に比べ大きな整数の圧縮に適しており、これが圧縮率向上つながっている。一方、圧縮されたポスティングの展開速度については、Eliasδ符号、Eliasγ符号では、圧縮率の高さと引き換えに復号処理の速度が遅くなっているが、variable byte法(C)は大幅に速いという結果が得られた。
【００３５】
これらの方式と比較した場合、本発明の方法(A)の第一の特徴は、圧縮されたポスティングの復号速度にある。今回の実験では、他の全ての圧縮方法を上回る処理速度が得られた。第二の特徴は、圧縮率の高さである。最も圧縮率が高かった(E)の方法に比べ、インデックスサイズの増加は84.70/68.55=1.23倍に止まり、(C)の方法のサイズに対して84.70/114.16=74.2%にまで圧縮できた。
【００３６】
各方式の、圧縮後の転置インデックスの大きさと、圧縮転置インデックス全体を読み取るために要した時間の、２次元プロットを図１５に示す。この図において原点に近いほど、圧縮率及び復号速度が優れていることを表す。圧縮率では「＊」で表される(E)の方法、処理速度では「■」で表される(B)すなわち圧縮無しの場合が最も優れていたが、現実の応用では、圧縮率と復号速度の両方が優れていなければならない。図１５において「◆」で表される本発明の方法(A)は、圧縮率及び処理速度のいずれにおいても、最善ではないものの他のほとんどの手法よりも優れた結果を示しており、応用上有用な技術といえる。
【００３７】
［実施例２］
次に、転置リスト108を先頭から読まずに途中から読んでも、ポスティングの境界がわかるようにする実施例について説明する。図２２は、本実施例の方法によって圧縮される転置インデックスを作成し、それを用いて検索を行う装置の概略図である。本装置は、中央演算装置(CPU)601に、主記憶602が接続されている。必要に応じ、補助記憶603、ＣＤ−ＲＯＭ・ＤＶＤ等のリムーバブルメディア604、ネットワーク605、ユーザ端末606が接続される。本装置は、CPU 601により実行される主記憶602上のプログラムとして索引語切り出し手段S701、索引語出現回数取得手段S702、文書識別番号割り当て手段S703、ポスティング圧縮手段S704を備える。また、作成された圧縮転置インデックス607を用いて検索を実行する検索手段Ｓ705を備える。検索質問は主としてユーザ端末606から入力され、検索手段S705に渡される。
【００３８】
本実施例では、図５にて説明したポスティングの圧縮形式を図１６に示すように一部変更する。すなわち、出現回数を表すバイト列1603の最上位ビット1601にはいずれも１を書き込み、その次のビット1602が１か０かによって前記バイト列1603の終端バイトかどうかを表現する。本実施例では、最上位ビット1601の次のビット1602が０であるとき、そのバイトは、出現回数を表すバイト列1603の最後の１バイトであるとする。出現回数自体は、variable byte法で各バイト中の７ビットを用いて表現したように、上位２ビット(1601, 1602)を除いた６ビットを用いて表現する。こうすることにより、１つのポスティングを表すバイト列中で最上位ビットが０であるバイトは、文書識別番号を格納する可変長バイト列の末尾の１バイトのみになる。図１６は、文書識別番号1234(２進数で100110 10010)、出現回数4321(２進数で1 000011 10001)のポスティングを圧縮した例である。
【００３９】
転置リストを途中から読めるようにしたポスティング圧縮手段の処理フローを図１８に示す。この処理は、図８に示したフローとほぼ同様であるが、fを表すバイト列を出力するステップS1801のみが異なる。このステップの処理内容を、図１９を用いて説明する。まず、ステップS1901-S1903において、変数Aをｆに、変数Lを２の6×n乗がAより大きい最小の自然数ｎにセットする。次にL≧2の間、S1904-S1905のループで、Aの下位６ビット以外のAの値を、６ビットずつ上位ビットから出力する。このとき、Aを右へL×6ビットシフトした後、63(２進数で111111)と論理積を取ることにより下位６ビット以外のビットを０とし、192(２進数で11000000)を加えることで下位から８ビット目および７ビット目を１とする。最後にステップS1906で、Aの下位６ビットを出力する。このとき、63と論理積を取った上で128(２進数で10000000)を加えることで、下位から８ビット目を１、７ビット目を０とする。
【００４０】
文書検索にあたっては、例えば「（半導体 AND 電力）OR 磁気」のように単語の組み合わせを論理式で指定して検索するブーリアン検索、あるいは例えば「情報技術の未来」のように複数の単語が連続するフレーズを含む文書を検索するフレーズ検索が頻繁に用いられるため、これらの検索を高速に実行する必要がある。このような複数の索引語を含む文書の検索要求、例えば「索引語Ａと索引語Ｂを同時に含む文書」という検索質問に対しては、もし索引語Ａが少数の文書にしか出現しないのであれば、索引語Ａが出現する文書に索引語Ｂが現れるかどうかをチェックするだけで、検索処理を実行できるようになる。すなわち、索引語Ａの転置リストから、索引語Ａが含まれる文書の文書識別番号を抽出し、それらの文書識別番号が索引語Ｂの転置リストに存在するかどうかをチェックすればよい。索引語Ｂの転置リストが文書識別番号の順に配列され、かつ、転置リストの途中からポスティングを読むことができれば、このチェックを２分探索によって高速化できる。
【００４１】
本実施例における、転置リストを対象とする２分探索の方法を説明する。本実施例によって圧縮されたポスティングでは、出現頻度が２のｗ乗から１を減じた値以下のとき「最上位ビットが１ならばポスティングの途中、０ならばポスティングの終端」という条件が成立する。出現頻度が２のｗ乗以上のときには、出現頻度を表すバイト列1603が存在するために最上位ビットが０のバイトがポスティングの終点にはならないが、最上位ビットが０であるバイトは１つのポスティングを構成するバイト列にただ一つだけである。これらのことを利用してポスティング内の情報を読み取り、２分探索を行う。
【００４２】
図２０は、２分探索にあたって、所望の索引語に対する転置リストの途中の読みたい位置の周辺で、ポスティングの先頭を探索する処理の概略図である。図２１は、ポスティングの先頭検出処理の流れを示したフローチャートである。これらの図を用いて、ポスティングの先頭検出処理を説明する。
(1) 最初に、転置リスト中の、２分探索で読みたい途中位置に移動する（S2101）。２分探索の最初における移動であれば、このステップで転置リストの中央位置に移動する。２回目以降の移動であれば、このステップS1701では未探索範囲の中央の位置に移動する。
(2) 次に、その位置またはその位置の上流側のなるべく近いバイトで、最上位ビットが０のバイトを探す。そのためには、まず、ステップS2101で移動したバイトの最上位ビットが０かどうかを判定する（S2102）。ステップS2102の判定で、最上位ビットが０であれば、次の処理S2104に移る。最上位ビットが０でない場合には、リストの先頭方向に遡って１バイトずつ読み込み、最上位ビットが０であるバイトを探す（S2102，S2103）。
(3) 最上位ビットが０であるバイトが見つかると、そのバイトを含むポスティングの終端バイトを探す。ポスティングの終端バイトを見つけるにあたっては、ステップS2102で見つけた最上位ビットが０であるバイト中の出現回数フィールド301を読み取る。ステップS2104の判定で、そこに書き込まれているのが０以外であれば、そのバイトがポスティングの終端である。出現回数フィールドの全てのビットに０が書き込まれている場合は、その後に出現回数を表すバイト列1603が続いている。その場合、最上位ビット1601に隣接するビット1602が０であるバイトが見つかるまで１バイト下流に移動することを繰り返す（S2105，S2106）。最上位ビット1601の次のビット1602が０であるバイトが見つかれば、そのバイトがポスティングを表現するバイト列の終端である。ポスティングの終端バイトが分かれば、その次の１バイトは新しいポスティングの先頭の１バイトであるため、１バイト下流に移動してから(S2107)、ポスティングの読み取りを開始する（S2108）。
【００４３】
このようにして、本実施例の方法によって圧縮されたポスティングを含む転置リストは、先頭から読むことなく途中から読めるようになり、２分探索が可能になる。その結果、転置インデックスを先頭から順に読まなくても、特定の文書に対応するポスティングに素早くアクセスできるようになる。ある索引語の転置リストの長さをＬとするとき、特定の文書に対応するポスティングに到達するために、先頭から順に読み場合には平均L/2個のポスティングを読む必要があるが、上記の２分探索を行なえば読む必要のあるポスティングの数はlog(L)のオーダーに減少し、検索処理の高速化が図れる。
【００４４】
図２２に示した装置のユーザ端末606から複数の検索語を論理式で結合したブーリアン検索式あるいは複数の索引語が連続するフレーズが検索式として入力されたとき、２分探索は次のようにして行われる。いま、例えば検索式「（索引語Ａ）and（索引語Ｂ）」がユーザ端末606から入力されたとする。すると、検索手段Ｓ705は、ANDで結合された索引語Ａと索引語Ｂに対応する転置リストのうち、ポスティングの数が少ないもの（仮に、索引語Ａとする）を選択し、索引語Aの転置リストから、索引語Ａが含まれる文書識別番号d1，d2，d3，…を抽出する。次に、検索手段Ｓ705は、索引語Ｂの転置リスト中に先に取得した文書識別番号d1，d2，d3，…のそれぞれが存在するかどうかを２分探索によって探索する。その際、図２０及び図２１にて説明したポスティングの先頭位置検出処理を実行してポスティングを読み取りながら、探索中の文書識別番号が索引語Bの転置リスト中に含まれているか否かを判断する。具体的には、文書識別番号d1については、最初、図21に示した方法により索引語Ｂの転置リストの中央位置のポスティングの文書識別番号d’を読み取る。d’がd1より大きいとき、もし、索引語Bの転置リストに文書識別番号d1が含まれているとすれば、それは今読み取ったポスティングより前にあるはずなので、中央より前で同様に２分探索を行う。逆にd’がd1より小さければ、中央より後の配列で同様に２分探索を行う。この操作を反復することにより、文書識別番号d1が索引語Ｂの転置リストに存在するかどうか探索する。文書識別番号d2，d3が索引語Ｂの転置リストに存在するかどうかも、同様に２分探索で探索することができる。索引語Aの転置リストに含まれる文書識別番号(d1，d2，d3 等)のうち、索引語Ｂの転置リストに含まれる文書識別番号の文書は検索式「（索引語Ａ）and（索引語Ｂ）」を満たす文書であるので、検索手段Ｓ705は、それらの文書の識別番号またはそれらの文書そのものをユーザ端末606に出力して検索が完了する。
【００４５】
当業者には、実施例１と同様に、本実施例のポスティング圧縮方法にも様々なバリエーションがあることが明らかであろう。文書識別番号の最上位ビットを先頭のバイトに格納し最下位ビットを最終バイトに格納するのに代えて、バイトの並び順を変更し、逆順としてもよい。最上位ビットにより文書識別番号を表現する可変長バイト列の終端か否かを表現するのに代えて、最下位ビットを用いてもよい。この場合、図１７に示すように、出現回数を表す追加のバイト列1703は、最下位ビット1702には常に１を書き込み、それに隣接する次のビット1701によって追加のバイト列の終端かどうかを示せばよい。整数のvariable byte表現において、最下位から７ビット以外が出力される場合には、前記整数を右に７ビットシフトして得られる整数は常に1以上である。このように１以上の値を扱うとわかっている場合には、出力する前に１を減じ、復号する際に１を加えて、前記整数を表現するビット数の削減を試みても良い(F. Scholer, H.E. Williams, J. Zobel, Compression of Inverted Indexes for Fast Query Evaluation, Proc. 25th Ann. Int’l ACM SIGIR Conf. Research and Development in Information Retrieval, pp.222-229, 2002.)。同様の技術が、出現回数を６ビットずつ出力する処理S1801でも使用できる。さらに、文書識別番号を昇順にソートし差分を取ることにより、圧縮率の向上を図っても良い（I.H.Witten, A. Moffat, and T.C.Bell, Managing Gigabytes: Compressing and Indexing Documents and Images, second ed. San Francisco: Morgan Kaufmann, 1999）。上記のバリエーションを、組み合わせて使用してもよい。  なお、転置リストは、ひとつながりのメモリ領域ではなく、不連続な複数の領域に格納されることがある。前述の通り、ポスティング中の文書識別番号は１つ前のポスティングの文書識別番号との差分を記録することで圧縮率を向上できるが、前記不連続な領域の個々の連続領域内で２分探索を可能とするためには、文書識別番号を差分をとらずにそのまま記録するか、または、ブロックの先頭の文書識別番号のみ差分を取らずに直接記録し、先頭以外の文書識別番号についてはブロックの先頭の文書識別番号との差分を書く、といった修正が必要である。
【００４６】
２分探索において、ある程度範囲を絞り込んだら、線形探索（ポスティングを順番に読んで特定の文書に対応するポスティングを探す方法）に切り替えることが好ましい。本実施例の２分探索はポスティングの先頭位置検出処理が必要なため、探索範囲が小さいとき（例えば、１０バイト程度）は線形探索の方が速くなると考えられるからである。
【産業上の利用可能性】
【００４７】
本発明は、高速な文書全文検索を実現するための技術である。簡便な圧縮方式のため、高速な検索処理を可能とする一方、圧縮率が高い可変長ビット列で圧縮する方式と比べても、データ量の増加は少ない。さらに、転置リスト上の２分探索が可能なため、フレーズ検索やブーリアン検索のような高度な検索を高速化できる。
【図面の簡単な説明】
【００４８】
【図１】検索対象となる文書集合と、それに基づき構築される転置インデックスの概略図。
【図２】Variable byte法により圧縮された整数値の例を示す図。
【図３】本発明の方法により圧縮されたポスティングの例を示す図。
【図４】本発明の方法により圧縮されたポスティングの例を示す図。
【図５】本発明の方法により圧縮されたポスティングの例を示す図。
【図６】本発明を実施する装置の１つの形態を示す概略図。
【図７】本発明を実施する装置の一形態における、データ及び処理の流れを示す図。
【図８】本発明のポスティング圧縮手段の処理の一形態を表すフローチャート。
【図９】整数のvariable byte表現を出力する処理の一形態を表すフローチャート。
【図１０】図４に示す圧縮の形態を変更し、１つのポスティングに対応するバイト列の前後を入替えた形態を示す図。
【図１１】図４に示す圧縮の形態を変更し、バイト列の終端か否かを表現するビットを、最上位ビットから最下位ビットに移した形態を示す図。
【図１２】図４に示す圧縮の形態を変更し、出現回数フィールド及び属性フィールドを、バイト列の最終バイトの下位ビットから上位ビットに移動した形態を示す図。
【図１３】ｘ＋ｗ≧８の場合に、本発明の方法により圧縮されたポスティングの例を示す図。
【図１４】本発明の方法により圧縮された転置インデックスの例を示す図。
【図１５】本発明の方法及び、公知の数値圧縮法により圧縮された転置インデックスの大きさと、前記転置インデックス全体の読み込み処理に要した時間の２次元プロット。
【図１６】本発明の方法により圧縮されたポスティングの例を示す図。
【図１７】本発明の方法により圧縮されたポスティングの例を示す図。
【図１８】転置リストの途中からポスティングを読むことを可能とする、ポスティング圧縮処理の一形態を表すフローチャート。
【図１９】転置リストの途中からポスティングを読むことを可能とする、ポスティング圧縮処理の一形態において、出現回数を表現するバイト列を出力する処理のフローチャート。
【図２０】転置リストの途中でポスティングの先頭を探索する処理の概略図。
【図２１】ポスティングの先頭位置検出処理の流れを示したフローチャート。
【図２２】本発明を実施する装置の１つの形態を示す概略図。
【図２３】転置リストの説明図。
【符号の説明】
【００４９】
101: 検索対象文書の集合
102: 転置インデックス
103: 索引語
104: 検索対象文書
105: 文書の識別番号
106: 出現回数
107: ポスティング
108: 転置リスト
201: 当該バイトが、１つの整数値を表すバイト列の最終バイトか否かを表すビット
202: 整数123456のvariable byte表現
203: 圧縮したい整数を表現するビット領域
301: 出現回数フィールド
401: 属性フィールド
402: 本発明の方法により圧縮されたポスティングを表現するバイト列
501: Variable byte法で表現された出現回数を表すバイト列
601: 中央演算装置(CPU)
602: 主記憶装置
603: 補助記憶装置
604: リムーバブルメディア
605: ネットワーク
606: ユーザ端末
607: 圧縮された転置インデックス
1401: １つの索引語に関するポスティングリストの終端を表すデータ
1601: 文書識別番号の終端でないことを表現するためのビット
1602: 出現回数を表現するバイト列の終端を表現するためのビット
1603: 出現回数を表すバイト列
1701: 出現回数を表現するバイト列の終端を表現するためのビット
1702: 文書識別番号の終端でないことを表現するためのビット
1703: 出現回数を表すバイト列
【図１】
2008140357.tif 000004
【図２】
2008140357.tif 000005
【図３】
2008140357.tif 000006
【図４】
2008140357.tif 000007
【図５】
2008140357.tif 000008
【図６】
2008140357.tif 000009
【図７】
2008140357.tif 000010
【図８】
2008140357.tif 000011
【図９】
2008140357.tif 000012
【図１０】
2008140357.tif 000013
【図１１】
2008140357.tif 000014
【図１２】
2008140357.tif 000015
【図１３】
2008140357.tif 000016
【図１４】
2008140357.tif 000017
【図１５】
2008140357.tif 000018
【図１６】
2008140357.tif 000019
【図１７】
2008140357.tif 000020
【図１８】
2008140357.tif 000021
【図１９】
2008140357.tif 000022
【図２０】
2008140357.tif 000023
【図２１】
2008140357.tif 000024
【図２２】
2008140357.tif 000025
【図２３】
2008140357.tif 000026