JPH05108719A - 情報検索装置 - Google Patents

情報検索装置

Info

Publication number
JPH05108719A
JPH05108719A JP3272550A JP27255091A JPH05108719A JP H05108719 A JPH05108719 A JP H05108719A JP 3272550 A JP3272550 A JP 3272550A JP 27255091 A JP27255091 A JP 27255091A JP H05108719 A JPH05108719 A JP H05108719A
Authority
JP
Japan
Prior art keywords
hash
data
key
data table
value
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.)
Pending
Application number
JP3272550A
Other languages
English (en)
Inventor
Akihiro Saito
晃宏 齋藤
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.)
Toshiba TEC Corp
Original Assignee
Tokyo Electric 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 Tokyo Electric Co Ltd filed Critical Tokyo Electric Co Ltd
Priority to JP3272550A priority Critical patent/JPH05108719A/ja
Publication of JPH05108719A publication Critical patent/JPH05108719A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】データ検索時間の短縮を図り検索処理効率の向
上を図る。 【構成】データテーブルd1 〜d5 がハッシュ中間値、
キー、データ及び大小へのポインタ格納部11a〜11
eで形成され、検索すべきキーのハッシュ値により同一
ハッシュ値のデータテーブルを検索するが、その検索に
おいてハッシュ値の計算の途中で算出されたハッシュ中
間値とデータテーブルのハッシュ中間値の大小を比較
し、検索すべきキーのハッシュ中間値がデータテーブル
のハッシュ中間値に比べて大きいか、小さいかあるいは
等しいかによって2分木方式でデータテーブルの連鎖を
辿り検索すべきキーに該当するデータテーブルを検索す
る。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、ハッシュテーブルを使
用してデータの検索を行う情報検索装置に関する。
【0002】
【従来の技術】データ検索する場合に文字列等、通常キ
ーと呼ばれる検索情報を使用し、このキーと一致するキ
ーを格納したデータテーブルを検索してデータの検索を
行うものがある。このようなデータ検索においてデータ
テーブルを単純に記憶装置上に連続的に並べて格納して
おき、データ検索時には記憶装置上のデータテーブルに
格納されているキーとの一致を順次見て検索したのでは
検索に膨大な時間がかかるという問題がある。
【0003】そこで従来、データの検索を迅速に行う方
式としてハッシュ方式が知られている。この方式は検索
情報(キー)にハッシュ関数を加えてハッシュ値を求
め、このハッシュ値によって一意に定まる記憶領域に該
当するデータを格納するようになっている。しかしハッ
シュ方式では異なるキー、例えば「Classic 」と「Core
l 」のハッシュ値が等しくなる、いわゆるハッシュ値の
衝突が発生することがある。
【0004】このようなことから従来においては、ハッ
シュ値から直接決定する記憶アドレスを先頭のデータ又
はデータのポインタへのアドレスとして同一のハッシュ
値に属する他のデータを先頭のデータ又は先頭のポイン
タから順次データ又はポインタの連鎖を作って格納する
方式が採用されている。同一ハッシュ値に属するデータ
群から目的のデータを検索するには、そのデータ又はポ
インタ中にある検索情報(キ−)と目的の検索情報(キ
ー)が一致するものをキーの照合操作により行うように
なっている。
【0005】すなわち従来は図7に示すように、記憶装
置1に同一ハッシュ値のデータテーブルd1 ,d2 ,d
3 及びデータテーブルd4,d5 をそれぞれポインタで
連鎖させて格納している。各データテーブルd1 〜d5
はキー格納部1a、データ格納部1b、ポインタ格納部
1cからなり、ポインタ格納部1cには連鎖する次のデ
ータテーブルのアドレスが保持され、連鎖する次のデー
タテーブルが無い場合には最終データテーブルを示す、
例えば「0」が書込まれるようになっている。
【0006】そして検索情報レジスタ2に格納されてい
るキーをハッシュ関数部3に入力してハッシュ値を求
め、そのハッシュ値によりハッシュテーブル4から1つ
のエントリーを得る。ハッシュテーブル4の各エントリ
ーには該当するハッシュ値に属する先頭データのアドレ
スが書込まれている。
【0007】今、ハッシュテーブル4によりデータテー
ブルd1 のアドレスが指定されたとすると、データテー
ブルd1 のキー格納部1aを読出して検索情報レジスタ
2のキーと比較する。そしてもし一致していればそのデ
ータテーブルd1 のデータ格納部1bに格納されている
データが目的のデータとなる。また一致していなければ
データテーブルd1 のポインタ格納部1cを読出し、そ
れをアドレスとして次に連鎖しているデータテーブルd
2 のキー格納部1aを読出して検索情報レジスタ2のキ
ーと比較する。そしてもし一致していればそのデータテ
ーブルd2 データ格納部1bに格納されているデータが
目的のデータとなる。また一致していなければデータテ
ーブルd2のポインタ格納部1cを読出し、それをアド
レスとして次に連鎖しているデータテーブルd3 のキー
格納部1aを読出して検索情報レジスタ2のキーと比較
する。以上のようにして記憶装置1から目的のデータを
検索するようになっている。
【0008】また他の例としては例えば特開平1−11
3804号公報に見られるように、データ登録時、参照
するインデックステーブルの内容が空きの場合、登録可
能となり、使用中の場合インデックステーブルの空きレ
コードを検出するまで再ハッシング関数を繰り返し実行
する。またデータ検索時、インデックステーブルの内容
が使用中の場合は、インデックステーブルの内容が示す
データテーブル内のキーコードを比較し、キーコードが
一致する場合はデータ検出、不一致の場合は衝突と判定
する。そして衝突時は検出するまで登録時と同一のハッ
シング関数を使用して再ハッシングを繰り返すという処
理を行っている。
【0009】
【発明が解決しようとする課題】しかしながら図7に示
すものや公報に示すものでは、同一ハッシュ値に属する
データテーブルから目的のデータを検索する場合に、各
データテーブル毎にデータテーブル中にあるキーの比較
が行われるが、この比較処理に時間がかかり、このため
データ検索に時間がかかるという問題があった。
【0010】また公報のものでは、さらにデータ検索の
際、キーの比較が一致しなかった場合目的のデータが得
られるまで再ハッシングを繰り返さなければならず、こ
の処理においても時間がかかるという問題があった。そ
こで本発明は、データ検索時間の短縮を図ることができ
て検索処理効率を向上できる情報検索装置を提供しよう
とするものである。
【0011】
【課題を解決するための手段】本発明は、キー情報から
ハッシュ関数によりハッシュ値を求め、そのハッシュ値
によりハッシュテーブルを参照して、キー情報から求め
られるハッシュ値が等しい複数のデータテーブルをポイ
ンタで連結したものから該当するキー情報を格納したデ
ータテーブルを検索する情報検索装置において、複数の
データテーブルは、ハッシュ値計算の途中で算出される
ハッシュ中間値、キー、データ及び2つのポインタの格
納部からなり、ハッシュ値が等しく自己のハッシュ中間
値よりもハッシュ中間値が小さいデータテーブルを一方
のポインタで連結し、ハッシュ値が等しく自己のハッシ
ュ中間値よりもハッシュ中間値が大きいデータテーブル
を他方のポインタで連結した2分木構造で連鎖を構成
し、ハッシュ値及びキーの長さにより、ハッシュ値が等
しい複数のデータテーブルをハッシュ中間値の大小の2
分木連鎖を辿ってハッシュ中間値及びキーの長さの等し
い該当するデータテーブルを検索し、さらに検索すべき
キー情報と検索されたデータテーブルのキー情報の一致
により情報検索を行う情報検索手段を設けたものであ
る。
【0012】
【作用】このような構成の本発明においては、検索すべ
きキー情報からハッシュ関数によりハッシュ値及びハッ
シュ中間値を求める。そして同一ハッシュ値で連鎖して
いる複数のデータテーブルに対して、求めたハッシュ中
間値とテータテーブルのハッシュ中間値との大小により
2分木連鎖を辿ってハッシュ中間値及びキーの長さの等
しい該当するデータテーブルを検索する。さらに検索す
べきキー情報と検索されたデータテーブルのキー情報の
一致により情報検索を行う。
【0013】
【実施例】以下、本発明の実施例を図面を参照して説明
する。
【0014】図1において11は記憶装置で、この記憶
装置11には複数のデータテーブルd1 ,d2 ,d3 ,
d4 ,d5 が格納されている。前記各データテーブルd
1 ,d2 ,d3 ,d4 ,d5 の内データテーブルd2 ,
d3 ,d4 ,d5 は同一ハッシュ値でポインタにより連
結されている。
【0015】前記各データテーブルd1 〜d5 はハッシ
ュ中間値格納部11a、キー格納部11b、データ格納
部11c及び検索すべき情報のハッシュ中間値がハッシ
ュ中間値格納部11aに格納されているハッシュ中間値
よりも小さいときに連鎖する次のデータテーブルを指定
するアドレスが格納された小へのポインタ格納部11d
及び検索すべき情報のハッシュ中間値がハッシュ中間値
格納部11aに格納されているハッシュ中間値よりも大
きいときに連鎖する次のデータテーブルを指定するアド
レスが格納された大へのポインタ格納部11eで構成さ
れている。なお、前記各ポインタ格納部11d,11e
には連鎖する次のデータテーブルが無い場合には最終デ
ータテーブルを示す、例えば「NULL」が書込まれるよう
になっている。
【0016】そして検索情報レジスタ12に格納されて
いるキーをハッシュ関数部13に入力してハッシュ値を
求めるようになっている。このときハッシュ値の計算途
中で算出されるハッシュ中間値も求めるようになってい
る。
【0017】前記ハッシュ関数部13で求められたハッ
シュ値によりハッシュテーブル14から1つのエントリ
ーを得、このエントリーの内容をアドレスレジスタ15
に格納するようになっている。
【0018】前記ハッシュテーブル14の各エントリー
には該当するハッシュ値に属するデータテーブルグルー
プの最初のデータテーブルを指定するアドレスが書込ま
れている。
【0019】このような構成の実施例において、新たな
データの登録を行うときには図2に示す処理を行うよう
になっている。すなわちまずハッシュ値の算出処理を行
う。ここではハッシュ値とこのハッシュ値の計算途中で
算出されたハッシュ中間値を求める。続いて記憶装置1
1内にデータテーブルを作成する。最後にデータテーブ
ルの登録処理を行う。
【0020】前記データテーブルの登録処理は具体的に
は図3に示すように、まずハッシュテーブル14のエン
トリーを参照する。そしてエントリーが「NULL」であれ
ばそのハッシュテーブル14のエントリーに新規作成さ
れたデータテーブルへのポインタを格納して登録を終了
する。またエントリーが「NULL」で無ければそのエント
リーの内容を前記アドレスレジスタ15にセットする。
【0021】エントリーの内容が前記アドレスレジスタ
15にセットされると、続いて新規作成されたデータテ
ーブルのハッシュ中間値と前記アドレスレジスタ15で
指定されるデータテーブルのハッシュ中間値を比較す
る。そして新規作成されたデータテーブルのハッシュ中
間値の方が大きければ前記アドレスレジスタ15で指定
されるデータテーブルの大へのポインタ格納部11eを
調べる。また新規作成されたデータテーブルのハッシュ
中間値が小さいか等しければ前記アドレスレジスタ15
で指定されるデータテーブルの小へのポインタ格納部1
1dを調べる。
【0022】そしてポインタ格納部11e又は11dの
内容が「NULL」が否かを調べる。内容が「NULL」の場合
にはそのポインタ格納部11e又は11dに新規作成さ
れたデータテーブルのポインタを格納して登録を終了す
る。
【0023】また内容が「NULL」でなければそのポイン
タ格納部11e又は11dの内容を前記アドレスレジス
タ15にセットし、そのアドレスレジスタ15で指定さ
れるデータテーブルのハッシュ中間値と新規作成された
データテーブルのハッシュ中間値を比較する処理に戻
す。そして再度同様の処理を繰返す。以上の処理を繰返
し行い、最終的にポインタ格納部11e又は11dの内
容が「NULL」のデータテーブルが見つかるとそのポイン
タ格納部11e又は11dに新規作成されたデータテー
ブルのポインタを格納して登録を終了する。
【0024】従って例えばキーが「melon」でデー
タが「juice」の情報を登録する場合に、登録前の
記憶装置11の状態が図4であったとすると、まずハッ
シュ値算出処理によりハッシュ値とこのハッシュ値の計
算途中で算出されたハッシュ中間値を求める。続いて記
憶装置11内に求めたハッシュ中間値、キー「melo
n」、データ「juice」のデータテーブルd10を作
成する。このときデータテーブルの各ポインタ格納部1
1d,11eには「NULL」を書き込む。
【0025】この状態で算出されたハッシュ値によりハ
ッシュテーブル14のエントリーを参照する。このとき
エントリーが「NULL」であればこの位置に作成したデー
タテーブルの先頭アドレスをエントリーとして格納して
登録を終了する。
【0026】またエントリーが「NULL」でなければその
エントリーの内容を前記アドレスレジスタ15に格納す
る。そして新規作成されたデータテーブルd10のハッシ
ュ中間値と前記アドレスレジスタ15が指定するデータ
テーブルd11のハッシュ中間値を比較する。例えば新規
作成されたデータテーブルd10のハッシュ中間値が「5
2」であったとするとデータテーブルd11のハッシュ中
間値が「452」で、新規作成されたデータテーブルd
10のハッシュ中間値の方が小さいのでデータテーブルd
11の小へのポインタ格納部11dの内容を前記アドレス
レジスタ15にセットする。そして新規作成されたデー
タテーブルd10のハッシュ中間値と前記アドレスレジス
タ15が指定するデータテーブルd12のハッシュ中間値
「136」を比較する。今度も新規作成されたデータテ
ーブルd10のハッシュ中間値の方が小さいのでデータテ
ーブルd12の小へのポインタ格納部11dの内容を調べ
る。このポインタ格納部11dは「NULL」となっている
ので、そのポインタ格納部11dに新規作成されたデー
タテーブルd10へのポインタを格納する。以上により新
規作成されたデータテーブルd10の登録後の連鎖の内容
は図5に示すようになる。
【0027】またデータ検索するときには図7に示す処
理が行われるようになっている。すなわち登録時と同
様、ハッシュ関数部13により検索すべきキーのハッシ
ュ値の算出処理を行う。そしてこのハッシュ値の計算途
中で算出されたハッシュ中間値を求める。
【0028】そして求められたハッシュ値によりハッシ
ュテーブル14のエントリーを参照する。続いてこのエ
ントリーが「NULL」か否かを判定する。そして「NULL」
であればデータ未登録と判断して検索処理を終了する。
【0029】またエントリーがデータテーブルへのポイ
ンタであれば、このエントリー内容をアドレスレジスタ
15にセットする。そして検索情報レジスタ12のキー
と同一のキーを格納しているデータテーブルを検索す
る。このときの検索は与えられた検索情報レジスタ12
のキーのハッシュ中間値とアドレスレジスタ15が指定
するデータテーブルのハッシュ中間値を比較する。そし
てハッシュ中間値が一致すると、続いてキーの比較を行
い、これも一致するとそのデータテーブルからデータを
読出して検索を終了する。
【0030】またハッシュ中間値が一致しなかったり、
これが一致してもキーが一致しなかったときには、検索
すべきキーのハッシュ中間値とアドレスレジスタ15が
指定するデータテーブルのハッシュ中間値を比較する。
そして検索すべきキーのハッシュ中間値の方が大きけれ
ばアドレスレジスタ15が指定するデータテーブルの大
へのポインタ格納部11eを調べる。また検索すべきキ
ーのハッシュ中間値の方が小さいか等しければアドレス
レジスタ15が指定するデータテーブルの小へのポイン
タ格納部11dを調べる。そしてもし「NULL」であれば
データ未登録と判断して検索処理を終了する。
【0031】また次に連鎖するデータテーブルのポイン
タであればそのポインタの内容を前記アドレスレジスタ
15にセットする。そして再度検索すべきキーのハッシ
ュ中間値とアドレスレジスタ15が指定するデータテー
ブルのハッシュ中間値を比較して一致を判定する。
【0032】こうしてデータテーブルのポインタ格納部
11d,11eのポインタによる連鎖を辿ってハッシュ
中間値及びキーが一致するデータテーブルを検索し、そ
のデータテーブルからデータを読み出すことになる。
【0033】このように検索情報レジスタ12にキーを
入力して記憶装置11内の該当するデータテーブルを検
索して対応するデータを読み出すのに、キーのハッシュ
値を算出する途中で得られたハッシュ中間値とデータテ
ーブルのハッシュ中間値と比較し、その大小によって小
へのポインタ格納部11dのポインタによる連鎖を辿る
か大へのポインタ格納部11eのポインタによる連鎖を
辿るか判定し、これにより2分木方式でデータテーブル
の検索を行っているので、該当するデータテーブルを検
索するまでに比較対象とされるデータテーブルの数が少
なくなり、データ検索時間の短縮を図ることができる。
従って検索処理効率を向上できることになる。
【0034】またデータ検索時のみでなくデータ登録時
においても2分木方式で連鎖している最終データテーブ
ルを検索して新規登録データのデータテーブルを連鎖し
ているので、データ登録時間も短縮できる。
【0035】
【発明の効果】以上詳述したように本発明によれば、デ
ータ検索時間の短縮を図ることができて検索処理効率を
向上できる情報検索装置を提供できるものである。
【図面の簡単な説明】
【図1】本発明の実施例を示すブロック図。
【図2】同実施例においてデータを新規登録する時の処
理を示す流れ図。
【図3】図2におけるデータ新規登録時のデータテーブ
ル登録処理を示す流れ図。
【図4】同実施例におけるデータ新規登録時の動作を説
明するための図。
【図5】同実施例におけるデータ新規登録時の動作を説
明するための図。
【図6】同実施例におけるデータ検索処理を示す流れ
図。
【図7】従来例を示すブロック図。
【符号の説明】
11…記憶装置、13…ハッシュ関数部、14…ハッシ
ュテーブル、d1 〜d5 …データテーブル、11a…ハ
ッシュ中間値格納部、11b…キー格納部、11c…デ
ータ格納部、11d…小へのポインタ格納部、11e…
大へのポインタ格納部。

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 キー情報からハッシュ関数によりハッシ
    ュ値を求め、そのハッシュ値によりハッシュテーブルを
    参照して、キー情報から求められるハッシュ値が等しい
    複数のデータテーブルをポインタで連結したものから該
    当するキー情報を格納したデータテーブルを検索する情
    報検索装置において、 前記複数のデータテーブルは、ハッシュ値計算の途中で
    算出されるハッシュ中間値、キー、データ及び2つのポ
    インタの格納部からなり、ハッシュ値が等しく自己のハ
    ッシュ中間値よりもハッシュ中間値が小さいデータテー
    ブルを一方のポインタで連結し、ハッシュ値が等しく自
    己のハッシュ中間値よりもハッシュ中間値が大きいデー
    タテーブルを他方のポインタで連結した2分木構造で連
    鎖を構成し、 ハッシュ値及びキーの長さにより、ハッシュ値が等しい
    複数のデータテーブルをハッシュ中間値の大小の2分木
    連鎖を辿ってハッシュ中間値及びキーの長さの等しい該
    当するデータテーブルを検索し、さらに検索すべきキー
    情報と検索されたデータテーブルのキー情報の一致によ
    り情報検索を行う情報検索手段を設けたことを特徴とす
    る情報検索装置。
JP3272550A 1991-10-21 1991-10-21 情報検索装置 Pending JPH05108719A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3272550A JPH05108719A (ja) 1991-10-21 1991-10-21 情報検索装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3272550A JPH05108719A (ja) 1991-10-21 1991-10-21 情報検索装置

Publications (1)

Publication Number Publication Date
JPH05108719A true JPH05108719A (ja) 1993-04-30

Family

ID=17515469

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3272550A Pending JPH05108719A (ja) 1991-10-21 1991-10-21 情報検索装置

Country Status (1)

Country Link
JP (1) JPH05108719A (ja)

Similar Documents

Publication Publication Date Title
JPH02130673A (ja) データ検索方式
JPH05108719A (ja) 情報検索装置
JPH0546666A (ja) 情報検索装置
JP2880192B2 (ja) 文字列検索方法及び装置
JPH0644309A (ja) データベース管理方式
JP2922025B2 (ja) 名前検索方法
JPH05143648A (ja) 情報登録検索装置
JPS583032A (ja) 木構造アクセス処理方式
JPS633351A (ja) バツフア検索制御方式
JPH05165891A (ja) データベースのデータ登録・検索方式
JPH06103307A (ja) 構造型データベースにおける検索高速化方法
JPH0764801A (ja) 利用者語検索方式
JPH04101272A (ja) データエレメント検索方法
CN117743527A (zh) 一种提取用户搜索词路径的方法、系统及存储介质
JPH01180632A (ja) レコード検索方式
JPH03245233A (ja) 名標の検索方式
JPS63282835A (ja) 情報検索装置
JPH0232468A (ja) 文字列データ検索方式
JPH09330322A (ja) データ検索装置
JPH05233313A (ja) シンボルテーブル処理方式
JPS63148326A (ja) デ−タ結合装置
JPS61127046A (ja) デ−タベ−スからの先取り制御方式
JPS629433A (ja) デ−タベ−スアクセス機構
JPH0667968A (ja) オブジェクト指向におけるデータ管理方式
JPS62187930A (ja) 検索方法及び装置