JP2000090115A - インデクス作成方法および検索方法 - Google Patents

インデクス作成方法および検索方法

Info

Publication number
JP2000090115A
JP2000090115A JP10276553A JP27655398A JP2000090115A JP 2000090115 A JP2000090115 A JP 2000090115A JP 10276553 A JP10276553 A JP 10276553A JP 27655398 A JP27655398 A JP 27655398A JP 2000090115 A JP2000090115 A JP 2000090115A
Authority
JP
Japan
Prior art keywords
word
value
key
index
document
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP10276553A
Other languages
English (en)
Other versions
JP3859044B2 (ja
Inventor
Kazuki Yasumatsu
一樹 安松
Akifumi Sekijima
章文 関島
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fuji Xerox Co Ltd filed Critical Fuji Xerox Co Ltd
Priority to JP27655398A priority Critical patent/JP3859044B2/ja
Publication of JP2000090115A publication Critical patent/JP2000090115A/ja
Application granted granted Critical
Publication of JP3859044B2 publication Critical patent/JP3859044B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 【課題】 例えば文書に対する全文検索のためのインデ
クスを高速に生成し、当該インデクスを用いて高速な検
索を実現する。 【解決手段】 指定された語から決定されるキーを用い
て値を検索するためにキーと値とを対応させたインデク
スを作成するに際して、語の長さが設定された閾値(例
えば8バイト)以下の場合には当該語の文字列を含むキ
ーと値との組を登録する一方、語の長さが前記閾値を越
える場合には当該語の文字列に所定のハッシュ関数を適
用して決まるハッシュ値(例えば7バイト)を当該文字
列に代えて含ませたキーと値との組を登録する。キーは
例えば図に示すキー文字列と文書を特定する文書識別番
号とを結合した構成であり、キー文字列には前記閾値を
越える長さの語を一意に特定するための登録番号や、前
記閾値以下の長さの語から決定されるキーと前記閾値を
越える長さの語から決定されるキーとを区別するフラグ
(例えば先頭から8バイト目の最上位ビット)を付加し
てある。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、例えば文書に対す
る全文検索のためのインデクスを高速に生成し、また、
当該インデクスを用いて高速な検索を実現する方法に関
し、特に、検索等に用いるキーの構成に関する。
【0002】
【従来の技術】大量の文書に対する全文検索の方法とし
て、シグネチャ・ファイルと呼ばれるデータ構造を用い
る方法がある。特開平7-244671号公報に示され
ている方法では、文書における文字の出現をビットで表
すインデクスを構成している。この方法では、格納され
ている文書数に影響されずに、比較的高速な検索が可能
である。しかしながら、いくつかの異なる語に対して1
つのビットを割り当てているため、指定した以外の語が
含まれている文書が検索される可能性があり、正確な検
索が行えないという問題があった。また、生成や検索の
アルゴリズムが複雑であり、既存のデータベース管理シ
ステムの上で実現することが困難であった。
【0003】このような問題に対して、文献「Compress
ion and Fast Indexing for Multi-Gigabyte Text Data
bases」には、一般的なデータベース管理システムが提
供しているハッシュ表やB+木などのインデクス手法を
用いて、高速な全文検索の機能を実現する方法が提案さ
れている。この方法では、インデクスのキーとなる語と
値となる文書に識別番号を割り付け、それらを圧縮して
格納している。これにより、検索に必要となるディスク
の読み出しページ数を減らし、高速に検索が可能とな
る。また、異なる語に異なる識別番号を割り付けられる
ため、正確な検索が可能となる。なお、この文献は、こ
の方法を用いて、約70万件の文書に対する検索が高速
に行えることを示している。
【0004】しかしながら、上記の文献で述べられてい
る方法では、インデクスの新規作成や更新処理の性能が
考慮されていないため、高い性能が得られないという問
題があった。特に、更新時に或る語に対して同じ文書を
重複して登録しないようにするための確認の処理は、文
書識別番号の集まりに対する繰り返し処理により実現し
なければならないため、効率よく実現することができな
い。
【0005】このような問題に対して、本出願人は特願
平10−26691号に処理の効率化を図ることができ
るインデクス作成方法および検索方法を提案している。
この方法では、B+木のキーとして語の識別番号の後ろ
に文書の識別番号をつなげて配置したものを用いて、B
+木を、語の識別番号に或るハッシュ関数を適用して得
られるハッシュ値と文書識別番号に別のハッシュ関数を
適用して得られるハッシュ値などによって分割して二次
元の配列に配置することにより、新規生成時や更新時に
は、文書識別番号のハッシュ値などが同じになるものを
まとめて登録することで、書き込みページ数を少なく
し、処理効率を高めている。
【0006】また、上記の文献で述べられている方法で
は、語の識別番号を必要とする。異なる語に異なる識別
番号を与えるには、何らかの方法で語を管理する必要が
ある。1つの語の管理(追加、検索)に要する時間をT
wとし、1個の文書の中に100個の異なる語が含まれ
ているとすると、例えば語の管理では、検索時には1T
w、登録時には100Twの時間を要する。語の数が増
加するに伴い、Twは増加し、その結果、インデクスの
新規作成や更新処理の性能は大きく低下することとな
る。
【0007】具体例として、インターネットのWWWペ
ージに対する全文検索を行う場合などは、対象となる文
書の数が数百万件となり、その文書中に出現する異なる
語の数は数千万件となる。インターネットの場合には、
固有名詞の豊富さや、スペル・ミスや、多言語での記述
などの特性により、異なる語の数は文書数に比例して増
加する傾向がある。数千万件の異なる語をB+木で管理
する場合、1つの語の追加や検索に要する時間Twとし
ては、0.1秒から1秒の時間が必要となる。これは、
B+木に対する1個の語の追加や検索処理が木の高さ+
1だけの回数のハードディスクに対するアクセスを必要
とすることや、B+木が巨大になるとディスクのメモリ
中へのキャッシュの効果が得られず、ハードディスクに
対するほとんどすべてのアクセスが実際にハードディス
クを読み込む処理を必要とすることに起因する。
【0008】例えば、1千万件の異なる語をB+木で管
理する場合に、各ノードの分岐の数が500であるとす
るとB+木の高さはlog500(10,000,00
0)−1=1.59となり、1個の語と文書の組を追
加、検索するために平均で約2.6回のディスク・アク
セスが必要となる。ハードディスクを1回アクセスする
ために数十ミリ秒から数百ミリ秒かかるため、1個の語
と文書の組の追加や検索には0.1秒から1秒の時間が
必要となる。よって、1個の文書の中に100個の異な
る語が含まれているとすると、1個の文書を登録するた
めに100Tw、すなわち、10秒から100秒の時間
を必要とすることになる。
【0009】
【発明が解決しようとする課題】ところで、上記従来例
では語の識別番号の後ろに文書の識別番号をつなげて配
置したものをB+木のキーとして用いて検索等を行う構
成を示したが、このように語に識別番号を与える代わり
に、例えば語の文字列を用いてキーを作成することも考
えられる。このように語の文字列を用いてキーを作成す
れば、語と識別番号との対応関係を管理等する必要がな
くなるため、例えば異なる語の数が多くなっても、語の
管理に要する負担を少なくすることができると考えられ
る。
【0010】しかしながら、B+木のキーの長さは一般
に固定長であるため、例えば文書中で用いられる種々な
長さの語のすべてに対応するためには、これらすべての
語を含めることが可能なようにキーの長さを十分に長く
取る必要がある。ところが、キーの長さが大きくなると
データベースのサイズが大きくなってしまうため、ハー
ドディスクを読み込む回数が多くなると同時にメモリ中
のキャッシュのヒット率が低下し、全体的な性能が低下
するといった不具合が生じてしまう。また、例えばキー
の長さを可変長にしたとしても、この場合には、処理が
複雑になると同時にディスクのフラグメントが生じてし
まうため、アクセス効率等が悪くなって、全体的な性能
が低下するといった不具合が生じてしまう。
【0011】本発明は、このような従来の事情に鑑みな
されたもので、語の文字列からキーを決定する仕方を工
夫して、例えば大量の異なる語を含む大量の文書に対す
る全文検索のためのインデクスを高速に作成する方法を
提供することを目的とする。また、本発明は、このよう
に作成されたインデクスを用いて、高速な検索を実現す
る方法を提供することを目的とする。また、本発明は、
上記のような方法を実行するための装置や、また、プロ
グラムを記憶した記憶媒体を提供することを目的とす
る。
【0012】
【課題を解決するための手段】上記目的を達成するた
め、本発明に係るインデクス作成方法では、指定された
語から決定されるキーを用いて値を検索するためにキー
と値とを対応させたインデクスを作成するに際して、語
の長さが設定された閾値以下の場合には当該語の文字列
を含むキーと値との組を登録する一方、語の長さが前記
閾値を越える場合には当該語の文字列に所定のハッシュ
関数を適用して決まるハッシュ値を当該文字列に代えて
含ませたキーと値との組を登録する。このように、本発
明では、前記閾値より長い語については当該文字列のハ
ッシュ値を用いてキーを構成するため、例えばキーの長
さを短い固定長に制限することができ、これにより、デ
ータベースサイズの増加を防ぎ、処理効率を高めること
ができる。
【0013】また、本発明では、前記閾値を越える長さ
の語と当該語を一意に特定するための番号とを対応させ
て登録テーブルに登録し、当該語から決定されるキーに
前記登録番号を付加することで、前記閾値を越える長さ
の語の間でハッシュ値が重なってしまった場合でも、各
語を区別できる構成とした。また、本発明では、前記閾
値以下の長さの語から決定されるキーと前記閾値を越え
る長さの語から決定されるキーに各々を区別するフラグ
を付加することで、これらのキーを区別できる構成とし
た。
【0014】また、本発明に係るインデクス作成方法で
は、上記のように語の長さに閾値を設定してインデクス
を作成するに際して、キーと値との組を登録するインデ
クスを複数のサブインデクスにより構成し、登録する値
に所定の関数を適用して決まる値と語に所定の関数を適
用して決まる値によって参照される二次元配列位置にサ
ブインデクスを格納する。ここで、本発明では、上記し
たキーと対応させる値として、例えば当該キーを決定す
る語を含んでいる1つの文書を用いる。
【0015】上記したサブインデクスを構成する一例と
して、本発明では、文書に一意に識別する文書識別番号
を与え、文書に適用する関数として文書識別番号を二次
元配列の一の方向の位置を示す値にマップするハッシュ
関数と、語に適用する関数として語を二次元配列の他の
方向の位置を示す値にマップするハッシュ関数とを用意
し、文書における語の出現をその文書識別番号およびそ
の語の各々にハッシュ関数を適用して得られた値を用い
て対応するサブインデクスに登録する。
【0016】また、本発明では、このようなサブインデ
クスの構成を実施するに際して、複数の文書における語
の出現を一括して登録する場合に、それらの文書の文書
識別番号にハッシュ関数を適用して決まる値が同じにな
るものを1つのグループにまとめて、グループごとに語
の出現を登録する。このように、本発明では、例えばイ
ンデクスの新規生成時や更新時に、文書識別番号のハッ
シュ値が同じになるものをまとめて登録することができ
るため、書き込みページ数を少なくし、処理効率を高め
ることができる。
【0017】また、本発明では、上記のようにして1つ
のグループにまとめられた文書におけるすべての語の出
現を登録する場合に、各語の出現を語にハッシュ関数を
適用して決まる値が同じになるものを一つのグループに
まとめて、グループごとに語の出現を登録することで、
処理効率を更に高めることもできる。
【0018】また、上記したサブインデクスを構成する
他の例として、本発明では、文書中の語の出現に適用す
る関数としてその語の文書における出現回数を二次元配
列の一の方向の位置を示す値にマップするハッシュ関数
と、語に適用する関数として語を二次元配列の他の方向
の位置を示す値にマップするハッシュ関数を用意し、或
る文書における或る語の出現をその語の出現回数および
その語の各々にハッシュ関数を適用して得られた値を用
いて対応するサブインデクスに登録する。
【0019】この構成においても、上記と同様に、複数
の文書における語の出現を一括して登録する場合に、各
語の出現回数にハッシュ関数を適用して決まる値が同じ
になるものを1つのグループにまとめて、グループごと
に語の出現を登録することで、処理効率を高めることが
できる。また、上記と同様に、1つのグループにまとめ
られた文書におけるすべての語の出現を登録する場合
に、各語の出現を語にハッシュ関数を適用して決まる値
が同じになるものを一つのグループにまとめて、グルー
プごとに語の出現を登録することで、処理効率を更に高
めることができる。
【0020】また、上記したサブインデクスを構成する
他の例として、本発明では、文書中の語の出現に適用す
る関数としてその語の文書における出現頻度を二次元配
列の一の方向の位置を示す値にマップするハッシュ関数
と、語に適用する関数として語を二次元配列の他の方向
の位置を示す値にマップするハッシュ関数を用意し、或
る文書における或る語の出現をその語の出現頻度および
その語の各々にハッシュ関数を適用して得られた値を用
いて対応するサブインデクスに登録する。
【0021】この構成においても、上記と同様に、複数
の文書における語の出現を一括して登録する場合に、各
語の出現頻度にハッシュ関数を適用して決まる値が同じ
になるものを1つのグループにまとめて、グループごと
に語の出現を登録することで、処理効率を高めることが
できる。また、上記と同様に、1つのグループにまとめ
られた文書におけるすべての語の出現を登録する場合
に、各語の出現を語にハッシュ関数を適用して決まる値
が同じになるものを一つのグループにまとめて、グルー
プごとに語の出現を登録することで、処理効率を更に高
めることができる。また、本発明では、以上の登録に際
して、例えば主記憶装置に用意した少なくとも1つのサ
ブインデクスが格納できるページキャッシュを用いるこ
とで、処理の高速化を図った。
【0022】また、本発明では、以上に示したサブイン
デクスとしてB+木構造を用いるとともに、キーに当該
キーと対応する文書の一意な識別情報を付加した。本発
明では、このような文書識別情報をキーに付加すること
で、例えば異なる文書中の同じ語から決定されるキーを
文書毎に区別することを可能にし、これにより、例えば
異なる文書中の同じ語から決定されるキーが重なってし
まってB+木構造中で衝突してしまう(例えば両者の区
別ができずに一方が他方に上書きされてしまう)ことを
防ぐことができる。なお、文書の一意な識別情報として
は、例えば上記した文書識別番号や語の出現回数や語の
出現頻度といった情報を用いることができる。
【0023】また、本発明に係るインデクス検索方法で
は、文書名と当該文書に含まれる語から決定されるキー
とを対応させたインデクスをB+木構造により構成し
て、語から決定されるキーを用いて対応する文書名を得
る検索を行うに際して、文書名に一意に識別する文書識
別情報を与え、語の長さが設定された閾値以下の場合に
は当該語の文字列に検索範囲を指定する文書識別情報を
結合した値をキーとして用いる一方、語の長さが前記閾
値を越える場合には当該語の文字列に所定のハッシュ関
数を適用して決まるハッシュ値に前記文書識別情報を結
合した値をキーとして用いる。
【0024】このように、本発明では、例えば語の文字
列や文字列のハッシュ値の後ろに検索範囲を指定する文
書識別情報を結合した値をキーとして用いるため、或る
文書における或る語の出現をB+木インデクスに対する
1回の検索で見つけることを実現することができる。な
お、文書識別情報としては、上記と同様に、例えば文書
識別番号や語の出現回数や語の出現頻度といった情報を
用いることができる。
【0025】また、本発明では、上記の検索方法におい
て、前記閾値を越える長さの語から決定されるキーに当
該語を一意に特定するための番号を付加するとともに、
当該番号と当該語とを対応させて登録しておき、上記検
索に際して、前記閾値を越える長さの語から決定される
キーに検索範囲を指定する登録番号を付加した値を用い
て検索を行った後に、更に当該キーに付加された登録番
号と対応して登録されている語を特定し、特定した語と
検索対象の語との対応に基づいて、検索された文書名集
合から該当する文書名を特定する。
【0026】このように、本発明では、前記閾値を越え
る長さの語から決定されるキーを用いて検索を行うに際
して、例えば同一の文書中の異なる語の間でキーを構成
するハッシュ値が重なってしまった場合であっても、ま
ず、登録番号以外のハッシュ値や文書識別情報から文書
名集合を検索した後に、更に、検索した文書名集合から
登録番号を用いて該当する文書名を特定するようにした
ため、検索対象と一致する語を一意に特定することがで
きる。
【0027】また、本発明は、以上に示した方法を実行
する装置や、以上に示した方法を実行するためのプログ
ラムを記憶した記憶媒体として構成することもできる。
例えば、本発明に係るインデクス作成装置では、指定さ
れた語から決定されるキーを用いて値を検索するために
キーと値とを対応させたインデクスを作成するに際し
て、記憶手段がキーと値とを対応させたインデクスを記
憶し、登録手段が語の長さが設定された閾値以下である
ことに応じて当該語の文字列を含むキーと値との組を記
憶手段に登録する一方、語の長さが前記閾値を越えるこ
とに応じて当該語の文字列に所定のハッシュ関数を適用
して決まるハッシュ値を含むキーと値との組を記憶手段
に登録する。
【0028】また、本発明に係る記憶媒体では、指定さ
れた語から決定されるキーを用いて値を検索するために
キーと値とを対応させたインデクスの作成処理を、コン
ピュータに実行させるプログラムを当該コンピュータに
読み取り可能に記憶した構成において、前記プログラム
は、語の長さが設定された閾値以下であることに応じて
当該語の文字列を含むキーと値との組をインデクスメモ
リに登録する一方、語の長さが前記閾値を越えることに
応じて当該語の文字列に所定のハッシュ関数を適用して
決まるハッシュ値を含むキーと値との組をインデクスメ
モリに登録する処理を、前記コンピュータに実行させ
る。
【0029】
【発明の実施の形態】本発明に係る第1実施例を図面を
参照して説明する。図1には、本発明に係る方法を実行
する装置の構成例を示してある。なお、この装置はコン
ピュータハードウエア資源を用いて、本発明を実施する
ためのプログラムを実行することにより構成されてい
る。
【0030】文書蓄積部1はハードディスク装置等の外
部メモリにより構成されており、この文書蓄積部1に
は、登録や検索の対象となる文書がその文書名や文書識
別番号と対応付けられて格納されて管理される。なお、
文書識別番号は文書を一意に識別する情報であり、例え
ば各文書毎に異なる番号が与えられている。文書ソート
部2は、インデクスの登録の対象となる文書の文書名
を、あらかじめ定義されたハッシュ関数を文書識別番号
に適用して得られる値が同じになるものがまとまるよう
にソートする。
【0031】形態素解析部3は、指定された文書の全文
を解析し、語の切り出しを行う。キー文字列作成部4
は、与えられた語に基づいてキー文字列を作成する。ロ
ングワード管理部5は、あらかじめ定められた閾値より
も長い語の一覧を保持するロングワードテーブルを管理
する。本例では、ロングワードテーブルは、文書毎に用
意される。また、文書毎のロングワードテーブルが保持
する語には、一意な登録番号が付与される。なお、上記
したキー文字列や登録番号の具体例については後述す
る。
【0032】インデクス登録部6は、与えられた文書名
の文書識別番号および語を得て、後述するインデクス選
択部8の機能により選択されたB+木構造に、キー文字
列と文書識別番号とを結合した値をキーとして、文書内
の語の出現を登録する。インデクス蓄積部7はハードデ
ィスク装置等の外部メモリにより構成されており、この
インデクス蓄積部7は、あらかじめ定められた大きさの
二次元の配列(本例ではD×W、但し、D、Wは1以上
の整数)上にB+木を記憶する。また、インデクス蓄積
部7は文書名と文書識別番号との対応関係も記憶してい
る。
【0033】インデクス選択部8は、与えられた文書識
別番号と語の文字列(例えば文字コード)に、それぞれ
あらかじめ定められたハッシュ関数を適用し、その結果
得られた値を用いてインデクス蓄積部7に格納されてい
るインデクス表から語の出現を登録するB+木の識別番
号を選択する。ここで、上記した文書ソート部2および
インデクス選択部8で用いられる文書識別番号に適用さ
れるハッシュ関数Hdや、語の文字列に適用されるハッ
シュ関数Hwは、文書識別番号をid、語の文字列をs
としたとき、それぞれ、0≦Hd(id)<D、0≦Hw
(s)<W、となる整数を値とするように定義される。
【0034】問い合わせ入力部9は、利用者からの検索
要求を受け付け、例えば語をANDまたはORで結合し
た検索式を生成する。検索実行部10は、与えられた検
索式に含まれている語の文字列から、インデクス選択部
8の機能により検索の対象となるB+木を得て検索処理
を行う。結果出力部11は、検索実行部10により得ら
れた検索結果をディスプレイ表示等して利用者に提示す
る。
【0035】図2には、インデクス蓄積部7に格納され
ているB+木のキーの構成例を示してある。同図に示さ
れるように、このB+木のキーは、キー文字列の後ろに
文書識別番号を結合した構造となっており、本例では、
キー文字列として9バイト、文書識別番号として4バイ
トの領域を割り当てている。
【0036】図3には、キー文字列の構成例を示してあ
る。同図に示されるように、キー文字列は、対象とする
語の長さがあらかじめ定められた閾値より短いか或いは
長いかによって、2通りの構造を成す。本例では、語の
長さの閾値を8バイトに設定してあり、対象とする語の
長さが8バイト以下(すなわち、閾値以下)の場合に
は、語の文字列をそのままキー文字列に含めて用いる一
方、対象とする語の長さが8バイトを越える(すなわ
ち、閾値を越える)場合には、語の文字列sにハッシュ
関数Hlを適用して得られるハッシュ値Hl(s)をキ
ー文字列に含めて用いる。
【0037】ここで、上記したハッシュ関数Hlは、語
の文字列をs、閾値をnとしたとき、0≦Hl(s)<
8(n-1)、となる整数を値とするように定義される。す
なわち、ハッシュ関数Hlの返す値(すなわち、ハッシ
ュ値)のデータサイズは、閾値より1バイト少ない値
(本例の場合は7バイト)となる。
【0038】また、例えば語の長さが8バイトを越える
場合に、異なる語の間でハッシュ値が重複する可能性が
あるので、本例では、ハッシュ値とロングワードテーブ
ルにおけるその語の登録番号(本例では、後述するよう
に15ビットの登録番号を含んだ2バイトから成る登録
番号部として図3に示してある)を結合したものをキー
文字列とする。これにより、同じ文書中に現れる長い語
の間でハッシュ値が重複しても、キー文字列が重複する
ことが無くなる。また、実際のB+木中では、上記図2
に示したようにキー文字列に文書識別番号を結合したも
のをキーとするので、異なる文書に含まれる語の間でキ
ー文字列が重複しても、B+木のキーが重複することは
無い。
【0039】また、長さが8バイト以下の語の文字列と
長さが8バイトを越える語のハッシュ値との間で値が重
なる可能性がある。そこで、本例では、語の長さが8バ
イト以下の場合には、語の文字列の8バイト目の値をキ
ー文字列中の9バイト目にずらし、キー文字列中の8バ
イト目の値を0にする。例えば、対象とする語が’in
ternet’である場合、キー文字列は、696E7
465726E650074(16進)となる。
【0040】一方、長さが8バイトを越える語について
は、登録番号の最大値を32767(すなわち、215
1)とし、登録番号を格納する領域(登録番号部)の最
上位ビットを常に1にする。これにより、語の長さが8
バイト以下の場合にはキー文字列の先頭から8バイト目
のデータの最上位ビットが必ず0になる一方、語の長さ
が8バイトを越える場合にはキー文字列の先頭から8バ
イト目のデータの最上位ビットが必ず1になるので、長
さが閾値以下の語の文字列と長さが閾値を越える語のハ
ッシュ値との間で値が重なっても、キー文字列が重複す
ることが無くなる。
【0041】図4には、キー文字列を作成する処理の手
順の一例を示してある。すなわち、例えば与えられた語
の長さが8バイト以下の場合には(ステップS1)、ま
ず、キー文字列iwに語の文字列sの先頭から7バイト
の値をコピーし(ステップS2)、次に、キー文字列i
wの8バイト目に0をセットし(ステップS3)、次い
で、キー文字列iwの9バイト目に前記文字列sの8バ
イト目の値をコピーすることにより(ステップS4)、
キー文字列iwを作成する。
【0042】一方、与えられた語の長さが8バイトを越
える場合には(ステップS1)、まず、キー文字列iw
に語の文字列sのハッシュ値Hl(s)をコピーし(ス
テップS5)、次に、与えられた登録番号と10000
00000000000(2進)との論理和を取った値
をキー文字列iwの8バイト目以降にコピーすることに
より(ステップS6)、キー文字列iwを作成する。な
お、図4において、<<はビットを左にシフトする演算
を示している。
【0043】このように、本例のインデクス作成方法で
は、語の長さが設定された閾値以下の場合には当該語の
文字列を含むキーと値(本例では、当該キーを決定する
語を含んでいる1つの文書の文書識別情報)との組を登
録することとする一方、語の長さが前記閾値を越える場
合には当該語の文字列に所定のハッシュ関数を適用して
決まるハッシュ値を当該文字列に代えて含ませたキーと
値との組を登録するようにしたため、例えばキーの長さ
を短い固定長に制限することができ、これにより、デー
タベースサイズの増加を防ぎ、処理効率を高めることが
できる。
【0044】なお、語の長さの閾値としては、どのよう
な値が設定されてもよいが、例えば長さが閾値以下の語
の出現率や長さが閾値を越える語の出現率を考慮して、
インデクスのサイズを小さくすることや、データの登録
処理や検索処理にかかる時間を短くすることができるよ
うな値に設定されるのが好ましい。
【0045】また、上記のように本例では、設定された
閾値を越える長さの語と当該語を一意に特定するための
番号とを対応させて登録テーブル(本例では、ロングワ
ードテーブル)に登録し、登録した番号を当該語から決
定されるキーに付加することにより、前記閾値を越える
長さの語の間でハッシュ値が重なってしまった場合で
も、各語を区別できる構成としている。また、本例で
は、設定された閾値以下の長さの語から決定されるキー
と当該閾値を越える長さの語から決定されるキーに各々
を区別するフラグを付加することで、これらのキーを区
別できる構成としてある。なお、本例では、好ましい態
様として、キー文字列中のハッシュ値と登録番号との境
目となる先頭から8バイト目のデータの最上位ビットを
フラグとして用いたが、フラグの構成としては特に限定
はない。
【0046】図5には、B+木から語の出現を検索する
処理の手順の一例を示してある。すなわち、或る語を含
む文書を得る検索においては、まず、当該語からキー文
字列iwを作成し(ステップS11)、その語の出現を
含む全てのB+木について、当該キー文字列iwに検索
範囲を指定する文書識別番号の最小値(ここでは0(3
2ビット))を結合した値をstart点として設定す
る一方(ステップS12)、検索範囲を指定する文書識
別番号の最大値(ここではFFFFFFFF(16
進))を結合した値をend点として設定する(ステッ
プS14)。
【0047】ここで、与えられた語の長さが閾値を越え
る場合には、語のハッシュ値に登録番号を付加した値が
キー文字列iwとして用いられるため、この登録番号に
ついても、上記した文書識別番号の場合と同様に検索範
囲を設定する。すなわち、本例では、検索範囲の最小値
に対応するキー文字列iwを作成する際に、語の検索範
囲を指定する登録番号の最小値(ここでは0)を与える
一方(ステップS11)、検索範囲の最大値に対応する
キー文字列iwを作成する際に、語の検索範囲を指定す
る登録番号の最大値(ここでは7FFF(16進))を
与え(ステップS13)、これにより、キー文字列iw
に与えた登録番号の最小値から最大値までの範囲で検索
が行われるようにしている。
【0048】そして、上記したstart点からend
点までの間で検索を行うことにより(ステップS1
5)、例えば与えられた語が閾値(本例では8バイト)
以下である場合には(ステップS16)、その語に対す
るすべての出現を、文書識別番号の昇順に得ることがで
きる(ステップS17)。一方、与えられた語の長さが
閾値を越えている場合には(ステップS16)、キー文
字列iwに与えた登録番号の検索範囲において該当する
語の出現がすべて検索されるため、検索された語の出現
の中から本当に検索対象に該当するものを特定すること
を行う。
【0049】具体的には、本例では、得られた検索結果
から語の登録番号と文書識別番号を取り出して、当該文
書識別番号と対応するロングワードテーブルを参照する
ことで(ステップS18)、当該登録番号と対応した語
を特定し、例えば特定した語と検索対象の語とを比較す
ることにより、検索対象の語が検索された文書に本当に
含まれているかどうかを検証する(ステップS19)。
この結果、検索対象の語が文書に含まれていればその語
の出現を返し(ステップS17)、含まれていなければ
例えばNULLを返す(ステップS20)。なお、上記
と同様に、図5において、<<はビットを左にシフトす
る演算を示している。
【0050】一例として、いくつかの文書に関する語の
出現を登録した時点で、B+木の一部の状態が図6に示
されているようになっていたとする。この状態におい
て、キー文字列が74657374000000000
0(16進)であるような語を含む文書を検索する場合
には、キーの値が74657374000000000
000000000(16進)と7465737400
00000000FFFFFFFF(16進)の範囲に
あるものを検索することにより、目的とする語の出現
(O4、O5)を得られる。
【0051】また、キー文字列が7465737400
00000000(16進)である語が文書識別番号が
7である文書に含まれているか否かを確認する場合に
は、74657374000000000000000
007(16進)をキーとして、キーの値が一致するも
のを検索することで、語の出現(O5)を得ることがで
きる。なお、本例では、語の出現には、例えば当該語が
どの文書中のどのページやどの行にあるかといった情報
や、当該語の出現回数や出現頻度等といった情報が含ま
れている。
【0052】このように、本例のインデクス検索方法で
は、例えば文書名と当該文書に含まれる語から決定され
るキーとを対応させたインデクスをB+木構造により構
成して、語から決定されるキーを用いて対応する文書名
を得る検索を行うに際して、文書名に一意に識別する文
書識別情報(本例では文書識別番号)を与え、語の長さ
が設定された閾値以下の場合には当該語の文字列に検索
範囲を指定する文書識別情報を結合した値をキーとして
用いる一方、語の長さが前記閾値を越える場合には当該
語の文字列に所定のハッシュ関数を適用して決まるハッ
シュ値に前記文書識別情報を結合した値をキーとして用
いることにより、或る文書における或る語の出現をB+
木インデクスに対する1回の検索で見つけることを実現
している。
【0053】また、本例では、前記閾値を越える長さの
語から決定されるキーには当該語を一意に特定するため
の番号が付加されているとともに、当該番号と当該語と
が対応してロングワードテーブルに登録されており、上
記検索では、前記閾値を越える長さの語から決定される
キーに検索範囲を指定する登録番号を付加した値を用い
て検索を行った後に、更に当該キーに付加された登録番
号と対応して登録されている語を特定し、特定した語と
検索対象の語との対応に基づいて、検索された文書名集
合から該当する文書名を特定しており、これにより、上
記したように検索対象と一致する語を一意に特定するこ
とができる。
【0054】図7には、インデクス蓄積部7におけるB
+木の格納構造を示してある。同図に示されるように、
本例では、D×Wの二次元配列によりD×W個のサブイ
ンデクスが設けられており、各サブインデクスとしてB
+木構造が用いられている。例えば、文書識別番号がi
dで且つ語の文字列がsである或る語の出現は、B+木
(Hw(s),Hd(id))のサブインデクスに対応
したB+木に登録されている。よって、文字列がsであ
る語の出現を検索する場合には、後述する図8に示され
ている手順で選択されたB+木について上記図5に示し
た処理を実行する。
【0055】ここで、図8には、指定された或る一つの
語が出現する文書を検索する処理の手順の一例を示して
ある。すなわち、この処理では、まず、与えられた語の
文字列sにハッシュ関数Hwを適用して得られる値Hw
(s)をwに代入する(ステップS31)。そして、変
数iおよび変数rを0に初期化し(ステップS32)、
iを1つずつ増加させながら(ステップS35)、iが
Dとなるまで(ステップS36)、B+木(w,i)に
対して語の検索を繰り返し行い(ステップS33)、そ
の結果を配列R[r,r+r’]に追加している(ステ
ップS34)。なお、r’には検索結果数が代入され、
iを1つ増加させる度毎にrがr+r’に置き換えられ
る。
【0056】これにより、上記図7に示した二次元配列
の或る一つの行のサブインデクスに記憶されているB+
木群に対する検索を行うことができる。このように検索
を行う範囲を一つの行に限っても、目的とする語の出現
はそれ以外のB+木には含まれていないので、これによ
り見つかった文書のみに目的とする語が含まれているこ
とになる。このように、本例の検索処理では、検索の対
象となるB+木が限定され、且つ各B+木を順序良く利
用するため、検索対象のサブインデクスを保持するキャ
ッシュのヒット率を高めることができ、効率よく検索が
実行できる。なお、本例の検索では、検索実行部10が
使用する主記憶装置のキャッシュに、少なくとも1つの
B+木サブインデクスが保持されるようになっている。
【0057】図9には、複数の文書の語の出現を一括し
て登録する処理の手順の一例を示してある。すなわち、
この処理では、まず、各文書を文書識別番号idにハッ
シュ関数Hdを適用して得られる値Hd(id)により
D個のグループに分け、グループ分けされた文書をグル
ープごとに各配列G(0)〜G(D−1)に格納する
(ステップS41)。続いて、変数dを0に初期化し
(ステップS42)、変数dを1つずつ増加させながら
(ステップS49)、変数dがDとなるまで(ステップ
S50)、各配列G(d)について以下の登録処理を行
う。
【0058】すなわち、この登録処理では、上記した各
配列G(d)について、その配列G(d)に格納されて
いる全ての文書から語の出現(文書と語の組)を取り出
して(ステップS43)、取り出した語の出現を各語の
文字列sにハッシュ関数Hwを適用して得られる値Hw
(s)によりW個のグループに分け、グループ分けされ
た語の出現をグループごとに各配列O(0)〜O(W−
1)に格納する(ステップS44)。そして、変数wを
0に初期化し(ステップS45)、変数wを1つずつ増
加させながら(ステップS47)、変数wがWとなるま
で(ステップS48)、配列G(d)に格納されている
各グループO(w)について、そのグループO(w)に
属している語の出現を登録する処理を実施する(ステッ
プS46)。なお、語の出現を登録する処理の手順につ
いては、後述する図10に示す。
【0059】上記の処理により、語の出現は上記図7に
示された配列の左上から下方向に並んだB+木サブイン
デクスに順に格納され、一番下のB+木サブインデクス
まで格納が終わると、一つ右の列について上から下方向
に並んだB+木サブインデクスに順に格納されるため、
複数のB+木サブインデクスを交互に参照することがな
くなり、ページ・キャッシュのヒット率を高めることが
できる。さらに、主記憶上に一つのB+木サブインデク
スの内容を保持できるだけの領域があれば、一つのB+
木サブインデクスに対する格納処理をすべて主記憶中で
実行できるため、極めて高速に格納処理を実行できる。
【0060】図10には、或る文書における或る語の出
現を登録する処理の手順の一例を示してある。すなわ
ち、この処理では、例えば文書中の語の文字列sおよび
当該文書の文書識別番号idを得て、それぞれにハッシ
ュ関数Hw、Hdを適用して得られる値Hw(s)、H
d(id)をそれぞれの変数w、dに保持する(ステッ
プS61、S62)。
【0061】続いて、対象とする語に基づいてキー文字
列iwを作成する。ここで、語の長さが設定された閾値
(本例では8バイト)以下の場合には(ステップS6
3)、当該語の文字列を含んだキー文字列iwを作成す
る一方(ステップS64)、語の長さが前記閾値を越え
る場合には(ステップS63)、当該語を文書に対応す
るロングワードテーブルに登録して登録番号を取得し
(ステップS67)、取得した登録番号と語に基づいて
キー文字列iwを作成する(ステップS68)。
【0062】次いで、作成したキー文字列iwの値を左
に32ビットシフトした値に、文書識別番号idの値を
足したものを変数kに代入する(ステップS65)。そ
して、上記図7に示された配列のサブインデクスB+木
(w,d)に、前記kをキーとして語の出現を登録する
(ステップS66)。なお、上記と同様に、図10にお
いて、<<はビットを左にシフトする演算を示してい
る。
【0063】このように、本例では、指定された語から
決定されるキーを用いて値を検索するためにキーと値と
を対応させたインデクスを作成するに際して、キーと値
との組を登録するインデクスを複数のサブインデクスに
より構成し、登録する値に所定の関数を適用して決まる
値と語(本例では語の文字列)に所定の関数を適用して
決まる値によって参照される二次元配列位置にサブイン
デクスを格納する構成を用い、また、サブインデクスと
してB+木構造を用いることで、処理の効率化を図って
いる。
【0064】なお、具体的には、本例では上記したよう
に、文書に適用する関数として文書識別番号を二次元配
列の一の方向の位置を示す値にマップするハッシュ関数
と、語に適用する関数として語を二次元配列の他の方向
の位置を示す値にマップするハッシュ関数とを用意し、
文書における語の出現をその文書識別番号およびその語
の各々にハッシュ関数を適用して得られた値を用いて対
応するサブインデクスに登録するようにした。
【0065】そして、本例では、このようなサブインデ
クスの構成を用いて、複数の文書における語の出現を一
括して登録する場合に、それらの文書の文書識別番号に
ハッシュ関数を適用して決まる値が同じになるものを1
つのグループにまとめて、グループごとに語の出現を登
録することにより、インデクスの新規生成時や更新時に
おける書き込みページ数を少なくし、処理効率を高め
た。更に、本例では、上記のようにして1つのグループ
にまとめられた文書におけるすべての語の出現を登録す
る場合に、各語の出現を語にハッシュ関数を適用して決
まる値が同じになるものを一つのグループにまとめて、
グループごとに語の出現を登録することにより、処理効
率を更に高めた。
【0066】また、本例では、サブインデクスとしてB
+木構造を用いるに際して、キーに当該キーと対応する
文書の一意な識別情報(本例では文書識別情報)を付加
することにより、例えば異なる文書中の同じ語から決定
されるキー文字列が重なってしまった場合であっても、
これらのキー文字列を文書識別情報により区別可能な構
成とすることで、両者がB+木構造中で衝突してしまう
ことを防いだ。また、本例では、上記したように、主記
憶装置に用意した少なくとも1つのサブインデクスが格
納できるページキャッシュを用いているため、処理の高
速化を図ることができる。
【0067】以上のように、本例のインデクス作成方法
やインデクス検索方法では、例えば大量の異なる語を含
む大量の文書に対する全文検索のためのインデクスを作
成する処理や、作成したインデクスを用いて検索を行う
処理を実行するに際して、語の文字列或いは当該文字列
のハッシュ値を用いてキーを作成するようにしたため、
異なる語の数によって受ける影響を小さくすることがで
き、例えば数百万件の文書に対する全文検索のためのイ
ンデクスを高速に生成、更新、検索することができる。
【0068】また、本例の方法では、例えば各語と識別
番号との対応関係を管理するといったことを行わずと
も、設定された閾値を越える長さの語に適用するハッシ
ュ関数や登録番号を記憶等しておけば、語とキーとの対
応が付けられるため、例えば異なる語の数が多くなって
も語の管理に要する負担を少なくすることができ、これ
により、1つの語の管理(追加、検索)に要する時間T
wをゼロに近づけることができる。
【0069】また、本例の方法では、上記したサブイン
デクスの構成やB+木の構造を採用しているため、文書
の格納処理や検索処理に必要となる更新ページ数や読み
出しページ数を削減することができ、登録処理や検索処
理を高速に実行することができる。なお、本例では、サ
ブインデクスとしてB+木を用いることで、例えば木の
ルートからの検索を短いパスで実現することや、新たな
語の出現を容易に追加等することができる。
【0070】図11には、本発明の第2実施例として、
B+木インデクスの縦方向の分割に、語の出現回数に或
る関数を適用した値を用いる場合のキーの構成例を示し
てある。 同図に示されるように、本例のキーは、キー
文字列の後ろに語の出現回数を整数であらわした値を結
合した構造であり、キー文字列として9バイト、出現回
数として4バイトの領域を割り当てている。
【0071】図12には、上記図11に示したキーの構
成を用いて、語の出現をB+木に登録した状態の一例を
示してある。上記図12に示されているように、同じ語
に対する複数の異なる語の出現が、例えば語の出現回数
の多い順にならべられる。これにより、検索処理におい
て、検索の結果を語の出現回数の多い順に取り出すこと
が容易となる。
【0072】なお、本第2実施例における語の出現を検
索する処理手順は、上記図8に示した第1実施例におけ
る語の出現を検索する処理と同じである。また、語の出
現を登録する処理手順は、上記図9に示した処理手順に
おいて文書識別番号を用いて文書をグループ分けしてい
る処理(ステップS41)を語の出現回数を用いて語の
出現をグループ分けする処理に置き換え、また、上記図
10に示した処理手順において文書識別番号の値を用い
てキーとなる値を生成している処理(ステップS62、
S65)を語の出現回数の値を用いてキーとなる値を生
成する処理に置き換えること等で実現できる。
【0073】このように、本発明では、文書中の語の出
現に適用する関数としてその語の文書における出現回数
を二次元配列の一の方向の位置を示す値にマップするハ
ッシュ関数と、語に適用する関数として語を二次元配列
の他の方向の位置を示す値にマップするハッシュ関数を
用意し、或る文書における或る語の出現をその語の出現
回数およびその語の各々にハッシュ関数を適用して得ら
れた値を用いて対応するサブインデクスに登録するとい
った構成を用いることもできる。
【0074】この構成においても、上記第1実施例の場
合と同様に、複数の文書における語の出現を一括して登
録する場合に、各語の出現回数にハッシュ関数を適用し
て決まる値が同じになるものを1つのグループにまとめ
てグループごとに語の出現を登録することや、更に、各
語の出現を語にハッシュ関数を適用して決まる値が同じ
になるものを一つのグループにまとめてグループごとに
語の出現を登録することにより、処理効率を高めること
ができる。
【0075】図13には、本発明の第3実施例として、
B+木の縦方向の分割に語の出現頻度に或る関数を適用
した値を用いる場合のキーの構成例を示してある。同図
に示されるように、本例のキーは、キー文字列の後ろに
語の出現頻度を整数であらわした値を結合した構造であ
り、キー文字列として9バイト、出現頻度として1バイ
トの領域を割り当てている。なお、本例では、或る語の
出現の出現頻度は、その語がその文書に現れた回数をそ
の文書の総語数で割って100を掛けた値であらわす。
【0076】図14には、上記図13に示したキーの構
成を用いて、語の出現をB+木に登録した状態の一例を
示してある。上記図14に示されているように、同じ語
に対する複数の異なる語の出現が、例えば語の出現頻度
の高い順にならべられる。これにより、検索処理におい
て、検索の結果を語の出現頻度の高い順に取り出すこと
が容易となる。
【0077】なお、本第3実施例における語の出現を検
索する処理手順は、上記図8に示した第1実施例におけ
る語の出現を検索する処理と同じである。また、語の出
現を登録する処理手順は、上記図9に示した処理手順に
おいて文書識別番号を用いて文書をグループ分けしてい
る処理(ステップS41)を語の出現頻度を用いて語の
出現をグループ分けする処理に置き換え、また、上記図
10に示した処理手順において文書識別番号の値を用い
てキーとなる値を生成している処理(ステップS62、
S65)を語の出現頻度の値を用いてキーとなる値を生
成する処理に置き換えること等で実現できる。
【0078】このように、本発明では、文書中の語の出
現に適用する関数としてその語の文書における出現頻度
を二次元配列の一の方向の位置を示す値にマップするハ
ッシュ関数と、語に適用する関数として語を二次元配列
の他の方向の位置を示す値にマップするハッシュ関数を
用意し、或る文書における或る語の出現をその語の出現
頻度およびその語の各々にハッシュ関数を適用して得ら
れた値を用いて対応するサブインデクスに登録するとい
った構成を用いることもできる。
【0079】この構成においても、上記第1実施例や第
2実施例の場合と同様に、複数の文書における語の出現
を一括して登録する場合に、各語の出現頻度にハッシュ
関数を適用して決まる値が同じになるものを1つのグル
ープにまとめてグループごとに語の出現を登録すること
や、更に、各語の出現を語にハッシュ関数を適用して決
まる値が同じになるものを一つのグループにまとめてグ
ループごとに語の出現を登録することにより、処理効率
を高めることができる。
【0080】ここで、本発明は、以上に示した方法を実
行する装置として把握することもできる。一例として、
本発明に係るインデクス作成装置では、指定された語か
ら決定されるキーを用いて値を検索するためにキーと値
とを対応させたインデクスを作成するに際して、ハード
ディスク等から成る記憶手段がキーと値とを対応させた
インデクスを記憶し、登録手段が語の長さが設定された
閾値以下であることに応じて当該語の文字列を含むキー
と値との組を記憶手段に登録する一方、語の長さが前記
閾値を越えることに応じて当該語の文字列に所定のハッ
シュ関数を適用して決まるハッシュ値を含むキーと値と
の組を記憶手段に登録することにより、処理の効率化を
図ることができる。
【0081】また、上記したように以上では、上記図1
に示した装置に備えられた各機能手段により行われる処
理は、例えばプロセッサやメモリ等を備えたハードウエ
ア資源においてプロセッサが制御プログラムを実行する
ことにより構成されるが、本発明では、これらの各機能
手段を独立したハードウエア回路として構成してもよ
い。また、本発明は上記の制御プログラムを格納したフ
ロッピーディスクやCD−ROM等のコンピュータによ
り読み取り可能な記憶媒体として把握することもでき、
当該制御プログラムを記憶媒体からコンピュータに入力
してプロセッサに実行させることにより、本発明に係る
処理を遂行させることができる。
【0082】一例として、本発明に係る記憶媒体では、
指定された語から決定されるキーを用いて値を検索する
ためにキーと値とを対応させたインデクスの作成処理
を、コンピュータに実行させるプログラムを当該コンピ
ュータに読み取り可能に記憶した構成において、前記プ
ログラムが、語の長さが設定された閾値以下であること
に応じて当該語の文字列を含むキーと値との組をインデ
クスメモリに登録する一方、語の長さが前記閾値を越え
ることに応じて当該語の文字列に所定のハッシュ関数を
適用して決まるハッシュ値を含むキーと値との組をイン
デクスメモリに登録する処理を前記コンピュータに実行
させることにより、処理の効率化を図ることができる。
【0083】なお、上記したインデクスメモリとして
は、例えば上記プログラムを格納した記憶媒体とは別個
なハードディスク装置等として設けることができるばか
りでなく、例えば当該記憶媒体の中に設けられてもよ
い。また、インデクスメモリを記憶媒体中に設ける場合
には、例えばキーと値とを対応させたインデクスを上記
プログラム中に記憶してもよく、また、このようなイン
デクスを上記プログラムとは別に記憶していてもよい。
【0084】
【発明の効果】以上説明したように、本発明によると、
指定された語から決定されるキーを用いて値を検索する
ためにキーと値とを対応させたインデクスを作成するに
際して、語の長さが設定された閾値以下の場合には当該
語の文字列を含むキーと値との組を登録する一方、語の
長さが前記閾値を越える場合には当該語の文字列に所定
のハッシュ関数を適用して決まるハッシュ値を当該文字
列に代えて含ませたキーと値との組を登録するようにし
たため、例えば異なる語の数が多い場合でも、キーの長
さを短い固定長に制限することができ、これにより、デ
ータベースサイズの増加を防ぎ、処理効率を高めること
ができる。
【0085】また、本発明では、前記閾値を越える長さ
の語を一意に特定するための登録番号を当該語から決定
されるキーに付加することや、前記閾値以下の長さの語
から決定されるキーと前記閾値を越える長さの語から決
定されるキーに各々を区別するフラグを付加することを
行うようにしたため、登録時や検索時において異なる語
から決定されるキーを確実に区別することができる。
【0086】また、本発明では、キーと値との組を登録
するインデクスを複数のサブインデクスにより構成し、
例えば文書を特定する文書識別番号や語の出現回数や語
の出現頻度を二次元配列の一の方向の位置を示す値にマ
ップするハッシュ関数と、語を二次元配列の他の方向の
位置を示す値にマップするハッシュ関数とを用意して、
文書における語の出現をその文書識別番号等およびその
語の各々にハッシュ関数を適用して得られた値を用いて
対応するサブインデクスに登録するようにしたため、例
えば文書識別番号等や語にハッシュ関数を適用して決ま
る値が同じになるものを1つのグループにまとめて処理
することで、複数の文書における語の出現を一括して登
録する処理等の効率を高めることができる。
【0087】また、本発明では、例えば主記憶装置に用
意した少なくとも1つのサブインデクスが格納できるペ
ージキャッシュを用いることで、処理の高速化を実現し
た。また、本発明では、サブインデクスとしてB+木構
造を用いることで、インデクス更新処理や検索処理の高
速化を図るとともに、キーに当該キーと対応する文書の
一意な識別情報を付加することで、或る文書における或
る語の出現をB+木インデクスに対する1回の検索で見
つけること等を実現した。
【図面の簡単な説明】
【図1】本発明の一実施形態に係る装置の構成例を示す
図である。
【図2】本発明の第1実施例に係るキーの構成例を示す
図である。
【図3】キー文字列の構成例を示す図である。
【図4】キー文字列を作成する処理の手順の一例を示す
フローチャートである。
【図5】語の出現を検索する処理の手順の一例を示すフ
ローチャートである。
【図6】B+木の内容の一部を例示する図である。
【図7】B+木のインデクス配列の構成例を示す図であ
る。
【図8】語の出現を検索する処理の手順の一例を示すフ
ローチャートである。
【図9】複数の文書の語の出現を一括して登録する処理
の手順の一例を示すフローチャートである。
【図10】或る一つの語の出現を登録する処理の手順の
一例を示す図である。
【図11】本発明の第2実施例に係るキーの構成例を示
す図である。
【図12】本発明の第2実施例におけるB+木の内容の
一部を例示する図である。
【図13】本発明の第3実施例に係るキーの構成例を示
す図である。
【図14】本発明の第3実施例におけるB+木の内容の
一部を例示する図である。
【符号の説明】
1・・文書蓄積部、 2・・文書ソート部、 3・・形
態素解析部、4・・キー文字列作成部、 5・・ロング
ワード管理部、6・・インデクス登録部、 7・・イン
デクス蓄積部、8・・インデクス選択部、 9・・問い
合わせ入力部、10・・検索実行部、 11・・結果出
力部、

Claims (18)

    【特許請求の範囲】
  1. 【請求項1】 指定された語から決定されるキーを用い
    て値を検索するために、キーと値とを対応させたインデ
    クスを作成する方法において、 語の長さが設定された閾値以下の場合には当該語の文字
    列を含むキーと値との組を登録する一方、 語の長さが前記閾値を越える場合には当該語の文字列に
    所定のハッシュ関数を適用して決まるハッシュ値を当該
    文字列に代えて含ませたキーと値との組を登録すること
    を特徴とするインデクス作成方法。
  2. 【請求項2】 請求項1に記載のインデクス作成方法に
    おいて、 前記閾値を越える長さの語と当該語を一意に特定するた
    めの番号とを対応させて登録テーブルに登録し、 当該語から決定されるキーに前記登録番号を付加するこ
    とを特徴とするインデクス作成方法。
  3. 【請求項3】 請求項1又は請求項2に記載のインデク
    ス作成方法において、 前記閾値以下の長さの語から決定されるキーと前記閾値
    を越える長さの語から決定されるキーに各々を区別する
    フラグを付加することを特徴とするインデクス作成方
    法。
  4. 【請求項4】 請求項1乃至請求項3のいずれか1項に
    記載のインデクス作成方法において、 キーと値との組を登録するインデクスを複数のサブイン
    デクスにより構成し、 登録する値に所定の関数を適用して決まる値と語に所定
    の関数を適用して決まる値によって参照される二次元配
    列位置にサブインデクスを格納することを特徴とするイ
    ンデクス作成方法。
  5. 【請求項5】 請求項4に記載のインデクス作成方法に
    おいて、 キーを決定する語を含んでいる1つの文書を値として用
    いることを特徴とするインデクス作成方法。
  6. 【請求項6】 請求項5に記載のインデクス作成方法に
    おいて、 文書に一意に識別する文書識別番号を与え、 文書に適用する関数として文書識別番号を二次元配列の
    一の方向の位置を示す値にマップするハッシュ関数と、
    語に適用する関数として語を二次元配列の他の方向の位
    置を示す値にマップするハッシュ関数とを用意し、 文書における語の出現をその文書識別番号およびその語
    の各々にハッシュ関数を適用して得られた値を用いて対
    応するサブインデクスに登録することを特徴とするイン
    デクス作成方法。
  7. 【請求項7】 請求項6に記載のインデクス作成方法に
    おいて、 複数の文書における語の出現を一括して登録する場合
    に、それらの文書の文書識別番号にハッシュ関数を適用
    して決まる値が同じになるものを1つのグループにまと
    めて、グループごとに語の出現を登録することを特徴と
    するインデクス作成方法。
  8. 【請求項8】 請求項5に記載のインデクス作成方法に
    おいて、 文書中の語の出現に適用する関数としてその語の文書に
    おける出現回数を二次元配列の一の方向の位置を示す値
    にマップするハッシュ関数と、 語に適用する関数として語を二次元配列の他の方向の位
    置を示す値にマップするハッシュ関数を用意し、 或る文書における或る語の出現をその語の出現回数およ
    びその語の各々にハッシュ関数を適用して得られた値を
    用いて対応するサブインデクスに登録することを特徴と
    するインデクス作成方法。
  9. 【請求項9】 請求項8に記載のインデクス作成方法に
    おいて、 複数の文書における語の出現を一括して登録する場合
    に、各語の出現回数にハッシュ関数を適用して決まる値
    が同じになるものを1つのグループにまとめて、 グループごとに語の出現を登録することを特徴とするイ
    ンデクス作成方法。
  10. 【請求項10】 請求項5に記載のインデクス作成方法
    において、 文書中の語の出現に適用する関数としてその語の文書に
    おける出現頻度を二次元配列の一の方向の位置を示す値
    にマップするハッシュ関数と、 語に適用する関数として語を二次元配列の他の方向の位
    置を示す値にマップするハッシュ関数を用意し、 或る文書における或る語の出現をその語の出現頻度およ
    びその語の各々にハッシュ関数を適用して得られた値を
    用いて対応するサブインデクスに登録することを特徴と
    するインデクス作成方法。
  11. 【請求項11】 請求項10に記載のインデクス作成方
    法において、 複数の文書における語の出現を一括して登録する場合
    に、各語の出現頻度にハッシュ関数を適用して決まる値
    が同じになるものを1つのグループにまとめて、グルー
    プごとに語の出現を登録することを特徴とするインデク
    ス作成方法。
  12. 【請求項12】 請求項7又は請求項9又は請求項11
    に記載のインデクス作成方法において、 1つのグループにまとめられた文書におけるすべての語
    の出現を登録する場合に、各語の出現を語にハッシュ関
    数を適用して決まる値が同じになるものを一つのグルー
    プにまとめて、グループごとに語の出現を登録すること
    を特徴とするインデクス作成方法。
  13. 【請求項13】 請求項12に記載のインデクス作成方
    法において、 主記憶装置に用意した少なくとも1つのサブインデクス
    が格納できるページキャッシュを用いることを特徴とす
    るインデクス作成方法。
  14. 【請求項14】 請求項5乃至請求項13のいずれか1
    項に記載のインデクス作成方法において、 サブインデクスとしてB+木構造を用いるとともに、 キーに当該キーと対応する文書の一意な識別情報を付加
    したことを特徴とするインデクス作成方法。
  15. 【請求項15】 文書名と当該文書に含まれる語から決
    定されるキーとを対応させたインデクスをB+木構造に
    より構成して、語から決定されるキーを用いて対応する
    文書名を得る検索方法において、 文書名に一意に識別する文書識別情報を与え、 語の長さが設定された閾値以下の場合には当該語の文字
    列に検索範囲を指定する文書識別情報を結合した値をキ
    ーとして用いる一方、 語の長さが前記閾値を越える場合には当該語の文字列に
    所定のハッシュ関数を適用して決まるハッシュ値に前記
    文書識別情報を結合した値をキーとして用いることを特
    徴としたインデクス検索方法。
  16. 【請求項16】 請求項15に記載のインデクス検索方
    法において、 前記閾値を越える長さの語から決定されるキーには当該
    語を一意に特定するための番号が付加されているととも
    に、当該番号が当該語と対応して登録されており、 前記閾値を越える長さの語から決定されるキーに検索範
    囲を指定する登録番号を付加した値を用いて検索を行っ
    た後に、更に当該キーに付加された登録番号と対応して
    登録されている語を特定し、特定した語と検索対象の語
    との対応に基づいて、検索された文書名集合から該当す
    る文書名を特定することを特徴とするインデクス検索方
    法。
  17. 【請求項17】 指定された語から決定されるキーを用
    いて値を検索するために、キーと値とを対応させたイン
    デクスを作成する装置において、 キーと値とを対応させたインデクスを記憶する記憶手段
    と、 語の長さが設定された閾値以下であることに応じて当該
    語の文字列を含むキーと値との組を記憶手段に登録する
    一方、語の長さが前記閾値を越えることに応じて当該語
    の文字列に所定のハッシュ関数を適用して決まるハッシ
    ュ値を含むキーと値との組を記憶手段に登録する登録手
    段と、 を備えたことを特徴とするインデクス作成装置。
  18. 【請求項18】 指定された語から決定されるキーを用
    いて値を検索するためにキーと値とを対応させたインデ
    クスの作成処理を、コンピュータに実行させるプログラ
    ムを当該コンピュータに読み取り可能に記憶した記憶媒
    体において、 前記プログラムは、語の長さが設定された閾値以下であ
    ることに応じて当該語の文字列を含むキーと値との組を
    インデクスメモリに登録する一方、語の長さが前記閾値
    を越えることに応じて当該語の文字列に所定のハッシュ
    関数を適用して決まるハッシュ値を含むキーと値との組
    をインデクスメモリに登録する処理を、前記コンピュー
    タに実行させることを特徴とする記憶媒体。
JP27655398A 1998-09-11 1998-09-11 インデクス作成方法および検索方法 Expired - Fee Related JP3859044B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP27655398A JP3859044B2 (ja) 1998-09-11 1998-09-11 インデクス作成方法および検索方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP27655398A JP3859044B2 (ja) 1998-09-11 1998-09-11 インデクス作成方法および検索方法

Publications (2)

Publication Number Publication Date
JP2000090115A true JP2000090115A (ja) 2000-03-31
JP3859044B2 JP3859044B2 (ja) 2006-12-20

Family

ID=17571101

Family Applications (1)

Application Number Title Priority Date Filing Date
JP27655398A Expired - Fee Related JP3859044B2 (ja) 1998-09-11 1998-09-11 インデクス作成方法および検索方法

Country Status (1)

Country Link
JP (1) JP3859044B2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003123071A (ja) * 2001-07-09 2003-04-25 Samsung Electronics Co Ltd 色温度を用いた映像ブラウジング装置及びその方法
JP2007094838A (ja) * 2005-09-29 2007-04-12 Oki Electric Ind Co Ltd 文書処理装置および文書処理方法
WO2013175537A1 (ja) * 2012-05-24 2013-11-28 富士通株式会社 検索プログラム、検索方法、検索装置、記憶プログラム、記憶方法及び記憶装置
US9407286B2 (en) 2012-10-15 2016-08-02 Samsung Electronics Co., Ltd. Data compression apparatus, data compression method, and memory system including the data compression apparatus
CN108989902A (zh) * 2018-07-03 2018-12-11 武汉斗鱼网络科技有限公司 一种弹幕消息的处理方法、装置、终端和存储介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110069544A (zh) * 2017-12-14 2019-07-30 航天信息股份有限公司 查询方法及装置

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003123071A (ja) * 2001-07-09 2003-04-25 Samsung Electronics Co Ltd 色温度を用いた映像ブラウジング装置及びその方法
US7202866B2 (en) 2001-07-09 2007-04-10 Samsung Electronics Co., Ltd. Apparatus and method of browsing image data based on color temperature, and computer readable medium therefor
US7239315B2 (en) 2001-07-09 2007-07-03 Samsung Electronics Co., Ltd. Apparatus and method of browsing image data based on color temperature, and computer readable medium therefor
JP2007094838A (ja) * 2005-09-29 2007-04-12 Oki Electric Ind Co Ltd 文書処理装置および文書処理方法
JP4618083B2 (ja) * 2005-09-29 2011-01-26 沖電気工業株式会社 文書処理装置および文書処理方法
WO2013175537A1 (ja) * 2012-05-24 2013-11-28 富士通株式会社 検索プログラム、検索方法、検索装置、記憶プログラム、記憶方法及び記憶装置
JPWO2013175537A1 (ja) * 2012-05-24 2016-01-12 富士通株式会社 検索プログラム、検索方法、検索装置、記憶プログラム、記憶方法及び記憶装置
US9407286B2 (en) 2012-10-15 2016-08-02 Samsung Electronics Co., Ltd. Data compression apparatus, data compression method, and memory system including the data compression apparatus
CN108989902A (zh) * 2018-07-03 2018-12-11 武汉斗鱼网络科技有限公司 一种弹幕消息的处理方法、装置、终端和存储介质
CN108989902B (zh) * 2018-07-03 2020-10-16 武汉斗鱼网络科技有限公司 一种弹幕消息的处理方法、装置、终端和存储介质

Also Published As

Publication number Publication date
JP3859044B2 (ja) 2006-12-20

Similar Documents

Publication Publication Date Title
JP3849279B2 (ja) インデクス作成方法および検索方法
Zhang et al. Surf: Practical range query filtering with fast succinct tries
JP3771271B2 (ja) コンパクト0完全木における順序付けられたキーの集まりの記憶と検索のための装置及び方法
US6757675B2 (en) Method and apparatus for indexing document content and content comparison with World Wide Web search service
US8224829B2 (en) Database
US7756859B2 (en) Multi-segment string search
US5649181A (en) Method and apparatus for indexing database columns with bit vectors
US4922417A (en) Method and apparatus for data hashing using selection from a table of random numbers in combination with folding and bit manipulation of the selected random numbers
US6546394B1 (en) Database system having logical row identifiers
KR101467589B1 (ko) 데이터 구조를 가지는 하나 이상의 장치 판독가능 매체, 및장치 실행가능 명령어를 구비한 하나 이상의 장치 판독가능 매체
US7080091B2 (en) Inverted index system and method for numeric attributes
US20200004851A1 (en) Trie-based indices for databases
US20070100873A1 (en) Information retrieving system
US8027961B2 (en) System and method for composite record keys ordered in a flat key space for a distributed database
US7222129B2 (en) Database retrieval apparatus, retrieval method, storage medium, and program
JP2001331509A (ja) リレーショナルデータベース処理装置、リレーショナルデータベースの処理方法及びリレーショナルデータベースの処理プログラムを記録したコンピュータ読み取り可能な記録媒体
JPH05189490A (ja) 関数結果をセーブし検索する方法と装置
JP2000357115A (ja) ファイル検索装置及びファイル検索方法
JP3859044B2 (ja) インデクス作成方法および検索方法
JP2007034878A (ja) 情報処理方法、情報処理装置および情報処理プログラム
JP5812007B2 (ja) インデックス作成装置、データ検索装置、インデックス作成方法、データ検索方法、インデックス作成プログラムおよびデータ検索プログラム
JP2007048318A (ja) リレーショナルデータベースの処理方法およびリレーショナルデータベース処理装置
CN114416741A (zh) 基于多级索引的kv数据写入读取方法、装置及存储介质
JPH09305622A (ja) 文書検索機能を有するデータベース管理方法およびシステム
JPH08190571A (ja) 文書検索方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060515

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060613

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060724

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060831

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060913

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100929

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110929

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120929

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120929

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130929

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees