(57)【要約】【課題】データベースの骨格となるデータのインデックスは、インデックスの構成が複雑でしかも、そのメンテナンスも大きな負担があり、またインデックスを検索、新規登録、メンテナンスする際にも大きな時間が必要である。【解決方法】集合演算機能を備えたメモリならびに情報絞込み検出機能を備えたメモリにインデックスを登録してこれをインデックスエンジンとする事により、インデックスの構造を簡素化し、高速化、メンテナンスフリー化、低消費電力化を図る。【選択図】図６
2015090567.tif 000002
【特許請求の範囲】
【請求項１】
データベース検索のインデックスを集合演算機能もしくは情報絞込み機能を備えたメモリに登録し前記メモリをインデックスエンジンとして使用する方法にあって、
前記インデックスの１インデックスのデータ構造は少なくとも１個以上のデータの組み合わせデータ構造として、１インデックスのデータ構造をＮ個のデータの組み合わせとする場合、
前記メモリのアドレスに対する記憶配列方法を、１個目のデータ、２個目のデータ、・・・Ｎ−１個目のデータ、Ｎ個目データ、のデータ配列となるようにアドレスに順次記憶し、それぞれのインデックスの１個目のデータが記憶された前記メモリの物理アドレスを当該インデックスのインデックスアドレス（マッチアドレス）とすることを特徴とするインデキシング方法。
【請求項２】
前記メモリから、前記インデックスを検索する際、当該インデックスＮ個のデータ組み合わせの場合、
前記メモリの第１の比較データは、１個目のデータ、２個目のデータ、・・・Ｎ−１個目のデータ、Ｎ個目のデータを順次指定し、
前記メモリの第２の比較データは、第１の比較データの１個目のデータからN個目のデータにそれぞれ対応させ、０、−１、−２、・・・  −（Ｎ−１）を順次指定し、
以上の入力条件とすることにより、当該インデックスの１個目のデータが記憶されている前記メモリの物理アドレスを出力（マッチアドレス）させることを特徴とする請求項１に記載のインデキシング方法。
【請求項３】
前記メモリに、前記インデックスを登録する際、当該インデックスを検索し、当該インデックスが検索されなかったこと（マッチアドレスなし）を持って当該インデックスを登録することを特徴とする請求項１に記載のインデキシング方法。
【請求項４】
前記メモリに、前記インデックスを登録する際、毎時前記メモリの先頭空き番地に前記インデックスの登録することを特徴とする請求項１に記載のインデキシング方法。
【請求項５】
前記データベースは全文検索のためのデータベースであって、インデックスはN-GRAMによる、文字データであることを特徴とする請求項１に記載のインデキシング方法。
【請求項６】
前記インデックスの種類を複数用意し、前記インデキシングエンジンのインデックスデータを書き換えてインデキシングを行うことを特徴とする請求項１に記載のインデキシング方法。
【請求項７】
前記メモリを直列接続、並列接続、階層接続、その組み組み合わせ接続して利用することを特徴とする、請求項１に記載のインデキシング方法。
【請求項８】
請求項１記載のインデキシング方法を用いたことを特徴とする装置。
【請求項９】
請求項１記載のインデキシング方法を用いたことを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はインデキシング方法、インデキシング装置、集積回路に関する。
【背景技術】
【０００２】
現在のノイマン型コンピュータの情報処理で日常的かつ頻繁に利用されるインデックスの本質的な目的は何であるのかを明らかにしておく必要がある。
ＣＰＵにとってメモリ上のデータは裏返しになったトランプのような存在であり、一枚一枚（１アドレス、１アドレス）ごとにめくって（アクセス）して情報を探す以外にない。
ＣＰＵがメモリ上の情報を逐次検索し特定の情報を見つけ出すような情報処理を行った場合、極めて多くの情報処理量となり、待ち時間が多くなる。
従って大量のデータの場合にはデータベースのどこにどのような情報が記憶されているかインデックス（索引）を用意しておくことにより、ＣＰＵはこのインデックスを頼りに目的の情報にたどり着くことができるので高速な検索が可能になる。
【０００３】
例えば文字を例にした場合、辞書のようなインデックスがあって登録されている情報データが整理されていれば目的の情報を探す際大変楽になるのと同じことである。
従ってノイマン型のコンピュータにとって、インデックスはインターネット検索を始め情報（データ）を探す処理に必要不可欠な情報処理の定番技術である。
このようにインデックスは大量のデータに極めて重要な存在であり、インデックスはデータベースの骨格や土台そのものと言っても過言でない。
【０００４】
例えば新しくデータベースを構築する場合、アプリケーションソフトウエアの選択はもとより、インデックスの構成や構造（順番や配列方法など）をどのようにするのかが最も重要な意味を持ち、インデックスすなわち、データベースの骨組み、土台はデータベースの検索時間や使いやすさなど性能に直結し、不適切なインデックス構成の場合そのデータベースは全く役に立たない代物になる。
【０００５】
しかしながらデータベースの骨組み土台となるインデックスは大変に複雑で、B―TREEなどに代表される階層化アルゴリズムやクラス化（グループ化）などクラスタリングアルゴリズムなど専門性の高い情報処理であるため永年の経験を持った専門化以外手が出せない技術である。
【０００６】
当然のことながらインデックスは新しい情報が追加されるたびに登録や編集、更新する必要がありこの様な複雑な構成のインデックスのメンテナンスを如何に効率よく実現できるかも大きな課題である。
一例を示せば、メモリのデータ配列のマージンを多く取っておけば、新しい情報が追加されても問題は起こらないが、メモリ効率が悪くなる弊害がある。
また大量のデータベースの場合、インデックスそのものが複雑で大量になるのでインデックスそのものを読む時間も無視できない。
【０００７】
以上のようにインデックスの検索や登録には大きなオーバヘッドが掛るので今届いたばかりの情報データを即座に検索したい場合、情報データのインデックス登録やその検索に時間がかかれば折角のタイムリな情報データも役に立たない。
この発明はこのような、CPUによる情報処理の一番大きな課題である情報検索のインデキシング技術の現状に鑑み発明されたものである。
【０００８】
本願発明者による発明の特許第４５８８１１４号  情報絞り込み検出機能を備えたメモリはパターンマッチなど論理積演算が得意なメモリである。
またPCT/ＪＰ２０１３／０５９２６０号  集合演算機能を備えたメモリは以上の情報絞り込み検出機能を備えたメモリの概念を拡大発展させて、論理積演算、論理和演算、論理否定演算などを自由に行うことができるメモリである、以上２つのいずれの発明も本願発明のインデキシングに最適である。
【０００９】
特願２００４−３２３９７６号  検索エンジンシステム、インデキシング装置、インデックス情報中継装置、および情報検索方法、は情報処理の分散化による高速化を目指したインシング装置であり、いうまでもなくその情報処理の主体はＣＰＵである。
他の特許文献のインデックスシステムもＣＰＵが情報処理の中心であり、本発明のようにメモリデバイス自身が中心になりインデキシングの情報処理を行う先願は見受けられない。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特許第４５８８１１４号
【特許文献２】PCT/ＪＰ２０１３／０５９２６０号
【特許文献３】特願２００４−３２３９７６号
【発明の概要】
【発明が解決しようとする課題】
【００１１】
データベースの骨格となるデータのインデックスは、構成が複雑でしかも、インデックスを検索、新規登録、メンテナンスする際に大きな負担とともに時間が必要になる。
この発明ではデータベースのインデックスの構築の複雑さを解消し、インデックステーブルをメンテナンスフリーとし、インデックスの検索、登録をリアルタイム（リアルタイムインデキシング）、またデータベースの低電力化を目的とするものである。
【課題を解決するための手段】
【００１２】
本発明のインデキシング方法は、データベース検索のインデックスを集合演算機能もしくは情報絞込み機能を備えたメモリに登録し前記メモリをインデックスエンジンとして使用する方法にあって、
前記インデックスの１インデックスのデータ構造は少なくとも１個以上のデータの組み合わせデータ構造として、１インデックスのデータ構造をＮ個のデータの組み合わせとする場合、
前記メモリのアドレスに対する記憶配列方法を、１個目のデータ、２個目のデータ、・・・Ｎ−１個目のデータ、Ｎ個目データ、のデータ配列となるようにアドレスに順次記憶し、それぞれのインデックスの１個目のデータが記憶された前記メモリの物理アドレスを当該インデックスのインデックスアドレス（マッチアドレス）とすることを特徴とする。
【００１３】
本発明のインデキシング方法は、前記メモリから、前記インデックスを検索する際、当該インデックスＮ個のデータ組み合わせの場合、
前記メモリの第１の比較データは、１個目のデータ、２個目のデータ、・・・Ｎ−１個目のデータ、Ｎ個目のデータを順次指定し、
前記メモリの第２の比較データは、第１の比較データの１個目のデータからN個目のデータにそれぞれ対応させ、０、−１、−２、・・・  −（Ｎ−１）を順次指定し、
以上の入力条件とすることにより、当該インデックスの１個目のデータが記憶されている前記メモリの物理アドレスを出力（マッチアドレス）させることを特徴とする。
【００１４】
本発明のインデキシング方法は、前記メモリに、前記インデックスを登録する際、当該インデックスを検索し、当該インデックスが検索されなかったこと（マッチアドレスなし）を持って当該インデックスを登録することを特徴とする。
【００１５】
本発明のインデキシング方法は、前記メモリに、前記インデックスを登録する際、毎時前記メモリの先頭空き番地に前記インデックスの登録することを特徴とする。
【００１６】
本発明のインデキシング方法は、前記データベースは全文検索のためのデータベースであって、インデックスはN-GRAMによる、文字データであることを特徴とする。
【００１７】
本発明のインデキシング方法は、前記インデックスの種類を複数用意し、前記インデキシングエンジンのインデックスデータを書き換えてインデキシングを行うことを特徴とする。
【００１８】
本発明のインデキシング方法は、前記メモリを直列接続、並列接続、階層接続、その組み組み合わせ接続して利用することを特徴とする。
【００１９】
本発明の装置ならびに集積回路は、請求項１に記載のインデキシング方法を用いたことを特徴とする。
【図面の簡単な説明】
【００２０】
【図１】図１は、情報絞り込み検索機能を備えたメモリのブロック図である。
【図２】図２は、情報絞り込み検索機能を備えたメモリによる文字列検出の例である。
【図３】図３は、集合演算機能を備えたメモリのブロック図である。
【図４】図４は、N-GRAM アルゴリズムによる全文検索インデックスの例（実施例１）である。
【図５】図５は、全文検索システムのシステム構成例（実施例２）である。
【図６】図６は、問い合わせデータが「処理」の検索例（実施例３）である。
【図７】図７は、問い合わせデータが「日本」の検索例（実施例４）である。
【図８】図８は、問い合わせデータが「日本」の登録例（実施例５）である。
【発明を実施するための形態】
【００２１】
本発明の元になる情報絞り込み検索機能を備えたメモリならびに集合演算機能を備えたメモリの概要を説明する。
図１は、情報絞込み機能を備えたメモリのブロック図の例である。
この情報絞込み機能を備えたメモリ１は、連想メモリ（ＣＡＭ）３の機能に、外部から与えられるアドレス条件５をもとに、データのアドレスを検出するためにアドレススワップ機能７を加え、更にその結果を累積カウントするための、カウンタ機能８、そして勝ち抜いたアドレス、つまりマッチアドレス１０を出力するためのプライオリティアドレスエンコーダ等で構成されたメモリである。
【００２２】
すなわち、この情報絞込み機能を備えたメモリ１は、連想メモリ（Content Addressable Memory、以下ＣＡＭという）３の出力に並列に取り付けられた、アドレススワップ機能７で情報の絞込み、つまり情報同士の論理積集合を出来る構成にしたものである。
アドレススワップ機能７は、連想メモリ（ＣＡＭ）３の出力フラグのアドレスの位置替えを行うような回路で容易に実現できる。
この例で示す情報絞込み機能を備えたメモリ１は、例えば１次元（線形配列）のシフトレジスタなどで単純に実現できる構成であり１次元配列情報に最適な構成である。
【００２３】
以下にこの情報絞込み機能を備えたメモリ１の動作の概要を示す。
図２は、情報絞り込み検索機能を備えたメモリによる文字列検出の例である
図２に示すように、文字データである文字列がデータベースとして、情報絞込み機能を備えたメモリ１に記憶されている。
【００２４】
一例としてこのデータベースの中から問い合わせデータ３２、文字列「情、報、処、理」を検出する場合の例を以下に示す。
１次判定として、情報絞込み機能を備えたメモリ１の連想メモリ（ＣＡＭ）３機能で、外部から与えられたデータ条件４により、文字「情」の検出を行う。
この検出結果は今後の文字検出の基準情報となるものである。
２次判定として、同様に文字「報」の検出を行うと共に、この２次判定結果を１アドレス分、アドレス全体を並列に図の左側にシフトする。
３次判定として、同様に文字「処」の検出を行うと共に、この３次判定結果を２アドレス分、アドレス全体を並列に図の左側にシフトする。
４次判定として、同様に文字「理」の検出を行うと共に、この４次判定結果を３アドレス分、アドレス全体を並列に図の左側にシフトする。
以上４つの判定結果フラグが揃うアドレス、つまりカウンタ機能８が「４」になるアドレス、つまり論理積が成り立つアドレスは図示するようにマッチアドレス１０であり、対象となるデータベース全領域の中から、本例の場合、絶対アドレスが文字列「情、報、処、理」の文字列の先頭番地「Ｎ±０」が検出されている。
つまり、この場合、カウンタ機能８は累積論理積演算結果を記憶していることと等価である。
【００２５】
またこの際、必ずしも、「情、報、処、理」の順序である必要もなく、「理、処、報、情」の順序場合には、アドレスのシフトの方向が逆転し、「理」のアドレスが基準情報となりマッチアドレス１０となる。
更に「処、理、情、報」でも、途中の文字を飛ばしても、アドレスをシフト比較する際の方向とその位置の対応が的確になされていればどのような配列でも可能である。
【００２６】
いうまでもなく、データベース全体で、１つもマッチアドレス１０が存在しない場合も、複数のマッチアドレス１０が存在し検出される場合もある。
重要なことは最初に指定される情報が基準情報となり、順次これらの基準情報４２１が絞り込まれ、最後まで勝ち抜いたアドレスのみが検出されることである。
【００２７】
更に重要なことは、メモリアドレスの並列操作でアドレスをシフトする量、つまり比較する情報の場所は互の相対位置、つまり相対アドレスであり、その結果検出されるアドレスは絶対アドレスであることである。
従って、探し出したい情報の組み合わせ順序のみが分かっていれば、どのような情報でも探し出せることになる。
従来このような検索を高速で実施する場合には、インデックステーブルや頻繁に検索される情報を引き出しやすくする配列方法など特殊なアルゴリズムを考える必要があったが、データが更新される度にこれらのテーブルやアルゴリズムを変更する必要があった、この技術はこれら情報データの事前加工を全く不要にする。
【００２８】
更に高速なメモリアドレスの並列操作を行う場合には、マルチプレクサやバレルシフタなどを適宜組み合わせすることにより実現可能である。
したがってこのような完全並列の手法による情報の集合全体の集合演算はＣＰＵのメモリ空間個別の（情報の元）のスキャン（検索）を全く不要にするので、従来の情報処理１０１に比較にならない程高速な全文検出が可能になる。
【００２９】
また完全並列であるために情報の大きさに左右されないので、情報の集合が大きければ大きいほどその演算速度の効果が顕著に現れやすい。
このような高速情報検出技術を利用することにより、例えば類似、同類な用語（例えばシソーラス）の繰り返しの検出も極めて単純に実現できることを意味する。
【００３０】
図３は、集合演算機能を備えたメモリのブロック図である。
このメモリ２は情報絞込み機能を備えたメモリ１のカウンタ機能８の部分を、集合演算機能９に置き換え、外部から与えられる論理演算条件６に基づく、論理和、論理積、論理否定などの演算を指定された条件で任意に実現できるように構成したものである。
【００３１】
つまり、情報絞込み機能を備えたメモリ１は、カウンタ機能８による論理積集合演算を主体として行い、主としてパターンマッチなど目的となる情報を絞込み集合演算するものであったが、この考え方を更に進化発展させて、あらゆる種類の情報の任意の集合演算を実現させるよう構成したものである。
すなわち、このメモリ２は、外部から与えられるデータ条件４によりデータ比較する回路と、外部から与えられるアドレス条件５によりアドレススワップ機能７、外部から与えられる論理演算条件６、ならびに以上の条件に基づき集合論理演算する機能９、更にプライオリテイアドレスエンコーダで演算結果のマッチアドレス１０を出力する構成になっている。
【００３２】
集合演算機能を備えたメモリ２は情報絞込み検出機能を備えたメモリ１の上位概念のメモリである。
従って集合演算機能を備えたメモリ２の演算条件を論理積演算に固定して利用することにより、図２に示した、文章の検索が行なうことが可能である。
【００３３】
以上のように、情報絞り込み機能を備えたメモリ１、ならびに集合演算機能を備えたメモリ２は、メモリそのものがインデックス構造である。
しかしながら、ビッグデータの場合、全てのデータをこのメモリ１、２に記憶しておくことは現実的でないので、ビッグデータのインデックスをこのメモリ１、２に記憶しておくことによりビッグデータの検索を高速で効果的に実現させることが本願発明の目的である。
【実施例１】
【００３４】
以下に以上の情報絞込み検出機能を備えたメモリ１、集合演算機能を備えたメモリ２を利用したインデキシングシステムの例を説明する。
図４は、N-GRAM アルゴリズムによる全文検索インデックスの例である。
図４に示す通り、文章１５は文書１６として情報化されている、このような文章の中から特定の文字列、例えば「日本」を探し出す場合、文書ごとにCPUが逐次処理すると膨大な情報処理量と時間を消費することになるので、インデックスが不可欠になる。
【００３５】
日本語の場合、英文の単語のような「分かち書き」単語でないので、文法に基づき文字列の意味を認識して、辞書のように語彙としてインデックスすることが理想であるが、文法的な解析には多くの時間が掛かるので、語彙に無関係にインデックスを付与する方法が広く用いられている。
その中で最も一般的なアルゴリズムはN-GRAM
アルゴリズム１４である。このアルゴリズムは文章１５に含まれる文字列を、N語ずつ切り刻み、これをそのままインデックスにする方法である。
【００３６】
図４は２-GRAMによるインデックスの例で、２文字の組み合わせで文字列の漏れが発生しないように「情報」、「報処」、「処理」・・・のように１文字を重ね合わせインデックス化するものである。
１-GRAMの場合には、インデックスの出現頻度が大きくなるためインデックの後工程が煩雑となることが欠点であり、通常連想メモリ（CAM）でのインデキシングは困難である。
また３-GRAMの場合にはインデックス自体のボリュームが極めて大きくなるので、日本語の場合には２-GRAMを利用するケースが多い。
以降この２-GRAMによる日本語の全文検索におけるインデキシングについて説明する。
【実施例２】
【００３７】
図５は、全文検索システムのシステム構成例である
図５に示すようインデキシングボード２２には、ボード全体をコントロールするためのCPUとそのプログラム、情報絞り込み機能を備えたメモリ１、ならびに集合演算機能を備えたメモリ２からなるインデックスエンジン１３が複数個（N個）配列され、データベース並びに、データベースデーブル等を記憶するためのメモリと、電源並びに外部PCやLAN回線に接続可能なインターフェースが用意されている。
図５に示すPCはこのインデキシングボードを操作し、その結果を表示するものであり、そのために必要なGUIと表示部が用意されている。
【実施例３】
【００３８】
図６は、このインデックスエンジン１３の、問い合わせデータ３２の「処理」の検索１８の概要を示すものである。
先ずこのインデックスエンジン１３の全体構成を説明する。
図６の左に記載された、インデックスエンジン１３は通常のメモリ同様、アドレス毎に情報が書き込み出来るデバイスであり、日本語であるので、１アドレスは１６BIT構成でインデックスデータが登録出来る構成である。
図６に示すように、問い合わせデータ３２はインデックスエンジン１３のアドレス「00000000」から順次、書き込みされたインデックスデータが記憶登録されている。
図６に示すよう、「情報」、「報処」、「処理」などのインデックスが、本例の場合２−ＧRAMなので奇数アドレスがインデックスの先頭アドレスとなるように記憶登録されている。
以上のインデックスエンジンのアドレスに対応して本例では文書１から文書Ｎまで、アドレスデータテーブル１７に、インデックスされた文書番号や文書内のアドレス（図ではＸＸＸＸと表示）を逐次対応する位置やアドレステーブル配列の定義に基づき所定の情報を書き込みすることにより全文検索のデータベースが構成されている。
【００３９】
このインデックスエンジン１３に問い合わせデータ３２として「処理」が与えられた場合、インデックスエンジン１３は瞬時（詳しくは後述）に、１アドレスのマッチアドレス１０を出力し、アドレスデータテーブル１７の中から「処理」インデックスのアドレステーブを指定する。
指定されたアドレステーブルから文書番号や文書内のアドレスを読みとれば検索は完了する。
通常、このようなインデックスを作成する場合には、階層化木構造やクラス化（グループ化）のアルゴリムに基づき所定のアドレスにキーデータを記載する必要があるが、本例のメモリ１、３を用いたインデックスエンジン１３のインデックスは全くその必要がないのが大きな特徴である。
なぜならば、インデックスエンジン１３は登録されたインデックスのアドレスを探す時間が極め高速であるため、対象となる文字列の登録がなされているかどうかを、瞬時に検索１８して確認することが出来る、その結果マッチするアドレス１０がなければ、つまり登録１９されていないインデックスであれば、そのインデックスの階層や配列順序を全く考慮することなく、そのインデックスを毎時空きアドレスの先頭番地に書き込みすれば良い、インデックスの検索と登録はこれだけの極めて単純な処理である。
【００４０】
この様な方式でインデックスを登録する場合、インデックスは唯一無二の存在となり、検索してマッチ（ヒット）するアドレスは１つのみである、インデックスが登録されていなければヒットするアドレスは０である。
【００４１】
以上のインデックスエンジン１３のアドレス出力に対応して付随するアドレスデータテーブル１７に、インデックスされた文書番号や文書内のアドレスを逐次書き込みすることにより全文検索のデータベースが完成される。
インデックスに付随するこのアドレステーブル１７の登録、検索制御は、インデックスエンジン１３の性能やデータベースの大きさなどを考慮して適切な性能のＣＰＵならびにメモリを選択して制御すればよい。
【実施例４】
【００４２】
以下にこれまで説明のインデックスの新規登録の例を示す。
図７は、このインデックスエンジン１３に問い合わせデータ３２が「日本」の検索１８の概要を示すものである。
本例では、「日本」の文字列を、インデックスエンジン１３に問い合わせデータ３２を与え、インデックスエンジン１３が「日本」のインデックスを検索１８し、「日本」のインデックスが存在しなかった場合の例である。
【実施例５】
【００４３】
図８は、このインデックスエンジン１３による問い合わせデータ３２「日本」の登録１９の概要を示すものである。
図７で説明した「日本」がインデックスとして登録されていなければ、空きアドレスの先頭番地に「日本」のインデックスを記憶登録１９すればよい。
【００４４】
本発明によれば、以上説明の通りインデックスの階層や配列順序などの構成を一切考慮することなく、文字列の出現順にインデックスを付与し、またインデックス自体の配列変更などの必要は一切必要ない。
【００４５】
複数の問い合わせデータ３２により論理和、論理積、論理否定条件による文書の絞り込みや、表示の順番はヒット率の高い文書から表示するなど必要な機能はCPUやPCソフトで容易に実現させることが可能である。
【００４６】
以上説明のインデックスエンジン１３の検索、登録に必要な時間、つまり集合演算機能を備えたメモリ２ならびに情報絞込み検出機能を備えたメモリ１にどれだけ情報が書き込まれていても、いなくても検索時間は常に固定であり、通常数クロックで十分である。
一例として検索、登録共に繰り返し平均２０Ｎ秒で実行する場合、インデキシングの能力（インデキシング以降の後工程はこれに追従出来ることを前提）は理論上、１ページ１０００文字を対象とした全文検索で１ページ当たり全ての文字を検索し登録する場合、１０００文字＊２０Ｎ秒＝２０Μ秒で可能になる。
１Ｋページの文書が２０Ｍ秒でインデキシングが可能になり、１秒間で５０Ｋページ、データ容量としては、５０Ｋページ＊１０００文字＊２B＝１００ＭＢの文書のインデキシングが可能である。
【００４７】
一般的なＨＤＤ（ハードデイスク）のデータ転送速度は１００ＭＢ／秒程度であることを考慮すると、上記のインデキシングの速度は驚異的な処理速度であり、ＨＤＤから読み取ったデータをリアルタイムでインデックス化出来ることを意味している。
【００４８】
１時間あたりの処理能力に換算すると、３６００秒×５０Ｋページ＝１８０Ｍページ分の文書のインデキシング処理をすることが可能になる。
１日２４時間で、４．３２Ｇページ、データ容量としては、４．３２Gページ＊１０００文字＊２B＝８．６４TBの文書のインデキシングが可能である。
従って、新しくデータベースを構築する場合のシステム立ち上げ時も極めて速い事が特徴であり、新しいインデックスを登録し、登録されたインデックスを即座に利用できる真の意味のリアルタイムインデキシングシステムが完成する。
【００４９】
また、以上のような高速なインデキシングシステムは完全一致の検索のみならず同類語、曖昧語（シソーラス）の検索を行う場合でもリアルタイムでの処理が可能になる。
この様な曖昧語を含んだ検索は特許の検索エンジンなどにも極めて有効である。
【００５０】
インデックスエンジン１３は、通常のメモリ同様にアドレスを直列接続してインデックス容量を追加することが出来る。
この場合、問い合わせデータ３２は直列接続したインデックスエンジン１３に並列に指定することにより、同時検索が可能になる、この場合でもヒットするアドレスは１もしくは０である。
以上のようにインデックスエンジン１３が複数であっても、検索、登録の時間の遅延がほとんどないのもこのインデックスエンジンの大きな魅力であり、ウエブ情報など大規模広域の検索が同時に発生する場合にも応用が可能である。
【００５１】
本例では２−ＧＲＡＭの場合の日本語の全文検索を対象にして説明した、日本語の場合、めったに使われない文字も含めると１万文字程度とされている、単純にこれらの文字を２つ組合せすると、１億近くのインデックスが必要になる。
しかしながら２−ＧＲＡＭにする目的はインデックスの出現頻度を低減することが目的である、従って出現頻度の少ない文字等はインデックスエンジンのメモリアドレスを別枠に確保し１−ＧＲＡＭとし、双方を併用することによりインデックス総数を適切な範囲に収めることが可能になる。
インデックスエンジン自体にこの機能を持たせれば高速性を保つことができる。
英文の場合には、３−ＧＲＡＭ、場合によっては４−ＧRAMを用いればよい。
【００５２】
ＡＳＩＣ化されたインデックスエンジン１３であれば数百ＫBから数MBのインデックスを記憶登録することができるので、通常１個から数個程度のデバイスで実現できるので、一般のデータベースにも最適である。
大規模で広域なデータベースの場合には適切に必要数を並列接続や分散処理をすることにより更に高速性を高める事が出来る。
【００５３】
本例では全文検索のデータベースを例に示したが、その他の階層化インデックス方式のデータベースにも応用できる。
【００５４】
本例ではＮ−ＧＲＡＭアルゴリズムの例で説明したが、集合演算機能を備えたメモリ２または情報絞込み検出機能を備えたメモリ１の機能に合わせ、インデックスとするデータの組合せ配列を適切に決めればよい。
【００５５】
つまりインデックスの１インデックスのデータ構造は少なくとも１個以上のデータの組み合わせデータ構造として、１インデックスのデータ構造をＮ個のデータの組み合わせとする場合、メモリ１、２のアドレスに対する記憶配列方法を、１個目のデータ、２個目のデータ、・・・Ｎ−１個目のデータ、Ｎ個目データ、のデータ配列となるようにアドレスに順次記憶し、それぞれのインデックスの１個目のデータが記憶された前記メモリの物理アドレスを当該インデックスのインデックスアドレス（マッチアドレス）とするインデックスのデータ配列構成とすればよい。
以上の内容はインデックスの階層化に他ならない。
【００５６】
一般データベースの場合インデックスの種類をいくつか選択し複数のインデックスエンジン１３を併用して利用すると効果的である。
また、このインデックスエンジン１３に記憶する複数の種類のインデックス情報を外部メモリに用意しておくことにより、様々な種類のインデックスを切り替えて検索を行うことも可能になる。
【００５７】
更には、付随するアドレステーブル１７をインデックス化して、多段インデックス方式のインデキシングシステムも可能になる。
【００５８】
更に、このインデックスエンジン１３の大きな特徴は消費電力である、インデックスエンジン１３の消費電力は、検索を行っている時間以外殆ど電力を消費しないため、平均的な消費電力が極めて少なく、しかも高速で情報の検索処理ができる。
従って、インデックスエンジンをコントロールするＣＰＵと、付随するアドレステーブルの登録、検索制御のためのＣＰＵはインデックスエンジンの性能やデータベースの大きさなどを考慮して適切な性能のＣＰＵならびにメモリを選択すればよいので、低消費電力の情報処理が可能になる。
情報処理の消費電力の削減は今後の情報化社会の最大の課題の一つを抜本的に解消する技術でもある。
【００５９】
SSD（シリコンデスク記憶媒体）とこのインデックスエンジン１３を一体化した半導体を作ることにより極めて小型で低消費電力のデータベース装置が実現できる。
【産業上の利用可能性】
【００６０】
インターネット検索、データベース、全文検索、辞書などのインデックスに幅広く応用可能であり、しかも低消費電力の情報処理が可能となるので情報化社会に大きく貢献出来る。
【符号の説明】
【００６１】
１．情報の絞込み検出機能を備えたメモリ
２．集合演算機能を備えたメモリ
３．連想メモリ（CAM）
４．データ条件
５．アドレス条件
６．論理演算条件
７．アドレススワップ機能
８．カウンタ機能
９．集合演算機能
１０．マッチアドレス
１１．値の演算
１２．値の位置の演算
１３．インデックスエンジン
１４．N-GRAM アルゴリズムによるインデックス
１５．文章
１６．文書
１７．アドレスデータテーブル
１８．インデックス検索
１９．インデックス登録
２０．アドレス検索
２１．アドレス登録
２２．インデキシングボード
３０．アドレス
３１．データ
３２．問い合わせデータ
【図１】
2015090567.tif 000003
【図２】
2015090567.tif 000004
【図３】
2015090567.tif 000005
【図４】
2015090567.tif 000006
【図５】
2015090567.tif 000007
【図６】
2015090567.tif 000008
【図７】
2015090567.tif 000009
【図８】
2015090567.tif 000010