JPH1185771A - 文字列検索方式 - Google Patents

文字列検索方式

Info

Publication number
JPH1185771A
JPH1185771A JP9235916A JP23591697A JPH1185771A JP H1185771 A JPH1185771 A JP H1185771A JP 9235916 A JP9235916 A JP 9235916A JP 23591697 A JP23591697 A JP 23591697A JP H1185771 A JPH1185771 A JP H1185771A
Authority
JP
Japan
Prior art keywords
character string
hash value
bias
grouping
hash
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
JP9235916A
Other languages
English (en)
Inventor
Satoru Kawashima
悟 川島
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP9235916A priority Critical patent/JPH1185771A/ja
Publication of JPH1185771A publication Critical patent/JPH1185771A/ja
Pending legal-status Critical Current

Links

Landscapes

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

Abstract

(57)【要約】 【課題】 従来のハッシュ法を用いた文字列の検索又は
格納方式では、各グループ間で文字列の格納個数に偏り
が生じ、入力文字列によって不安定な処理性能になって
しまう可能性があるという問題があった。 【解決手段】 コンピュータによるハッシュ法を用いた
グルーピングによる文字列の検索又は格納方式に於い
て、複数のハッシュ値算出手段から一つを選択する式選
択手段と、選択されたハッシュ値算出手段により算出し
たハッシュ値に基づいて入力文字列をグルーピングする
振り分け手段と、入力文字列に対するハッシュ値の偏り
を検査する偏り検査手段と、前記偏り検査手段により検
査された偏りが所定値以上である場合に、前記式選択手
段に他のハッシュ値算出式に変更依頼し、既格納文字列
の再グルーピングを行う再分類手段とを備えることによ
り課題を解決する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は文字列を単位とした
レコードを、ハッシュ法を用いてファイルから効率的に
高速に検索又はファイルに格納する文字列の検索・格納
技術に関する。
【0002】
【従来の技術】文字列検索又は格納の高速化方式には幾
つかの方式があり、ターゲットの文字列の傾向が予め把
握可能な場合には、その傾向に適した方式を採用するこ
とにより高速化が可能である。しかし、文字列の傾向が
予め把握出来ない場合に同方式では、意図した高速化が
実現出来ないことも少なくない。
【0003】傾向の予測が出来ない大量の文字列からの
検索性能、例えばソースプログラム内の識別子(データ
名など)を文字列とした検索では、一般にプログラムの
拡大につれ検索対象が多くなり、検索回数も相乗的に増
加する結果、アプリケーション全体の性能に大きく影響
する。
【0004】この文字列レコードの集合の様な、所謂集
合データを操作するアルゴリズムの一つとしてハッシュ
法(HASHING) があるが、このハッシュ法を用いた文字列
検索又は格納の高速化方式がその一例である。これはハ
ッシュ関数H:S →{0,1,・・・,m-1}に於いて例えばS
の要素x を、h(x)の位置( ハッシュアドレス) に格納す
るなどの操作をする方法であるが、以降ここでは各アド
レスi にS の要素を複数個対応させ、このアドレスi
(要素x のキーとも呼ぶ)をグループ( 又は分類枠) と
呼称し、S をファイルと呼称することとする。
【0005】図5は従来に於けるハッシュ法を用いた文
字列の検索又は格納方式を示したものであるが、従来方
式では文字列入力に先立ち、前記のハッシュ値を求める
算出式を固定する必要がある。この決められた算出式に
於いて、検索又は格納する文字列入力に対してハッシュ
値が求められ、その結果操作するグループが決定される
ものである。
【0006】尚、ここでの操作は、入力された文字列が
既にファイルに格納されているか検索・チェックし、格
納されていない(未登録)場合のみ本文字列を新規文字
列として格納(登録)するものとする。従って文字列が
入力されると先ず検索操作があり、その後必要に応じて
格納操作が実行される手順となる。
【0007】そこで次の動作として、先に決定された当
該グループに対し、入力文字列による検索操作が実行さ
れ、検索の結果本文字列が未登録の場合には続いて格納
操作が実行されることになる。
【0008】この時各入力文字列に対するハッシュ値算
出式により算出されたハッシュ値が各グループにほぼ均
等にばらつく様であれば、入力文字列に対するグループ
の検索操作に際し、ほぼ一定な安定した処理性能を得る
ことが可能であるが、図5の様にグループ−1に偏って
いる場合には、ハッシュ値がグループ−1になる文字列
入力があると検索操作に時間を要するなど、入力文字列
によって不安定な処理性能になってしまう。
【0009】
【発明が解決しようとする課題】この様に従来のハッシ
ュ法を用いた文字列の検索又は格納方式では、各グルー
プ間で文字列の格納個数に偏りが生じ、入力文字列によ
って不安定な処理性能になってしまう可能性があるとい
う問題があった。
【0010】本発明はこのような点にかんがみて、ハッ
シュ法を用いた文字列の検索又は格納方式に於いて、検
索対象となる文字列の傾向が予測出来ない場合でも、高
速で安定した処理性能を得る手段を提供することを目的
とする。
【0011】
【課題を解決するための手段】上記の課題は下記の如く
に構成された文字列検索方式によって解決される。図1
は、本発明の原理図である。即ち、コンピュータによる
ハッシュ法を用いたグルーピングによる文字列の検索又
は格納方式に於いて、複数のハッシュ値算出手段から一
つを選択する式選択手段と、選択されたハッシュ値算出
手段により算出したハッシュ値に基づいて入力文字列を
グルーピングする振り分け手段と、入力文字列に対する
ハッシュ値の偏りを検査する偏り検査手段と、前記偏り
検査手段により検査された偏りが所定値以上である場合
に、前記式選択手段に他のハッシュ値算出式に変更依頼
し、既格納文字列の再グルーピングを行う再分類手段と
を備えることにより、検索対象となる文字列のグルーピ
ングの偏りを所定のタイミングで算出し、偏りが所定値
以上の場合には、グルーピング方法を変更して再グルー
ピングを行い、均等なグルーピングを実現するものであ
る。
【0012】
【発明の実施の形態】以下、本発明をコンピュータ上で
実施する実施形態の説明を行うが、ここではハッシュ関
数により求められたハッシュアドレスに対する操作とし
て、入力された文字列が既にファイルに格納されている
か検索・チェックし、格納されていない(未登録)場合
のみ本文字列を新規文字列として格納(登録)すること
を前提に説明するものである。従って文字列が入力され
ると先ず検索操作があり、その後必要に応じて格納操作
が実行される手順となるが、当然のことながら、入力文
字列によりファイルから検索のみ行う場合を含むもので
あり、これ等いずれに於いても、各グループに対し均等
に、この検索操作の処理を高速化することが本発明のポ
イントである。
【0013】図2は本発明に於けるハッシュ法を用いた
文字列の検索又は格納方式の処理手順をフローチャート
化したものである。先ずステップ20では、複数定義さ
れたハッシュ値算出式の中から一つの算出式を選択する
と共に後述の偏り検査時期などの初期値設定を行う。こ
の選択された算出式に対し、ステップ21に於いて検索
又は格納する文字列が入力されると、ステップ22に於
いて入力文字列に対するハッシュ値(入力文字列のキー
又はグループ)が算出され、ステップ23に於いて、こ
のハッシュ値のグループ内に当該入力文字列が存在する
か否か検索される。この場合の検索方法には逐次探索、
或いは文字列のソーティングを前提とした2分探索など
の方法があるが、この探索方法は本発明のポイントでは
ない。
【0014】この時の検索スピードは同グループ内に存
在する既格納(登録)された文字列の個数に比例し、個
数が多い程検索に時間を要することは言うまでもない。
そしてステップ23で当該入力文字列に対する既存文字
列が検索されない場合、即ち当該入力文字列が同グルー
プ内に未登録の場合にはステップ24に於いて、これを
新規文字列として同グループ内に格納・登録する。
【0015】次にステップ25に於いて、各グループ内
に格納・登録された文字列の個数に偏りがないか検査す
るタイミングが到来したかを、初期値として与えられた
検査時期(後述)により判定し、検査タイミングの到来
の場合にはステップ26に於いて、各グループ内に格納
・登録された文字列個数の分散度合いを示す標準偏差α
を求め、偏り判定の初期値xと比較してα>xの場合に
は、偏りがあると判断してステップ27に於いて、複数
のハッシュ値算出式を管理する式選択手段に算出式変更
依頼を行い、ハッシュ値算出式の変更を行う。
【0016】この変更された算出式に従って、ステップ
28に於いて既存のグルーピングされた文字列を再分類
した後、ステップ29に於いて再度ステップ26で行っ
た偏り検査を行い、偏りがあればステップ27に戻り、
偏りが無ければステップ23の既に登録済の場合、又は
ステップ25の検査タイミング未到来の場合、又はステ
ップ26の偏り検査の結果α≦xの場合と共に、ステッ
プ21の検索・格納文字列の入力に戻り、処理が続行さ
れるものである。
【0017】続いて具体的な検索・格納文字列の入力に
より当該文字列が分類枠にグルーピングされる様子を説
明するが、ハッシュ値算出式など説明を容易にするた
め、記号による表現を用いることにし、先ずその意味付
けを図3に於いて説明する。
【0018】は、入力文字列に対するハッシュ値によ
り、検索・格納される分類枠(グループ)の数でGと表
現する。は、ハッシュ関数を表すものでH(変数)と
表現し、ここで変数は文字列であり、実際上はHn(変
数)(nは後述のハッシュ値算出式の番号)により求め
られる。
【0019】は、ハッシュ値算出式の例であり、ここ
では3例を示している。H1=mod(strlen(変数),G)は、変
数の文字長(STRing LENgth)をGで除算した剰余(MODul
o)をハッシュ値とする。
【0020】H2=mod( 変数〔m 〕,G) は、変数のm 文字
目(1文字目を0 とした整数) のコードをGで除算した剰
余をハッシュ値とする。H3=mod( 変数〔strlen( 変数)-
1 〕,G) は、前記、を組み合わせた関数で、変数の
文字長から1を減算した文字のコードをGで除算した剰
余をハッシュ値とする。
【0021】は、分類枠配列を示すもので、分類枠
(グループ)と、各分類枠内の変数要素番号により規定
され、Bunrui〔H(変数) 〕〔グループ内要素番号〕の様
に示し、入力文字列に対し操作を施す配列位置を示すも
のである。尚、初期値はBunrui〔0 〕〔0 〕としてい
る。
【0022】は、ハッシュ値の偏りを検査する時期を
設定するものであり、例えば入力文字列の件数で指定す
るなどでk で表現し、初期設定される。は、偏り検査
時の偏り判定値( 標準偏差) を示す定数でx で表現し、
初期設定される。
【0023】以上が記号化に関する説明であるが、以下
これ等記号を使用して具体的な検索・格納文字列の入力
による当該文字列のグルーピングについて図4を基に説
明するものとする。
【0024】具体例として、G(ハッシュ分類枠数)=
5、ハッシュ値算出式として図3で例示したH1,H3 を使
用するものとし、変数の入力文字列として「Name」,
「Next」, 「Num1」, 「Num2」, 「Num3」の5個の文字
列が新規入力されるものとして説明する。
【0025】図4(1)はハッシュ値算出式 H1=mod(st
rlen( 変数),G)の場合であり、入力文字列「Name」につ
いては、H(Name)=H1(Name)=4であり、従ってBunrui〔4
〕〔0 〕となる。これは入力文字列「Name」に対し
て、分類枠配列〔4 〕の〔0 〕要素番号の位置に対し検
索や格納・登録などの操作を行うことを意味する。
【0026】同様に、入力文字列「Next」については、
H(Next)=H1(Next)=4であり、従ってBunrui〔4 〕〔1 〕
となる。この場合の要素番号〔1 〕は前記入力文字列
「Name」に続く位置のため自動的に次の要素番号がセッ
トされる。
【0027】入力文字列「Num1」については、H(Num1)=
H1(Num1)=4であり、従ってBunrui〔4 〕〔2 〕となる。
入力文字列「Num2」については、H(Num2)=H1(Num2)=4で
あり、従ってBunrui〔4 〕〔3 〕となる。
【0028】最後の入力文字列「Num3」については、H
(Num3)=H1(Num3)=4であり、従ってBunrui〔4 〕〔4 〕
となる。以上の如く、この場合には各入力文字列につい
て分類枠配列は全てBunrui〔4〕であり、ハッシュ値偏
り検査( 偏り判定値x)では標準偏差α=√分散はα>x
となる結果、この場合にはハッシュ値算出式 H1=mod(st
rlen( 変数),G)は適切な算出式ではないものと判断さ
れ、ハッシュ値算出式の変更が行われることになる。
【0029】そこで、図4(2)に示すハッシュ値算出
式 H3=mod( 変数〔strlen( 変数)-1 〕,G) に変更さ
れ、前記の入力文字列について再分類されることにな
る。即ち、入力文字列「Name」については、H(Name)=H3
(Name)=mod(e,5)=0 であり、従ってBunrui〔0 〕〔0 〕
となる。尚、ここでmod(e,5)=0に於けるe は文字種毎に
決められたコード( コンピュータの内部コード) を指す
ものである。
【0030】同様に、入力文字列「Next」については、
H(Next)=H3(Next)=mod(t,5)=1 であり、従ってBunrui
〔1 〕〔0 〕となる。入力文字列「Num1」については、
H(Num1)=H3(Num1)=mod(1,5)=2 であり、従ってBunrui
〔2 〕〔0 〕となる。
【0031】入力文字列「Num2」については、H(Num2)=
H3(Num2)= mod(2,5)=3であり、従ってBunrui〔3 〕〔0
〕となる。最後の入力文字列「Num3」については、H(N
um3)=H3(Num3)= mod(3,5)=4であり、従ってBunrui〔4
〕〔0 〕となる。
【0032】以上の如く、この場合には各入力文字列に
ついて分類枠配列はBunrui〔0 〕、Bunrui〔1 〕、Bunr
ui〔2 〕、Bunrui〔3 〕、Bunrui〔4 〕に振り分けら
れ、ハッシュ値偏り検査( 偏り判定値x)では標準偏差α
=√分散はα≦x となる結果、ハッシュ値算出式H3=mod
( 変数〔strlen( 変数)-1 〕,G) は適切な算出式である
と判断され、その後の入力文字列についての処理が続行
されることになる。
【0033】この様に入力文字列に対し、適切な複数の
ハッシュ値算出式を予め与えて置き、必要なタイミング
で偏り判定値x により偏り検査を実行し、分類枠配列に
偏りがある場合には、動的に他のハッシュ値算出式に変
更することにより、検索又は格納対象となる文字列の傾
向が予測出来ない場合でも、入力文字列に対する分類枠
配列を分散することが可能となり、高速で安定した処理
性能を得ることが出来る。
【0034】尚、本発明に於けるコンピュータ処理は、
コンピュータプログラムにより当該コンピュータの主記
憶装置上で実行されるが、このコンピュータプログラム
の提供形態は、当該コンピュータに接続された補助記憶
装置をはじめ、フロッピーディスクやCD−ROM等の
可搬型記憶装置やネットワーク接続された他のコンピュ
ータの主記憶装置及び補助記憶装置等の各記録媒体に格
納されて提供されるもので、このコンピュータプログラ
ムの実行に際しては、当該コンピュータの主記憶装置上
にローディングされ実行されるものである。
【0035】
【発明の効果】以上の説明から明らかなように本発明に
よれば、ハッシュ法を用いた文字列の検索又は格納方式
に於いて、検索対象となる文字列のグルーピングを動的
に偏りのないよう調整することにより、傾向の予測が出
来ないような大量の文字列からの検索でも、高速で安定
した処理性能を得ることが可能となるという著しい工業
的効果がある。
【図面の簡単な説明】
【図1】 本発明の原理図
【図2】 本発明のハッシュ法による検索又は格納の処
理フロー
【図3】 本発明のハッシュ法による表現と初期値規定
【図4】 本発明のハッシュ法による具体例
【図5】 従来のハッシュ法を用いた検索又は格納方式
【符号の説明】
20〜29 ステップ番号

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 コンピュータによるハッシュ法を用いた
    グルーピングによる文字列の検索又は格納方式に於い
    て、 複数のハッシュ値算出手段から一つを選択する式選択手
    段と、 選択されたハッシュ値算出手段により算出したハッシュ
    値に基づいて入力文字列をグルーピングする振り分け手
    段と、 入力文字列に対するハッシュ値の偏りを検査する偏り検
    査手段と、 前記偏り検査手段により検査された偏りが所定値以上で
    ある場合に、前記式選択手段に他のハッシュ値算出式に
    変更依頼し、既格納文字列の再グルーピングを行う再分
    類手段と、を備えたことを特徴とする文字列の検索又は
    格納方式。
  2. 【請求項2】 前記偏り検査手段は各グループの文字列
    に対する標準偏差により判定することを特徴とする請求
    項1記載の文字列の検索又は格納方式。
  3. 【請求項3】 ハッシュ法を用いたグルーピングによる
    文字列の検索又は格納をコンピュータに行わせるプログ
    ラムを記録した記録媒体であって、 複数のハッシュ値算出手段から一つを選択する式選択手
    段と、 選択されたハッシュ値算出手段により算出したハッシュ
    値に基づいて入力文字列をグルーピングする振り分け手
    段と、 入力文字列に対するハッシュ値の偏りを検査する偏り検
    査手段と、 前記偏り検査手段により検査された偏りが所定値以上で
    ある場合に、前記式選択手段に他のハッシュ値算出式に
    変更依頼し、既格納文字列の再グルーピングを行う再分
    類手段と、を実現させることを特徴とするプログラムを
    記録したコンピュータ読み取り可能な記録媒体。
JP9235916A 1997-09-01 1997-09-01 文字列検索方式 Pending JPH1185771A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP9235916A JPH1185771A (ja) 1997-09-01 1997-09-01 文字列検索方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP9235916A JPH1185771A (ja) 1997-09-01 1997-09-01 文字列検索方式

Publications (1)

Publication Number Publication Date
JPH1185771A true JPH1185771A (ja) 1999-03-30

Family

ID=16993146

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9235916A Pending JPH1185771A (ja) 1997-09-01 1997-09-01 文字列検索方式

Country Status (1)

Country Link
JP (1) JPH1185771A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9214954B2 (en) 2014-03-25 2015-12-15 International Business Machines Corporation Increasing speed of data compression
JP2016021734A (ja) * 2014-06-19 2016-02-04 富士通株式会社 情報処理装置及び情報処理方法
JP6343081B1 (ja) * 2017-09-29 2018-06-13 義尚 神山 符号符号分類検索ソフトウェアを記録した記録媒体

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9214954B2 (en) 2014-03-25 2015-12-15 International Business Machines Corporation Increasing speed of data compression
JP2016021734A (ja) * 2014-06-19 2016-02-04 富士通株式会社 情報処理装置及び情報処理方法
US9747138B2 (en) 2014-06-19 2017-08-29 Fujitsu Limited Information processing device and method
JP6343081B1 (ja) * 2017-09-29 2018-06-13 義尚 神山 符号符号分類検索ソフトウェアを記録した記録媒体

Similar Documents

Publication Publication Date Title
US9087111B2 (en) Personalized tag ranking
JP3225912B2 (ja) 情報検索装置、方法及び記録媒体
Yagoubi et al. Massively distributed time series indexing and querying
US6795818B1 (en) Method of searching multimedia data
CA2618854C (en) Ranking search results using biased click distance
US8438574B1 (en) Generating monotone hash preferences
US8019704B1 (en) Scaling machine learning using approximate counting
JP4129819B2 (ja) データベース検索システム及びその検索方法並びにプログラム
US6922700B1 (en) System and method for similarity indexing and searching in high dimensional space
JP5203733B2 (ja) コーディネータサーバ、データ割当方法及びプログラム
US7370039B2 (en) Method and system for optimizing configuration classification of software
US20040199533A1 (en) Associative hash partitioning
WO2002054288A1 (en) Automated adaptive classification system for bayesian knowledge networks
JP5976115B2 (ja) 画像検索方法
US20170109403A1 (en) Pre-caching
JPH11161659A (ja) 検索式の動的変更方法及び装置及び検索式の動的変更プログラムを格納した記憶媒体
KR100899930B1 (ko) 연관 데이터 클래스 생성 방법 및 시스템
JPH1185771A (ja) 文字列検索方式
JP2010271903A (ja) 画像処理方法及び装置、並びに、そのためのコンピュータープログラム
CN113297226B (zh) 数据存储方法、数据读取方法、装置、电子设备及介质
Sharma et al. MANTIS: multiple type and attribute index selection using deep reinforcement learning
JP6203313B2 (ja) 特徴選択装置、特徴選択方法およびプログラム
CN111198766B (zh) 数据库访问操作部署方法、数据库访问方法及装置
JPH1040255A (ja) ハッシュ表管理装置
KR101902213B1 (ko) 유사이미지 검색을 위한 해시코드 생성장치 및 방법

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060711

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060725

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060922

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20061212