JP2825009B2 - 記号列検索方法および装置 - Google Patents

記号列検索方法および装置

Info

Publication number
JP2825009B2
JP2825009B2 JP1150401A JP15040189A JP2825009B2 JP 2825009 B2 JP2825009 B2 JP 2825009B2 JP 1150401 A JP1150401 A JP 1150401A JP 15040189 A JP15040189 A JP 15040189A JP 2825009 B2 JP2825009 B2 JP 2825009B2
Authority
JP
Japan
Prior art keywords
search
symbol string
automaton
string
symbol
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
Application number
JP1150401A
Other languages
English (en)
Other versions
JPH0317780A (ja
Inventor
充 秋沢
川口  久光
寛次 加藤
敦 畠山
孝樹 野口
浩道 藤澤
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.)
Hitachi Ltd
Maxell Holdings Ltd
Original Assignee
Hitachi Ltd
Hitachi Maxell 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 Hitachi Ltd, Hitachi Maxell Ltd filed Critical Hitachi Ltd
Priority to JP1150401A priority Critical patent/JP2825009B2/ja
Publication of JPH0317780A publication Critical patent/JPH0317780A/ja
Priority to US08/349,124 priority patent/US5452451A/en
Application granted granted Critical
Publication of JP2825009B2 publication Critical patent/JP2825009B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

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

Description

【発明の詳細な説明】 【産業上の利用分野】
本発明は、データベース、文書ファイリングシステム
等の非数値データ処理を含む情報処理システムにおい
て、非構造化データの高速な検索処理、特に文字列検索
による文書データの全文検索に好適な記号列検索方法お
よびその方法を実現する装置に関し、さらに該装置とし
ての半導体集積回路に関する。
【従来の技術】
情報処理システムの記憶容量が年々増大するに従い、
文書データに代表される非数値データを扱う処理の比率
が高くなっている。このような背景から、大容量のデー
タベースから所望の文書やデータを高速に漏れなく検索
する処理の重要性が高まりつつある。 従来、文書データの検索においては、キーワードや分
類コード等の付加情報を用いる方法が多く取られてき
た。しかし、キーワードや分類コードだけでは細かい検
索の条件を厳密に表現することは難しく、十分な絞り込
みを行いにくい。したがって、この方法では検索者が意
図しなかった文書も検索ノイズとして含まれてしまう。
そのため、最終的には検索者が直接本文を読んで文書デ
ータを選択しなければならず、検索処理の効率が上がら
ないという問題があった。 更に、文書データの増大に伴いキーワードや分類コー
ドを付加するインデキシングの作業量が増大し、文書デ
ータの登録遅れの原因になっている。 また、キーワードや分類コードは時代と共にその意味
が変化して陳腐化する場合があり、データベースの最新
性維持の困難の原因となっている。 これらの問題を克服するために、文書の本文をスキャ
ンしつつ任意に設定されたキーワードとの比較照合を行
う方法(以下、フルテキストサーチと呼ぶ)が、提案さ
れている。 このフルテキストサーチを用いた文字列検索システム
としては、例えば、「アール.エル.ハスキン アンド
エル.エー.ホラー:“オペレーショナル キャラク
タリスティックス オブ ア ハードウェア ベースト
パターン マッチャー",エー シー エム トランザ
クションズ オン データベース システム,第8巻,
第1号,1983年,(R.L.Haskin and L.A.Hollaar:“Op
erational Characteristics of a Hardware-Based
Pattern Matcher",ACM Trans.on Database Syste
ms,Vol.8,No.1,1983)」に記載されているものがある。 第26図は上記の文献におけるシステムに示す。 第26図において、文字列検索システム300はホストコ
ンピュータに接続され、検索要求320、検索結果324を通
信によってやり取りする。 ホストコンピュータから検索要求320が送られると、
検索制御手段310はこれを受け付け、解析し、文字列照
合手段313と複合条件判別手段314へ検索制御情報321を
送る。 また、検索制御手段310は記憶装置制御手段311を制御
して、文字列記憶手段312に格納されている文字列デー
タ322を文字列照合手段313へ転送させる。 文字列照合手段313は、入力された文字列データ322と
予め設定された文字列との照合を行ない、該当する文字
列を検出すると、検出情報323を複合条件判別手段314へ
出力する。 複合条件判別手段314は、検索要求中に示された文字
列間の位置関係等に関する複合条件に検出情報323が合
致するか否かを調べる。そして合致する場合には、該当
する文書データの識別情報や文書内容を、検索結果324
として出力し、これがホストコンピュータへ送られる。 上記の文字列照合手段313で行なうフルテキストサー
チのひとつに有限オートマトンを用いた方法があり、キ
ーワード数にかかわらず1回の本文スキャンで検索を行
うことが出来る。 上記の方法としては、例えば、「エー.ブイ.エーホ
アンド エム.ジェイ.コラッシック:“エフィシェ
ント ストリング マッチング",コミュニケーションズ
エー シー エム,第18巻,第6号,1975年(A.V.Aho
and M.J.Corasick:“Efficient String Matchin
g",Comm.ACM,Vol.18,No.6,1975)」に記載されているも
のがある。 上記の方法は、ドント・ケア(don't care)文字を
含む検索、誤り文字を含む検索など様々な曖昧検索も実
現することができ、フルテキストサーチに有効な一手法
である。 なお、上記の“ドント・ケア”文字というのは、限定
されない(何でもよい)文字の意味である。 また、本明細書における“オートマトン”とは、或る
遷移条件の入力により、或る状態から他の状態(或いは
再びその状態自身)へ遷移を行なう機械を意味する。 この有限オートマトンを用いたフルテキストサーチの
高速実現アルゴリズム及びその実現手段については、例
えば、特開昭63-311530号に記載されている。 最も基本的な有限オートマトンを用いた検索方式は、
完全状態遷移方式である。これは、設定された文字列の
文字による遷移ごとに状態を割り付け、これらの間にす
べての遷移パスを付与するものである。この方式では、
入力される文字列データの1文字に対する遷移処理が、
必ず1マシンサイクルで実行出来る。しかし文字列の増
加と共に状態数が増加するので、状態遷移パスも増加す
る。このため、オートマトン生成時間が長くなるという
問題がある。 そこで、エイホ(A.V.Aho)等が提案した方式は、
“フェイル処理”、すなわち、設定された検索文字列中
の文字と入力される文字列データとの一致判定処理にお
ける不一致の際の処理という概念を導入した逐次繰返し
フェイル方式であり、これによって状態遷移パスを大幅
に削減することを可能とした。しかし、文字列データの
1文字に対する遷移処理が、必ずしも1マシンサイクル
で実行出来るとは限らないという問題がある。 この両者の欠点を補ったものが、前記の特開昭63-311
530号に記載されている先行フェイル方式である。この
方式は、通常の遷移処理と同時に、常に、フェイルが起
きた場合に備えたフェイル処理を並行して行ない、フェ
イルの発生が検出された場合に遷移先を変えるものであ
る。この方式では比較的短い時間でオートマトンを生成
することが出来、かつ文字列データの1文字に対する処
理を1マシンサイクルで実行することが出来る。 しかし、上記のごとき従来の有限オートマトンを用い
たフルテキストサーチにおいては、各サイクルの状態遷
移は常に状態遷移テーブルを参照しつつ行なわれる。そ
して一般に、状態遷移テーブルの容量は大きく、有限オ
ートマトン実行を制御する半導体集積回路とは別チップ
のメモリに格納される。そのためメモリアクセスが各サ
イクル毎に必要となり、処理速度向上の妨げとなるとい
う問題がある。
【発明が解決しようとする課題】
上記のように、従来のオートマトンを用いたフルテキ
ストサーチによる文書検索においては、大規模の状態遷
移テーブルが必要であるために、これを別個のメモリに
格納せざるをえなかった。従ってオートマトン実行手段
とテーブル内容を格納するメモリとのデータ入出力が常
に行われ、これによって処理速度の高速化が妨げられる
ので、処理速度の向上が困難であるという問題があっ
た。 一方、セルラーアレイを用いた同様の文書検索装置
(例えば特開昭62-217321号に記載)では、状態遷移テ
ーブルを格納したメモリとの間のデータ入出力の問題は
回避されるが、各セルに入力するデータをブロードキャ
ストする際に、文字列数増大に伴う回路遅延、文字列長
増大に伴うシフト遅延等の問題がある。また、ドント・
ケア文字を含む検索、誤り文字を含む検索などのような
曖昧検索を実現しようとすると、一般にハードウエア量
が多くなる傾向がある。また、検索処理の柔軟性におい
ても、設定出来る検索文字列の語長の上限がハードウエ
ア量による制約を受けてしまうため、オートマトン方式
に劣る、という種々の問題がある。 本発明は、オートマトンを用いたフルテキストサーチ
による文書検索において、オートマトン実行手段と状態
遷移テーブルを格納したメモリとの間のデータ入出力の
頻度を従来よりも低減して処理の高速化を図り、かつ、
検索文字列中にドント・ケア文字を設定した曖昧検索等
も可能な記号列検索方法およびその方法を実現する装
置、さらに該装置としての半導体集積回路を提供するこ
とを目的とする。
【課題を解決するための手段】
上記の目的を達成するために、本発明においては、コ
ード表現された記号で構成される被検索記号列中に複数
の検索対象記号列が存在するか否かを一括して判定する
オートマトンを用いた記号列検索方法において、複数の
検索記号列を被検索記号列中から一括して検索する際
に、該検索記号列を任意の位置で少なくとも2つの部分
記号列に分割し、分割したものの1つの部分記号列の照
合すなわち先頭照合処理を行なった結果、該部分記号列
に関する検索条件を満足した検索記号列に対してのみ、
残りの部分記号列の照合すなわち後方照合処理を行い、
ここで残りの部分記号列に関する検索条件を満足した場
合に該検索記号列が検索されたと判定するように構成し
ている。 なお、上記の記号列とは、コード表現された記号の列
であれば何でもよいが、コード表現された文字列を例と
して説明すれば、以下のようになる。 例えば、文書データ中から探すべき複数の文字列(以
後、検索文字列と呼ぶ)からその一部分を取り出した部
分文字列と、文書データを先頭文字から順に並べた文字
列(以後、被検索文字列と呼ぶ)との照合を並列に高速
処理する並列比較器を、半導体集積回路内でオートマト
ン実行手段の前段に設け、並列比較器内に設定された部
分文字列との一致が検出された場合にのみ、残りの部分
の照合をオートマトン実行手段で行い、これによってオ
ートマトン実行手段と状態遷移テーブルとの間のデータ
入出力頻度を低下させることにより、検索処理の高速化
を実現した。 また、並列比較器における照合処理の柔軟性を高める
ために、部分文字列に可変長ドント・ケアの設定を可能
とする手段を設けた。 更に、被検索文字列の入力と状態遷移テーブルが格納
されたメモリからのデータ入力とが同時に起きた場合の
調停の必要をなくし、かつ並列比較器とオートマトン実
行手段との並列動作を可能とするため、独立に動作する
別々の入力ポートをインターフェイスとして設け、高速
処理を実現した。 なお、上記の各手段は、その全てを同一チップ上に集
積することが望ましい。このときに最大の性能が得られ
る。その理由は、チップ間の信号伝播の遅延およびメモ
リへのアクセス時間の遅延が抑えられるためである。 また、上記の各手段、すなわち本発明の各構成要素の
全て又はいくつかを必要に応じて複数個備えることによ
り、処理の負荷を分散させ、並列処理によってトータル
性能を向上させるような構成とすることも出来る。した
がって同一半導体チップ上に同一構成要素が2個以上集
積される場合もあり得る。 なお、実際上は、同一チップ上に形成することが出来
る回路規模には制約があるので、全ての構成要素を同一
半導体チップ上に集積することは必ずしも可能であると
は限らない。特に、状態遷移テーブルは比較的容量の大
きなメモリを必要とし、また並列比較器は設定できる検
索文字列の部分文字列の容量を大きく取ろうとすると回
路規模が増加する。したがってこれらを他の構成要素か
ら分離し、別の半導体チップとして構成する場合も考え
られる。
【作用】
第1図は、本発明の原理を説明するためのブロック図
であり、(a)は本発明の原理的構成を示すブロック
図、(b)はここで実行する処理のオートマトンの概念
を示す図である。 以下、第1図に基づいて本発明の作用を説明する。 本発明においては、第1図(a)に示すように、入力
バッファ102を介して取り込む被検索文字列101を、並列
比較部10と有限オートマトン実行部11とに同時に入力し
て各々の処理を行い、検索結果(該当する検索文字列
と、それが文書データ中のどこの場所にあったかを示す
位置情報)111を出力バッファ105を介して外部へ出力す
る。 また、この処理の際に実行されるオートマトンの概念
を示す第1図(b)においては、番号付けされた円は各
状態を、内部の数字は状態番号を表わし、円の大きさは
各状態への状態遷移頻度の割合を相対的に示している。
矢印は状態遷移を表わし、初期状態は0である。 また、第2図は、本発明と対比するために示した従来
のオートマトンを用いたフルテキストサーチによる文書
検索の原理を説明するためのブロック図であり、(a)
は原理的構成を示すブロック図、(b)はここで実行す
る処理のオートマトンの概念を示す図である。 第2図に示すように、従来は、有限オートマトン実行
部11で、有限オートマトン12のすべての状態における照
合処理を行っていた。従って、被検索文字列を内部フォ
ーマットに変換した文字コードが入力される毎に、有限
オートマトン実行手段104から状態遷移テーブル110への
データアクセスが毎回必ず発生し、これが処理速度向上
のネックとなっていた。 その点、本発明においては、第1図に示すように、有
限オートマトン実行部11の前段に設けた並列比較部10
で、先頭照合オートマトン13に相当する先頭照合処理
(分割した検索記号列の先頭部分記号列の照合処理、部
分記号列の長さは1以上でも構わない)を行い、後方照
合オートマトン14に相当する後方照合処理(分割した検
索記号列の残りの部分記号列の照合処理)を有限オート
マトン実行部11で行う。 その際、第1図(b)に示されているように、オート
マトンの全体の処理量に占める先頭照合の比率は極めて
高い。この結果を示すシミュレーションデータを第3図
に示す。 第3図は、日本語10文字のキーワード、英語10文字の
キーワードをそれぞれランダムに抽出してオートマトン
を生成し、日本語文書(25,408文字)、英語文書(11,0
00文字)に対して検索処理を行ない、状態遷移のトレー
スデータをまとめたものである。 第3図において、横軸の「状態の深さ」は次のように
定義する。ただし、ここでトークンとは“状態遷移が生
じた際の遷移後の状態に存在する仮想マーキング”であ
り、次回の文字コード入力時に遷移元となる状態を示
す。 すなわち「状態の深さ」とは、“初期状態0からトー
クンは出発し、入力文字コードが遷移条件と合致すると
トークンが動き、状態が遷移する。この場合、初期状態
0から直接遷移しうる状態を「深さ1の状態」と呼ぶこ
ととし、「深さnの状態」を「深さn−1の状態」から
(フェイルによる遷移を除き、)直接遷移しうる状態と
して定義する。また、初期状態0は深さ0の状態とす
る。” 従って、第1図(b)の“状態1および状態6はそれ
ぞれ深さ1の状態”、“状態2、状態4および状態7は
それぞれ深さ2の状態”、“状態3および状態5はそれ
ぞれ深さ3の状態”となる。 さて、深さ0の状態では、文字コードが入力されると
毎回入力文字コードと遷移文字コードとの比較が行なわ
れ、遷移条件の成立がチェックされるので、トークンの
状態0への到達確率は100%となる。ここで到達確率と
は、“文字コード入力頻度に対する、各状態への遷移到
達頻度の比率(百分率)”である。しかし、深さ0の状
態から深さ1の状態へトークンを遷移させるのは検索文
字列を構成する一部の文字コードであるため、深さ1の
状態へのトークンの到達確率は、日本語の場合で約15%
(第3図参照)となる。そして、被検索文字列と検索文
字列との照合処理過程で不一致が生じ、途中でトークン
が直接遷移できなくなると状態0へ戻り、再度、状態0
での照合チェックが行なわれることになる。このため、
状態の深さが深くなればなるほど到達確率は低下する。
第3図から、この到達確率が、深さの浅い状態ほど大き
いことがわかる。すなわち、オートマトンの全体の処理
量のうち、先頭照合の処理量が大きな割合を占めている
ことがわかる。したがって、この先頭照合を並列比較部
10で行うことにより、有限オートマトン実行部11の処理
量が大きく低下し、これに伴って状態遷移テーブルへの
アクセス回数も低減されることになる。一方、並列比較
部10の処理はテーブルとのデータ入出力を必要としない
ので、従来の方法に比較すると検索処理全体におけるテ
ーブルとのデータ入出力が格段に減少することになる。
これによって検索処理の高速化が可能となる。 さらに第3図より、トークンの到達確率が深さの深い
状態ほど小さいことから、並列比較部10で一括照合する
部分文字列の文字数を多く取ると、後方照合オートマト
ン14に含まれる状態へトークンが遷移する確率は、さら
に低下することになる。したがって、部分文字列の文字
数を多く取ることによって、有限オートマトン実行部11
での処理量は一層低下し、検索処理を更に高速化するこ
とが可能となる。 また、並列比較器106に設定する部分文字列の有効・
無効を、任意位置に可変長で指定出来るバリッドフラグ
を設けることにより、部分文字列に複数のドント・ケア
文字を任意位置に含めることや、部分文字列の語長を可
変にすることを可能とした。これによって曖昧検索機能
が実現でき、また、部分文字列を消去、再書き込みする
ことなく、バリッドフラグの操作のみで、設定した検索
文字列の破棄、回復を行うことが出来る。
【実施例】
以下、本発明の実施例について説明する。 なお、以下の実施倒においては、コード表現された記
号列の例としてコード表現された文字列の場合について
説明するが、文字列に限らず、一般的な記号列の場合で
も同様に本発明を適用することが出来る。 第4図は、本発明の第1の実施例のブロック図であ
る。 本実施例は、以下の各構成要素によって構成されてい
る。すなわち、 被検索文字列101を取り込む入力バッファ102、 入力文字コード130と予め設定された複数の検索文字
列の部分文字列とを一括照合する並列比較器106、 その比較の結果、被検索文字列と検索文字列の部分文
字列との一致が検出されたことを知らせる一致信号131
を、オートマトンの各状態に対応づけられる識別コード
(以後、状態コードと呼ぶ)132に変換するコード変換
器107、 次の入力文字コードに対して処理をすべきトークンの
存在する有効な状態(以後、現状態と呼ぶ)を保持する
状態コードキュー109、 状態コードキュー109へ入力する状態コード133の選択
をする入力セレクタ108、 オートマトンの状態遷移動作を制御するオートマトン
実行手段104、 これに入力する文字コード135を蓄える文字コードバ
ッファ103、 オートマトンの状態遷移の制御情報を格納した状態遷
移テーブル110、 出力する検索結果111を保持する出力バッファ105、で
ある。 次に、作用を説明する、 データベース内の文書データは、被検索文字列101と
して1文字単位あるいは複数文字単位で入力バッファ10
2へ入力される。ここで被検索文字列101はデータ幅を変
換され、並列比較器106および入力文字コードバッファ1
03へ入力するためのデータ転送バスに合わせたビットサ
イズとなる。そして各回路との同期をとり、有限オート
マトン実行手段104の前段の文字コードバッファ103と並
列比較器106とへ同時に転送される。 並列比較器106には、予め検索文字列の先頭部分が部
分文字列として格納されており、入力バッファ102から
1文字あるいは複数文字送られるたびに、すべての検索
文字列の部分文字列との照合が同時に行われる。 そして被検索文字列と検索文字列の部分文字列との一
致が検出されると、一致信号は、コード変換器107によ
って各部分文字列が検出されたことを示す状態に対応す
る識別コード、すなわち状態コード132に変換される。
このコードは状態遷移テーブル110の内部に設定された
状態コードと統一が図られており、有限オートマトン実
行手段104の内部ではそのまま状態コードとして扱われ
る。 コード変換器107から出力された状態コード132は、セ
レクタ108によって選択されて状態コードキュー109に蓄
えられる。 一方、文字コードバッファ103内の文字コードデータ
に対して、上記の並列比較と同時に有限オートマトン実
行手段104による処理が行われる。この文字コードバッ
ファ103は、入力バッファ102の文字コード転送速度と有
限オートマトン実行手段104の処理速度とのギャップを
解消する。 有限オートマトン実行手段104の入力は、文字コード
バッファ103内部の文字コードデータと状態コードキュ
ー109に蓄えられている現状態コードである。 有限オートマトン実行手段104は、状態コードキュー1
09から現状態コードを取り出して、これと文字コードバ
ッファ103内の文字コードデータとから状態遷移テーブ
ル110のアクセスアドレス137を生成する。そして該当ア
ドレスの内容が有限オートマトンの現状態の遷移先138
(以後、次状態と呼ぶ)となり、これがセレクタ108を
通して状態コードキュー109に蓄えられる。現状態コー
ドが処理されると次の文字コードデータが文字コードバ
ッファ103から取り込まれる。 これらの処理により、オートマトンの状態遷移の結果
138が検索文字列の検出を示す状態となった場合に、一
致する文字列が検出されたことになる。そしてこれらに
対応する検索結果111が出力バッファ105へ書き出され
る。 被検索文字列101として入力された1文字分あるいは
複数文字分の文字コードに対する一連の処理は、上述の
ように実行される。すなわち、文字コードが入力される
たびに並列比較器106において部分文字列との照合が行
われ、これと並行して状態コードキュー109内に蓄えら
れている現状態コードに対してオートマトンが起動され
る。従って有効な現状態がなく、状態コードキュー109
内に状態コードが存在しない場合には、オートマトンは
起動されず、並列比較器106による比較照合のみによっ
て被検索文字列101が順次処理される。照合の結果、一
致が検出されると、次の文字コードに対する処理の際に
初めてオートマトンが起動される。 したがって処理は常に比検索文字列101の入力と先頭
照合処理から開始されることになる。 従来例のように、照合処理が有限オートマトン実行手
段104のみで行われる場合には、文字コードが入力され
る毎に状態遷移テーブル110をアクセスしなければなら
ない。この状態遷移テーブル110は、現状態とそれに対
する遷移先とを対にして、通常は大容量メモリに格納さ
れている。このために、有限オートマトン実行手段104
が状態遷移テーブル110をアクセスする時間が、照合処
理時間の大半を占め、速度向上のネックとなっていた。
しかし本実施例のように、検索文字列の部分文字列と被
検索文字列との一致が検出されるまで並列比較器のみで
処理できれば、文字列検索処理の非常に多くの部分をテ
ーブルアクセスなしで、比較処理だけで行うことが出来
る。そして比較処理は、部分文字列のみを比較対象とし
て絞り込んでいるため、比較的小容量のハードウエアで
実現することが出来る。従って、並列比較器とその周辺
回路を1チップ化したり、高速の小容量メモリを利用す
ることにより、従来のテーブルアクセスに比べて非常に
短時間で行うことが可能となるので、検索処理全体の速
度が向上する。 次に、第5図は、本実施例の並列動作を説明するため
の処理のタイムチャートである。 第5図に示すように、一連の処理は、被検索文字列
101の入力(data in)、複数の検索文字列の部分文
字列との並列比較(Cmp)、状態遷移テーブルの参照
(table)、検索結果111の出力(data out)の順に
実行される。 しかし、ステップは有効な現状態が存在しない場合
には実行されず、ステップも検索文字列に関する検索
条件が満足されない場合は実行されない。したがって、
被検索文字列101の1文字入力、あるいは複数文字入力
に対する処理は、ステップ、が各々1回、ステップ
が状態コードキュー109内の有効な状態数に等しい回
数、ステップが0または1回、で構成されることにな
る。ただしステップは、オートマトンの方式により、
単一の状態が複数の検索文字列の一致検出に相当するこ
とがあり、この場合は複数回となる。 第6図は、上記の複数検索文字列の同時検出の一例を
示した図である。 第6図に示すように、3種の検索文字列K1:abc,K2:b
c,K3:c,が設定されると、図中のオートマトンが生成さ
れ、“abc"という被検索文字列が入力された場合には、
状態3ですべての検索文字列が検出されることになる。 各処理ステップの実行時間の概略見積りは次のように
なる。 ステップ:被検索文字列101からの1回の入力(バ
ス幅に相当する文字数分の入力)であるから、少なくと
もメモリアクセスに相当する実行時間を要する。 ステップ:並列比較器106による部分文字列の照合
を行うが、チップ外部とのデータの入出力がないので、
相当する論理ゲートの遅延時間が実行時間になる。 ステップ:状態コードキュー109に蓄えられた現状
態コードに対して、オートマトン実行手段104に相当す
る論理ゲートの遅延時間と、状態遷移テーブル110への
アクセス時間との和に相当する実行時間が必要である。
これがステップの実行時間になる。 ステップ:検索文字列の検出のたびに検索結果111
は出力される。検索結果111の総ビット数をデータ転送
バスのビットサイズの何倍にとるかにより、検索結果11
1の出力1回あたりの、出力バッファ105へのアクセス回
数が決定されるので、実行時間もこれによって定まる。
実際上は、高々数回のメモリアクセスに相当する実行時
間とみなすことが出来る。 以上のステップ〜は第5図に示すようにパイプラ
イン処理によって実行される。第5図において、横軸は
時間の経過を表し、縦方向は文字コードの入力(1番目
の文字コード、2番目の文字コード、3番目の文字コー
ド、・・・)を表している。そしてi番目の入力文字コ
ードに対するステップ、と、(i+1)番目の入力
文字コードに対するステップとが、毎サイクル並列に
実行される。但し、ステップは常に実行されるとは限
らない。 また、第4図における入力バッファ102、文字コード
バッファ103の深さを深くすることにより、オートマト
ンの処理サイクルが伸びても被検索文字列の入力(da
ta in)を止めなくて済むので、入力と処理の並列実行
の割合を高めることができ、更に全体の処理速度を高め
ることが可能となる。 本実施例の並列動作により、被検索文字列101の入力
バッファ102への取り込みの無駄時間、すなわちオート
マトンの処理が終わらず、次のデータを読み込めずに待
たされる時間は、最低限に抑えられることになる。この
ため、検索処理全体の高速化が実現出来る。 次に、第7図は、連想機能を持つメモリ、すなわちCA
M(Content Addressable Memory)を用いた並列比較
器の実施例を示すブロック図である。 本実施例では、1ワードを4バイトのCAMレジスタで
構成し、全体が16ワード(CAM R0〜R15)の構成となっ
ている。 本実施例においては、入力バッファ102に取り込んだ
文字列を部分文字列として設定するために、選択的に任
意のCAMレジスタへ転送すること(設定モード)も、取
り込んだ被検索文字列101を複数の部分文字列と並列照
合するために、同時に全てのCAMレジスタへ分配するこ
と(比較モード)も可能である。 本実施例においては、個々の部分文字列比較回路の構
成は同じなので、以下、添え字0のものを例として説明
する。 本実施例において、部分文字列比較回路は、下記の各
要素から構成される。すなわち、 並列比較器106へ設定される第1番目の部分文字列を
格納するCAMレジスタ(R0)201−0、 該CAMレジスタ(R0)201−0の設定データのバイトご
との有効性を示すバリッドフラグ(VF0)202−0、 該バリットフラグ(VF0)202−0がセット(“1")さ
れている場合には該CAMレジスタ(R0)201−0でのバイ
トごとの比較照合結果を“有効”として出力し、リセッ
ト(“0")されている場合にはCAMレジスタ(R0)201−
0でのバイトごとの比較照合結果を“無効”として常に
“1"を出力するこれらバイトごとの結果を統合する論理
回路部203−0、 部分文字列の全バイトをバリッドフラグ(VF0)202−
0で無効指定した場合にこれを検出する論理回路部204
−0、 上記論理回路部203−0、204−0の結果である214−
0、215−0を統合して部分文字列の最終的な比較照合
結果を得る論理回路部205−0、 その出力である一致信号線(h0)216−0、である。 そして、この1ワード分のハードウエアを16組合わせ
たものから、並列比較器106の全体が構成されている。 なお、本実施例のCAMレジスタのバイト、ワード構成
およびバリッドフラグの構成は、それぞれ容易に拡張可
能であり、任意のものを取りうる。 また、CAMレジスタ(R0〜R15)201,バリッドフラグ
(VF0〜VF15)202へは、入力バッファ102を介して任意
のものにアクセスすることが出来る。また、個々の専用
のデータバスを設ける構成も取りうる。 次に、作用を説明する。 まず、検索に必要な部分文字列とバリッドフラグ202
の内容を設定した後、部分文字列を設定していない不要
なCAMレジスタ201に対しては、付随するバリッドフラグ
202をリセットし、無効化する。これによって不要部分
の比較照合処理は常に不一致となり、一致信号はディス
イネーブル固定となる。 以上の初期設定の後に、被検索文字列101が入力バッ
ファ102を介して全てのCAMレジスタ201へ同時に分配さ
れる。個々のCAMレジスタ201は比較モードになってお
り、分配された入力文字コードとあらかじめ設定されて
いる部分文字列との照合を行う。両者の照合はビット対
応に行ない、その結果は1バイトごとに論理積をとって
まとめる。すなわち、英数字1文字単位で完全一致を検
出する。これらの比較照合結果は、バリッドフラグ202
の対応ビットと共にバイト比較結果を統合する論理回路
部203に入力される。バリッドフラグ202によって部分文
字列中にドント・ケア文字の設定されたバイトについて
は、常に一致を示す値が出力される。そして、これらの
出力についてまとめて論理積がとられる。すなわち、部
分文字列1語の比較結果215が得られることになる。 一方、上述した論理回路だけでは4バイト全てを無効
に指定すると、どの様な入力文字コードに対しても一致
照合を示してしまう。従って、同一ワード内のバリッド
フラグ202が全てリセットされている場合には一致信号
が常にディスイネーブルされる必要がある。このための
論理回路を構成するのが、第7図の204、205である。 以上のように本実施例によれば、複数の部分文字列に
対して並列に比較照合処理を高速に行うことが出来るだ
けでなく、部分文字列の任意の位置にドント・ケア文字
を設定することが出来る。また、並列比較器106の1ワ
ード以下の語長であれば、不要部分にドント・ケア文字
の設定、すなわち不要部分のバリッドフラグ202をリセ
ットすることにより、バイト単位で任意の長さの部分文
字列を設定することも可能となり、柔軟な並列比較照合
処理が実現出来るという効果がある。また、バリッドフ
ラグ202の操作のみで、一度設定した部分文字列の破
棄、回復が高速に行えるという効果もある。 次に、第8図は、第7図においてCAMレジスタとバリ
ッドフラグへ部分文字列を設定する際の一例を示す図で
あり、検索文字列“my"を設定する例を示す。 検索文字列“my"を設定する場合、“my"をバイト3と
バイト2に設定し、バイト1及びバイト0のブランクを
無効とするために、バリッドフラグv3,v2,v1,v0をそれ
ぞれ“1"“1"“0"“0"に設定する。こうすることによ
り、検索文字列が設定されていないバイト1とバイト0
の照合結果は、常に“1"となるため、バイト3及びバイ
ト2の“my"の照合結果だけで、一致信号線の出力が定
まることになる。 次に、第9図は、CAMを用いた並列比較器における終
了コード検出手段の実施例図である。 この実施例の構成、終了コードの設定方法、および動
作は、並列比較器と同様である。ただし、並列比較器に
おける一致信号が、終了コード検出手段においては終了
信号(trm sig.)216-16として制御論理ブロックへと
伝達される。 上記第9図に示したのは、終了コード“FFE0"が設定
された例である。この終了コードの有効文字数を変更す
る場合、あるいは全く終了コードを使用しない場合に
は、バリッドフラグレジスタ202-16の設定を変えること
で実現することが出来る。 次に、第10図は、並列比較器の第2の実施例を示すブ
ロック図であり、CAMレジスタのかわりに、レジスタ207
と比較回路208とを用いて構成した並列比較器を示す。 本実施例においては、入力バッファ102に取り込んだ
部分文字列を、設定モードにおいて一度レジスタ207に
蓄えた後に、比較モードとしてレジスタ207と入力バッ
ファ102とから比較回路208へデータを送り比較照合を行
う。各比較回路における比較動作は並列に行なわれ、そ
の結果は212として照合結果を統合する論理回路部203へ
送られる。 また、バリッドフラグ202の操作およびその出力信号
によるバイトごとの照合結果を統合する論理回路部20
3、部分文字列の全バイト無効指定を検出する論理回路
部204、部分文字列の最終的な照合結果を得る論理回路
部205の動作は、前記第7図の実施例と同様である。す
なわち本実施例においても任意の長さの部分文字列を設
定することができ、また部分文字列として可変長のドン
ト・ケア文字を設定することも可能で、柔軟な並列比較
照合処理を実現出来るという効果が得られる。 次に、第11図は、レジスタとバリッドフラグへ部分文
字列を設定する際の一例を示す図であり、前記第8図と
同様に、検索文字列“my"を設定する場合を示す。 検索文字列“my"を設定する場合、“my"をバイト3と
バイト2に設定し、バイト1、及びバイト0のブランク
を無効とするために、バリッドフラグv3,v2,v1,v0をそ
れぞれ“1"“1"“0"“0"に設定する。こうすることによ
り、検索文字列が設定されていないバイト1とバイト0
の照合結果は、常に“1"となるため、バイト3及びバイ
ト2の“my"の照合結果だけで、一致信号線の出力が定
まることになる。 次に、第12図は、レジスタと比較回路を用いた並列比
較器における終了コード検出手段の実施例図である。 この実施例の構成、終了コードの設定方法、および動
作は、レジスタと比較回路を用いた並列比較器と同様で
ある。ただし、並列比較器における一致信号が、終了コ
ード検出手段においては終了信号(trm sig.)216-16
として制御論理ブロックへと伝達される。 上記第12図に示したのは、終了コード“FFEO"が設定
された例である。この終了コードの有効文字数を変更す
る場合、あるいは全く終了コードを使用しない場合に
は、バリッドフラグレジスタ202-16の設定を変えること
で実現することが出来る。 次に、第13図は、コード変換器107の実施例のブロッ
ク図である。 本実施例は、下記の各要素から構成される。すなわ
ち、 並列比較器106(前記第7図または第10図)からの一
致信号(h0〜h15)230を入力信号とし、これを状態コー
ド231に変換するプライオリティーエンコーダ220、 やはり一致信号230を入力信号とし、一致信号の全て
がディスイネーブルであること、すなわち被検索文字列
中に部分文字列が全く見つからなかったことを検出する
論理221、 イネーブルが少なくとも1つはあること、すなわち被
検索文字列中にいずれかの部分文字列が見つかったこと
を検出する論理222、 である。 プライオリティーエンコーダ220は一致信号(h0〜h1
5)230に優先度を付けてエンコードするエンコーダであ
り、前記第6図のように複数の一致信号がイネーブルと
なる場合に、優先度の高いものから一つずつエンコード
して状態コード231に変換する。状態コード231は一旦状
態コードキュー109(第4図)に蓄えられ、有限オート
マトン実行手段104(第4図)へ送られる。ここで検索
文字列の後半部分との比較照合処理が行われる。 また、並列比較器106での一致検出状況230を監視する
論理の出力232、233は、状態コード231をセレクタ108へ
転送する条件の判断に用いられる。すなわち、少なくと
も1つは部分文字列が見つかったことを示すヒット信号
233が“1"である場合に、状態コード231はセレクタ108
へ転送される。また、該ヒット信号233とその否定であ
るノンヒット信号232の論理和は毎サイクル“1"となる
ので(毎サイクル終了時にリセットされる)、これをタ
イミング信号としてデータ転送の同期制御を行なう。 次に、第14図は、入力バッファ102の第1の実施物図
である。 本実施例は、バッファリングのための2段のレジスタ
240、242、データ幅変換をするための2段のレジスタ24
4、246、変換後のデータを格納するレジスタ248、およ
びこれらのレジスタ間のデータパスである241、243、24
5、247から構成される。 なお、バッファリング用レジスタ240、242の間に更に
レジスタを挿入して段数を増やし、入力バッファ102の
容量を増加することにより、被検索文字列101を入力す
る速度を出来るだけ最高速度に維持するバッファリング
の効果を高めることも可能である。 また、データ幅変換用レジスタ244、246からは、それ
ぞれ変換後データ格納用レジスタ248の下位部分(バイ
ト1、バイト0)、上位部分(バイト3、バイト2)
へ、データパス245、247を経て次々と新しいデータが供
給される。この結果、2バイトごとに入力された被検索
文字列101が、変換後データ格納用レジスタ248の下位部
分から上位部分へ2バイト単位で移動して行くように見
える。つまり、変換後データ格納用レジスタ248は、2
バイト単位でシフトしているテキスト・ストリームを4
バイトのウインドウで切り出していることになる。この
4バイトが並列比較器106へ転送されて、部分文字列と
比較される。これによって、2バイト単位で入力する被
検索文字列を、毎サイクル4バイトの部分文字列と照合
することが出来る。更に、単純に2バイトの部分文字列
と照合するよりも検索条件の制限が厳しくなるので、比
較処理の結果として一致信号がイネーブル出力される確
率が低くなり、有限オートマトン実行手段104の状態遷
移テーブル110へのアクセス頻度が低減されることにな
る。 次に、第15図は、入力バッファ102の第2の実施例図
である。 本実施例は、バッファリングのための2段のレジスタ
250、252、データ幅変換をするための4段のレジスタ25
5、257、259、261、変換後のデータを格納するレジスタ
263、およびこれらのレジスタ間のデータパスである25
1、253、254、256、258、260、262から構成される。 バッファリングの効果を高めるためには、前記第14図
と同様に、バッファリング用レジスタ250、252の間に更
にレジスタを挿入して段数を増やす。 また、データ幅変換用レジスタ255、257、259、261か
らは、常に、変換後データ格納用レジスタ263の下位部
分(バイト1、バイト0)、上位部分(バイト3、バイ
ト2)へ、データパス256、258、260、262を経て新しい
データが供給される。この結果、2バイトごとに入力さ
れた被検索文字列101が、変換後データ格納用レジスタ2
63の下位部分から上位部分へ1バイト単位で移動して行
くように見える。つまり、変換後データ格納用レジスタ
263は、1バイト単位でシフトしているテキスト・スト
リームを4バイトのウインドウで切り出していることに
なる。この4バイトが、並列比較器106へ転送されて、
部分文字列と比較される。これによって前記第14図と同
様に、有限オートマトン実行手段104の状態遷移テーブ
ル110へのアクセス頻度が低減されることになる。 次に、第16図は、文字コードバッファ103の実施例図
である。 本実施例は、バッファリングのための2段のレジスタ
270、273、これらのレジスタ間のデータパスである27
1、272から構成される。 バッファリングの効果を高めるためには、前記第14、
15図と同様に、バッファリング用レジスタ270、272の間
に更にレジスタを挿入して段数を増やす。 次に、本発明においては、検索処理に先立って検索文
字列の部分文字列を並列比較器106へ設定し、また、検
索文字列から展開されたオートマトンの状態遷移を制御
する制御情報を状態遷移テーブル110へも設定するが、
ここで並列比較器106への部分文字列の設定方法を、検
索文字列の先頭2文字を部分文字列として設定する場合
を例として説明する。 第17図に示すように、K1:“文字列照合”、K2
“文字認識”、K3:“文学史”およびK4:“検索制御
方式”の4つの単語が検索文字列として与えられてい
る。この例の場合は、先頭の2文字を部分文字列とする
ので、矩形で囲まれた部分の2文字を並列比較器106へ
設定する。第17図のK1、K2のように、異なった検索文
字列でも部分文字列は“文字”というように一致するこ
とがある。この場合は両者を合わせでひとつの部分文字
列として、並列比較器106へ設定する。検索文字列の残
りの部分の比較照合処理は有限オートマトン実行手段10
4で行なうので、この部分は状態コードとして状態遷移
テーブル110へ設定する。 第18図は、上記第17図に示された4つの検索文字列を
テキスト中から検索するためのオートマトンを示す図で
ある。 第18図において、番号付けされた円は各状態を表し、
内部の数字は状態番号を示している。初期状態は状態0
であり、2重円は検索文字列の検出を示す状態である。
また、矢印は状態遷移を表しており、矢印の上部に記さ
れた文字が入力された場合に状態が遷移する。これ以外
の文字が入力された場合、または2重円の状態のよう
に、遷移先が記述されていない場合には、すべて初期状
態へ遷移する。これをフェイルと呼ぶ。 また、オートマトンを2分している破線810は、検索
文字列の先頭の2文字を並列比較器に設定する場合のオ
ートマトンの分割位置を示している。したがって、状態
2、8、11へ至るまでの遷移は並列比較器106によって
行なわれ、それ以降の遷移は有限オートマトン実行手段
104と状態遷移テーブル110とによって行なわれる。 分割後の後半のオートマトンは、状態2、8、11をそ
れぞれ初期状態とする3つのオートマトンの集合と見る
ことができる。並列比較器106には、状態0から状態
2、8、11の各々へ至る遷移条件を、すべて2文字に展
開した部分文字列が設定される。したがって“文字”が
入力された場合の状態遷移は0→1→2となる。また、
“文学”が入力された場合の状態遷移は0→1→8であ
り、“文”による状態遷移0→1は共通であり、“学”
による遷移によって状態8へ分岐遷移することになる。
この状態遷移0→1→8は、図中に破線の矢印で示した
ように、2文字の連続出現による0→1′→8の状態遷
移と見なすことができるため、“文字”とは独立して
“文学”という部分文字列を並列比較器に設定すればよ
いことになる。 次に、第19図は、前記第18図のオートマトンを、並列
比較器106と後方照合用に生成されたオートマトンとに
よって構成した概念図である。 第19図において、並列比較器106からの一致信号がト
ークンとなって、オートマトンの初期状態を発火させ
る。以後は状態遷移テーブルに従って状態遷移し、次々
と被検索文字列101との比較照合処理を行なっていく。
このように全体の処理では、前記第18図のオートマトン
を実行しているのと等価となる。 次に、第20図は、本発明の第2の実施例のブロック図
である。 本実施例は、前記第4図に示した第1の実施例から状
態コードキュー109を取り除いたものであり、被検索文
字列101を取り込む入力バッファ102、被検索文字列の入
力文字コード130と予め設定された複数の部分文字列と
を一括照合する並列比較器106、その比較の結果、検索
文字列の部分文字列との一致が検出されたことを知らせ
る一致信号131を、状態コード132に変換するコード変換
器107、有限オートマトン実行手段104へ入力する状態コ
ード134の選択をする入力セレクタ108、オートマトン動
作を実現するオートマトン実行手段104、これに入力す
る文字コード135を蓄える文字コードバッファ103、オー
トマトンの状態遷移の制御情報を格納した状態遷移テー
ブル110、出力する検索結果111を保持する出力バッファ
105から構成される。 本実施例の動作は、前記第4図に示した第1の実施例
とほぼ同様である。したがって、第1の実施例と同様
に、被検索文字列と検索文字列の部分文字列との一致が
検出されるまで並列比較器のみで処理することが出来、
文字列検索処理の非常に多くの部分をテーブルアクセス
なしで比較処理のみで行うことが出来る。このため検索
処理全体の速度を向上させることが可能となる。 本実施例ては、まず並列比較器106で、被検索文字列
と検索文字列の部分文字列との一致検出が行なわれる。
一致が検出されると一致信号131は状態コード132に変換
され、セレクタ108を経て、有限オートマトン実行手段1
04へ転送される。そしてこれ以降入力された被検索文字
列に対しては、並列比較器106の比較結果は参照せず、
有限オートマトン実行手段104と状態遷移テーブル110と
で、オートマトンの実行を行なう。また、セレクタ108
は状態遷移テーブル110からの次状態コード138を選択し
て、有限オートマトン実行手段104へ転送する。以上の
動作が入力文字コードに対して次々と繰り返され、後方
照合が行なわれる。一方検索文字列が検索された場合
や、初期状態へ遷移するフェイルが発生した場合には、
再び並列比較器106で先頭照合処理が行なわれる。 これらの一連の処理の実行は、前記第1の実施例より
も並列度に関しては劣る。しかし、全体に占める先頭照
合の処理の比率が高い場合には、本実施例でも十分高速
化の効果があり、さらに状態コードキュー109とそれを
制御するハードウエア量の削減の効果や、制御方式の簡
略化による処理速度向上の効果がある。また、各構成要
素は同一半導体チップ上に集積することが最も効果的で
あるが、回路規模の制約により、全てを同一半導体チッ
プ上に集積することが必ずしも可能であるとは限らな
い。そのため構成要素の幾つかを別の半導体チップ上に
集積して構成することが考えられる。本実施例によれ
ば、制御方式が簡略であるため、並列比較器106や状態
遷移テーブル110、各種バッファを独立チップとして切
り出し、全体をマルチチップ構成とすることも容易とな
る。 次に、第21図は、本発明の第3の実施例のブロック図
である。 本実施例は、前記第4図に示した第1の実施例におけ
る有限オートマトン実行手段104としてCPUを利用したも
のである。 本実施例の構成は、入力バッファ102、文字コードバ
ッファ103、並列比較器106、コード変換器107、入力セ
レクタ108、状態コードキュー109までは第1の実施例と
同様である。しかし有限オートマトン実行手段としてCP
U112を用いているため、文字コードバッファ103と状態
コードキュー109の出力は内部バス113に接続され、これ
を介してCPU112のデータバスへ接続されている。 また、CPU112で実行するオートマトンの制御情報を格
納する状態遷移テーブル114へは、アドレスを指定して
アクセスする。この結果、テーブルの内容である次状態
は内部バス113へ返され、セレクタ108を経て状態コード
キュー109へ蓄えられる。このとき、検索文字列との一
致検出を示す状態が得られれば、これに対応する検索結
果111がCPU112から内部バス113を介して出力バッファ10
5へ書き出される。 以上の処理において、システム全体の制御、内部バス
113の制御、また並列比較器106、状態遷移テーブル114
へのデータ設定はCPU112が行なう。 CPU112は、他の構成要素と共に同一半導体チップ上に
集積される。しかし、回路規模の制約や既存のCPUチッ
プを使用する場合もあるので、別チップで構成すること
も考えられる。 本実施例においても、前記第1の実施例と同様、並列
比較器106での部分文字列の比較処理がテーブルアクセ
スなしで行なえるので、検索処理全体の速度が向上する
という効果が得られる。 次に、第22図は、本発明の第4の実施例のブロック図
である。 本実施例は、第21図に示した第3の実施例における文
字コードバッファ103と状態コードキュー109と状態遷移
テーブル114とを、CPU112の管理下にあるメモリ空間に
割り付ける構成をとったものである。 本実施例の構成は、入力バッファ102、並列比較器10
6、コード変換器107までは前記第3の実施例と同様であ
る。しかし、第3の実施例における文字コードバッファ
103を介した内部バス113への接続、入力セレクタ108と
状態コードキュー109を介した内部バス113への接続が、
それぞれ直接、内部バス113へ接続された形になってい
る。そして文字コードバッファ116と状態コードキュー1
17は、状態遷移テーブル115を含むメモリ空間内の一部
として配置されている。これらは内部バス113を介し
て、CPU112からアドレス指定によってアクセスすること
が出来る。 被検索文字列101中からの検索文字列の一連の比較照
合処理は、第3の実施例と同様に行なわれる。その際の
内部バス113の制御は、CPU112が行なう。 本実施例においても、前記第1、第2、第3の実施例
と同様に、並列比較器106での部分文字列の比較処理が
テーブルアクセスなしで行なえるので、検索処理全体の
速度が向上するという効果が得られる。 次に、第23図は、本発明の第5の実施例のブロック図
である。 本実施例は、前記第22図に示した第4の実施例に検索
結果参照テーブル118を追加した構成となっている。 検索結果参照テーブル118は、状態遷移テーブル115、
文字コードバッファ116、状態コードキュー117と同様
に、CPU112管理下のメモリ空間内に配置され、CPU112か
らアドレス指定によってアクセスすることが出来る。 本実施例においては、比較照合処理によって被検索文
字列101と検索文字列との一致検出を示す状態が得られ
た場合に、CPU112が検索結果参照テーブル118の該当ア
ドレスから検索結果111の一部として付加する情報を得
て、出力バッファ105へ書き出す。検索結果参照テーブ
ル118には、一連の検索処理の終了を知らせるターミネ
ータや、次段に接続するハードウエアへ渡すための、種
々の制御情報も格納されており、これらも必要に応じて
出力バッファ105へ書き出される。 また、検索結果参照テーブル118の内容を書き換え可
能とすることにより、ユーザプログラマブルにすること
が出来る。このため異なった処理ごとに、あるいはチッ
プごとに、その内容を任意に設定することが可能であ
る。 従って本実施例においては、検索結果111のデータフ
ォーマットや内容を任意に設定することが可能であるの
で、様々なシステム構成やインターフェイスに柔軟に対
応することが出来るという効果が得られる。さらに、本
実施例においても前記第1、第2、第3、第4の実施例
と同様に、並列比較器106での部分文字列の比較処理が
テーブルアクセスなしで行なえるので、検索処理全体の
速度が向上するという効果が得られる。 次に、第24図は、部分文字列設定のための入力ポー
ト、バリッドフラグレジスタ設定のための入力ポート、
および被検索文字列の入力ポートを共有する構成の第1
の実施例を示すブロック図である。 第24図において、アクセスモードは、CAMレジスタ(C
AM R0〜R15)とバリッドフラグレジスタ(VF0〜VF15)
からのデータ読み出し(リードモード)、それらへのデ
ータ書き込み(ライトモードまたは設定モード)、およ
び被検索文字列と部分文字列との照合(コンペアモード
または比較モード)の3種である。 ポート280は、リードモードではデータ出力ポートと
して機能し、ライトモードおよびコンペアモードではデ
ータ入力ポートとして機能する。 また、CAMレジスタとバリッドフラグレジスタはアド
レス付けされており、リードモード、ライトモードにお
いて外部からのアドレス入力で任意のものを選択するこ
とが出来る。 リードモードでは、任意のCAMレジスタまたはバリッ
ドフラグレジスタをアドレスで指定し、その内容を出力
データバス上へのせ、出力バッファのゲートを開けてデ
ータを読み出す。 ライトモードては、入力バッファのゲートを開けてデ
ータを入力データバス上へのせ、任意のCAMレジスタま
たはバリッドフラグレジスタをアドレスで指定し、その
内部へ入力データバス上のデータをラッチする。 コンペアモードでは、入力バッファのゲートを開けて
データを入力データバス上へのせ、特定のCAMレジスタ
やバリッドフラグレジスタが選択されることのないよう
にアドレスを設定して、全てのCAMレジスタへバス上の
データを分配し、ラッチされている部分文字列との照合
を行なう。 上記の各モードでポート280を共有することにより、
半導体集積回路上のパッド数を減少させることが出来
る。したがってチップ面積増大やピン数増加の対策とし
て有効である。 次に、第25図は、部分文字列設定のための人力ポー
ト、バリッドフラグレジスタ設定のための入力ポート、
および被検索文字列の入力ポートを共有する構成の第2
の実施例を示すブロック図である。 この実施例は、前記第24図の実施例におけるCAMレジ
スタの代わりに、レジスタ(REG〜REG15)と比較回路
(CMP0〜CMP15)とを用いて構成したものである。その
動作及び効果は、前記第24図の実施例と同様であり、チ
ップ面積増大やピン数増加の対策として有効である。
【発明の効果】
本発明によれば、オートマトンを用いた文書検索にお
いて、有限オートマトン実行手段の前段に並列比較器を
置き、検索文字列の部分文字列との比較を行なって一致
した場合のみ、オートマトン実行手段による処理を行な
わせることにより、有限オートマトン実行手段と状態遷
移テーブルとのデータ入出力回数を低減させることが出
来るため、検索処理速度を向上させることが出来るとい
う効果が得られる。 また、並列比較器に設定する部分文字列の文字数を多
くすることによって、有限オートマトン実行手段と状態
遷移テーブルとのデータ入出力回数を更に低減させるこ
とが出来るため、検索処理速度を一層向上させることが
出来るという効果が得られる。特に、並列比較器に設定
された部分文字列との一致が全く検出されない場合に処
理速度は最大となり、ほぼテキストの入力時間のみで検
索処理を終了し得ることになる。 また、並列比較器内にバリッドフラグを設けることに
より、語長の異なった部分文字列や、ドント・ケア文字
を含む部分文字列の設定が可能となるので、オートマト
ンを用いた検索の持つ柔軟性を損なうことなく、高速な
検索を実現できるという効果が得られる。
【図面の簡単な説明】
第1図は本発明における有限オートマトンを用いた文字
列検索の原理を説明するためのブロック図、第2図は従
来の有限オートマトンを用いた文字列検索の原理を説明
するためのブロック図、第3図は文字列検索のオートマ
トンにおける状態の深さと到達確率との関係を示す図、
第4図は本発明の第1の実施例の構成を示すブロック
図、第5図は本発明の第1の実施例における並列処理の
タイムチャートを示す図、第6図は同一の入力文字に対
して複数の検索文字列が検出される検索文字列の設定例
を示す図、第7図はCAMを用いた並列比較器の一実施例
のブロック図、第8図はCAMを用いた並列比較器への検
索部分文字列の設定の一例を示すブロック図、第9図は
CAMを用いた並列比較器への終了コードの設定の一例を
示すブロック図、第10図はレジスタと比較器を用いた並
列比較器の一実施例のブロック図、第11図はレジスタと
比較器を用いた並列比較器への検索部分文字列の設定の
一例を示す図、第12図はレジスタと比較器を用いた並列
比較器への終了コードの設定の一例を示す図、第13図は
コード変換器の一実施例のブロック図、第14図は入力バ
ッファの第1の実施例のブロック図、第15図は入力バッ
ファの第2の実施例のブロック図、第16図は文字コード
バッファの一実施例のブロック図、第17図は検索文字列
中の先頭照合処理対象部分の一例を示す図、第18図は第
17図の検索文字列を検索するためのオートマトンを示す
図、第19図は第17図の検索文字列を検索するための並列
比較器と後方照合オートマトンのブロック図、第20図は
本発明の第2の実施例の構成を示すブロック図、第21図
は本発明の第3の実施例の構成を示すブロック図、第22
図は本発明の第4の実施例の構成を示すブロック図、第
23図は本発明の第5の実施例の構成を示すブロック図、
第24図および第25図はそれぞれ入力ポートを共有する実
施例のブロック図、第26図は文字列検索システムの全体
の構成を示すブロック図である。 〈符号の説明〉 10…並列比較部 11…有限オートマトン実行部 12…有限オートマトン 13…先頭照合オートマトン 14…後方照合オートマトン 101…被検索文字列 102…入力バッファ 103および116…文字コードバッファ 104…有限オートマトン実行手段 105…出力バッファ 106…並列比較器 107…コード変換器 108…セレクタ 109および117…状態コードキュー 110、114および115…状態遷移テーブル 111および136…検索結果 112…CPUモジュール 113…内部バス 118…検索結果参照テーブル 130および135…入力文字コード 131…一致信号 132、133および134…状態コード 137…状態遷移テーブルアクセスアドレス 138…遷移先の状態 201−0〜15…CAMレジスタ 202−0〜15…バリッドフラグレジスタ 203−0〜15…バイトごとの比較照合結果を統合する論
理回路部 204−0〜15…バリッドフラグの全ビット無効指定を検
出する論理回路部 205−0〜15…部分文字列の最終照合結果を出力する論
理回路部 207−0〜15…レジスタ 208−0〜15…比較回路 210−0〜15…レジスタデータバス 211−0〜15…バリッドフラグレジスタ・データバス 212−0〜15…バイト単位の比較結果 213−0〜15…バリッドフラグレジスタ・データ 214−0〜15…バリッドフラグの全ビット無効指定検出
結果 215−0〜15…部分文字列比較結果 216−0〜15…部分文字列の最終照合結果 201-16…終了コード用CAMレジスタ 202-16…終了コード用バリッドフラグレジスタ 203-16…終了コードのバイトごとの比較照合結果を統合
する論理回路部 204-16…終了コード用バリッドフラグの全ビット無効指
定を検出する論理回路部 205-16…終了コードの最終照合結果を出力する論理回路
部 207-16…終了コード用レジスタ 208-16…終了コード用比較回路 210-16…終了コード用レジスタデータバス 211-16…終了コード用バリッドフラグレジスタ・データ
バス 212-16…終了コードのバイト単位の比較結果 213-16…終了コードのバリッドフラグレジスタ・データ 214-16…終了コード用バリッドフラグの全ビット無効指
定検出結果 215-16…終了コードの比較結果 216-16…終了コードの最終照合結果 220…プライオリティエンコーダ 221…部分文字列が全く見つからなかったことを検出す
る論理回路部 222…部分文字列が少なくとも1つは見つかったことを
検出する論理回路部 230…一致信号群 231…状態コード 232…部分文字列が全く見つからなかったことの検出結
果 233…部分文字列が少なくとも1つは見つかったことの
検出結果 240、242、250、252、270および273…バッファリング用
レジスタ 244、246、255、257、259および261…データ幅変換用レ
ジスタ 248および263…変換後データ格納レジスタ 241、243、245、247、251、253、254、256、258、260、
262、271および272…レジスタ間データパス 280…ポート 300…文字列検索システム 310…検索制御手段、 311…記憶装置制御手段 312…文字列記憶手段 313…文字列照合手段 314…複合条件判別手段 320…検索要求 321…検索制御情報 322…文字列データ 323…検出情報 324…検索結果 810…オートマトン分割線
───────────────────────────────────────────────────── フロントページの続き (72)発明者 加藤 寛次 東京都国分寺市東恋ケ窪1丁目280番地 株式会社日立製作所中央研究所内 (72)発明者 畠山 敦 東京都国分寺市東恋ケ窪1丁目280番地 株式会社日立製作所中央研究所内 (72)発明者 野口 孝樹 東京都国分寺市東恋ケ窪1丁目280番地 株式会社日立製作所中央研究所内 (72)発明者 藤澤 浩道 東京都国分寺市東恋ケ窪1丁目280番地 株式会社日立製作所中央研究所内 (56)参考文献 特開 昭63−187334(JP,A) (58)調査した分野(Int.Cl.6,DB名) G06F 17/30 JICST科学技術文献ファイル

Claims (12)

    (57)【特許請求の範囲】
  1. 【請求項1】コード表現された記号で構成される被検索
    記号列中に複数の検索対象記号列が存在するか否かを判
    定するオートマトンを用いた記号列検索方法において、 複数の検索記号列を被検索記号列中から検索する際に、 前記検索記号列を任意の位置で少なくとも2つの部分記
    号列に分割し、分割したものの1つの部分記号列の照合
    を行なう先頭照合処理を、オートマトン実行手段の前段
    に設けた並列照合処理手段によって行ない、その結果、
    該部分記号列に関する検索条件を満足した検索記号列に
    対してのみ、残りの部分記号列の照合である後方照合処
    理をオートマトン実行手段で行ない、ここで残りの部分
    記号列に関する検索条件を満足した場合に前記検索記号
    列が検索されたと判定することを特徴とする記号列検索
    方法。
  2. 【請求項2】コード表現された記号で構成される被検索
    記号列中に、複数の検索対象記号列が存在するか否かを
    判定するオートマトンを用いた記号列検索装置であっ
    て、 (a) 前記被検索記号列を入力する第1の外部情報ア
    クセス手段と、 (b) 前記第1の外部情報アクセス手段より入力され
    た前記被検索記号列と前記検索記号列の部分記号列との
    照合処理を行なう並列照合処理手段と、 (c) 前記第1の外部情報アクセス手段より入力され
    た前記被検索記号列と前記検索記号列との照合処理を行
    なうオートマトン実行手段と、 (d) 前記オートマトン実行手段で照合処理を制御す
    る後方照合処理制御データを格納するデータ格納手段
    と、 (e) 前記後方照合処理制御データを前記データ格納
    手段から前記オートマトン実行手段に入力する第2の外
    部情報アクセス手段と、 を備えたことを特徴とする記号列検索装置。
  3. 【請求項3】請求項2に記載の記号列検索装置におい
    て、 前記並列照合処理手段と前記オートマトン実行手段とを
    同一半導体チップ上に集積して半導体集積回路とし、か
    つ、両者が同一の入力記号に対して並列動作し、処理を
    行うことを特徴とする記号列検索装置。
  4. 【請求項4】請求項2に記載の記号列検索装置におい
    て、 前記オートマトン実行手段を、CPUを用いて構成したこ
    とを特徴とする記号列検索装置。
  5. 【請求項5】請求項2に記載の記号列検索装置におい
    て、 前記オートマトン実行手段をCPUで構成し、かつ、前記C
    PUを同一半導体チップ上に集積して半導体集積回路とし
    たことを特徴とする記号列検索装置。
  6. 【請求項6】請求項2に記載の記号列検索装置におい
    て、 前記並列照合処理手段を、連想メモリを用いて構成した
    ことを特徴とする記号列検索装置。
  7. 【請求項7】請求項2に記載の記号列検索装置におい
    て、 前記並列照合処理手段内に設定する各検索記号列の部分
    記号列に、照合の際にその有効・無効を少なくとも記号
    ごとに示すバリッドフラグレジスタを設け、更に前記バ
    リッドフラグレジスタの任意の構成ビットをセットある
    いはリセットする手段を備え、 照合の際に前記バリッドフラグレジスタを参照し、前記
    バリッドフラグレジスタの構成ビットがセット状態であ
    る部分に対応する部分記号列中の記号を、被検索記号列
    との照合の際に“有効”とし、リセット状態である部分
    に対応する部分記号列中の記号を、被検索記号列との照
    合の際に“無効”とすることにより、前記部分記号列の
    任意位置にドント・ケアを設定することを可能としたこ
    とを特徴とする記号列検索装置。
  8. 【請求項8】請求項2に記載の記号列検索装置におい
    て、 前記第1の外部情報アクセス手段と、前記先頭照合処理
    手段と、前記オートマトン実行手段と、前記データ格納
    手段と、前記第2の外部情報アクセス手段と、のうちの
    少なくとも2つを同一半導体チップ上に集積して半導体
    集積回路としたことを特徴とする記号列検索装置。
  9. 【請求項9】請求項2に記載の記号列検索装置におい
    て、 前記第1の外部情報アクセス手段によるアクセスと前記
    第2の外部情報アクセス手段によるアクセスは、相互に
    独立に行なうことを特徴とする記号列検索装置。
  10. 【請求項10】請求項9に記載の記号列検索装置におい
    て、 前記第1の外部情報アクセス手段によるアクセスを前記
    第2の外部情報アクセス手段によるアクセスより高い頻
    度で行なうことを特徴とする記号列検索装置。
  11. 【請求項11】請求項9に記載の記号列検索装置におい
    て、 前記第1の外部情報アクセス手段は、前記第2の外部情
    報アクセス手段のアクセスに先立ってアクセスすること
    を特徴とする記号列検索装置。
  12. 【請求項12】請求項2に記載の記号列検索装置を用い
    て、 検索記号列を少なくとも2つの部分記号列に分割し、 前記分割された部分記号列の1つについての照合を行な
    う先頭照合処理を、前記並列照合処理手段で行ない、 前記先頭照合処理を満足した部分記号列を含む検索記号
    列に対する照合を行なう後方照合処理を、前記オートマ
    トン実行手段で行ない、 前記後方照合処理の結果に基づいて前記検索記号列の検
    索を行なうことを特徴とする記号列検索方法。
JP1150401A 1989-06-15 1989-06-15 記号列検索方法および装置 Expired - Fee Related JP2825009B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP1150401A JP2825009B2 (ja) 1989-06-15 1989-06-15 記号列検索方法および装置
US08/349,124 US5452451A (en) 1989-06-15 1994-12-01 System for plural-string search with a parallel collation of a first partition of each string followed by finite automata matching of second partitions

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP1150401A JP2825009B2 (ja) 1989-06-15 1989-06-15 記号列検索方法および装置

Publications (2)

Publication Number Publication Date
JPH0317780A JPH0317780A (ja) 1991-01-25
JP2825009B2 true JP2825009B2 (ja) 1998-11-18

Family

ID=15496168

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1150401A Expired - Fee Related JP2825009B2 (ja) 1989-06-15 1989-06-15 記号列検索方法および装置

Country Status (1)

Country Link
JP (1) JP2825009B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2007129577A1 (ja) * 2006-05-08 2009-09-17 国立大学法人 電気通信大学 テキスト処理モジュール
JP5904045B2 (ja) * 2012-07-24 2016-04-13 住友電気工業株式会社 情報処理装置および情報処理プログラム
US11586956B2 (en) * 2013-05-28 2023-02-21 Keysight Technologies, Inc. Searching apparatus utilizing sub-word finite state machines
JP5977209B2 (ja) * 2013-07-18 2016-08-24 日本電信電話株式会社 ステートマシン回路

Also Published As

Publication number Publication date
JPH0317780A (ja) 1991-01-25

Similar Documents

Publication Publication Date Title
US5452451A (en) System for plural-string search with a parallel collation of a first partition of each string followed by finite automata matching of second partitions
US11741014B2 (en) Methods and systems for handling data received by a state machine engine
JP2702927B2 (ja) 文字列検索装置
US5051947A (en) High-speed single-pass textual search processor for locating exact and inexact matches of a search pattern in a textual stream
US9535861B2 (en) Methods and systems for routing in a state machine
JP2015505399A (ja) 状態機械格子におけるカウンタ動作
US20170193351A1 (en) Methods and systems for vector length management
JP2986865B2 (ja) データ検索方法および装置
JP6229024B2 (ja) 情報検索機能を備えたメモリ、その利用方法、装置、情報処理方法。
US11580055B2 (en) Devices for time division multiplexing of state machine engine signals
US6470334B1 (en) Document retrieval apparatus
US10691964B2 (en) Methods and systems for event reporting
JP3213244B2 (ja) データ圧縮方法およびデータ処理システム
JP2960533B2 (ja) 記号列検索モジュール及びそれを備えたシングルチップマイクロコンピュータ
JP2825009B2 (ja) 記号列検索方法および装置
JP2880199B2 (ja) 記号列検索方法および検索装置
JPH1027183A (ja) データ登録方法および装置
JP3141428B2 (ja) 数値検索装置およびその方法
JP2880192B2 (ja) 文字列検索方法及び装置
JPH04308B2 (ja)
JPH0916616A (ja) 索引データ生成検索装置
WO1992005494A1 (en) System equipped with processor and method of converting addresses in said system
WO2023210643A1 (ja) 全文検索プロセッサ
JP3166629B2 (ja) 辞書作成装置と語切り出し装置
JP7475078B2 (ja) 全文検索プロセッサ

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees