JP3847836B2 - 文字列検索方法とその装置 - Google Patents
文字列検索方法とその装置 Download PDFInfo
- Publication number
- JP3847836B2 JP3847836B2 JP11368496A JP11368496A JP3847836B2 JP 3847836 B2 JP3847836 B2 JP 3847836B2 JP 11368496 A JP11368496 A JP 11368496A JP 11368496 A JP11368496 A JP 11368496A JP 3847836 B2 JP3847836 B2 JP 3847836B2
- Authority
- JP
- Japan
- Prior art keywords
- search
- character string
- character
- string
- information
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Document Processing Apparatus (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
【発明の属する技術分野】
本発明は、文字列検索方法とその装置、並びに、文字列検索情報生成方法とその装置、特に、ファイル中から文字列を高速に検索する文字列検索方法とその装置に関する。
【0002】
【従来の技術】
従来、文字列情報を含んだファイル中に、所定の文字列が存在するか否かを調べる検索処理においては、対象ファイルを読み出し、文字列情報と指定文字列の比較を行うことによって文字列の存在の有無をチェックしていた。
この様な検索方法では、無条件に対象ファイルを読み出し、文字列の比較を行っていた。
【0003】
【発明が解決しようとする課題】
一般に、読み出し速度の遅い記憶装置では、全検索時間に占めるファイル読み出し時間の割合が大きくなる。
また、ファイル中の文字列が膨大な場合には、文字列の比較に時間がかかる。これらの理由から、従来の無条件にファイルを読み出し、文字列の比較を行う方法では、処理時間が長くなるという問題があった。
【0004】
本発明は、上記従来例に鑑みてなされたもので、文字列を高速に検索できる文字列検索方法とその装置を提供することを目的とする。
【0005】
【課題を解決するための手段】
上記目的を達成するための本発明の一態様による文字列検索方法は、
文字列検索装置における文字列検索方法であって、
文字列検索装置が備える第1の検索手段が、文字列情報に含まれる各文字と前記各文字の発生頻度とを備えるテーブルから検索文字列に含まれる全ての文字を検索する第1の検索工程と、
文字列検索装置が備える第2の検索手段が、前記第1の検索工程で、前記検索文字列に含まれる全ての文字が前記テーブルに存在していると判定された場合、前記文字列情報から前記検索文字列に一致する文字列を検索する第2の検索工程とを備え、
前記第2の検索工程では、前記検索文字列に含まれる文字を発生頻度の低い文字から順に用いて前記文字列情報中の文字列の文字が前記検索文字列の文字と一致するか否かを判定することにより検索を行い、前記判定において一致する毎に当該用いられた文字に対応する前記テーブルの発生頻度を1減らし、前記検索文字列に含まれる文字のうちの1つでも対応する発生頻度がゼロになったことに基づいて当該検索を中止することを特徴とする。
【0006】
また、本発明の他の態様による文字列検索装置は以下の構成を備える。即ち、
文字列情報に含まれる各文字と前記各文字の発生頻度とを備えるテーブルから検索文字列に含まれるすべての文字を検索する第1の検索手段と、
前記第1の検索手段で、前記検索文字列に含まれる全ての文字が前記テーブルに存在していると判定された場合、前記文字列情報から前記検索文字列に一致する文字列を検索する第2の検索手段とを備え、
前記第2の検索手段は、前記検索文字列に含まれる文字を発生頻度の低い文字から順に用いて前記文字列情報中の文字列の文字が前記検索文字列の文字と一致するか否かを判定することにより検索を行い、前記判定において一致する毎に当該用いられた文字に対応する前記テーブルの発生頻度を1減らし、前記検索文字列に含まれる文字のうちの1つでも対応する発生頻度がゼロになったことに基づいて当該検索を中止することを特徴とする。
【0009】
【発明の実施の形態】
はじめに、本発明の実施の形態の文字列検索方法とその装置のポイントを要約した後に、その詳細な説明に入るものとする。
本発明の実施の形態の文字列検索方法とその装置は、所定の文字列情報から、同一文字の出現回数を計測し、文字出現テーブルを生成する。
【0010】
そして、所定の検索文字列の含まれる各文字がすべて、生成された文字出現テーブルに存在しているかどうか検索する。
その結果、存在していなければ、前述の文字列情報には、所定の検索文字列はないと判定する。
一方、存在していれば、前述の文字列情報を検索して、前述の所定の検索文字列が存在するかどうか判定する。ここで、この文字列情報検出処理では、出現頻度の少ない文字から順に文字比較を行って、検索を進める。
【0011】
以上の処理手順により、処理に関わるデータ量を大幅に削減できる。
また、文字列の比較を必ずしも、データの最後まで行う必要がなくなるため、検索時間を大幅に短縮できる。
以下、本発明の実施の形態の文字列検索装置の詳細な説明を行う。
図1は、本発明の一実施の形態にかかる文字検索装置を説明するブロック図である。
【0012】
1は、マイクロプロセッサ(CPU)であり、検索処理のための演算・論理判断等を行い、各バスを介してそれらに接続された各構成要素を制御する。マイクロプロセッサ(CPU)1は、ROM2に格納された検索処理プログラムを読み出し、解釈し、実行する。
読み出し専用メモリ(ROM)2は、上述の検索処理プログラムの他にも、各種制御プログラムや関連データを格納している。
【0013】
3は、ランダムアクセスメモリ(RAM)であり、各構成要素からの各種データの一時保存に用いたり、CPU1の作業領域として用いられる。
4は、キーボード(KB)であり、文字や記号等を入力する文字キーおよび各種機能を指示する機能キー等を配置してある。
5は、CRTコントローラ(CRTC)であり、表示器(CRT)7の表示制御を行う。
【0014】
6は、キャラクタージェネレータ(CG)であり、表示器(CRT)11に表示する文字・記号等のキャラクタ信号を発生させる。
7は、表示器(CRT)であり、文字列等を表示する。
8は、フロッピーディスクコントローラ(FDC)であり、フロッピーディスクドライブ(FDD)9の制御を行う。
【0015】
9は、フロッピーディスクドライブ(FDD)であり、セットされているフロッピーディスク(FD)11へのデータの書き込み、読み込み等を行う。
10は、バス(BS)であり、各処理ユニット間でのコントロール信号のやり取り、データの転送、アドレス信号の転送等の為に使用される。
図2は、FD11へ保存されるファイルの形式を表したものである。与えられた文字列情報から、文字出現テーブルを構築し、文字列情報の前に付加して、1つのファイルが作成される。
【0016】
図3は、文字出現テーブルの詳細を示す図である。
尚、本実施の形態では、読者の理解を容易にするために、文字列情報中の文字は全て1ワード(16ビット)で表されるものとする。
文字出現テーブルは、文字列情報中に同一文字コードがいくつ存在するかを表すテーブルであり、各文字コードに対して1バイト(8ビット)の出現回数を格納する領域が1対1に対応している。
【0017】
以後、文字コード0000H〜FFFFH(Hは16進数を意味する)の出現回数をt[0000]〜t[FFFF]と表すものとする。
ここで、出現回数が255回以上の場合には、出現回数は255とする。即ちt[i]=255の場合、文字コードiは255回以上存在することを表す。
図4は、文字出現テーブル構築処理手順を示すフローチャートである。尚、以下、前置きなしに幾つかの変数名が登場するが、これらは、RAM3の所定の領域にアサインされているものとする。
【0018】
ステップS1では、文字出現テーブルに全て0をセットする。即ち、
t[0000]〜t[FFFF]=0
とする。
ステップS2では、文字列情報の文字位置を表すカウンタiを0に初期化する。 ステップS3では、文字列情報中のi番目の文字s[i]を取得し、cに格納する。
【0019】
ステップS4では、文字cに対応する文字出現テーブルの出現回数が255を越えているかチェックする。越えている場合は、ステップS6へ進む。また、越えていない場合は、テーブルの更新は行なわず、ステップS5へ進む。
ステップS5では、文字cに対応する文字出現テーブルの出現回数t[c]に1を加算する。
【0020】
ステップS6では、s[i]が文字列情報の最後の文字かどうかをチェックする。そして、最後の文字であれば、処理を終了する。
ステップS7では、カウンタiを1カウントアップして、ステップS3に戻り、同様の処理を繰り返す。
以上の処理により、文字列情報中の各文字コードの出現回数がテーブルにセットされる。
【0021】
そして、生成された文字出現テーブルと文字列情報を、図2に示したように、フロッピーディスク(FD)に保存する。
次に、図5は、検索処理を示すフローチャートである。
ステップS10では、ファイルから文字出現テーブルの部分のみをRAM3に読み出す。
【0022】
ステップS11では、文字出現テーブルtを元に、検索対象文字が文字列情報中に存在するか否かを調べる。検索対象文字列fはn文字から構成されており、各構成文字コードを
f[i](0≦i<n)
とすると、
0≦i<n
に対し、
t[f[i]]≠0
であれば、文字列情報中に、検索対象文字が全て含まれていることになり、ステップS12に進む。
【0023】
また、
t[f[i]]=0
なるiが少なくとも1つ存在すれば、文字コードn[i]は、文字列情報中に存在しないので、ステップS14に進み、検索文字列が存在しない旨のメッセージをCRT7に表示して、そのファイルに対する検索処理は終了する。
【0024】
ステップS12では、文字出現テーブルに続く文字列情報部分をRAM3に読み込む。
ステップS13では、RAM3に読み込まれた文字列に基づき、文字列検索処理を行う。
ステップS15では、検索された結果をCRT3に表示して、処理を終了する。
【0025】
以下に、ステップS13の文字列検索の詳細処理を示す。
はじめに、検索対象文字列の比較順序の設定を行う。比較対象文字列fの各文字コード
f[0]〜f[n−1]
に対する出現回数
t[f[0]]〜t[f−1]]
において、出現回数の少ない順に並べ換えた文字列f’を作成する。即ち、
t[f'[0]≦ … ≦t[f'[n−1]]
となる。この時、f'[0]の位置を0とした時の文字列fでの相対位置を表す比較位置列pも作成する。
【0026】
以下に一例を示す。
f=(a,b,c)
のとき、
t[a]=2,t[b]=6,t[c]=1
であれば、
f'=(c,a,b)
である。このときの比較位置列pは、
p[0]=0,p[1]=−2,p[2]=−1
となる。
【0027】
次に、文字列情報sから順次1文字を取得しf'[0]と比較する。一致した場合、順次f'[1],f'[2]…と比較を行う。但し、比較位置は比較位置列を元に行う。即ち、
f'[0]=s[i]
ならば、
f'[j]=s[i+p[j]](0<j<n)
の比較を行う。前記例では、
f'[0](c)=s[i]
ならば、
f'[1](a)
と、 s[i+p[1]](s[i−2])
とを比較し、一致していれば、更に、
f'[2](b)
と、 s[i+p[2]](s[i−1])
とを比較する。
【0028】
f'[0]〜f'[n−1]
の全てが一致していれば、検索対象文字列fは、文字列情報s中に存在していたことになる。この場合、ステップS15に進み、検索結果の表示を行う。
f'[i]とs[j]
が一致した場合、t[s[j]]を1だけ減算する。
【0029】
但し、
t[s[j]]=255
の場合は減算は行わない。f'[k]で不一致を見た場合、
t[f'[0]]〜t[f'[k−1]]
の値を調べ、
t[f'[e]]=0
なる
e(0≦e<k)
が存在すれば、s[i]以降に文字f'[e]は存在しないことから、検索文字列は存在しないと判断し、ステップS14に進み、上述のメッセージを表示して、処理を終了する。
【0030】
(他の実施の形態)
前記実施の形態では、文字列の比較を文字列情報sから順次1文字取り出しては比較文字列f'[0]と比較する方法を取ったが、すでに、
Boyer−Moore法やKMP法等の文字列比較を高速化する為のアルゴリズムが考案されているので、それらのアルゴリズムを採用することも可能である。
【0031】
また、前記実施の形態では、無条件に文字出現テーブルを構築し、ファイルに付加したが、元の文字列情報が少ない場合、文字出現テーブルの存在によって、記憶装置へのアクセス時間が大きくなり、検索時間が長くなる可能性がある。そこで、文字列情報が一定以上の大きさの時のみ、文字出現テーブルを付加することも可能である。
【0032】
本実施の形態では、一文字毎の出現テーブルを作成したが、2文字以上の組による出現テーブルを作成することも可能である。例えば、英字の場合、aa,ab,...,zzの2文字の出現テーブルを作成しておけば、より高速な検索が可能である。
なお、本発明は、複数の機器から構成されるシステムに適用しても、一つの機器からなる装置に適用してもよい。
【0033】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【0034】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
プログラムコードを供給するための記憶媒体としては、例えば、フロッピディスク,ハードディスク,光ディスク,光磁気ディスク,CD−ROM,CD−R,磁気テープ,不揮発性のメモリカード,ROMなどを用いることができる。
【0035】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているOS(オペレーティングシステム)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0036】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0037】
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するプログラムコードを格納することになるが、簡単に説明すると、図6のメモリマップ例に示す各モジュールを記憶媒体に格納することになる。
すなわち、少なくとも、図4のフローチャートの処理手順に対応するプログラムモジュールである「文字出現テーブル生成モジュール」、所定の文字列の含む文字を含むかどうか検索するステップS10、S11の処理に対応する「文字出現テーブル検索モジュール」、ステップS12、S13の処理に対応する「文字列検索モジュール」、S14、S15での処理結果を表示する処理モジュールである「検索結果表示モジュール」の各モジュールのプログラムコードを記憶媒体に格納すればよい。
【0038】
以上説明した様に、本実施の形態によれば、検索対象文字列長がnの場合、文字出現テーブルに対し、n回の比較で文字列情報中に対象文字が存在するか否かの判断ができる。
また、ある検索対象文字の出現回数がmの場合、文字列情報中にその文字がm回出現したことを検知した時点で、検索を中止できる。
【0039】
さらに、検索対象文字列中で出現回数の一番少ない文字を優先的に比較し、出現回数をチェックできる。
そのため、特別な装置を必要とせずに高速な文字列検索が可能となる。
【0040】
【発明の効果】
以上説明したように本発明によれば、文字列を高速に検索できる。
【図面の簡単な説明】
【図1】本発明の一実施の形態を示すブロック構成図である。
【図2】文字出現テーブルを含むファイル形式の概略である。
【図3】 文字出現テーブルの詳細図である。
【図4】文字出現テーブルの構築方法の一例を示すフローチャートである。
【図5】検索処理の一例を示すフローチャートである。
【図6】文字出現テーブルの構築処理、検索処理を実現する各プログラムモジュールの記録媒体上のレイアウト例を示す図である。
Claims (4)
- 文字列検索装置における文字列検索方法であって、
文字列検索装置が備える第1の検索手段が、文字列情報に含まれる各文字と前記各文字の発生頻度とを備えるテーブルから検索文字列に含まれる全ての文字を検索する第1の検索工程と、
文字列検索装置が備える第2の検索手段が、前記第1の検索工程で、前記検索文字列に含まれる全ての文字が前記テーブルに存在していると判定された場合、前記文字列情報から前記検索文字列に一致する文字列を検索する第2の検索工程とを備え、
前記第2の検索工程では、前記検索文字列に含まれる文字を発生頻度の低い文字から順に用いて前記文字列情報中の文字列の文字が前記検索文字列の文字と一致するか否かを判定することにより検索を行い、前記判定において一致する毎に当該用いられた文字に対応する前記テーブルの発生頻度を1減らし、前記検索文字列に含まれる文字のうちの1つでも対応する発生頻度がゼロになったことに基づいて当該検索を中止することを特徴とする文字列検索方法。 - 文字列検索装置が備えるテーブル生成手段が、文字列情報に含まれる各文字の発生数をカウントして、前記各文字と対応する発生頻度を備えるテーブルを生成するテーブル生成工程と、
文字列検索装置が備える格納手段が、前記テーブル生成工程で生成されたテーブルと前記文字列情報を関連づけて格納する格納工程とを更に備えることを特徴とする請求項1に記載の文字列検索方法。 - 文字列情報に含まれる各文字と前記各文字の発生頻度とを備えるテーブルから検索文字列に含まれる全ての文字を検索する第1の検索手段と、
前記第1の検索手段で、前記検索文字列に含まれる全ての文字が前記テーブルに存在していると判定された場合、前記文字列情報から前記検索文字列に一致する文字列を検索する第2の検索手段とを備え、
前記第2の検索手段は、前記検索文字列に含まれる文字を発生頻度の低い文字から順に用いて前記文字列情報中の文字列の文字が前記検索文字列の文字と一致するか否かを判定することにより検索を行い、前記判定において一致する毎に当該用いられた文字に対応する前記テーブルの発生頻度を1減らし、前記検索文字列に含まれる文字のうちの1つでも対応する発生頻度がゼロになったことに基づいて当該検索を中止することを特徴とする文字列検索装置。 - 文字列情報に含まれる各文字の発生数をカウントして、前記各文字と対応する発生頻度を備えるテーブルを生成するテーブル生成手段と、
前記テーブル生成手段で生成されたテーブルと前記文字列情報を関連づけて格納する格納手段とを更に備えることを特徴とする請求項3に記載の文字列検索装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11368496A JP3847836B2 (ja) | 1996-05-08 | 1996-05-08 | 文字列検索方法とその装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11368496A JP3847836B2 (ja) | 1996-05-08 | 1996-05-08 | 文字列検索方法とその装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH09297771A JPH09297771A (ja) | 1997-11-18 |
JP3847836B2 true JP3847836B2 (ja) | 2006-11-22 |
Family
ID=14618564
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP11368496A Expired - Fee Related JP3847836B2 (ja) | 1996-05-08 | 1996-05-08 | 文字列検索方法とその装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3847836B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6402600B2 (ja) * | 2014-11-13 | 2018-10-10 | 日本電気株式会社 | データベース装置、データ管理方法、及びプログラム |
-
1996
- 1996-05-08 JP JP11368496A patent/JP3847836B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH09297771A (ja) | 1997-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0268373B1 (en) | Method and apparatus for determining a data base address | |
US8190613B2 (en) | System, method and program for creating index for database | |
US5261087A (en) | Electronic information retrieval system with relative difference analyzer | |
US5347652A (en) | Method and apparatus for saving and retrieving functional results | |
JPH08180069A (ja) | 単語辞書検索装置 | |
JP3847836B2 (ja) | 文字列検索方法とその装置 | |
US3512134A (en) | Apparatus for performing file search in a digital computer | |
JPH05113964A (ja) | 電子辞書 | |
JP5041003B2 (ja) | 検索装置および検索方法 | |
JP3079844B2 (ja) | 全文データベースシステム | |
JP2861453B2 (ja) | ハイパーテキストモデル作成装置 | |
JP3596696B2 (ja) | 情報検索装置 | |
JP2000090115A (ja) | インデクス作成方法および検索方法 | |
JPH07225761A (ja) | 文書データの一致検証方式 | |
JP2990312B2 (ja) | データアクセス方法および装置 | |
JP7282892B2 (ja) | ダイジェスト値計算装置、アクセス装置、ダイジェスト値計算方法、アクセス方法及びプログラム | |
JP3896683B2 (ja) | 使用者定義文字管理装置および記憶媒体 | |
JPS5847739B2 (ja) | 文字出現順序解析装置 | |
JPH05181719A (ja) | 可変長データの格納および参照システム | |
JPH10307839A (ja) | テキスト検索装置及び方法 | |
JP3047400B2 (ja) | データ処理装置 | |
JPH06162096A (ja) | レコード検索方法 | |
JPH08101848A (ja) | 文書処理装置及び検索方法 | |
JPH10307842A (ja) | 情報処理装置及びその方法 | |
JPH0721182A (ja) | 文字処理装置およびその方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060403 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060519 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060714 |
|
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: 20060814 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060824 |
|
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: 20090901 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100901 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110901 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110901 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120901 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120901 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130901 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |