IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 井上 克己の特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024102073
(43)【公開日】2024-07-30
(54)【発明の名称】全文検索プロセッサ
(51)【国際特許分類】
   G06F 16/903 20190101AFI20240723BHJP
   G06F 9/38 20180101ALI20240723BHJP
   G06F 7/57 20060101ALI20240723BHJP
   G11C 15/04 20060101ALI20240723BHJP
   G06F 16/33 20190101ALI20240723BHJP
【FI】
G06F16/903
G06F9/38 370C
G06F7/57 204
G11C15/04 631F
G06F16/33
【審査請求】有
【請求項の数】1
【出願形態】OL
(21)【出願番号】P 2024062963
(22)【出願日】2024-04-09
(62)【分割の表示】P 2022147080の分割
【原出願日】2022-09-15
(31)【優先権主張番号】P 2022072188
(32)【優先日】2022-04-26
(33)【優先権主張国・地域又は機関】JP
(71)【出願人】
【識別番号】508220504
【氏名又は名称】井上 克己
(74)【代理人】
【識別番号】100104411
【弁理士】
【氏名又は名称】矢口 太郎
(72)【発明者】
【氏名】井上 克己
(57)【要約】
【解決課題】
全文検索用ハードウェアアクセラレータプロセッサを提供する。
【解決手段】
検索対象のテキストデータを1バイト毎に1番地からN番地に割り付けて一時記憶する文字記憶素子と、検索キーワードに含まれる符号化文字を1バイト毎の比較データとして受け取り、この検索キーワードに含まれる全ての符号化文字の上記文字記憶素子上での記憶位置を順次検出する文字検出回路と、前記検索キーワードに含まれる全ての符号化文字の配列とマッチする、上記文字記憶素子上での符号化文字の位置を順次検出する文字列検出回路と、前記文字列検出回路の検出結果を受け取って前記検索キーワードにマッチする文字列の先頭位置若しくは終了位置を出力する結果出力回路とを有する全文検索プロセッサが提供される。
【選択図】 図1
【特許請求の範囲】
【請求項1】
全文キーワード検索を目的とした半導体デバイスからなる全文検索プロセッサであり、
検索対象のテキストデータを受け取り、このテキストデータに含まれる符号化文字列を1バイト毎に1番地からN番地に割り付けて一時記憶する文字記憶素子と
検索キーワードに含まれる1以上の符号化文字を1バイト毎に比較データとして順次受け取り、各比較データを上記文字記憶素子に記憶された符号化文字列とN並列に比較し、それを前記検索キーワードに含まれる全ての符号化文字分繰り返すことで、この検索キーワードに含まれる全ての符号化文字の上記文字記憶素子上での記憶位置を検出する文字検出回路と、
前記検索キーワードに含まれる全ての符号化文字が、この検索キーワードに含まれる順番で連続する上記文字記憶素子上での位置を検出する文字列検出回路と
前記文字列検出回路の検出結果を受け取って前記連続する文字列の先頭位置若しくは終了位置を出力する結果出力回路と
を有することを特徴とする全文検索プロセッサ。
【請求項2】
請求項1記載の全文検索プロセッサにおいて、
前記文字検出回路は
前記文字記憶素子の各番地に接続され、各番地に記憶されたテキストデータの1バイト/8ビットの符号と前記比較データを構成する1バイト/8ビットの符号とを比較し、1ビット毎の一致若しくは不一致を検出する8個の1ビット一致若しくは不一致演算回路のN組のセットと
1ビット一致若しくは不一致演算回路の各セットからの8ビット分の結果出力を受け取り、各番地に記憶されたテキストデータの符号化文字の文字コードと前記比較データを構成する符号化文字の文字コードとの一致若しくは不一致を検出するN個の論理演算(論理積(AND)、論理和(OR)、論理否定(NOT))回路と
を有するものである
ことを特徴とする全文検索プロセッサ。
【請求項3】
請求項1記載の全文検索プロセッサにおいて、
前記文字列検出回路は
前記文字検出回路で検出された文字記憶位置のFG(フラグ)と検出された文字記憶位置のFG(フラグ)の配列の妥当性を判定するための、FGシフト回路とFG勝ち抜き回路の2つの回路で構成され
FGシフト回路とFG勝ち抜き回路は前記検索キーワードに含まれる符号化文字の文字コードの配列を参照し、前記1番地からN番地に割り付けて記憶された文字記憶素子上の文字列の文字コードの中から隣接する文字コード同士の配列の妥当性を繰り返し判定することで、前記検索キーワードで指定された文字列にマッチする、前記文字記憶素子上の文字列の文字コードの先頭位置(番地)若しくは末尾位置(番地)をN並列で検出する回路である
ことを特徴とする全文検索プロセッサ。
【請求項4】
請求項1記載の全文検索プロセッサにおいて、
前記文字列検出回路は
前記文字検出回路の演算結果をフラグとして記憶すると共に、当該記憶されたFGをN並列にシフトするN個のFGシフト回路と
前記FGシフト回路により前記記憶されたFGをN並列にシフトさせながらシフト前のFGとのN並列論理演算を行い、これを検索キーワードに含まれる全符号化文字分繰り返すことで前記FGの勝ち抜き演算を行うN個のFG勝ち抜き回路と
を有することを特徴とする全文検索プロセッサ。
【請求項5】
請求項1記載の全文検索プロセッサにおいて、
前記検索キーワードがnバイトの符号化文字で構成される場合、
前記FGシフト回路のシフト回数及びそれに伴うFG勝ち抜き演算回路による勝ち抜き演算の回数はn×2-1回である
ことを特徴とする全文検索プロセッサ。
【請求項6】
請求項1記載の全文検索プロセッサにおいて、
前記FG勝ち抜き回路は、演算のマスク(無視)を可能にする機能を有し、検索キーワード中にワイルドカードを用いた場合の全文検索を可能にするものである
ことを特徴とする全文検索プロセッサ。
【請求項7】
請求項1記載の全文検索プロセッサにおいて、
前記FG勝ち抜き回路は、2組のレジスタが組み込まれ、検索キーワード中に文字のギャップを含む全文検索を可能にするものである
ことを特徴とする全文検索プロセッサ。
【請求項8】
請求項1記載の全文検索プロセッサにおいて、
前記結果出力回路により出力される前記N並列(全並列)の検出結果の論理和(OR)演算を行い、全文検出結果の有無を出力するものである
ことを特徴とする全文検索プロセッサ。
【請求項9】
請求項1記載の全文検索プロセッサにおいて、
前記全文検索プロセッサ外部のメモリもしくはストレージのテキストデータを前記Nバイトの文字テキストデータを一時記憶する文字記憶素子にバッチデータとして転送し、前記N並列(全並列)による全文検索演算を繰り返すことを特徴とする全文検索プロセッサ。
【請求項10】
請求項1記載の全文検索プロセッサにおいて、
前記全文検索プロセッサの内部のメモリもしくはストレージのテキストデータを前記Nバイトの文字テキストデータを一時記憶する文字記憶素子にバッチデータとして転送し、前記N並列(全並列)による全文検索演算を繰り返すことを特徴とする全文検索プロセッサ。
【請求項11】
請求項1記載の全文検索プロセッサにおいて、
ASIC並びにFPGAに実装したことを特徴とする
全文検索プロセッサ。
【請求項12】
請求項1記載の全文検索プロセッサにおいて、
CPUを内蔵したことを特徴とする全文検索プロセッサ。
【請求項13】
請求項1記載の全文検索プロセッサにおいて、
UTF-8など世界標準の文字コードを適応することにより、世界の言語に共通な全文検索を可能にすることを特徴とする全文検索プロセッサの利用方法。
【請求項14】
請求項1記載の全文検索プロセッサにおいて、
外部から与えられる検索キーワードの文字列に、事前に指定した文字コードが含まれていた場合には全文検索演算を実行、もしくは実行しないものであること、を特徴とする全文検索プロセッサ。
【請求項15】
請求項1記載の全文検索プロセッサにおいて、
作成中の文章の一部を、大量で最新情報が盛り込まれたテキストデータが蓄積された全文検索プロセッサに照合することにより、ヒットするテキストがなければ前例なしと判定することを特徴とする全文検索プロセッサ。
【請求項16】
請求項1記載の全文検索プロセッサにおいて、
音声認識の複数の認識候補の中から最適な認識結果選択するにあたり、大量で最新情報が盛り込まれたテキストデータが蓄積された全文検索プロセッサに照合し、ヒットするテキストの多い用語を選択することにより、音声認識の精度を高めることを特徴とする全文検索プロセッサ。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体デバイス内でテキストデータに対するキーワードを用いた全文検索を実行する全文検索プロセッサに関するものである。
【背景技術】
【0002】
一般に、大量の文書類(文章・文献・文などを含む)のデータの中から特定の文書類のデータを探し出す処理は全文検索やキーワード検索と呼ばれ、WEB検索や特許情報検索、社内文書データベース、更にはPCやスマートフォンに至るまであらゆる分野で頻繁に利用されている。
【0003】
ここで、全文検索やキーワード検索は自然言語処理の基本となる情報処理である。
【0004】
全文検索の処理は、キーワード(「search」、「検索」、「情報」などのキーとなる文字や文字列)を検索条件として与え、これらの文字や文字列が文書類に含まれているかどうかを探索し、含まれている文書類のデータを特定するものである。
【0005】
従来型のプロセッサであるCPUやGPUは、一般的に、検索など情報を探し出す処理が得意でなく、見出し(インデックス)なしで全ての文書データを読み込み検索しようとすると大量の時間を要する。このため、通常、転置インデックスと呼ばれるインデックスを時前に作成しておき、この転置インデックスを利用して検索を高速化する方法がとられており、これが検索を高速化する唯一の方法である。
【0006】
ここで、転置インデックスは、辞書の用語を見出し(インデックス)とする方法や、N-gramと呼ばれる文字列を見出し(インデックス)とする手法が一般的である。
【0007】
辞書用語をインデックスとして用いる場合については、英文は単語(用語)毎にスペースをはさみ文章を作成する方式、いわゆる「分かち書き」方式であるので単語(用語)の検出は容易であるが、日本語や中国語の場合、この「分かち書き」のルールが適応出来ない。
【0008】
従って日本語の場合、形態素と呼ばれる解析方法で日本語の文法に照らし合わせて単語(用語)を切り出す複雑な方法を採っている。
【0009】
形態素方式インデックスはインデックスの数が少ないのが特徴であるが、前方一致は良いものの、中間一致や後方一致の全文検索が困難、流行語など新しい用語への対応が困難である。
【0010】
一方のN-gram方式インデックスは、情報理論の創始者として名高いクロード・エルウッド・シャノン(Claude Elwood Shannon)が自然言語解析を目的に考案したものである。
【0011】
前方一致、中間一致、後方一致、新しい用語の全文検索いずれにも対応が出来るのが特徴であるが、インデックスの数が膨大になるのが欠点である。
【0012】
以上のような背景から、形態素方式インデックスとN-gram方式インデックスの良いところをミックスして利用するなど様々な手法が開発されている。
【0013】
このようなインデックスを用いることにより、全文検索やキーワード検索を高速化することが出来るが、幾つかの大きな課題を抱えている。
【0014】
・文書類のテキストデータが用意されていても、転置インデックスが出来るまで検索が出来ない。従って、ストリーム情報(データ)の全文検索や全文検索そのもののリアルタイム処理が困難である。
【0015】
・インデックスのためにメモリエリアやストレージエリアが拡大される、インデックスがあるので増設がしにくい。
【0016】
以上様々な課題があるため、全文検索は専門家以外ハードルが高く、言語の違いから世界レベルでの標準化がしにくいという問題があった。
【0017】
全文検索を半導体化した先願技術について説明する。
【0018】
US 2010/0185647 A1は、文字データの検索を目的とした半導体デバイスであるが、ASKIIコードのように256種類の文字のみに対応させる場合には行デコーダーと特徴セルで構成されるXYマトリックスが256×256と少なくて済むが、UTF-8コードの和文のような3バイトや4バイト構成の場合、XYマトリックスが膨大になり実現困難である。
【0019】
またこの特許はマルウエアの検出などストリームデータの検索が目的であり、本願のように蓄積型データ並びにストリーム型データ双方に利用することは出来ない。
【0020】
本願発明者は、以上のような情報検出の様々な問題を解決するために、インメモリコンピューティング、PIM(Process in Memory)、アーキテクチャによる様々な発明を行い、以下の特許文献2から5に示す通り、特許を取得してきた。
【0021】
しかしながら、以上の発明の中には全文検索に適したアルゴリズムはなかった。
【先行技術文献】
【特許文献】
【0022】
【特許文献1】US 2010/0185647 A1 DEVICES, SYSTEMS, AND METHODS FOR COMMUNICATING PATTERN MATCHING RESULTS OF A PARALLEL PATTERN SEARCH ENGINE
【特許文献2】特許第4588114号 情報絞り込み検出機能を備えたメモリ、その使用方法、このメモリを含む装置。
【0023】
【特許文献3】特許第5981666号 情報検索機能を備えたメモリ、その利用方法、装置、情報処理方法。
【0024】
【特許文献4】特許第6014120号 集合演算機能を備えたメモリ及びこれを用いた集合演算処理方法
【特許文献5】特許第6393852号 データ比較演算プロセッサ及びそれを用いた演算方法。
【発明の概要】
【発明が解決しようとする課題】
【0025】
本願出願の目的は、転置インデックスのようなインデックスの作成が不要となり、しかもN-gram方式の転置インデックスを利用したシステムと同等な全文検索性能の全文検索用ハードウェアアクセラレータプロセッサを提供し、全文検索技術が抱えた様々な課題を抜本的に解決し、自然言語処理技術の向上を図り、全文検索のグローバルな標準化を目指すことである。
【課題を解決するための手段】
【0026】
上記課題を解決するため、本発明の主要な観点によれば、以下の発明が提供される。
【0027】
(1) 全文キーワード検索を目的とした半導体デバイスからなる全文検索プロセッサであり、
検索対象のテキストデータを受け取り、このテキストデータに含まれる符号化文字列を1バイト毎に1番地からN番地に割り付けて一時記憶する文字記憶素子と
検索キーワードに含まれる1以上の符号化文字を1バイト毎に比較データとして順次受け取り、各比較データを上記文字記憶素子に記憶された符号化文字列とN並列に比較し、それを前記検索キーワードに含まれる全ての符号化文字分繰り返すことで、この検索キーワードに含まれる全ての符号化文字の上記文字記憶素子上での記憶位置を検出する文字検出回路と、
前記検索キーワードに含まれる全ての符号化文字が、この検索キーワードに含まれる順番で連続する上記文字記憶素子上での位置を検出する文字列検出回路と
前記文字列検出回路の検出結果を受け取って前記連続する文字列の先頭位置若しくは終了位置を出力する結果出力回路と
を有することを特徴とする全文検索プロセッサ。
【0028】
(2) 前記(1)記載の全文検索プロセッサにおいて、
前記文字検出回路は
前記文字記憶素子の各番地に接続され、各番地に記憶されたテキストデータの1バイト/8ビットの符号と前記比較データを構成する1バイト/8ビットの符号とを比較し、1ビット毎の一致若しくは不一致を検出する8個の1ビット一致若しくは不一致演算回路のN組のセットと
1ビット一致若しくは不一致演算回路の各セットからの8ビット分の結果出力を受け取り、各番地に記憶されたテキストデータの符号化文字と前記比較データを構成する符号化文字との一致若しくは不一致を検出するN個の論理演算(論理積(AND)、論理和(OR)論理否定)回路と
を有するものである
ことを特徴とする、全文検索プロセッサ。
【0029】
(3)前記(1)記載の全文検索プロセッサにおいて、
前記文字列検出回路は
前記文字検出回路で連続的に検出された文字記憶位置のFG(フラグ)と検出された文字記憶位置のFG(フラグ)の配列の妥当性を連続的に判定するための、FGシフト回路とFG勝ち抜き回路の2つの回路で構成され
FGシフト回路とFG勝ち抜き回路は前記検索キーワードに含まれる符号化文字の配列を参照し、前記1番地からN番地に割り付けて記憶された文字記憶素子上の文字列の中から隣接する文字コード同士の配列の妥当性を繰り返し判定することで、前記検索キーワードで指定された文字列にマッチする、前記文字記憶素子上の文字列の先頭位置(番地)若しくは末尾位置(番地)をN並列で検出する回路である
ことを特徴とする全文検索プロセッサ。
【0030】
(4) 前記(1)記載の全文検索プロセッサにおいて、
前記文字列検出回路は
前記文字検出回路の演算結果をフラグとして記憶すると共に、当該記憶されたFGをN並列にシフトするN個のFGシフト回路と
前記FGシフト回路により前記記憶されたFGをN並列にシフトさせながらシフト前のFGとのN並列論理演算を行い、これを検索キーワードに含まれる全符号化文字分繰り返すことで前記FGの勝ち抜き演算を行うN個のFG勝ち抜き回路と
を有することを特徴とする全文検索プロセッサ。
【0031】
(5) 前記(1)記載の全文検索プロセッサにおいて、
前記検索キーワードがnバイトの符号化文字で構成される場合、
前記FGシフト回路のシフト回数及びそれに伴うFG勝ち抜き演算回路による勝ち抜き演算の回数はn-1回数である
ことを特徴とする全文検索プロセッサ。
【0032】
(6) 前記(1)記載の全文検索プロセッサにおいて、
前記FG勝ち抜き回路は、演算のマスク(無視)を可能にする機能を有し、検索キーワード中にワイルドカードを用いた場合の全文検索を可能にするものである
ことを特徴とする全文検索プロセッサ。
【0033】
(7) 前記(1)記載の全文検索プロセッサにおいて、
前記FG勝ち抜き回路は、2組のレジスタが組み込まれ、検索キーワード中に文字のギャップを含む全文検索を可能にするものである
ことを特徴とする全文検索プロセッサ。
【0034】
(8) 前記(1)記載の全文検索プロセッサにおいて、
前記結果出力回路により出力される前記N並列(全並列)の検出結果の論理和(OR)演算を行い、全文検出結果の有無を出力するものである
ことを特徴とする全文検索プロセッサ。
【0035】
(9) 前記(1)記載の全文検索プロセッサにおいて、
前記全文検索プロセッサの外部のメモリもしくはストレージのテキストデータを前記Nバイトの文字テキストデータを一時記憶する文字記憶素子にバッチデータとして転送し、前記N並列(全並列)による全文検索演算を繰り返すことを特徴とする全文検索プロセッサ。
【0036】
(10) 前記(1)記載の全文検索プロセッサにおいて、
前記全文検索プロセッサの内部のメモリもしくはストレージのテキストデータを前記Nバイトの文字テキストデータを一時記憶する文字記憶素子にバッチデータとして転送し、前記N並列(全並列)による全文検索演算を繰り返すことを特徴とする全文検索プロセッサ。
【0037】
(11) 前記(1)記載の全文検索プロセッサにおいて、
ASIC並びにFPGAに実装したことを特徴とする
全文検索プロセッサ。
【0038】
(12) 前記(1)記載の全文検索プロセッサにおいて、
CPUを内蔵したことを特徴とする全文検索プロセッサ。
【0039】
(13) 前記(1)記載の全文検索プロセッサにおいて、
UTF-8など世界標準の文字コードを適応することにより、世界の言語に共通な全文検索を可能にすることを特徴とする全文検索プロセッサの利用方法。
【0040】
(14) 前記(1)記載の全文検索プロセッサにおいて、
外部から与えられる検索キーワードの文字列に、事前に指定した文字コードが含まれていた場合には全文検索演算を実行、もしくは実行しないものであること、を特徴とする全文検索プロセッサ。
【0041】
(15) 前記(1)記載の全文検索プロセッサにおいて、
作成中の文章の一部を、大量で最新情報が盛り込まれたテキストデータが蓄積された全文検索プロセッサに照合することにより、ヒットするテキストがなければ前例なしと判定することを特徴とする全文検索プロセッサ。
【0042】
(16) 前記(1)記載の全文検索プロセッサにおいて、
音声認識の複数の認識候補の中から最適な認識結果を選択するにあたり、大量で最新情報が盛り込まれたテキストデータが蓄積された全文検索プロセッサに照合し、ヒットするテキストの多い用語を選択することにより、音声認識の精度を高めることを特徴とする全文検索プロセッサ。
【発明の効果】
【0043】
WEB検索、特許検索、企業内データ検索、PCやスマートフォン内のデータ検索など、全文検索処理は我々の仕事や生活に密着し、無くてはならない情報処理である。
【0044】
しかしながら現在のコンピューティングによる全文検索処理は、転置インデックスなどのインデックスに頼らざるを得ない状況であるのでリアルタイム処理が困難、専門家以外システム構築が出来ない、言語の違いで世界的なレベルでの標準化が進まないなど様々な課題を抱えている。
【0045】
本願発明の全文検索プロセッサを利用すると、転置インデックスを使用する必要がなく、しかも転置インデックスを使った方式に遜色ない性能の全文検索が可能になる。
【0046】
従って自然言語処理(知識処理)技術の進化が加速し、各国の言語に共通に利用出来るので、全文検索技術をグロ-バルに標準化することが出来る。
【図面の簡単な説明】
【0047】
図1】本発明の一実施形態(第1の例)に係る全文検索プロセッサの基本構成を説明する図である。
【0048】
図2】同じく、全文検索プロセッサの文字記憶素子並びに文字検出回路の詳細構成を説明する図である。
【0049】
図3】同じく、全文検索プロセッサの文字列検出回路並びに結果出力回路の詳細構成を説明する図である。
【0050】
図4】同じく、コマンド生成回路による全文検索演算条件作成の具体例を説明する図である。
【0051】
図5】同じく、英文の標準的な全文検索におけるデータ状態遷移-A(文字検出工程)を説明する図である。
【0052】
図6】同じく、英文の標準的な全文検索におけるデータ状態遷移-B(文字列検出工程)を説明する図である。
【0053】
図7】同じく、和文の標準的な全文検索におけるデータ状態遷移-A(文字検出工程)を説明する図である。
【0054】
図8】同じく、和文の標準的な全文検索におけるデータ状態遷移-B(文字列検出工程)を説明する図である。
【0055】
図9】同じく、英文にワイルドカードを適応した全文検索におけるデータ状態遷移-A(文字検出工程)を説明する図である。
【0056】
図10】同じく、英文にワイルドカードを適応した全文検索におけるデータ状態遷移-B(文字列検出工程)を説明する図である。
【0057】
図11】同じく、英文に文字のギャップを適応した全文検索におけるデータ状態遷移-A(文字検出工程)を説明する図である。
【0058】
図12】同じく、英文に文字のギャップを適応した全文検索におけるデータ状態遷移-B(文字列検出工程)を説明する図である。
【0059】
図13】同じく、全文検索プロセッサの全体構成を説明する図である。
【0060】
図14】同じく、絞り込み検索を行う場合の全文検索プロセッサの構成を説明する図である。
【0061】
図15】同じく、外部メモリ方式全文検索プロセッサの概要を説明する図である。
【0062】
図16】同じく、外部メモリ方式全文検索プロセッサと外部メモリもしくはストレージとのデータ転送の概要を説明する図である。
【0063】
図17】同じく、外部メモリ方式全文検索プロセッサのバッチ処理のタイムチャートを説明する図である。
【0064】
図18】同じく、外部メモリ方式全文検索プロセッサの演算能力を取り纏めした図である。
【0065】
図19】同じく、内部メモリ方式全文検索プロセッサの概要を説明する図である。
【0066】
図20】同じく、内部メモリ方式全文検索プロセッサの演算能力を取り纏めした図である。
【0067】
図21】同じく、全文検索プロセッサを利用する場合のシステム構成例を説明する図である。
【0068】
図22】この発明の一実施形態の第2の例に係る全文検索プロセッサの基本構成を説明する図である。
【0069】
図23】同じく、第2の例における全文検索プロセッサの文字列検出回路並びに結果出力回路の詳細構成を説明する図である。
【0070】
図24】同じく、第2の例におけるコマンド生成回路による全文検索演算条件作成の具体例を説明する図である。
【0071】
図25】同じく、第2の例における英文の標準的な全文検索の各機能のデータ状態遷移-Aを説明する図である。
【0072】
図26】同じく、第2の例における英文の標準的な全文検索の各機能のデータ状態遷移-Bを説明する図である。
【0073】
図27】同じく、第2の例における和文の標準的な全文検索の各機能のデータ状態遷移-Aを説明する図である。
【0074】
図28】同じく、第2の例における和文の標準的な全文検索の各機能のデータ状態遷移-Bを説明する図である。
【0075】
図29】同じく、第2の例における英文のワイルドカードを適応した全文検索のデータ状態遷移-Aを説明する図である。
【0076】
図30】同じく、第2の例における英文のワイルドカードを適応した全文検索のデータ状態遷移-Bを説明する図である。
【0077】
図31】同じく、第2の例における英文のギャップを適応した全文検索のデータ状態遷移-Aを説明する図である。
【0078】
図32】同じく、第2の例における英文のギャップを適応した全文検索のデータ状態遷移-Bを説明する図である。
【発明を実施するための形態】
【0079】
以下、本発明の一実施形態を図面を参照しつつ説明する。
【0080】
本発明の実施形態である全文検索プロセッサ101は、どのような文字コードにも利用可能で、しかも高度で効率の良い全文検索が実現出来る構成を提供するものである。
【0081】
この実施形態の構成を説明する前に、本発明で実施される全文検索の概念について説明する。
【0082】
(本発明の全文検索の概念)
まず、文書に含まれる文字テキストデータ132は、ASCII(American Standard Code for Information Interchange)、シフトJIS、UTF-8(UCS Transformation Format 8)など様々な符号化文字つまり文字コードを使用して表現される。
【0083】
ASCIIは7ビットまたは1バイト構成、シフトJISは2バイト構成、国際標準のUTF-8は可変長である。
【0084】
UTF-8の場合、日本語の多くの文字は3バイト構成となる。
【0085】
従って、一般的には、文書データに含まれる文字列を適切に読み出すには、文字コードを識別し、それに基づいて任意の文字列を読み取る必要がある。
【0086】
また、検索待ち時間の少ない高速な全文検索を実施するためには、文字テキストデータ132をもとに転置インデックスを作成し、この転置インデックスを利用して全文検索を行う必要がある。
【0087】
これに対して、この実施形態では、検索対象の文字テキストデータ132を、1バイト(8ビット)毎に記憶素子に記憶させ、与えられた検索キーワード125の文字列の「文字」と「文字の並び」の一致不一致を1バイト毎に並列に比較し、与えられた検索キーワード125の文字列の先頭もしくは末尾に該当する文字テキストデータ132の位置(番地)を全文検索結果として返すものである。
【0088】
これによれば、文字コードに関わらず、単純な回路構成で全文検索を実行可能とする共に、転置インデックスを作成しなくとも高速な全文検索が可能になる。
【0089】
以下、この実施形態の具体的構成について説明する。
【0090】
(基本回路構成(第1の例))
図1は、全文検索プロセッサの基本構成を示すものである。
【0091】
この全文検索プロセッサ101は、ホストコンピュータ(以下、「HOST」と称する)に接続されており、このHOSTから与えられた検索対象の文字テキストデータ132に対し、同様にHOSTから与えられた検索キーワード125を検索条件として並列全文検索演算を実行し、その結果検出された文字テキストデータ132の位置(番地)をHOSTに返すものである。
【0092】
この処理を実行するため、この全文検索プロセッサ101は、上記HOSTと接続された入出力インターフェース115に、全文検索回路103とコマンド生成回路127とが接続されてなる構成を有する。
【0093】
全文検索回路103は、検索対象の文字テキストデータ132を記憶する文字記憶素子102と、上記文字記憶素子102に記憶された文字テキストデータ132の中から検索キーワード125に含まれる文字を検出するための文字検出回路105と、上記文字検出結果に基づいて検索キーワード125の文字列の先頭文字もしくは末尾文字に該当する上記文字テキストデータ132の文字の位置(番地)を特定するための文字列検出回路106と、上記文字列検出回路106の検出結果を所定の形式で出力するための結果出力回路107を有する。
【0094】
コマンド生成回路127は、図1に拡大して示すように、システムクロック131を生成するシステムクロック生成回路131と、前記検索キーワード125に基づいて前記文字検出回路105に与える比較データ123を生成する比較データ生成回路123と、文字検出後に前記文字列検出回路106に対して勝ち抜き演算条件129を与えるタイミングを決定するシフトクロック生成回路130と、前記文字列検出回路106に対して与える勝ち抜き演算条件129を生成する勝ち抜き演算条件生成回路129と、で構成される。
【0095】
(コマンド生成回路)
以下、全文検索回路103とコマンド生成回路127の構成について詳しく説明するが、説明の便宜上、まず、コマンド生成回路127について説明する。
【0096】
コマンド生成回路127のシステムクロック生成回路131は、全文検索プロセッサ101を所定の演算タイミングで全文検索演算を実施する上で基本となるシステムクロック131、例えば10n秒や20n秒毎の連続したクロックを生成するものであり、このシステムクロック131を利用して(同期して)、比較データ生成回路123、シフトクロック生成回路130、勝ち抜き演算条件生成回路129が動作する。
【0097】
以上の比較データ生成回路123、シフトクロック生成回路130、勝ち抜き演算条件生成回路129はHOSTのキーワード設定機能128で設定される検索キーワード125に基づいて、前記文字検出回路105及び文字列検出回路106に与える、比較データ123、シフトクロック130、勝ち抜き演算条件129の3種類の演算条件からなる全文検索演算条件114を生成するものである。
【0098】
この実施形態の例では、前記検索キーワード125は、1文字1バイトで構成される英文キーワードや、1文字3バイトで構成される和文キーワード、その他の多国語を含む。
【0099】
図2に示す通り、例えば、検索キーワード125が英文の「search」である場合、このキーワードは、「s」、「e」、「a」、「r」、「c」、「h」という1文字1バイト、合計6バイトの文字コードで構成される。
【0100】
また、検索キーワード125が和文の「検索」の2文字である場合、各漢字データは3バイト、すなわち、「検」については「検:1/3」、「検:2/3」、「検:3/3」、「索」については「索:1/3」、「索:2/3」、「索:3/3」で構成されるので、全部で6バイトの文字コードとなる。
【0101】
(コマンド生成回路の比較データ生成回路)
そして、前記コマンド生成回路127の前記比較データ生成回路123は、図2に示すように、上記の検索キーワード125を1バイト、すなわち8つのビットデータ(0若しくは1)に分解して、1バイト毎に比較データ123として生成して上記文字検出回路105に与えるように構成されている。
【0102】
具体的には、システムクロック生成回路131により生成されるシステムクロック131信号に同期して上記検索キーワード125の先頭もしくは末尾から1バイト文字コードを順番に取り出し比較データ123として、上記文字検出回路105に与えるものである。
【0103】
なお、後で説明するように、この比較データ生成回路123は、前記比較データ123を生成する際、上記検索キーワード125に含まれる特殊文字(ワイルドカード記号「」、ギャップ(以下Gapとも表現する)演算子「*」等)に応じて、当該特殊文字を無視したり、所定の文字コードに置き換える等の処理を行う。
【0104】
詳しくは後の動作の説明にて詳述するが、例えば、検索キーワード125中に特定のワイルドカード(例えば「」)が含まれている場合には、このワイルドカードに該当する文字をマスク(以降Maskや無視とも表現する)する処理を行う。このような特殊文字コードに応じた処理は、図示はしないが例えば特殊文字ルックアップテーブルを用いて、通常文字と特殊文字の選別を行うことが出来る。
【0105】
また、この比較データ生成回路123は、検索キーワード125を構成する文字列のバイト数をカウントし、その結果を前記勝ち抜き演算条件生成回路129に渡すように構成されている。
【0106】
(コマンド生成回路のシフトクロック生成回路)
次に、シフトクロック生成回路130は、文字列検出回路106に、文字列検出のための特定の演算条件を与えるタイミングとなるシフトクロック130を生成するものである。具体的には、このシフトクロック生成回路130は、図3に示す文字列検出回路106のFG(フラグ)シフト回路112に、前述のシステムクロック131に同期して所定のシフトタイミングを示すシフトクロック130信号を与える回路である。
【0107】
具体的には、検索キーワード125が6バイトの場合、上記FGシフト回路112に与えられるシフト回数は、6バイトの場合、6-(マイナス)1の5回である。これは、検索キーワード125中にワイルドカード記号やギャップ演算子等の特殊文字が入っている場合も同様である。
【0108】
また、このシフトクロック生成回路130は、前記勝ち抜き演算条件生成回路129に演算条件を与えるタイミングも決定するように構成されている。
【0109】
(コマンド生成回路の勝ち抜き演算条件生成回路)
勝ち抜き演算条件生成回路129は、前述のシフトクロック生成回路130と連動して文字列検出回路106に演算条件を与えるものである。
【0110】
具体的には、図3に示す文字列検出回路106のFG勝ち抜き回路113に対して所定の勝ち抜き演算条件129を「直接入力」、「論理積」、「論理和」、「排他論理和」、「マスク(無視)」、「ギャップ演算」、「論理否定」等から選択して与えるものである。
【0111】
詳しくは後で詳述するが、例えば、検索キーワードが6バイトでワイルドカード等の特殊文字を含まない通常文字からなる場合には、文字検出時(最初のステップ(第1ステップ))では「直接入力」、文字列検索時(第5ステップ~第11ステップ)では「論理積」の演算指令が選択されてFG勝ち抜き回路113に与えるものである。
【0112】
この演算条件の選択は、例えば、ルックアップテーブルを参照することで決定することが出来る。
【0113】
(全文検索回路)
次に全文検索回路103について説明する。
【0114】
(全文検索回路の文字記憶素子)
まずこの全文検索回路103の文字記憶機素子102は、図2に示すように、入出力インターフェース115を通じてHOSTから与えられる文字テキストデータ132を、8ビットつまり1バイト単位で一時記憶するフリップフロップのようなレジスタやメモリであり、全体で1番地からN番地までN個の1バイトデータを記憶するように構成されたものである。
【0115】
ここで文字テキストデータ132とは、WEBテキストデータ、小説や雑誌、論文などのテキストデータ、特許文献テキストデータ、社内文書テキストデータ、更にはPCやスマートフォンのメールテキストデータやWord、Excelなどあらゆるテキストデータが対象になる。
【0116】
これらの文字テキストデータ132は1件あたり数バイトから数十万バイトもしくはそれ以上と様々なサイズがある。
【0117】
さらにこれらの文字テキストデータ132は数件から数百億件など多数の文書データ(テキストデータ)として構成されるものである。
【0118】
この実施形態では、以上のように大小様々な文字テキストデータ132の中から、その一部、例えば32Kバイト分の文字テキストデータ132を、1番地からN番地まで文字記憶素子102に記憶させ、記憶された文字テキストデータ132を対象に全文検索を行うように構成されたものである。
【0119】
図2は、一例として「yesterday」の文字列の「y」以降の「est…」の文字列が文字記憶素子102に記憶されている場合を示すものである。この場合、番地126の1番地が「e」、2番地が「s」、3番地が「t」・・・N番地が「h」である場合、1番地は「01100101」、2番地は「01110011」、3番地は「01110100」、N番地は「01110100」としてUTF-8文字コードが文字記憶素子102に記憶される。
【0120】
(全文検索回路の文字検出回路)
次に、この全文検索回路103の文字検出回路105は、図2に示すように、コマンド生成回路127の比較データ生成回路123に接続された1ビット一致検出回路109と、この1ビット一致検出回路109に接続された8入力論理積回路110とで構成されている。
【0121】
(文字検出回路の1ビット一致検出回路)
前記1ビット一致検出回路109は、図2に示すように、上記文字記憶素子102を構成する1バイト/8個の各記憶素子セルに対応して設けられ、一方の入力がそれらの各記憶セルに接続されており、もう一方の入力が上記比較データ123として受け取った1バイト/8ビットの各ビットデータに接続されている。そして、両入力に対して1ビット毎の一致検出演算を行いその結果を8入力論理積回路110に出力するよう構成されている。
【0122】
従って、1ビット一致検出演算回路109は、N×8個の一致回路が並列に接続されてなり、Nバイトの文字テキストデータ132に対してN並列演算を実行するものである。
【0123】
(文字検出回路の8入力論理積回路)
前記8入力論理積回路110は、1バイト毎に1つ設けられており、1バイトつまり8つの1ビット一致検出回路109からの出力を受け取り、これらに対して論理積演算を行ってその結果を出力するものである。
【0124】
従って、これら1ビット一致検出回路109と8入力論理積回路110とにより、コマンド生成回路127から与えられた1バイトの比較データ123とNバイトの文字テキストデータ132との比較が、全バイトに亘って並列に実行されることになる。
【0125】
図2に示す例では、一致する全文検索回路の番地126の2番地に対応する上記8入力論理積回路110から8ビットのデータの一致を示すフラグ(FG)が「1]として出力され、一致しない番地に関しては「0」が出力されることを示している。なお、この実施形態では一致検出をもとに文字検出を行っているが、不一致検出回路(XOR)と、8入力論理和(OR)回路111と論理否定(NOT)回路や、その他の回路の組み合わせで実現出来る。
【0126】
(全文検索回路の文字列検出回路)
次に、図3を参照して前記文字列検出回路106を説明する。
【0127】
文字列検出回路106は、FGシフト回路112と、FG勝ち抜き回路113とで構成される。
【0128】
(文字列検出回路のFGシフト回路)
まず、FGシフト回路112は、前記8入力論理積回路110の個数に応じてN個のプリセット機能付きシフトレジスタで構成される。
【0129】
この例では、前記8入力論理積回路110の出力が、このFGシフト回路112のプリセット入力「P」に接続されている。そして、1番地目のシフトレジスタのデータ出力「Q」は2番地目のシフトレジスタのデータ入力「D」に接続され、2番地目のシフトレジスタのデータ出力「D」は3番地目のシフトレジスタのデータ入力「Q」に接続される。
【0130】
以降同様にN番地目のシフトレジスタまで接続されると共に、各シフトレジスタにはコマンド生成回路127から与えられるシフトクロック130が接続されている。
【0131】
このような構成により、上記文字検出回路105により文字テキストデータ132の中から検索キーワード125と一致する文字若しくは文字の部分(1バイトのコード)が一致フラグ(FG)として検出された後、検索キーワード125の文字列のバイト数n-1回(前記シフトクロック数に対応)だけこのフラグの位置を順番にシフトさせていくことで、次に説明するFG勝ち抜き回路113で検索キーワード125のバイト数分連続するフラグの位置、すなわち文字の並び122(文字列)を検出することが出来る。
【0132】
(文字列検出回路のFG勝ち抜き回路)
FG勝ち抜き回路113は、図3に示すように、前記FGシフト回路112に対応してN回路設けられたものであり、論理否定、直接入力、論理積、論理和、排他論理和、マスク、ギャップ演算の演算を行える論理回路群(若しくは素子)と、演算条件を選択するためのセレクト回路と、演算結果を格納するための勝ち抜きレジスタとで構成される。
【0133】
このような構成により、あとで詳説するように、前記FGシフト回路112に記憶された一致フラグのデータから、検索キーワード125のバイト数分n連続するフラグの先頭フラグ位置を検出することが出来る。
【0134】
なお、上記選択回路の演算条件入力は前記コマンド生成回路127の勝ち抜き演算条件生成回路129に接続されており、論理否定、直接入力、論理積、論理和、排他論理和、マスク(無視)、ギャップ演算のどの演算条件を使用するかが、前記コマンド生成回路127の前記勝ち抜き演算条件生成回路129によって決定されるようになっている。
【0135】
すなわち、前記勝ち抜き演算条件129は、上述したように、検索キーワード125として指定される文字列および文字種別に基づいて、文字列検出回路106における演算条件を決定するものであり、これにより後で詳述するように、検索キーワード125に含まれる文字列に応じた勝ち抜き演算処理がなされ、前記勝ち抜き演算の都度、勝ち抜き演算結果がFGとして、勝ち抜きレジスタに格納されるものである。
【0136】
標準的には検索キーワード125の文字列のバイト数n×2-1回の勝ち抜き演算で生き残った勝ち抜きレジスタは論理「1」、その他は「0」として最終勝ち抜きFGが勝ち抜きレジスタに格納されることになる。
【0137】
(全文検索回路の結果出力回路)
結果出力回路107は、図3に示すように、上記N回路のFG勝ち抜き回路113に対応してN回路設けられ、上記FG勝ち抜き回路113の勝ち抜きレジスタの「1」または「0」の演算結果を出力するよう構成された回路である。全ての番地の「1」と「0」を出力する構成以外、上記勝ち抜きレジスタが「1」となっている番地のみを出力する構成や、後述する通りN個の演算結果の中に1つでも「1」がある場合には「演算結果あり」、1つも「1」がない場合には「演算結果なし」つまり「有り/無し」の結果のみを出力する構成でも構わない。
【0138】
この結果出力回路107からの出力は、演算結果として、図1に示すように入出力インターフェース115を通じてHOSTに返すよう構成されている。
【0139】
(全文検索プロセッサの動作)
以下、上記の構成を、この装置の動作を通してさらに詳しく説明する。
【0140】
(テキストデータ記憶動作)
まず、検索の対象となる文字テキストデータ132が文字記憶素子102に記憶される。
【0141】
この際、文字テキストデータ132は入出力インターフェース115を通じてHOSTのCPUから直接もしくはDMA(Direct Memory Access)方式で文字記憶素子102に対するデータ転送がなされ、Nバイトの文字コードが記憶される。
【0142】
ASCIIの英文の場合の多くは1バイトで文字コードの全部を表現出来るので、前記文字記憶素子102には、N文字が記憶されることになる。
【0143】
一方、シフトJISの和文の場合には2バイトで1文字を表すコードが表現出来るので、文字記憶素子102には、N/2文字が記憶されることになる。
【0144】
また、UTF-8の和文の場合の多くの文字は3バイトで1文字を表すコードの全部が表現出来るので、文字記憶素子102には約N/3文字が記憶されることになる。
【0145】
なお、文字記憶素子102には、上記複数種類の文字コードを混在して記憶することも可能である。
【0146】
(文字検出動作)
ついで、前記HOSTから与えられる検索キーワード125に基づいて文字検出動作が実行され、次いで文字列の検出が実行される。
【0147】
文字検出動作においては、コマンド生成回路127から与えられる、比較データ123をもとに文字の検出が行われる。
【0148】
文字検出回路105は、文字記憶素子102の各メモリセルの出力に接続された、1バイトあたり8つの1ビット一致検出回路109と、この8つの1ビット一致検出回路109の出力に接続された1バイトあたり1つの8入力論理積(AND)回路110とで構成されているので、指定された比較データ123の文字コードと、文字記憶素子102の文字コードがマッチ(一致)する場合、対象となる全文検索回路の番地126の論理積回路110の出力は論理「1」になる。
【0149】
図2の例では、「s」:「01110011」としてコマンド生成回路127から与えられた比較データ123と全文検索回路の番地126の2番地は8つの1ビット一致検出回路109の全てがマッチし、論理積回路110のAND条件が成立(8ビットマッチ)することを示している。
【0150】
この結果は、1バイト毎に文字検出結果として後述するFGシフト回路112に論理「1」のFG(フラグ)として記憶され、その他の全文検索回路の番地126の番地はマッチしないので、文字の不一致としてFGシフト回路112に論理「0」として記憶される。
【0151】
(文字列検出動作)
次に、上記文字検出の結果に基づいて文字列検出動作が実行される。
【0152】
この際、コマンド生成回路127から与えられる、シフトクロック130並びに勝ち抜き演算条件129のコマンドをもとに文字列の検出が行われる。
【0153】
上述したように、文字列検出回路106はFGシフト回路112並びにFG勝ち抜き回路113で構成される。
【0154】
FGシフト回路112は、以上の文字検出回路105による並列文字マッチ検出のマッチ結果、例えば前述の「s」、「e」、「a」、「r」、「c」、「h」や、「検:1/3」、「検:2/3」、「検:3/3」、「索:1/3」、「索: 2/3」、「索: 3/3」などの文字マッチ結果(FG)を記憶並びにデータシフトする機能を有する。
【0155】
FGシフト回路112はコマンド生成回路127から与えられるシフト演算のためのシフトクロック130の度に、文字検出回路105の出力からプリセットされたN個のFGを全並列(N並列)に記憶並びにそのデータをシフトするものである。(このデータシフトの具体例は図5から図12で後述する。)
一方、FG勝ち抜き回路113は、検出された「s」、「e」、「a」、「r」、「c」、「h」もしくは「検:1/3」、「検:2/3」や、「検:3/3」、「索:1/3」、「索:2/3」、「索:3/3」などの文字コードの並びが、検索キーワード125として与えられる文字コードの文字の並び122(文字列)にマッチするか否か(文字の配列が妥当であるか否か)を判定し、検索キーワード125の文字列の先頭番地もしくは末尾番地に該当する全文検索回路の番地126を検出する機能である。
【0156】
このFG勝ち抜き回路113は、高度な勝ち抜き演算を実施するための論理積や論理和、更には排他論理和や論理否定の論理素子と、以上論理素子の論理演算を選択するための選択回路、そして選択回路から出力された演算結果を格納する勝ち抜きレジスタで構成されている。
【0157】
選択回路には、コマンド生成回路127の勝ち抜き演算条件生成回路129から与えられる演算条件、論理否定、論理積、論理和、排他論理和、マスク(無視)、ギャップ演算の選択信号が入力される。
【0158】
本実施形態では、勝ち抜きレジスタは演算の利便性や性能を向上させる目的で、勝ち抜きメインレジスタと、勝ち抜き演算の途中結果を保持する勝ち抜きサブレジスタの2つのレジスタで構成されており、これらのレジスタの何れを使うかなど、コマンド生成回路127でコントロールする構成になっている。
【0159】
一例として通常の演算の場合は勝ち抜きメインレジスタを使用し、ギャップ演算のような特殊な演算の場合には、勝ち抜きメインレジスタ並びに勝ち抜きサブレジスタの双方を動作させることが可能な構成になっている。
【0160】
従って、単に勝ち抜きレジスタと表現する場合は勝ち抜きメインレジスタを意味するものであり、ギャップ演算の場合にはメイン並びにサブを区別して説明する。
【0161】
なお、この回路構成は勝ち抜き演算の考え方を示すものであるのでロジック回路やレジスタの構成など概念的な内容を示すものである、またこの構成に限定されるものではない。
【0162】
具体的な勝ち抜き演算については、図4以下を参照して後述するが、一般的な勝ち抜き演算の内容は以下のようになる。
【0163】
すなわち、文字列を検出する最初のステップとして勝ち抜き演算条件129で直接入力が選択されるとFGシフト回路112の出力から受け取った入力は直接FG勝ち抜き回路113の勝ち抜きレジスタに代入される。
【0164】
本例の場合以上の演算で、全文検索回路の番地126の2番地は論理「1」、その他の番地は論理「0」となる。
【0165】
以降のステップとしてコマンド生成回路127から与えられるシフト演算のための1シフトクロック130に同期して勝ち抜き演算条件129で論理積が選択されると、勝ち抜きレジスタの出力とFGシフト回路112から受け取った入力を論理積演算することで第1回目(初回)の勝ち抜き演算が実行される。
【0166】
所定回数のクロックシフト130と勝ち抜き演算の結果、勝ち抜いた全文検索回路の番地126のFG勝ち抜き回路113の勝ち抜きレジスタ出力は論理「1」となりその他のレジスタ出力は論理「0」となる。
「search」が検索キーワード125の場合、勝ち抜いた全文検索回路の番地126は検索対象の検索キーワード125文字列の先頭番地「s」に該当する文字コードが記憶されている。
【0167】
「search」のキーワードを「hcraes」のように後方から検出した場合には末尾番地「h」を検出することになる。
【0168】
以上が一般的な文字の並び122(文字列)の検出の動作概要である。
【0169】
全文検索の具体例は図4並びに図5から図12で詳細に説明する。
【0170】
(結果出力動作)
結果出力回路107は、所定数の文字の並び122(文字列)があったFG勝ち抜き回路113の出力を論理「1」、その他は論理「0」としてHOSTに出力する機能である。
【0171】
以上のFG勝ち抜き回路113の論理状態は全文検索演算の結果出力回路107から入出力インターフェース115を通じてHOSTへ出力される。
結果出力の方法は、全ての番地の論理状態を出力する方法や、勝ち抜きした番地の番号(アドレス)を出力する方法など任意の方法で良い。
以上説明の通り、この全文検索プロセッサ101は文字記憶素子102並びに、文字検出回路105と文字列検出回路106で構成されるN個の全文検索回路103が並列度Nで全文検索演算を行い、高度で効率的で高速な全文検索を実現する。
【0172】
以上の構成は汎用ロジックのみで実装出来るので、ASIC(Application Specific Integrated Circuit)はもちろんFPGA(Field Programmable Gate Array)でも容易に実現することが可能である。詳細は後述する。
【0173】
(コマンド生成動作)
次に、図4を参照してコマンド生成回路127によるコマンド生成動作、すなわち、全文検索演算条件生成動作について説明する。
【0174】
コマンド生成回路127は、上述したように、HOSTから与えられた検索キーワード125をもとに所定のコマンドを生成するものである。
【0175】
コマンド生成回路127は単に「search」などの検索キーワード125のみならず、ワイルドカードや、文字のギャップ(文字の位置の許容)を含む検索キーワード125など様々な検索条件をもとに全文検索のコマンドを生成する機能を有する。
【0176】
本例では代表例として(1)英文標準(の場合の全文検索)、(2)和文標準(の場合の全文検索)、(3)英文ワイルドカード(の場合の全文検索)、(4)英文文字のギャップ(の場合の全文検索)の4通りのコマンド(命令)を示すものとする。
【0177】
それぞれの表の1行目には全文検索演算の演算ステップ(順序)が示され、どのステップで全文検索回路103にどのようなコマンド(命令)を与えるかが示されている。ここで各ステップはシステムクロック131に同期して実行される。
【0178】
2行目の「比較データ」123には文字検出回路105に与えられる「s」、「e」、「a」、「r」、「c」、「h」や「検:1/3」、「検:2/3」、「検:3/3」、「索:1/3」、「索:2/3」、「索:3/3」などの比較データが示されている。
【0179】
3行目の「シフトクロック」130にはシフトクロック生成回路130から前記FGシフト回路112に与えられるクロック送りが「〇」印で示されている。例えば、「(1)英文標準」の例では、最初の6ステップで比較データが与えられ、次のステップ7から11でFGシフト回路112によるシフト動作が実行されることになる。
【0180】
4行目の「勝ち抜き演算条件」129にはFG勝ち抜き回路113に与える「直接入力」、「論理積」、「マスク(Mask、無視)」、「ギャップ(Gap)演算」などの勝ち抜き演算条件が示されている。
【0181】
図4中、(1)の英文標準の場合の全文検索、(2)の和文標準の場合の全文検索は、標準的な全文検索の例を示すものである。この例では、英文は1バイト6文字「search」、和文の場合3バイト2文字「検索」の全文検索のコマンドの例(いずれも6バイト)を示している。
【0182】
一方、(3)の英文ワイルドカードは、「search」の「a」、「r」がワイルドカード「」、「」に指定されており、この場合の比較データ123、シフトクロック130、勝ち抜き演算条件129は、この図4に示すようになる。この場合には、「」の特殊文字で示されるワイルドカードは、前述の特殊文字ルックアップテーブルの参照により、比較データ123としては無視され、その後、6バイト分のシフト動作が実行されるから、全体のステップ数は上記(1)と(2)の通常の検索のステップ数(この例では11)よりもワイルドカードの文字数分(この例では2文字)少ないステップ数(この例では9)となる。
【0183】
(4)の英文文字のギャップの場合の全文検索は、「h」の文字が「s」、「e」、「a」以降3ポジションのいずれかにある場合、例えば「*h」3Gapなどの特殊文字とポジションの範囲を示す演算条件で、「seah」、「sea*h」、「sea**h」の何れでもマッチとする場合のコマンドの例である。
【0184】
前述した通り本例では、コマンド生成回路127は全文検索プロセッサ101の内部に置くことで説明を行ったが、ソフトウェア処理により、HOSTのCPUから、全文検索プロセッサ101に各ステップ毎に送ることも、一括して送ることも自由である。
【0185】
以下に、英文標準の場合の全文検索、和文標準の場合の全文検索、英文ワイルドカードの場合の全文検索、英文文字のギャップの場合の全文検索の全文検索演算の内容を示す。
【0186】
(英文の場合の標準的な全文検索動作)
図5は、英文の標準的な全文検索におけるデータ状態遷移-A(文字検出工程)を説明するものである。
【0187】
図6は、英文の標準的な全文検索におけるデータ状態遷移-B(文字列検出工程)を説明するものである。
【0188】
図4の(1)で紹介のコマンドをステップ毎に全文検索回路103に逐次与え、このコマンドをもとに全文検索回路103が全文検索処理を行うものとして説明する。
【0189】
本実施形態では、N個(N番地)の全文検索回路103の一部にあたる16個(16番地)の全文検索回路103の各構成におけるデータ状態遷移を示している。
【0190】
本実施形態では、UTF-8文字コードによる16文字の英文テキストデータ「full text search」が、文字記憶素子102の全文検索回路の相対番地104のi+1バイト目(以下単に相対1番地)からi+16バイト目(以下単に相対16番地)まで16バイトで本全文検索プロセッサ101の文字記憶素子102に記憶されているものとする。
【0191】
この文字テキストデータ132に対し、「search」の6文字をバイト数nが6(6バイト長)の検索キーワード125として、全文検索を行う場合の実施形態である。
【0192】
図5から12では省略されているが、ステップ0の初期状態では、全てのFGシフト回路112並びにFG勝ち抜き回路113はクリアされ論理「0」の状態になっているものとする。
【0193】
ステップ1からステップ11までの処理は、コマンド生成回路127から与えられるコマンド(比較データ123、シフトクロック130、勝ち抜き演算条件129)により全文検索回路103が制御を行うものである。
【0194】
図5で示すステップ1からステップ6は、図4の(1)のステップ1からステップ6に対応するもので、記憶された「full text search」の文字テキストデータ132の中から、「search」の文字を検出する処理ステップを示すものである。
【0195】
注目すべき部分は文字を白黒反転し示している。
【0196】
ステップ1では、1バイトで構成される「s」の文字を検出するもので、本実施形態では相対11番地の文字検出回路105が「s」を検出する。
【0197】
検出されたFGは、FGシフト回路112にプリセットされ相対11番地のFGシフト回路112は論理「1」、その他は論理「0」となる。さらにこのFGは、初回勝ち抜きFGとして、FG勝ち抜き回路113への演算条件として「直接入力」が選択されることにより相対11番地のFG勝ち抜き回路113(のレジスタ)には論理値「1」がセットされる。
【0198】
ステップ2では、1バイトで構成される「e」の文字を検出するもので、本実施形態では相対7番地、並びに相対12番地の文字検出回路105が「e」を検出する。
【0199】
検出されたFGは、FGシフト回路112にセットされる。この際、図4(1)に示すようにFG勝ち抜き回路113への演算条件は与えられず、対応する勝ち抜き回路には論理値「0」がセットされたままである。
【0200】
ステップ3からステップ5は、ステップ2と同様の演算の繰り返しであるので割愛する。
【0201】
最後のステップ6では、1バイトで構成される「h」の文字を検出するもので、本実施形態では相対16番地の文字検出回路105が「h」を検出する。
【0202】
検出されたFGとして論理値「1」がFGシフト回路112にセットされる。
【0203】
この例では、与えられた比較データ123の文字列のバイト数nと同数の6つのステップで与えられた検索キーワード125「search」の文字すべてが相対11番地から連続で検出されたことになる。
【0204】
注目すべきは、ステップ6でFGシフト回路112の相対11番地から相対16番地までの連続した6つのFG「1111111」と、ステップ1でセットされたFG勝ち抜き回路113の相対11番地のFGが「1」となっていることである。
【0205】
図6は、ステップ6以降のデータ状態遷移-B(文字の並びの連続検出)を示したものである。
【0206】
図6のステップ6は先に説明の文字の検出の最終結果と同一である。
【0207】
ステップ7からステップ11は、図4の(1)に対応するもので、以上ステップ1~6で検出された「search」の文字の並び122(文字列)を検出する「文字列検出」処理を示すものである。
【0208】
ステップ7では、FGシフト回路112に前記シフトクロック生成回路130から1クロック信号が与えられることによりステップ6で示されるFGシフト回路112のFGを左に1バイト分シフトし、シフトしたFGと、FG勝ち抜き回路113の演算条件を「論理積」(図4(1)参照)とすることによりFG勝ち抜き回路113のFGとの論理積(AND)演算を行う。
【0209】
このステップでは、FG勝ち抜き回路113並びにFGシフト回路112の相対11番地のFGが存在し論理積(AND)条件が成立するので、FG勝ち抜き回路113の相対11番地はステップ6のまま(勝ち残り)、すなわち論理値「1」のままとなる。
【0210】
ステップ8からステップ10は同様な演算の繰り返しであるので割愛する。
【0211】
最後のステップ11は、ステップ10で示されるFGシフト回路112のFGをさらに左に1バイト分シフト(合計左に5シフト)し、シフトしたFGと、FG勝ち抜き回路113のFGとの論理積(AND)演算を行う。
【0212】
このステップでは、FG勝ち抜き回路113並びにFGシフト回路112の相対11番地の双方のFGは存在し論理積(AND)条件が成立するので、FG勝ち抜き回路113の相対11番地はステップ10のまま(論理値「1」のまま)で、勝ち残りとなる。
【0213】
以上与えられた比較データ123の文字列のバイト数n-1回=6-1=5回のシフト演算と論理積(AND)勝ち抜き演算を繰り返し、最後まで勝ち抜いた相対11番地が最終勝ち抜きFGとなる。
【0214】
以上の処理で相対11番地から相対16番地までの文字の並び122(文字列)が、与えられた検索キーワード125条件の文字の並び122(文字列)と同じであることを連続で検出したことになる。
【0215】
以上の説明は図示した範囲の演算内容であるが、実際の処理では文字記憶素子102の1番地からN番地までの文字の並び122(文字列)の中に、与えられた検索キーワード125条件の文字の並び122(文字列)にマッチする(同一である)文字列を連続で検出したことになる。
【0216】
本方式は以上のように、検出された全ての文字が連続した場合のみが最終勝ち抜きFGとなるので、ステップ2で相対7番地と相対11番地の2つの「e」の文字が検出されるが、相対7番地の「e」は文字の並び122(文字列)が成立しないのでノイズとして処理される。
【0217】
この演算結果を、ステップ12で結果出力回路107からHOSTに結果出力することにより、HOSTは対象となる文字テキストデータ132の1番地からN番地の中に「search」という文字列が存在するか否か及びに、どの位置に検索キーワード125の文字列の先頭番地が存在するかを知ることが可能になる。
【0218】
後述するが、与えられた比較データ123の文字列のバイト数nと同数のステップで連続的に文字を検出し、与えられた比較データ123の文字列のバイト数n-1回のシフト演算と論理積(AND)勝ち抜き演算を連続して繰り返すことにより、文字の並び122(文字列)を検出出来ることが特に重要である。
【0219】
与えられた検索キーワード125の文字列の検出においては、必ずしも「search」のように検索キーワード125の文字列の前方から順に検出する必要はなく、「hcraes」のように後方からの検出でも構わない。
【0220】
その場合にはシフトレジスタのシフト動作を右シフトし、末尾番地「h」を検出すれば良い。
【0221】
このようなシフト動作はリバーシブル型シフトレジスタ(正転/逆転可能なシフトレジスタ)とすることで容易に実現することが出来る。
【0222】
(和文の場合の標準的な全文検索動作)
図7は、和文の標準的な全文検索におけるデータ状態遷移-A(文字検出工程)を説明するものである。
【0223】
図8は、和文の標準的な全文検索におけるデータ状態遷移-B(文字列検出工程)を説明するものである。
【0224】
図4の(2)に示したコマンド(比較データ123、シフトクロック130、勝ち抜き演算条件129)をステップ毎に全文検索回路103に逐次与え、このコマンドをもとに全文検索回路103が全文検索処理を行うものである。
【0225】
本実施形態では、N個の全文検索回路103の一部にあたる15個の全文検索回路103の各構成におけるデータ状態遷移を示している。
【0226】
図7に示すように、本実施形態では、UTF-8文字コードによる「全文検索は」の和文の5文字の文字コードが、文字記憶素子102の全文検索回路の相対番地104のi+1バイト目(以下単に相対1番地)からi+15バイト目(以下単に相対15番地)まで15バイトで本全文検索プロセッサ101の文字記憶素子102に記憶されている。
【0227】
以上の文字コードの中から「検索」の2文字をバイト数nが6の検索キーワード125として、全文検索を行う場合の実施形態である。
【0228】
前述同様ステップ1からステップ11までの処理は、コマンド生成回路127から与えられるコマンドにより全文検索回路103が全文検索演算を行うものである。
【0229】
ステップ1からステップ6は、記憶された「全文検索は」の文字テキストデータ132の中から「検」並びに「索」の文字を検出する処理を示すものである。
【0230】
注目すべき部分は文字を白黒反転し示している。
【0231】
ステップ1では、3バイトで構成される「検」の文字コードの最初の1バイト「検:1/3」を検出するもので、本実施形態では、相対7番地の文字検出回路105が「検:1/3」を検出する。
【0232】
検出されたFGは、前述の通りFGシフト回路112にプリセットされる。
さらにこのFGは、前述の通り初回勝ち抜きFGとしてFG勝ち抜き回路113にセットされる。
【0233】
ステップ2からステップ5は同様な演算内容の繰り返しであるので割愛する。
【0234】
最後のステップ6では、3バイトで構成される「索」の文字コードの3番目の1バイト「索:3/3」を検出するもので、本実施形態では、相対12番地の文字検出回路105が「索:3/3」を検出する。
【0235】
検出されたFGは、FGシフト回路112にセットされる。
【0236】
以上与えられた比較データ123の文字列のバイト数nと同数の6つのステップで、与えられた検索キーワード125の「検索」の文字を連続で検出したことになる。
注目すべきは、ステップ6でFGシフト回路112の相対7番地から相対12番地までの連続した6つのFG「1111111」と、ステップ1でセットされたFG勝ち抜き回路113の相対7番地のFGが「1」となっていることである。
図8は、和文の標準的な全文検索におけるデータ状態遷移-B(文字列検出工程)を説明するものである。
【0237】
ステップ6は先に説明の文字の検出の最終結果である。
【0238】
ステップ7からステップ11は、以上検出された「検索」の文字の並び122(文字列)を検出する処理を示すものである。
ステップ7は、前述同様ステップ6で示されるFGシフト回路112のFGを左に1バイト分シフトし、シフトしたFGと、FG勝ち抜き回路113のFGとの論理積(AND)演算を行った結果が示されている。
【0239】
このステップでは、FG勝ち抜き回路113並びにFGシフト回路112の相対7番地並びに相対16番地の双方のFGが存在し論理積(AND)条件が成立するので、FG勝ち抜き回路113の相対7番地はステップ6のまま(勝ち残り)である。
【0240】
ステップ8からステップ10までは同様な演算の繰り返しであるので割愛する。
【0241】
最後のステップ11は、ステップ10で示されるFGシフト回路112のFGをさらに左に1バイト分シフト(合計左に5シフト)し、シフトしたFGと、FG勝ち抜き回路113のFGとの論理積(AND)演算を行うものである。
【0242】
このステップでは、前述同様FG勝ち抜き回路113並びにFGシフト回路112の相対7番地の双方のFGは存在し論理積(AND)条件が成立するので、FG勝ち抜き回路113の相対7番地はステップ10のまま勝ち残りとなる。
【0243】
以上与えられた比較データ123の文字列のバイト数nと同数の6つのステップ-1回=5回のシフト演算と論理積(AND)勝ち抜き演算を繰り返し、最後まで勝ち抜いた相対7番地が最終勝ち抜きFGとなる。
【0244】
以上の処理で相対7番地から相対12番地までの文字の並び122(文字列)が、与えられた検索キーワード125の文字の並び122(文字列)と同じであることを連続で検出したことになる。
【0245】
以上の説明は図示した範囲の演算内容であるが、実際の処理では文字記憶素子102の1番地からN番地までの文字の並び122(文字列)の中に、与えられた検索キーワード125の文字の並び122(文字列)にマッチする(同一である)文字列があるか否かを連続で検出したことになる。
【0246】
この全文検索プロセッサ101の演算結果をHOSTに出力することにより、HOSTは対象となる文字テキストデータ132の1番地からN番地の中に「検索」という文字列が存在するか否か及びに、どの位置(番地)に文字列の先頭番地が存在するかを知ることが可能になる。
【0247】
前述の英文の標準的な全文検索同様、与えられた比較データ123のバイト数nと同数のステップで連続的に文字を検出し、与えられた比較データ123のバイト数n-1回のシフト演算と論理積(AND)勝ち抜き演算を連続して繰り返すことにより、文字の並び122(文字列)を検出出来ることが特に重要である。
【0248】
以上英文、和文2例に過ぎないが、UTF-8などの標準文字コードを用いることにより全世界の言語共通に全文検索出来ることを示した。
【0249】
次に、高度な曖昧全文検索に不可欠なワイルドカード機能とギャップ機能を用いた応用例を示す。
【0250】
(ワイルドカードを適応した場合の全文検索動作)
図9は、英文にワイルドカードを適応した全文検索におけるデータ状態遷移-A(文字検出工程)を説明するものである。
【0251】
図10は、英文にワイルドカードを適応した全文検索におけるデータ状態遷移-B(文字列検出工程)を説明するものである。
【0252】
図4の(3)に示したコマンド(比較データ123、シフトクロック130、勝ち抜き演算条件129)をステップ毎に全文検索回路103に逐次与え、このコマンドをもとに全文検索回路103が全文検索処理を行うものとして説明する。
【0253】
ワイルドカードはスペルが不確かな場合等に用いられるものである。
【0254】
本例では「search」文字列の3文字目、4文字目にワイルドカード「」を適応した場合の例を示している。
【0255】
文字検出のステップ1、ステップ2はこれまでの説明通りである。
【0256】
3文字目、4文字目に特殊文字であるワイルドカード「」を適応した場合、前記コマンド生成回路127は比較データ123を全文検索回路103に与えず、これら3文字目及び4文字目はスキップされ、文字検出工程は実行されない。
【0257】
従って、ステップ3で「c」、ステップ4で「h」の文字を検出する。
【0258】
以上の4ステップで文字の検出は完了であり、必要な文字を連続で検出したことになる。
【0259】
図10は、英文にワイルドカードを適応した全文検索におけるデータ状態遷移-B(文字列検出工程)を説明するものである。
【0260】
ステップ4は先に説明の文字の検出の最終結果である。
【0261】
ステップ5からステップ9が文字列検出ステップとなる。この場合、上記ワイルドカードを含めて検索キーワード125は6バイトであるから、6-1の5ステップ(ステップ5~9)により文字検出工程が実行される。
【0262】
ただし、ワイルドカードに指定されたステップ6、7については、上記コマンド生成回路127の勝ち抜き演算条件生成回路129により生成されFG勝ち抜き回路113に与えられる演算条件として「マスク(無視)」が選択される。このことで、FG勝ち抜き回路113の演算を無視させFG勝ち抜き回路113の論理状態を変化させない。
【0263】
すなわち、ステップ5はワイルドカードの対象外であるので、FG勝ち抜き回路113の演算はこれまでの説明のAND演算である。
【0264】
そして、ステップ6およびステップ7はワイルドカード対象のステップであるので、FG勝ち抜き回路113のAND演算をマスク(無視)し、ステップ6およびステップ7のFG勝ち抜き回路113を勝ち残りのままにしてステップ8に移る。
【0265】
ステップ8およびステップ9はワイルドカード対象外のステップであるので、通常のAND演算を行い、最終ステップ11で相対11番地の「s」が勝ち残る。
【0266】
以上の処理で相対11番地から相対16番地までの文字の並び122(文字列)が、与えられた検索キーワード125の文字の並び122(文字列)にマッチする(同一である)ことを連続で検出したことになる。
【0267】
以上の説明は図示した範囲の演算内容であるが、実際の処理では文字記憶素子102の1番地からN番地までの文字の並び122(文字列)の中に、与えられたキーワード条件の文字の並び122(文字列)にマッチする(同一である)文字列を連続で検出したことになる。
【0268】
本例は文字列の中間にワイルドカードを指定した場合を示したが、文字列の中間のみならず、先頭や末尾など自由な位置にワイルドカードを利用することが可能である。
【0269】
本方式は以上のように外部から与えられる検索キーワード125の文字列にワイルドカードが含まれる場合、ワイルドカードの対象となる処理を省略することにより、ワイルドカード処理を可能にする。
【0270】
(文字のギャップを適応した全文検索)
図11は、英文に文字のギャップを適応した全文検索におけるデータ状態遷移-A(文字検出工程)を説明するものである。
【0271】
図12は、英文に文字のギャップを適応した全文検索におけるデータ状態遷移-B(文字列検出工程)を説明するものである。
【0272】
図4の(4)で紹介のコマンドをステップ毎に全文検索回路103に逐次与え、このコマンドをもとに全文検索回路103が全文検索処理を行うものとして説明する。
【0273】
文字の位置の許容(ギャップ)もスペルが不確かな場合等に用いられるものである。
前述した通り「*h」3Gapの特殊文字と文字のポジションは「h」文字の許容位置を示すもので、本例の場合「sea」が確かで、その後、ギャップが0から2つまでの3か所(ギャップ3)に「h」の文字があると想定される場合、つまり「seah」「sea*h」「sea**h」の何れでもマッチとする演算方法である。その具体例を以下に示す。
【0274】
ステップ1からステップ3までの「sea」の文字の検出はこれまでの説明通りである。
【0275】
ステップ4では、「*h」の特殊文字にギャップ3が指定されている。
【0276】
「h」が指定されているので、相対16番地のFGシフト回路112が論理「1」にセットされる。
【0277】
以上で文字の検出は完了であり、必要な文字を連続で検出したことになる。
【0278】
図12は同じく文字列検出工程におけるデータ状態遷移-Bを示すものである。
【0279】
ステップ4は先に説明の文字の検出の最終結果である。
【0280】
文字列の検出ステップ5は従来と同じである。
【0281】
ギャップ指定の場合、ステップ6で勝ち残りとなっているFG勝ち抜き回路113はステップ7、8、9の各ステップの何れかで「h」を検出した場合にFG勝ち抜き回路113を勝ち残りとするギャップ演算が実行される。
【0282】
ギャップ演算はFG勝ち抜きレジスタの勝ち抜きメインレジスタと勝ち抜きサブレジスタを併用した演算が実行される。
【0283】
具体的には、ステップ6でこれまで勝ち抜いてきた相対番地の勝ち抜きサブレジスタを論理「1」にセットする。
【0284】
従って、本例では相対11番地の勝ち抜きサブレジスタは論理「1」となる。
【0285】
ステップ7は「seah」の文字の並び122(文字列)を探すものである。
【0286】
勝ち抜きサブレジスタは論理「1」のままになっている。
【0287】
相対11番地のFGシフト回路112の出力は論理「0」になり、勝ち抜きサブレジスタは論理「1」、双方の論理積(AND)条件は成立しないため、勝抜きメインレジスタは「1」に復活出来ない。
【0288】
ステップ8は「sea*h」の文字の並び122(文字列)を探すものである。
【0289】
勝ち抜きサブレジスタは論理「1」のままになっている。
【0290】
相対11番地のFGシフト回路112の出力は論理「0」になり、勝ち抜きサブレジスタは論理「1」、双方の論理積(AND)条件は成立しないため、前記同様、勝ち抜きメインレジスタは「1」に復活出来ない。
【0291】
ステップ9は「sea**h」の文字の並び122(文字列)を探すものである。
【0292】
相対11番地の勝ち抜きサブレジスタは論理「1」となっている。
【0293】
このステップで相対11番地のFGシフト回路112は論理「1」になる。
双方の論理積(AND)条件が成立するので勝ち抜きメインレジスタは論理「1」に復活する。
【0294】
もし、ステップ7、8、9の何れでも、相対11番地のFGシフト回路112は論理「1」と勝ち抜きサブレジスタの論理「1」論理積(AND)演算条件が成立しない場合は相対11番地の勝ち抜きメインレジスタは勝ち残れない。
【0295】
このステップの直後のステップ10で結果出力回路107により演算結果を出力する。
【0296】
以上の演算並びに出力により、「seah」「sea*h」「sea**h」のように文字間のギャップを含む文字列の全文検索が可能になる。
【0297】
説明は省略するが、後方からの文字列検出により、任意の位置にギャップ設定が可能である。
【0298】
以上のようなワイルドカード機能やギャップ機能で、全文検索操作の利便性を高めることが可能になる。
【0299】
本方式は以上の説明の通り、外部から与えられる検索キーワード125の文字列に文字のギャップ許容が含まれる場合、勝ち抜き回路に2組のレジスタを組み込むことにより、ギャップ許容処理が可能になる。
【0300】
ワイルドカード機能やギャップ機能も、標準的な全文検索と同様もしくはそれ以下のステップ数で処理出来ることが特に重要である。
【0301】
本実施形態ではワイルドカード機能やギャップ機能を指定する特殊文字を「」や「*」で示したがこれに限るものではない。
【0302】
本方式の最大の特徴は並列度Nによる全文検索演算で、多様な全文検索(キーワード検索含む)のニーズに不可欠な前方一致、中間一致、後方一致はもとより、文字のワイルドカード機能やギャップ機能を適応した高度な全文検索が可能であることである。
【0303】
形態素方式インデックスではないので、流行語のような新しい用語にもリアルタイム対応が可能である。
【0304】
さらに本方式は、文字コードがバイト(8ビット)の整数倍単位で定義されるものであれば、どのような文字コードであっても全文検索が可能である。
従って本方式により、全文検索システムを世界の言語共通に標準化することが可能になる。
【0305】
(本実施形態のアルゴリズムの新規性と高速性)
本実施形態のアルゴリズムの新規性と高速性について説明する。
【0306】
特許文献2で示した「特許第4588114号 情報絞り込み検出機能を備えたメモリ、その使用方法、このメモリを含む装置」において、シフトレジスタによるパターンマッチングの手法が示されている。
【0307】
この手法による画像のハードウェアパターンマッチングは、従来のCPUによるソフトウェアパターンマッチングに比較して1万倍高速化出来ることが確認されている。
【0308】
然しながらこの先願発明のパターンマッチングは、画像のパターンマッチングが主目的であるので、画像処理に伴う様々なマッチング条件を満たす必要があり、多くのステップが必要な構成になっている。
【0309】
従って従来方式でnバイト連続した文字列を検出する場合、n回の文字検出演算と、1+2+3+・・・(n-1)回の文字列検出のためのシフト演算が必要になる。
【0310】
これに比較して本方式は図5から図12で示した通りn回の文字検出演算+(n-1)回の文字列検出のためのシフト演算、合計n×2-1回で全文検索のパターンマッチング処理が出来る。
【0311】
従って本方式は従来方式の演算回数に比較して例えば、日本語2文字6バイトの場合、従来方式は6(文字の検出)+15(5+4+3+2+1)(文字列の検出)=21回の演算に対し、本方式は6(文字の検出)+5(文字列の検出)=11回の演算となるので、演算回数が21/11=約1/2に削減される。
【0312】
日本語4文字12バイトの場合、従来方式は12(文字の検出)+78(11+10・・・+2+1)(文字列の検出)=90回の演算に対し、本方式は12(文字の検出)+11(文字列の検出)=23回の演算となるので、演算回数が90/23=約1/4に削減される。
【0313】
日本語8文字24バイトの場合、従来方式は24(文字の検出)+300(23+22・・・2+1)(文字列の検出)=324回の演算に対し、本方式は24(文字の検出)+23(文字列の検出)=47回の演算となるので、演算回数が324/47=約1/7に削減される。
【0314】
以上のように本方式は、特に検索キーワード125の文字列が長い場合に有利であり、ワイルドカード機能やギャップ機能を含んだ演算もシンプルで効率的である。
【0315】
従って、このアルゴリズムを利用することにより全文検索の性能が大幅に向上し、インデックスがなくとも高速な全文検索システムが実現する。
【0316】
(全文検索プロセッサの全体構成)
図13は全文検索プロセッサの全体構成の一例を示す。
【0317】
この例では、HOSTからの入力1で示す文字テキストデータ132は入出力インターフェース115を通じてHOSTのCPUから直接もしくはDMA(Direct Memory Access)方式でデータ転送がなされ、文字記憶素子102には、Nバイトの文字コードが記憶されている。
【0318】
HOSTからの入力2で示す全文検索の検索キーワード125は入出力インターフェース115を通じてHOSTから与えられる。
【0319】
この検索キーワード125はコマンド生成回路127で全文検索演算条件114に変換される。
【0320】
全文検索演算条件114の1つは比較データ生成回路123で作成される比較データ123であり、この比較データ123は文字検出回路105の入力に与えられる。
【0321】
全文検索演算条件114のもう1つはシフトクロック生成回路130で作成されるシフトクロック130並びに、勝ち抜き演算条件生成回路129で作成される勝ち抜き演算条件129であり、この2つの信号は文字列検出回路の入力に与えられる。
【0322】
本例では比較データ123の8ビットのデータ「s」:「01110011」が先に示した通りビット毎に比較演算され、その比較演算結果が1ビット一致検出回路109の演算結果として示されている。
【0323】
全文検索回路の番地126の2番地は1バイトの1ビット一致検出回路109の演算結果が「11111111」であるので、8入力論理積回路110の出力は論理「1」となる。
【0324】
この演算結果は、FGシフト回路112のシフトレジスタに論理「1」としてセットされている状態を示している。
【0325】
さらに、全文検索回路の番地126の2番地のFG勝ち抜き回路113のレジスタは勝ち残っていて論理「1」、2番地以外は論理「0」となっている状態を示している。
【0326】
以上のFG勝ち抜き回路113の論理状態は全文検索演算の結果出力回路107から入出力インターフェース115を通じてHOSTへ出力される。
結果出力の方法は、前述の通りである。
効率的な結果出力方法について後述する。
【0327】
(絞り込み検索及び総合出力を行うプロセッサの構成例)
図14は、絞り込み検索を行う場合の全文検索プロセッサの構成を説明するものである。
一例として、「検索」、「情報」、「検出」のように複数のキーワードで絞り込み検索を行う場合のブロックダイアグラムである。
論理和(OR)回路111は、全ての結果出力回路107の出力を論理和(OR)するものであり、どこか一か所でも勝ち抜きがあれば、総合結果出力回路108をセットする。
【0328】
絞り込み検索演算は以下の通りである。
【0329】
初回「検索」のキーワード検索で勝ち抜きがあった場合、総合結果出力回路108はセットされる。
【0330】
次回「情報」のキーワード検索で勝ち抜きがあれば、総合結果出力回路108はセットされたままになる。
【0331】
次々回「検出」のキーワード検索で勝ち抜きがあれば、総合結果出力回路108はセットされたままになる。
【0332】
この総合結果出力をHOSTに送れば、HOSTは文字記憶素子102の1番地からN番地までの中に、「検索」と「情報」と「検出」の3つの文字列が全て存在することを知ることが出来る。
【0333】
もし次回「情報」や次々回「検出」のキーワード検索で勝ち抜きが無ければ、総合結果出力回路108はクリアされる。
【0334】
この総合結果出力をHOSTに送れば、HOSTは文字記憶素子102の1番地からN番地までの中に、「検索」と「情報」と「検出」の3つの文字列が全て一緒に存在しないことを知ることが出来る。
【0335】
以上説明の通り、複数の検索キーワード125で絞り込み検索を行い、検出した文字の並び122(文字列)の検出の結果をバイト毎にN並列に出力する機能の検出結果の論理和(OR)演算を行い、全文検出結果の有無を総合結果出力としてHOSTに出力する手法はHOST側の結果出力処理を大幅に軽減する。
【0336】
本実施形態では、結果出力1からN全体の論理和111を取り外部に出力する構成を示したが、1からNを適切なサイズに分割して、分割した範囲毎に論理和回路111並びに総合結果出力回路108を外部に出力する構成にすることも可能である。
【0337】
以上のような構成とすることにより、分割した範囲より短い文字列の文字テキストデータ132が沢山ある場合には、分割された範囲それぞれに文字列を記憶し全文検索演算を実施することにより、範囲毎に記憶された文字列の全文検索結果を得ることが出来る。また限られたデータサイズであれば、HOST側でどこに文字列があるのか探すことが容易になる。
【0338】
またFG勝ち抜き回路113は、FGシフト回路112との1ビット演算において、これまで説明の直接入力や論理積(AND)演算、論理和(OR)演算、マスク(無視)演算、ギャップ演算の他に、必要に応じて否定(NOT)演算、排他(Exclusive)演算、カウンタ演算など、各種ブール演算を実現出来る構成にすることにより、より高度な全文検索が可能になる。
【0339】
否定(NOT)演算の一例を挙げれば、検索キーワード125が「京都」の文字列の場合、「東京都」の文字列がノイズとして検索されるなどの問題を解決するにあたって、「京都」の前に「東」が含まれない文字列(「東」の論理否定)を探し出すのに有効な機能である。
【0340】
総合結果出力回路108も同様に、論理積(AND)演算、論理和(OR)演算、否定(NOT)演算、勝ち抜きサブレジスタや、カウント演算などその他必要な演算を実現出来る構成にすることにより、後述するバッチ処理による複数のバッチ演算(長い文章の演算)の検出結果をまとめて最後に出力するなど、より利便性の高い全文検索が可能になる。
【0341】
(本実施形態の全文検索の特徴)
この全文検索プロセッサ101の全文検索の特徴を記す。
【0342】
第1に、本方式は、N-gram 転置インデックスと等価な全文検索処理をハードウェアで行うものであり、任意の文字の長さの転置インデックスが可能である。
【0343】
N-gram 転置インデックスは全文検索機能のバリエーションが広く、検索洩れが少ないのが特徴である。
【0344】
然しながらN-gram 転置インデックスはインデックスの数が大きくなりインデックスのメモリ容量が大きくなる傾向があるが、本方式はインデックスを作成する必要がないのでインデックスのメモリ容量を考慮する必要がない。
【0345】
第2に、この全文検索プロセッサ101を利用すると、転置インデックスのような複雑なアルゴリズムが不要になるので、専門性が低減し専門家が不要になる。
【0346】
また、各国の言語の壁をなくして全文検索の標準化を可能にする。
【0347】
第3に、この全文検索プロセッサ101の全文検索アルゴリズムは超高速な全文検索を可能にすることである。
【0348】
しかも前方一致、中間一致、後方一致のみならず、ワイルドカード機能やギャップ機能などの高度な処理も最少の演算回数で処理可能である。
全文検索プロセッサ101を用いた全文検索の処理時間の実例については、図18、20で後述する。
全文検索プロセッサ101の様々な特徴を活用した構成例を以下に示す。
【0349】
(外部メモリ方式全文検索プロセッサの例)
図15は、外部メモリ方式全文検索プロセッサの概要を説明するものである。
【0350】
先に示した通り、本全文検索プロセッサ101は、N個の全文検索回路103が並列度N(全並列)で演算を行い、効率的で高速な文字列検索を実現するものであるが、N個の全文検索回路103の数を無制限に大きくすることは出来ない。
【0351】
従って、大きなサイズの文字テキストデータ132を本全文検索プロセッサ101に記憶することは出来ない。
【0352】
この問題を解決するのが、バッチ処理方式である。
【0353】
本全文検索プロセッサ101の上部にHOSTコンピュータが示されている。
【0354】
詳細は図21で示すが、このHOSTコンピュータにはメモリもしくはストレージが配置されている。
【0355】
これらのメモリもしくはストレージに記憶されている文字テキストデータ132は、PCIeやUSBなどの標準インターフェース116を通じ本全文検索プロセッサ101にデータ転送が可能な構成になっている。
【0356】
またHOSTからの検索キーワード125並びにHOSTへの結果出力も標準インターフェース116を通じて通信される構成になっている。
【0357】
以下、全文検索回路103のNが32K(32×1,024)であり1バッチのデータ量が32Kバイトの場合のバッチ処理について説明する。
【0358】
ちなみに32Kは、特許文献3「特許第5981666号」の発明で、これまで研究を行ってきたFPGAによる並列処理の並列度を参考にしたものである。
【0359】
先ずはこのメモリがDRAMメモリである場合を説明する。
【0360】
DRAMメモリは現在のコンピュータの主記憶装置であり、サーバーやPCからスマートフォンに至るまであらゆる種類のコンピュータに利用されている。
これらのDRAMメモリは単体で利用されることは少なく、JEDEC(Solid State Technology Association)などの規格に準じたメモリモジュール(DIMM)として利用される。
【0361】
現在主流のDIMM(Dual Inline Memory Module)はDDR4とよばれる規格のDRAMで、メモリ容量が8Gバイト程度であり、データ転送能力は10Gバイト/秒から40Gバイト/秒の性能を持つ。
【0362】
8GバイトをUTF-8漢字3バイトコードで使用する場合、80億バイト/3バイトで26億の和文文字を記憶することが出来る。
【0363】
(データの転送方法の例)
図16は、外部メモリ方式全文検索プロセッサ101と外部メモリもしくはストレージとのデータ転送の概要を説明するものである。
【0364】
本例では、DIMMメモリやストレージのテキストデータを全文検索プロセッサ101の文字記憶素子102に書き込みを行う場合の概念を示す。
【0365】
この際、何処にどの文書類の文字テキストデータ132を記憶したか、もしくは記憶するかは、通常の情報処理と同様、HOSTがFAT(File Allocation Table)にもとづき管理する。
【0366】
メモリからの読み出しも同様にFATを参照し、対象となる文章のテキストデータをDIMMメモリから読み出し、所定容量の文字テキストデータ132を全文検索プロセッサ101に書き込みすることになる。
【0367】
DIMMメモリに書き込まれた文字テキストデータ132は、通常64ビット(8バイト)単位で全文検索プロセッサ101の文字記憶素子102にバースト転送(書き込み)される。
【0368】
次に外部メモリから全文検索プロセッサ101にデータを転送する場合の考え方を説明する。
【0369】
メモリから、テキストデータを転送する場合3つのケースが存在する。
【0370】
対象となる文字テキストデータ132が32Kバイトより大きい場合、文字テキストデータ132を分割して本全文検索プロセッサ101にデータを送りバッチ処理すれば良い。
【0371】
毎次のバッチデータ転送の際、前回転送した末尾の数十バイト程度(検索最大文字列数)を次回転送時に重複して転送することにより、検索洩れをなくすことが出来る。
【0372】
対象となる文字テキストデータ132が32Kバイトより小さく32Kバイトに近い場合、1バッチを1ファイルの文字テキストデータ132とすれば良い。
【0373】
対象となる文字テキストデータ132が32Kバイトより大幅に小さい場合は、1バッチに複数ファイルの文字テキストデータ132を書き込みすれば良い。
【0374】
HOSTは、どのような文字テキストデータ132のファイルをバッチ処理したか分かっているので、本全文検索プロセッサ101の演算結果と文字テキストデータ132を関連付けすることが可能である。
【0375】
(バッチ処理方法の例)
図17は、外部メモリ方式全文検索プロセッサのバッチ処理のタイムチャートを説明するものである。
【0376】
外部メモリと本全文検索プロセッサ101をバッチ処理する場合のタイムチャートを示すものであり、1バッチからXバッチまでのバッチ処理と、1からYまでのY回の連続検索を行い、Y回目の検索結果をHOSTに出力する場合のタイムチャートが示されている。
【0377】
以下の説明は、これまで説明の汎用DIMMメモリを利用し、バッチ回数Xを250,000バッチとする場合の全文検索処理の概要を示す。
8Gバイトを250,000バッチで処理する場合、1バッチは32Kバイトとなる。
【0378】
先ずはデータ転送能力について考察する。
【0379】
8Gバイト全部のデータを32Gバイト/秒で転送する場合には、250m秒である。
【0380】
バッチ処理で分割してデータを転送する場合でも、データ転送時間の合計は250m秒である。
【0381】
仮に1秒以下をリアルタイム検索時間と定義すると、残り最大750m秒を検索演算に利用することが出来る。
【0382】
逆に1バッチ毎のデータ転送時間と検索演算時間の関係を説明する。
【0383】
先に示した全文検索回路103の並列度Nが32Kで、1バッチのデータ量が32Kバイトの場合、8Gバイトのバッチ数Xは250,000となり、1秒以内で全文検索を行う場合、1バッチの処理時間は最大4μ秒となる。
32Gバイト/秒のデータ転送能力の場合、1バッチ32Kバイトのデータ転送時間は1μ秒となる。
【0384】
従って、残り3μ秒をこの全文検索プロセッサ101の検索時間に利用することが可能になる。
【0385】
先に述べたように、本全文検索プロセッサ101は、数十ステップ(クロック)で1回の検出処理を実行することが可能である。
詳細は図18で説明するが、一般的な全文検索は3から4文字の2から3種類がキーワードであるので50ステップあれば十分であり、システムクロック131を10n秒として1バッチ50ステップの処理を250,000(250K)回バッチ処理した場合(8Gバイト)の演算処理時間は125m秒となる。
250m秒(データ転送時間)+125m秒(演算処理時間)、双方合わせて375m秒はインデックスを使った全文検索に遜色のない演算性能である。
【0386】
現在主流になっているDIMMメモリをそのまま活用出来るのも重要な特徴である。
【0387】
N-gram方式の精度の良い検索能力と検索スピード性能を活かせば、曖昧検索や同義語検索が可能になる。
【0388】
HOSTの処理はバッチ毎に出力される、検索結果あり/なしの結果を受け取るのみであるので、検索の負担が少なく、システム全体としての低消費電力化が可能になる。
【0389】
もちろん、図13で示すように検索処理毎に検索のバイト位置を含め検索結果をHOSTに送ることも可能である。
【0390】
(外部メモリ方式応用例1(増設))
以上の説明は8GバイトDDR4のDIMMメモリ1枚に対するものであった。
【0391】
もし容量を増やす場合には、必要数(必要容量)のDIMMと同数の本全文検索プロセッサ101を利用し、HOSTからの制御を並列にすることにより容易に増設が可能になる。
【0392】
この場合、本全文検索プロセッサ101は独立して検索処理を行うので、メモリ容量が増えても全文検索時間は同じである。
【0393】
(外部メモリ方式応用例2(不揮発性メモリ))
DRAMは揮発性のメモリであるので、電源を切ると記憶されたデータは消去されてしまい再度記憶し直す必要がある。
【0394】
不揮発性のメモリ(ストレージ)を使用する場合について説明をする。
【0395】
近年のSSD(Solid State Drive)はデータ転送能力が改善されて、7Gバイト/秒のように高速なデータ転送能力を持つものも存在する。
【0396】
然しながら先ほど説明の32Gバイト/秒の転送能力を持つDRAM方式に比較すると、数分の1の転送能力しか持ち合わせしていない。
【0397】
このような場合、複数のSSDをRAID(Redundant Arrays of Inexpensive Disks)-0接続して利用することにより、データ転送能力がDRAMと同様な性能を持ち、不揮発性のシステムを実現することが出来るようになる。
SSDの記憶容量は1モジュール1Tバイトなど、先に示した8GバイトのDRAM方式のメモリより100倍以上記憶容量が大きい。
【0398】
従って、1Tバイトのメモリ空間全てを文字テキストデータ132として利用する場合、バッチ処理回数が100倍以上になり検索時間が大幅に遅くなる。
【0399】
1Tバイトのメモリ空間には文字テキストデータ132だけでなく、音声、ビデオ、ログファイル、位置情報、センサ情報等のさまざまなデータも利用すると良い。
【0400】
DRAMは不揮発性データであることから、文字テキストデータ132は必ずどこかのストレージに保管しなくてはならない。
【0401】
本方式は、SSDに保管した文字テキストデータ132をそのままの状態で、しかも電源立ち上げ直後からリアルタイムで全文検索に利用出来るのが大きな特徴である。
【0402】
以上説明の外部メモリまたはストレージとのバッチ方式の全文検索プロセッサ101は、ASICのみならずFPGAで実現出来る。


FPGAは機能の追加や削除が柔軟に出来るので、システムに最適な全文検索プロセッサ101を実現することが可能になる。
【0403】
(外部メモリ方式全文検索プロセッサの演算能力について)
図18は、これまで説明の外部メモリ方式全文検索プロセッサの演算能力を取り纏めしたものである。
【0404】
本願発明の性能は、バッチデータの転送能力、全文検索回路103の並列度N、並びに演算機能のシステムクロック131速度、そしてバッチ回数Xで定まる。
【0405】
一例として「情報処理」と「全文検索」の和文4文字で2組の全文検索の場合を想定する。
【0406】
和文UTF-8文字コードの場合、1文字ほぼ3バイト文字コードになるので、1組は12バイト構成になる。
【0407】
従って4文字1組の文字列の検出は、12×2-1=23ステップ、4文字2組の場合、結果出力やレジスタのクリアなどの処理を含め約50ステップ程度となる。
【0408】
「full text search process」 など合計24文字、24バイト構成の英文のキーワード検索は、文字の検出が24ステップ、文字の並び122(文字列)の検出が23ステップとなり、結果出力やレジスタのクリアなどの処理を含め約50ステップ程度である。
【0409】
一般的な検索では以上のような検索条件となるので、50ステップ(クロック)を標準的な全文検索のステップ数(クロック数)として、これまで説明の全文検索プロセッサ101の代表的な性能を取り纏めする。
【0410】
図表の上段に示す外部メモリ方式-A(低速)は、図15で説明の全文検索プロセッサ101によるもので、本例ではこれまでの説明の通り1バッチの処理数が32Kバイト(並列度は32K)で外部メモリとのデータ転送が32Gバイト/秒(低速)、演算時間はシステムクロック131が10n秒(低速)で50ステップとした場合のバッチ毎の演算時間を示したものである。
【0411】
図表には以上の条件をもとにしてバッチ処理数、その検索データ量、そしてこのデータを転送するための転送時間、検索演算時間、合計処理時間=データ転送時間+検索演算時間、以上が示されている。
【0412】
本方式は後述する内部メモリ方式に比較すると処理時間は遅いが、市場に出回っているDRAMやSSD並びにFPGAで直ぐにでも利用出来るのが特徴である。
【0413】
図表の「バッチ処理数250Kで、合計処理時間が375m秒」の部分が先に図17で示した演算能力である。
【0414】
図表の下段に示す外部メモリ方式-B(高速)は、ASICを開発しデータ転送能力の高いHBM(High Band Memory)を使用した場合のバッチ毎の演算時間を取り纏めしたものである。
【0415】
本例ではこれまでの説明の通り1バッチの処理数が32Kバイト(並列度は32K)で、外部メモリとのデータ転送が320Gバイト/秒(高速)、演算時間はシステムクロック131が5n秒(高速)で50ステップとした場合のバッチ毎の演算時間を示したものである。
【0416】
外部メモリ方式-A(低速)に比較して4.3倍高速である。
【0417】
(内部メモリ方式全文検索プロセッサ)
図19は、内部メモリ方式全文検索プロセッサの概要を説明するものである。
これまで説明の外部メモリ方式の場合はメモリもしくはストレージと全文検索プロセッサ101が分離され、バスボトルネックの影響でデータ転送時間に時間がかかっていた。
【0418】
図は全文検索プロセッサ101のASIC化を行い、データの幅が文字記憶素子102と同数のNで、アドレスが1からMまでの内部メモリ120もしくは内部ストレージ121を本全文検索プロセッサ101の内部に組み込んだものである。
【0419】
図では、アドレス1からMまで、データ幅が文字記憶素子102のデータ数と同数のデータ幅を持った内部メモリ120もしくは内部ストレージ121が本全文検索プロセッサ101内部に組み込みされており、任意のアドレスを選択することにより行方向のデータを全並列に文字記憶素子102に代入出来る構成としている。
【0420】
以上の構成にすることにより、外部から転送していた文字テキストデータ132のデータ転送に替わり、アドレスが1からMの任意のアドレスを選択し文字記憶素子102に代入処理(アクセス)することでデータ転送が行われることになるので、これまで説明のバッチ処理より高速な全文検索処理を実現することが出来る。
【0421】
内部メモリ120はこれまで説明のDRAMやSRAM、内部ストレージ121はNAND型やNOR型のSSDのメモリのみならず、スピントロニクス型メモリや抵抗変化型メモリが対象になる。
【0422】
言うまでもなくアクセス時間が速い方が有利である。
【0423】
不揮発性FLUSH メモリの場合、NAND型に比較してNOR型のSSDは速いアクセス時間が期待出来る。
【0424】
また半導体製造技術では、SoC(System-on-a-Chip)、SiP(System in Package)、さらにはWoW(Wafer on Wafer)や3D実装など最新の半導体技術を駆使した全文検索プロセッサ101が期待出来る。
【0425】
FPGAの内部に、これらの全文検索が可能な内部メモリ120や内部ストレージ121を組み込むことも可能である。
【0426】
バッチ処理や全文検索演算内容は、これまで説明の外部メモリ方式の全文検索プロセッサ101と同様である。
本方式のシステムの性能について以下に説明する。
【0427】
(内部メモリ方式全文検索プロセッサの演算能力)
図20は、これまで説明の内部メモリ方式全文検索プロセッサの演算能力を取り纏めしたものである。
【0428】
図表の上段に示す内部メモリ方式-A(低速)は、図19で説明の全文検索プロセッサ101によるもので、これまでと同様1バッチの処理数が32Kバイト(並列度は32K)で、ストレージ型のメモリを想定し内部メモリ120のデータ転送時間が100n秒(低速)で、演算時間はシステムクロック131が2n秒(低速)で50ステップとした場合のバッチ毎の演算時間を示したものである。
【0429】
図表には以上の条件をもとにしてバッチ処理数、その検索データ量、そしてこのデータを転送するための転送時間、検索演算時間、合計処理時間=データ転送時間+検索演算時間、以上が示されている。
【0430】
本方式は外部メモリ方式-A(低速)に比較すると処理時間が7.5倍高速である。
【0431】
外部メモリ方式-B(高速)に比較すると処理時間が1.75倍程高速である。
図表の下段に示す内部メモリ方式-B(高速)は、これまでと同様1バッチの処理数が32Kバイト(並列度は32K)で、DRAMメモリ等、高速な内部メモリ120を想定したものでデータ転送時間が10n秒(高速)で、演算時間はシステムクロック131が1n秒(高速)で50ステップとした場合のバッチ毎の演算時間を示したものである。
【0432】
本方式は内部メモリ方式-A(低速)に比較すると処理時間が3.3倍高速である。
【0433】
本方式は外部メモリ方式-A(低速)に比較すると処理時間が25倍高速である。
【0434】
外部メモリ方式-B(高速)に比較すると処理時間が5.8倍高速である。
【0435】
内部メモリ方式-A(低速)、内部メモリ方式-B(高速)、双方の検索データ量は全文検索プロセッサ101内部に集積するメモリの容量になるので、メモリの搭載技術が今後の研究テーマとなる。
【0436】
もし1秒以内の検索時間を期待するのであれば、外部メモリ方式-A(低速)の場合には500Kバッチ、16Gバイトのデータ量の全文検索が可能になる。
外部メモリ方式-B(高速)の場合には2Mバッチ、64Gバイトのデータ量の全文検索が可能になる。
【0437】
内部メモリ方式-A(低速)の場合には4Mバッチ、128Gバイトのデータ量の全文検索が可能になる。
【0438】
内部メモリ方式-B(高速)の場合には16Mバッチ、512Gバイトのデータ量の全文検索が可能になる。
【0439】
図表に示した性能は1つの全文検索プロセッサ101の性能であるので、全文検索プロセッサ101を複数並列接続して利用することにより、同一時間でデータ検索量を増やすことが可能になる。
【0440】
また図表に示した各諸元は現在の半導体技術レベルの推定値によるものであるので、今後の半導体技術の向上により高性能な全文検索プロセッサ101が期待出来る。
【0441】
内部メモリ方式の全文検索プロセッサ101を開発するにあたっては、高速・小容量/中速・中容量/低速・大容量など幾つかのタイプに分類し、発熱やチップサイズや経済性を考慮して最適な方式を選択すると良い。
【0442】
チップが開発されれば、利用者はどのような性能や機能を必要とするかにより最適なチップを選択すれば良い。
【0443】
本方式のメリットの一つは、以上のように全文検索時間を事前に予測出来ることである。
【0444】
前述した通り、全文検索プロセッサ101に利用されるメモリは、これまで説明のDRAMやNAND型やNOR型のストレージに限定されるものではなく、今後期待される新しいメモリを利用することも自由である。
【0445】
前述した通り、ASICのみならずFPGAに組み込むことも可能である。
【0446】
以上の図18、20に示す演算能力は、実現性を保証するものではない。
また理論値であるので、一定のオーバーヘッドを加味する必要がある。
【0447】
(全文検索プロセッサを利用する場合のシステム構成例)
図21は、全文検索プロセッサを利用する場合のシステム構成例を説明するものである。
【0448】
図15で示した外部メモリ方式全文検索プロセッサ101並びに、図19で示した内部メモリ方式全文検索プロセッサ101の利用方法は様々な方式があるが、代表的な2例を紹介する。
【0449】
システム構成例-Aは、図15で示した外部メモリ方式全文検索プロセッサ101のシステム構成例で、システムボード124の外部に全文検索プロセッサ101を接続し利用する場合の例である。
【0450】
システムボード124から、DRAMメモリのデータもしくはストレージのデータをPCIeやUSBなどの標準インターフェース116に接続して利用する場合の例である。
【0451】
システムボード124には、DRAMメモリが搭載されると共にストレージが外部接続されている。
【0452】
この場合、全文検索プロセッサ101には標準インターフェース116を通じて、DRAMメモリもしくはストレージからの文字テキストデータ132の転送と、HOSTからの検索キーワード125、並びにHOSTへの演算結果出力信号が授受される。
【0453】
USBの場合の現時点での最大伝送帯域は最大5Gbps(USB3.0)である。
【0454】
一方、PCIeの場合、数十Gバイト/秒から数百Gバイト/秒まで様々な広帯域の伝送能力を持っているので、システムの性能に合わせたPCIeの規格を利用すると良い。
【0455】
システム構成例-Bは、図19で示した内部メモリ方式全文検索プロセッサ101のシステム構成例で、システムボード124の内部にメモリやストレージを内蔵した全文検索プロセッサ101を組み込み利用する場合の例である。
【0456】
この例では、システムボード124内部に全文検索プロセッサ用インターフェース119を使用して全文検索を行う場合の例である。
【0457】
これまでの説明は、HOSTが検索キーワード125を全文検索プロセッサ101に送り、コマンド生成回路127が図5から12に示す各ステップのコマンド(コントロール)信号を全文検索回路103に送り、全文検索回路103は全文検索演算を行い、その演算結果出力をHOSTが受信することとして説明をしている。
【0458】
HOSTは、全文検索プロセッサ101から送られてくるバッチ毎の検索結果を受信し、総合結果出力回路108の結果出力が「有り」のバッチが分かれば、当該バッチデータのどの部分に検索対象の文字列があるかHOSTで確認することが出来る。
【0459】
システムを構築するにあたっては、求められる演算性能や機能並びに全文検索プロセッサ101の並列数に応じて適切なHOSTやアプリケーションソフトウェアを準備することは言うまでもない。
【0460】
以下に全文検索プロセッサ101のシステム応用実施形態を示す。
【0461】
(WEB検索システム-1)
WEB検索サイトの全文検索は極めて過酷である。
【0462】
WEB検索サイトの場合、対象となる文字テキストデータ132のデータ容量が膨大であること、さらに極めて多くの人々が時間に関係なく利用するからである。
【0463】
仮に日本人5千万人が平均1日10回日本語の検索サイトの検索を行う場合、500M回(50M人×10回)/86,400秒=1秒間に約5,787回の検索が行われることになる。
【0464】
逆算すれば一回当たりの処理時間は1/5,787=173μ秒になる。
【0465】
従って、少なくともこの時間の半分以下の時間で検索処理を完了出来るようにする必要がある。
【0466】
以上の場合、先に示した内部メモリ方式-Bの1Kバッチ(32Mバイト)の60μ秒がこれに相当する。このタイプのプロセッサを利用することでも良いが、1Mバッチ(32Gバイト)の60m秒の全文検索プロセッサ101の1,000個に同一のデータを書き込み、分散処理することも可能である。
【0467】
半導体チップへの実装やプリント基板にその半導体チップを実装する場合、小さなチップを沢山利用するより大きなチップを利用する方が有利になる。
以上のようなマルチアクセスを考慮し、適切な性能の本全文検索プロセッサ101を利用すると良い。
【0468】
一般的なWEB検索サイトは、現在システムコスト削減の観点からHDD方式のストレージを利用したシステムとしているが、今後SSDタイプのストレージのコストが低減された場合には徐々にSSD方式のストレージに置き換わるものと思われる。
【0469】
その場合には、本方式の全文検索エンジンを利用するとインデックスの様々な制約から解放されるので、システムの運用コストを削減しリアルタイム性の高いWEB検索システムとすることが期待出来る。
【0470】
(WEB検索システム-2)
以上説明のようなWEB検索サイトを本方式に置き換えするには、導入コストや運用コストなど経済性の検討など相当の時間がかかると思われる。
【0471】
比較的容易に実現可能で、この技術の特徴を上手く利用することが出来る方法を紹介する。
【0472】
大手WEB検索サイトの情報によると、日本語N-gram方式の異なり数(インデックスの最大数)は以下のようにNET情報で公開されている。
https://japan.googleblog.com/2007/11/n-gram.html
総単語数: 255,198,240,937 (2,550億)
総文数:20,036,793,177 (200億)
異なり 1-gram 数:2,565,424
異なり 2-gram 数:80,513,289
異なり 3-gram 数:394,482,216
異なり 4-gram 数:707,787,333
異なり 5-gram 数:776,378,943
異なり 6-gram 数:688,782,933
異なり 7-gram 数:570,204,252
異なりはインデックスの最大数に相当する。
【0473】
異なり1-gram 数は1文字を示すものであり、通常使用されている漢字や英文字のみならず全世界で利用される文字や記号さらには環境文字などが含まれ、256万種類もの文字が出現していることになる。
【0474】
出現頻度の少ないインデックスであっても無視すると検索洩れが発生する。
【0475】
総文数200億の中に1回しか利用されていない特殊な文字や記号でもインデックスを持つ必要があるので、N-gram方式でインデックスを作ると全体で32億もの膨大なインデックスが必要になる。
【0476】
考慮すべきは、以上のように32億ものインデックスのほとんどがめったに利用されないインデックスであっても、無視すると検索洩れが発生することである。
【0477】
従って、形態素方式インデックスなど別な方式のインデックスを併用するなど複雑なインデックス構成とせざるを得ない。
【0478】
永年のこのインデックスの難題を解決する方法を紹介する。
【0479】
一例として薔薇(ばら)、饂飩(うどん)、侃々諤々(かんかんがくがく)の「薔」、「薇」、「饂」、「飩」、「侃」、「諤」の文字や特殊記号などめったに使われない文字が1つでも含まれている場合に本全文検索プロセッサ101を使用し、含まれていない場合にはこれまでの通りインデックス方式による全文検索とすることにより、システムを大幅に効率化することが出来る。
めったに使われない文字を含んだ全文検索の頻度は極端に少なくなるので、全文検索プロセッサ101はその検索頻度に適した検索速度のものを選べば良い。
【0480】
めったに使われない文字を含んだインデックスを不要とすれば、インデックスの数は極端に少なくなる。
【0481】
また、本全文検索プロセッサ101には、めったに使われない文字を含んだWEBサイトのテキストデータのみを記憶すれば良いので、本全文検索プロセッサ101の数も削減することが出来る。
【0482】
例えばインデックスを使用頻度の高い上位10万と決めて、これらはインデックスを使用した全文検索とし、これ以外の使用頻度の少ないインデックスに関わる検索を本全文検索プロセッサ101に任せる方式とする、など様々な応用が可能である。
【0483】
これまで最大32億以上も必要であったインデックスの数を10万に削減することが出来てインデックスの追加が不要になれば、WEB検索システムはこれまでの複雑性が一変する。
【0484】
以上のように、インデックス方式の利点と本全文検索方式の利点を組み合わせすることにより、検索性能を落とすことなくインデックスの数を極限まで削減し、WEB検索システムをスリム化することが可能になる。
【0485】
以上説明のインデックスの数の問題は、WEB検索システムに限らず全文検索共通の課題である。
【0486】
先ほどの例では、特殊記号やめったに使われない文字が1つでも含まれている場合に本全文検索プロセッサ101を利用するシステム構成を示したが、その反対に全文検索を行わない場合や、特殊記号やめったに使われない文字以外の特定の文字に対応させることも可能である。
【0487】
システムの特徴を分析して最適な利用方法を考えると良い。
【0488】
(ローカルWEB検索システム)
論文や文献等に含まれる文字を検索する場合、通常のWEB検索サイトの検索手法では物足りない場合がある。
【0489】
このような場合、WEBから必要な情報を集め、本願発明の全文検索プロセッサ101を利用すると、grep(global regular expression print)などの高度な方法での全文検索が可能になる。
【0490】
(文字や用語のミス検出、誤訳検出)
コーパス(corpus)は自然言語研究用に利用されるデータベースである。
【0491】
コーパスはインデックスを用いたデータベースであるので、辞書の編纂同様に定期的に改訂がなされるため、「コロナ禍」のような最新の言葉は含まれていない場合が多い。
【0492】
本願発明を用いることにより、コーパスを常に最新の用語や情報が含まれるテキストデータとすることが出来る。
【0493】
作成中の文章の一部を内部や外部のメモリに蓄積された大量で最新情報が盛り込まれたテキストデータと照合することにより、ヒットするテキストがなければ前例なし(ミス)と判定しアラートを出力するなどの利用の仕方もある。
【0494】
(大規模インフラ系システム 大規模社内検索システム)
本願発明は、特許検索や大企業の社内検索システムなど大規模インフラ系や大規模組織の全文検索システムに最適であることは言うまでもない。
【0495】
以上説明のWEB検索サイトの内容を参考にしてシステムを構築すると良い。
【0496】
(未開拓実施分野)
本願発明はインデックスを用いた全文検索で問題を抱えたシステムや、まだシステム化されていない分野に光明を照らすものと期待出来る。
新しい情報の中から価値を見つけだすようなストリーム型テキストデータの全文検索への応用が期待出来る。
【0497】
ストリームデータとして流れてくるテキストデータの中に使用される文字の頻度は、AI分析に欠かせないものである。
【0498】
現在の方式では対応困難な、自然言語処理や統計システム等のリアルタイム処理に焦点を当てて検討すると良い。
【0499】
例えば音声認識の認識候補や翻訳の際の翻訳候補を全文検索プロセッサ101に照合することにより、ヒットするテキストがなければ前例なし(ミス)と判定しアラートを出力することや、ヒットするテキストが最大のものを選択するなど、音声認識精度を高めるなどの知的情報処理(AI分野)に利用出来る。
【0500】
(個人利用)
PCを利用する多くの人々は頻繁にメールの検索、ワードやエクセル、パワーポイントなどのテキストデータなど様々な全文検索を日常茶飯事のように利用している。
【0501】
然しながらこれらの全文検索はPCに標準的に添付されたソフトウェアによるものであり、高度な検索条件を設定することは出来ない。
【0502】
本願発明による全文検索は、全く専門性が不要になり、様々な機能を備えたソフトウェアの標準化が進むことが期待される。
【0503】
これらのソフトウェアを利用すれば、全文検索の専門家やソフトウェアの専門家でなくとも個人個人思い思いの全文検索を利用することが可能になる。
【0504】
(ゲノム解析)
これまでの説明では文字テキストデータ132の検索であったが、ゲノムの解析にも本全文検索プロセッサ101を利用することが出来る。
【0505】
人のゲノムは約60億塩基対のDNAを核内に持っている。
【0506】
従って、8Gバイトの容量があれば人ゲノム全てを記憶し、一括解析をすることが可能になる。
【0507】
ゲノムの「ATGC」の塩基配列ゲノム解析では、ワイルドカード機能やギャップ機能が必要不可欠であるので本方式は最適である。
【0508】
現在のゲノム解析の殆どはインデックスを利用し高速化を図っており、インデックスの作り方により検索洩れや検索結果のばらつきが生じ問題になっている。
【0509】
またインデックスを作成する時間は待ち時間となる。
【0510】
本全文検索プロセッサ101を利用すると、インデックス無し、つまりインデックス作成の待ち時間がなく、検索洩れや検索結果のばらつきがなく、しかも高速なゲノム解析が可能になる。
【0511】
(全文検索の標準化)
本願発明による全文検索は、UTF-8など世界標準の文字コードを利用することにより、全世界の文字に共通に利用することが出来る。
【0512】
SQLやNonSQLのgrep等の正規化表現など文字パターンマッチングのルールを導入することで、全世界の全文検索技術を標準化することが可能になる。
【0513】
標準化により本全文検索プロセッサ101のASICチップは安価に供給可能になり、大きな需要が期待される。
【0514】
(本願発明のメリット)
本願発明の全文検索プロセッサ101並びにこれを利用したシステムや商品のメリットを列記する。
転置インデックス不要
・リアルタイム処理、ストリーム処理が可能になる
・インデックスのチューニングが不要になる
・インデックスのメモリやストレージが不要になる
・インデックスの更新処理が不要になる
・システムの開発が容易になる
・システムの増設が容易になる
精度・速度機能
・N-gram と同様な検索精度と検索速度を持つ
・ワイルドカード・ギャップ・中間一致・後方一致可能
(SQLのLike文やgrep(正規化表現)のような文字検索が可能)
汎用性
・ASCII 、JIS 、UTFなどの文字コードに対応可能である
・ゲノム解析などにも利用出来る
・UTF-8文字コードで全文検索の世界標準化が出来る
・SQLやNonSQLのデータベースに利用可能になる
実用性
・FPGAで実用可能である
・インデックスを利用した全文検索システムに組み込み可能になる
・最新用語入りコーパスを創ることが出来る
情報処理への貢献
・全文検索技術の専門性が低減し専門家が不要になる
・音声認識や翻訳など自然言語処理技術の進化を加速する
・全文検索技術の世界標準化が出来る
以上の多くは全文検索や自然言語処理技術の顕在的もしくは潜在的ニーズである。
【0515】
(本願発明の着眼点)
最後に本願発明の着眼点を示す。
【0516】
文字テキストデータ132の1バイト毎に全文検索回路103を利用することが理想であるが、この方式では全文検索半導体チップや全文検索システムのコストパフォーマンスが極めて悪くなる。
【0517】
本願発明は全文検索回路103に文字テキストデータ132を時分割で多数与えることにより、インデックス不要の全文検索の性能とシステムコストのバランスをとることを意図したものである。
【0518】
なお、本例では、コマンド生成回路127の全ての回路(機能)を全文検索プロセッサ101の内部に備えることで説明を行っているが、コマンド生成回路127の一部の回路(機能)や全ての回路(機能)をHOST側に備え、全文検索プロセッサ101はHOST側から与えられたステップ毎の演算条件に基づき演算を実行し、ステップ毎にアクノリッジ(ACK)を都度HOST側に通知する構成でも構わない。
【0519】
また、コマンド生成回路127を全文検索プロセッサ101の内部に置く場合には、CPU並びにプログラムを格納するメモリを全文検索プロセッサ101内部に組み込み、ソフト処理で全文検索演算条件114を生成し全文検索回路103をコントロールすることも可能である。
【0520】
(基本回路構成(第2の例))
次に、本願発明に係る全文検索プロセッサの第2の例について説明する。
【0521】
この第2の例は、上記第1の例と同様に、検索対象の文字テキストデータを1バイト(8ビット)毎に記憶素子に記憶させ、与えられた検索キーワードの文字列の「文字」と「文字の並び」の一致不一致を1バイト毎に並列に比較し、与えられた検索キーワード125の文字列の先頭もしくは末尾に該当する文字テキストデータの位置(番地)を全文検索結果として返すものである。
【0522】
ただし、上記第1の例では、前記文字検出回路105により文字検出が終了した後に、前記文字列検出回路106によるシフト動作を行っていたのに対し、この第2の例では、文字検出回路105による文字検出と、文字列検出回路106によるシフト動作を「交互」に実行するものである。
【0523】
すなわち、第1の例では、上記文字検出回路105に文字テキストデータ132の中から検索キーワード125に含まれる全文字と一致する文字若しくは文字の部分(1バイトのコード)を一致フラグ(FG)として最初に検出させた後、文字列検出回路106に検索キーワード125の文字列のバイト数n-1回(前記シフトクロック数に対応)だけこのフラグの位置を順番にシフトさせることで検索キーワード125のバイト数分連続するフラグの位置、すなわち文字の並び122(文字列)を検出していた。
【0524】
これに対して、この第2の例では、上記文字検出回路105により検索キーワード125の文字と一致する文字若しくは文字の部分(1バイトのコード)が検出(一致フラグ(FG))されるたびにこのフラグの位置を1つシフトさせてFG勝ち抜き回路113で当該フラグが直前に検出されたフラグの位置と連続するかを1文字コード毎に検出するものである。このような方法であっても文字の並び122(文字列)を検出することが出来る。以下、このような第2の方法による処理を「交互処理」という。
【0525】
図22はこの第2の例を実行するための全文検索プロセッサの基本構成を示すものである。この第2の例においては、第2の例コマンド生成回路127(図1)に上記交互処理を実現するためのステップ条件133(本例ではステップ1の時は論理「0」、ステップ1以外の時は論理「1」となる信号(後述))を生成するステップ条件生成回路133が追加されている。
【0526】
また、図23は第1の例の図3に対応するものであり、図3の文字列検出回路106に、前記FGシフト回路112に接続されたステップ条件別論理積回路134が設けられている。
【0527】
このステップ条件生成回路133とステップ条件別論理積回路134で交互処理を可能にするものである。
【0528】
なお、ステップ条件別論理積回路134は、この構成に限定されるものではないが、図23に示すように、2入力論理積(AND)回路、3入力論理積(AND)回路、及び論理否定(NOT)回路から構成されている。
【0529】
以下、これらの回路により交互処理について詳細に説明する。
【0530】
(第2の例の交互処理動作:コマンド生成動作)
図24図4に対応するもので、この第2の例におけるコマンド生成回路127により生成される全文検索演算条件コマンドの具体例(1)~(4)を示すものである。
【0531】
この第2の例では、第1の例(図4)とは異なり、前記コマンド生成回路127は、文字と文字列の検出演算が交互に実施されるようにステップ1~11のコマンドを構成する。この交互処理を可能とするため、この第2の例が第1の例と異なるのは、1)前記ステップ条件生成回路133により与えられる第4のコマンド127であるステップ条件133(本例ではステップ1の時は論理「0」、ステップ1以外の時は論理「1」となる信号)が追加されている点、2)フラグのシフト方向が左ではなく右である点、3)与えられる勝ち抜き演算条件が全て「直接入力」である点、である。
【0532】
(第2の例における英文の全文検索動作について)
次に、この第2の例における全文検索のデータ状態遷移を、図25及び図26について説明する。
【0533】
なお、検索対象は、前記第1の例(図5図6)と同じであり、「full text search」の文字テキストデータ132の中から、「search」の検索文字を検索するものである。そして、処理のステップ数も、上記第1の例と同じく、11ステップである。
【0534】
そして、各ステップ(1~11)の処理は、コマンド生成回路127から与えられるコマンド(比較データ123、シフトクロック130、ステップ条件133、勝ち抜き演算条件129)により全文検索回路103が実行するものである。
【0535】
まず、ステップ1では、1バイトで構成される「s」の文字を検出するもので、前記第1の例のステップ1と同じく、相対11番地の文字検出回路105が「s」を検出する。この検出結果はフラグ(FG)としてFGシフト回路112にプリセットされる。この図25の例では、「full text search」中「s」は番地11のみであるから、相対11番地のFGシフト回路112のみが論理「1」にセットされ、他の番地のFGシフト回路112の論理は「0」となる。
【0536】
そして、さらにこのFG値(演算結果)は、ステップ条件別論理積回路134で処理されてFG勝ち抜き回路113に入力される。ステップ1の場合には、前記ステップ条件生成回路133により与えられる第4のコマンド127、ステップ条件133(本例ではステップ1の時は論理「0」、ステップ1以外の時は論理「1」となる信号)は「0」であるから、ステップ条件別論理積回路134の前記2入力論理積(AND)回路が有効になり、この演算結果が、前記論理和(OR)回路を通じて、FG勝ち抜き回路113に入力される。
【0537】
そして、図24(1)に示すように、ステップ1におけるFG勝ち抜き回路113への演算条件が「直接入力」に指定されているので、相対11番地のFG勝ち抜き回路113(のレジスタ)は論理「1」にセットされ、それ以外の番地は論理「0」にセットされる(図25のステップ1参照)。
【0538】
つまり、ステップ1(初回ステップ)では、文字検出回路105の演算結果がそのままFG勝ち抜き回路113にセットされる構成になっている。
【0539】
ステップ2では、シフトクロック130信号により、FGシフト回路112にセットされた全てのFGが右方向に1番地だけ相対的にシフトされ、右隣りのFGシフト回路にそのFGがセットされる(図25のステップ2)。この時、FG勝ち抜き回路113の論理状態は変化しない。
【0540】
これにより、ステップ1では文字検出、ステップ2では文字列検出のためのフラッグのシフトが実行される。以下、このように文字検出とシフトが交互に実行される。
【0541】
次に、ステップ3では、2文字目である「e」の文字の検出が実行される。この例では、図25に示すように、相対7番地及び12番地に「e」があるので、これらが検出される。
【0542】
7番地及び12番地における検出結果は、FGシフト回路112に入力される。この際、12番地のFGシフト回路112には上記ステップ2にて11番地からシフトされたフラグ(論理「1」)が既にセットされているので、以下の演算が実行される。
【0543】
すなわち、12番地は、文字検出回路105から入力された論理値とFGシフト回路112にプリセットされた論理値の双方「1」であり、前記ステップ条件生成回路133により与えられる第4のコマンド127(ステップ1の時は論理「0」、ステップ1以外の時は論理「1」となる信号)が「1」であるので、前記ステップ条件別論理積回路134の3入力論理積(AND)回路が有効になり、その演算結果(論理「1」)が論理和(OR)回路を通じて、FG勝ち抜き回路113に入力される。そして、図24の(1)に示すように、FG勝ち抜き回路113には「直接入力」のコマンドが与えられるので、本例の場合FG勝ち抜き回路113にセットされる相対12番地の論理値「1」となる(図25のステップ3の12番地の値参照)。
【0544】
一方、7番地については、FGシフト回路112にプリセットされた論理値は「0」であるので、上記と同様の演算の結果、FG勝ち抜き回路113にセットされる論理値は「0」となり、ノイズとして処理される。
【0545】
また、上記11番地と7番地以外の他の番地については、文字検出回路105から入力された論理値とFGシフト回路112にプリセットされた論理値の双方「0」であるので、上記と同様の演算の結果、FG勝ち抜き回路113にセットされる論理値は「0」となる。
【0546】
すなわち、ステップ2まで論理「1」がセットされた相対11番地のFG勝ち抜き回路113は、文字検出回路105とFGシフト回路112の双方の論理積(AND)条件が成立しないので「0」にクリアされる。
【0547】
つまりステップ1(初回ステップ)以降のステップ、本例の場合ステップ3において、文字検出回路105の演算結果と、FGシフト回路112の論理積(AND)条件が成立した番地のFG勝ち抜き回路113に勝ち残りFGが更新される構成になっていることが従来方式との大きな違いである。
【0548】
ステップ4からステップ9については、上記と同様の演算が繰り返されるので、説明は省略する。
【0549】
ステップ10は、ステップ9で示されるFGシフト回路112のFGをさらに右に1バイト分シフト(合計右に5シフト)した状態が示されている。このステップ10では、図26に示すようにFGシフト回路112の11番地と16番地の論理値が「1」にセットされ、FG勝ち抜き回路113は相対15番地がこの時点での勝ち抜き番地となっている。
【0550】
ステップ11では、相対番地16番地の文字検出回路105並びにFGシフト回路112の双方のFGが存在し論理積(AND)条件が成立するので、FG勝ち抜き回路113の相対16番地は「1」になり、相対15番地は「0」に書き換えられる。
【0551】
従って相対16番地が、最終勝ち残り番地となる。
【0552】
以上の処理で相対11番地から相対16番地までの文字の並び122(文字列)は、与えられた検索キーワード125条件の文字の並び122(文字列)と同じであることを検出したもので、与えられた検索キーワード125の末尾の文字コードにマッチする番地を検出したことになる。
【0553】
この第2の例では、第1の例と異なり、検出した文字コード、1文字コード毎に配列の妥当性を判定することが出来る。一方で実行する演算ステップ数は、与えられた比較データ123の文字列のバイト数n×2-1回、本例の場合11ステップで、第1の例と同じである。すなわち、第1の例と比較すると、同数のステップ数でより精度の高い演算が行えることになる。すなわち、この第2の例は、新たに文字を検出する度に勝ち残りFGを更新する方法であるので検索された全文字列の配列の妥当性を保証出来き、検索精度が高く検索速度が速いことが特徴である。
【0554】
なお、ステップ12で以上の演算結果が結果出力回路107から出力されるが、出力されるのは第1の例と異なり先頭番地ではなく最終番地である。
【0555】
ただし、与えられた検索キーワード125の文字列の検出においては、必ずしも「search」のように検索キーワード125の文字列の前方から順に検出する必要はなく、「hcraes」のように後方からの検出でも構わない。その場合にはシフトレジスタのシフト動作を左シフトし、先頭番地「s」を検出すれば良い。
【0556】
(第2の例における和文の標準的な全文検索動作)
図27、28は、第1の例の図7、8に対応する第2の例による和文の標準的な全文検索の各機能のデータ状態遷移を説明するものである。
【0557】
この処理は、図24の(2)に示したコマンド127(比較データ123、ステップ条件133、シフトクロック130、勝ち抜き演算条件129)をステップ毎に全文検索回路103に逐次与え、このコマンドをもとに全文検索回路103が全文検索処理を行うものである。
【0558】
上記コマンドに基づいた詳細な処理については説明を省略するが、和文の場合一つの文字が複数バイト(本例では3バイト)になるが動作内容は英文と同様である。
【0559】
ステップ1からステップ5は、記憶された「全文検索は」の文字テキストデータ132の中から「検:1/3」、「検:2/3」、「検:3/3」の文字コードを検出するもので、ステップ6では「索:1/3」の文字コードを検出するための前処理としてのシフト動作を示している。
【0560】
最後のステップ11は、比較条件「索:3/3」を与えることにより、前述同様文字検出回路105と、FGシフト回路112の相対12番地の双方のFGは存在し論理積(AND)条件が成立するので、FG勝ち抜き回路113の相対11番地は「1」となり、相対11番地は最終の勝ち抜きアドレスとなっている。
【0561】
以上の処理で相対7番地から相対12番地までの文字の並び122(文字列)が、与えられた検索キーワード125の文字の並び122(文字列)にマッチすることが検出され、与えられた検索キーワード125の末尾の文字コードにマッチする全文検索回路の番地126が検索結果として出力される。
【0562】
(第2の例におけるワイルドカードを適応した場合の全文検索動作)
図29、30は第1の例の図9,10に対応する第2の例による英文のワイルドカードを適応した全文検索のデータ状態遷移を説明するものである。
【0563】
この処理は、図24の(3)に示したコマンド127(比較データ123、ステップ条件133、シフトクロック130、勝ち抜き演算条件129)をステップ毎に全文検索回路103に逐次与え、このコマンドをもとに全文検索回路103が全文検索処理を行うものである。
【0564】
上記コマンドに基づいた詳細な処理については説明を省略するが、本例では「search」文字列の3文字目、4文字目にワイルドカード「」を含むものであるが、動作内容は、基本的に前の2つの例と同様である。
【0565】
すなわち、文字検出のステップ1からステップ4はこれまでの説明通りである。
【0566】
ステップ5および7がワイルドカードの場合、FG勝ち抜き回路113には図24で示すようにMask(無視)演算条件を与え、何の文字であっても文字検出回路105が一致したと同様の処理を与えることにより、FG勝ち抜き回路113は、所定の勝ち抜き演算を実行することになる。
【0567】
以降の処理はこれまでの説明と同じであるので説明を省略するが、本例の場合も与えられた検索キーワード125の末尾の文字コードに該当する番地を検出したことになる。
【0568】
本例は文字列の中間にワイルドカードを指定した場合を示したが、文字列の中間のみならず、先頭や末尾など自由な位置にワイルドカードを利用することが可能である。
【0569】
本方式は以上のように外部から与えられる検索キーワード125の文字列にワイルドカードが含まれる場合、ワイルドカードの対象となる処理を、文字に無関係に勝ち抜き抜き条件が成立するように構成することより、ワイルドカード処理を可能にしたものである。
【0570】
(文字のGapを適応した全文検索)
図31、32は、第1の例の図11、12に対応する第2の例による英文のギャップを適応した全文検索のデータ状態遷移を説明するものである。
【0571】
この処理は、図24の(4)に示したコマンド127(比較データ123、ステップ条件133、シフトクロック130、勝ち抜き演算条件129)をステップ毎に全文検索回路103に逐次与え、このコマンドをもとに全文検索回路103が全文検索処理を行うものである。
【0572】
上記コマンドに基づいた詳細な処理については説明を省略するが、本例の場合「sea」が確かで、その後、Gapが0から2つまでの3か所(Gap3)に「h」の文字があると想定される場合、つまりGap0:「seah」、Gap1:「sea*h」、Gap2:「sea**h」の何れでもマッチとする場合で、それ以外の演算は前の3つの例と同様である。
【0573】
すなわち、ステップ1からステップ6までの「sea」の文字の検出はこれまでの説明通りである。
【0574】
ステップ7、9、11では、「*h」の特殊文字として、Gap0、1、2のGap3が指定されている。Gap処理は、ステップ7、9、11の何れかに「h」の文字があれば文字列が妥当、マッチであると判断するものである。
このような演算を行うため、この第2の例では、FG勝ち抜き回路113のサブレジスタを利用する。
【0575】
すなわち、図24で示すようにステップ7で「h」が指定された場合、FG勝ち抜き回路113にはGap演算条件が与えられ、ワイルドカードと同じように、本例の場合相対14番地の文字が何の文字であっても、勝ち抜き演算が成立するよう処理する。
【0576】
さらにサブレジスタを動作させ、勝ち残りになっている相対14番地の2番地先の相対16番地のサブレジスタに、相対14番地は「h」ではなかったことを記憶する。従って相対16番地のサブレジスタは「0」にセットされる。
【0577】
ステップ9で「h」が指定された場合も上記同様である。このステップでも相対15番地は「h」ではないので、勝ち残りになった相対15番地の1番地先の相対16番地のサブレジスタは「0」が書き込まれ、論理「0」のままである。
【0578】
ステップ11で「h」が指定された場合、相対16番地の文字検出回路105の論理は「1」となり、FG勝ち抜き回路113の相対16番地のメインレジスタは「1」になる。
【0579】
さらに相対16番地のサブレジスタは「1」が書き込まれ論理が「1」になり、メインレジスタも「1」である。
【0580】
メイン/サブ双方のレジスタの論理が「1」であるので、Gap指定3か所の内少なくとも1か所に「h」の文字が含まれると判定し相対番地16番地は最終勝ち残り番地となる。
【0581】
これまでの説明同様、本例の場合も与えられた検索キーワード125の末尾の文字コードに該当する全文検索回路の番地126を検出したことになる。
【0582】
以上の説明はGap2の最終ステップでの条件成立であったが、Gap0すなわちステップ7、Gap1すなわちステップ9でサブレジスタが「1」にセットされていた場合も、勝ち残りとなるように演算可能であることは言うまでもない。
【0583】
以上の演算並びに出力により、「seah」「sea*h」「sea**h」のように文字間のGapを含む文字列の全文検索が可能になる。
【0584】
説明は省略するが、後方からの文字列検出により、任意の位置にGap設定が可能である。
【0585】
以上のようなワイルドカード機能やGap機能で、全文検索操作の利便性を高めることが可能になる。
【0586】
ワイルドカード機能やGap機能などの高度な全文検索も、標準的な全文検索と同様のステップ数で処理出来ることが特に重要である。
【0587】
本発明は上記した2つの実施形態に限定されるものではなく、要旨を変更しない範囲で種々変形可能である。
【符号の説明】
【0588】
101…全文検索プロセッサ
102…文字記憶素子
103…全文検索回路
104…全文検索回路の相対番地
105…文字検出回路
106…文字列検出回路
107…結果出力回路
108…総合結果出力回路
109…1ビット一致検出回路
110…論理積(AND)回路
111…論理和(OR)回路
112…FG(フラグ)シフト回路
113…FG(フラグ)勝ち抜き回路
114…全文検索演算条件
115…入出力インターフェース
116…標準インターフェース
117…DRAMインターフェース
118…ストレージインターフェース
119…全文検索プロセッサ用インターフェース
120…内部メモリ
121…内部ストレージ(SSD含む)
122…文字の並び
123…比較データ(生成回路)
124…システムボード
125…検索キーワード
126…全文検索回路の番地
127…コマンド生成回路
128…キーワード設定機能
129…勝ち抜き演算条件(生成回路)
130…シフトクロック(生成回路)
131…システムクロック(生成回路)
132…文字テキストデータ
133…ステップ条件(生成回路)
134…ステップ条件別論理積回路
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29
図30
図31
図32
【手続補正書】
【提出日】2024-05-08
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
全文キーワード検索を目的とした半導体デバイスからなる全文検索プロセッサであり、
検索対象のテキストデータを受け取り、このテキストデータに含まれる符号化文字列を1バイト毎に1番地からN番地に割り付けて一時記憶する文字記憶素子と
検索キーワードに含まれる1以上の符号化文字を1バイト毎に比較データとして順次受け取り、各比較データを上記文字記憶素子に記憶された符号化文字列とN並列に比較し、それを前記検索キーワードに含まれる全ての符号化文字分繰り返すことで、この検索キーワードに含まれる全ての符号化文字の上記文字記憶素子上での記憶位置を検出する文字検出回路と、
前記検索キーワードに含まれる全ての符号化文字が、この検索キーワードに含まれる順番で連続する上記文字記憶素子上での位置を検出する文字列検出回路と
前記文字列検出回路の検出結果を受け取って前記連続する文字列の先頭位置若しくは終了位置を出力する結果出力回路と
を有することを特徴とする全文検索プロセッサ。