JP5071486B2 - 検索装置および検索方法 - Google Patents
検索装置および検索方法 Download PDFInfo
- Publication number
- JP5071486B2 JP5071486B2 JP2009550392A JP2009550392A JP5071486B2 JP 5071486 B2 JP5071486 B2 JP 5071486B2 JP 2009550392 A JP2009550392 A JP 2009550392A JP 2009550392 A JP2009550392 A JP 2009550392A JP 5071486 B2 JP5071486 B2 JP 5071486B2
- Authority
- JP
- Japan
- Prior art keywords
- memory
- search
- default
- current state
- transition destination
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 50
- 230000015654 memory Effects 0.000 claims description 243
- 230000007704 transition Effects 0.000 claims description 110
- 238000013507 mapping Methods 0.000 claims description 11
- 239000004065 semiconductor Substances 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 17
- 238000005516 engineering process Methods 0.000 description 5
- 239000008186 active pharmaceutical agent Substances 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000010845 search algorithm Methods 0.000 description 3
- 230000007423 decrease Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000012447 hatching Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本出願は、検索装置および検索方法に関し、特に、オートマトン処理技術を適用して与えられた入力文字列であるテキストから任意の文字列であるパターンを検索する検索装置および検索方法に関する。
近年、さまざまな分野で情報量が爆発的に増加している。そして、分野によっては、情報量がギガバイトオーダーからテラバイトオーダーになりつつあり、その莫大なデータから所望のデータを短時間で取り出すことが困難になりつつある。
与えられたテキストから任意の種類のパターンを検索するパターンマッチングは、ワープロソフトやデータベースの検索など様々な分野で応用されている。
従来、パターンマッチングによる検索は様々な手法が知られており、例えば、決定性有限オートマトンを用いてXML(eXtensible Markup Language)のような構造化文書のデータを検索する装置および方法が提案されている(例えば、特許文献1参照)。
さらに、従来、テキストにハッシュ関数を適用することにより、オートマトンのメモリサイズを削減してスループットを向上する検索装置および検索方法も提案されている(例えば、特許文献2参照)。
従来のオートマトンを利用した検索装置および検索方法では、検索式が多い場合や検索式が複雑な場合には、オートマトンのサイズが非常に大きくなるという問題がある。すなわち、オートマトンのサイズが大きくなると、メモリの使用量が増加し、プロセッサなどで処理する際にキャッシュミスを多発して検索速度が低下し、或いは、検索速度の低下を回避するためのハードウェアコストが大きくなるといった問題が生じる。
さらに、特許文献2に記載された方法では、ハッシュ関数を使用するため、マッチしないテキスト文字列でもマッチしたとして検出する可能性があり、さらにオートマトンのメモリサイズを十分に削減できないという問題がある。
本出願は、上述した従来および関連技術における課題に鑑み、決定性有限オートマトンのメモリサイズをより一層小さくすることが可能な検索装置および検索方法の提供を目的とする。
第1の実施形態によれば、現在の状態をインデックスとするデフォルト遷移先情報を保持するデフォルト用メモリと、前記現在の状態と入力に基づく情報をインデックスとして前記現在の状態と前記入力が特定できるタグおよび遷移先情報を保持するイベント用メモリと、を有する検索装置であって、前記デフォルト用メモリは、n枚のデフォルト用メモリユニットを備え、1つの前記現在の状態に対してn個の前記デフォルト遷移先情報を前記n枚のデフォルト用メモリユニットに登録する検索装置が提供される。
第2の実施形態によれば、現在の状態をインデックスとするデフォルト遷移先情報をデフォルト用情報メモリに格納し、前記現在の状態と入力に基づく情報をインデックスとして前記現在の状態と前記入力が特定できるタグおよび遷移先情報をイベント用メモリに格納する検索方法であって、前記デフォルト用メモリへの前記デフォルト遷移先情報の格納は、1つの前記現在の状態に対してn個のデフォルト遷移先を登録する検索方法が提供される。
各実施形態によれば、決定性有限オートマトンのメモリサイズをより一層小さくすることが可能な検索装置および検索方法を提供することができる。
まず、検索装置および検索方法の実施例を詳述する前に、関連技術およびその問題点を、図面を参照して説明する。
図1Aおよび図1Bはオートマトンによるキーワード検索アルゴリズムの一例であるシグマ(Sigma)アルゴリズムを説明するための図である。なお、図1Aおよび図1Bは、検索対象の文書から"blue","green","red"および"yellow"のキーワードが存在するか否かを検索する例を示している。
まず、図1Aに示されるように、各キーワード条件に対応したオートマトンを作成する。具体的に、"0"で示す根から、各キーワードの先頭文字"b"、"g"、"r"、"y"に遷移し、さらに、各キーワード列の文字に遷移するオートマトンを作成する。
各キーワード列の最後の文字まで一致すれば、そのキーワード列が検索されたことになる。ここで、例えば、"green"のキーワード列には、"re"が含まれており、その後に"d"があれば"red"と一致するので、図1Aに示されるように、"green"の途中から"red"の"d"に遷移する経路が存在する。
検索は、根から始まり、オートマトン内のキーワードがあれば順次遷移し、キーワードと関係のない文字が読み込まれたら根に戻る。
例えば、図1Bに示されるように、"black"を含む文書が入力されると、"blue"の先頭の"b"に遷移し、さらに次の"l"に遷移するが、次が"a"であるため根に戻る。
このように、文書内にオートマトンのキーワード列があれば、各キーワード列の最後まで到達してヒット(Hit)情報が出力され、キーワード列が存在することが判明する。ここで、オートマトン検索において、各キーワード列の何番目の文字にあるかをノードまたは「状態」で表す。例えば、根が状態1で、"blue"の"b"にいれば状態2で、"u"にいれば状態4と称する。
図2は検索装置の一例を概略的に説明するための図であり、決定性有限オートマトンを用いた検索装置を説明するためのものである。
図2に示されるように、ディスク装置などに格納された検索対象文書11が流し込まれると、そこから順に文字バイトコード12が取り出される。以下の説明では、文字バイトコード12が8ビットで、256エントリを形成するものとする。
レジスタに保持された現在の状態(現在の状態を示すデータ)13と、文字バイトコード12とを合わせたインデックスを、検索キーワードオートマトンを形成するメモリ15の入力アドレス14とする。
入力アドレス14が入力されたメモリ15は出力データ16を出力するが、この出力データには、次の状態17およびヒット情報(ヒット値)が含まれる。そして、次の状態17は、現在の状態13に置き換わることになる。
図3Aおよび図3Bは検索装置の動作を説明するための図であり、図3Aは遷移状態図を示し、図3Bはメモリ(15)上のデータを概念的に示すものである。なお、ここでは、説明を簡単にするために、"fo"のキーワード列を検索する場合を例として説明する。
まず、図3Aに示されるように、状態1において、"f"(0x66)が出現すると状態2に進む。状態2では、"o"(0x6F)が出現すると状態3に進んでヒットとなり、再び"f"(0x66)が出現すると状態2を維持し、それ以外の場合は、状態1に戻る。
この検索キーワードオートマトンのメモリ上のデータは、図3Bに示される。なお、文字バイトコードは8ビットであり、各状態は256エントリ(アドレス)を有するものとする。
図3Bにおいて、参照符号MXは状態1からの遷移先メモリ部分を示し、MYは状態2からの遷移先メモリ部分を示し、そして、MZは状態3からの遷移先メモリ部分を示している。
メモリ部分MXは、状態1であることを表す0xXXXX_XX部分と、各キーワード列の状態1のエントリを表す00〜ff部分を組み合わせたアドレスに対して、遷移先の次の状態(遷移先次状態)を格納する。
具体的に、エントリを表す00〜ffのうち66で状態2に遷移し、それ以外の場合は、再び状態1を維持するので、0xXXXX_XX66に状態2のアドレス0xYYYY_YY00が格納され、それ以外のアドレスに対しては状態1のアドレス0xXXXX_XX00が格納される。ここで、メモリ部分MXのヒット情報は、ヒットしたことを示さないN/Aである。
メモリ部分MYは、状態2であることを表すアドレス部分0xYYYY_YYと、各キーワード列の状態2のエントリを表す00〜ffを組み合わせたアドレスに対して、遷移先次状態を格納する。
具体的に、エントリを表す00〜ffのうち6fで状態3に遷移し、66で状態2を維持し、それ以外の場合は状態1に戻るので、0xYYYY_YY6fに状態3のアドレス0xZZZZ_ZZ00が格納され、0xYYYY_YY66に状態2のアドレス0xYYYY_YY00が格納され、それ以外のアドレスに対しては状態1のアドレス0xXXXX_XX00が格納される。なお、メモリ部分MYのヒット情報は、ヒットしたことを示さないN/Aである。
メモリ部分MZは、状態3であることを表すアドレス部分0xZZZZ_ZZと、各キーワード列の状態3のエントリを表す00〜ffを組み合わせたアドレスに対して、遷移先次状態を格納する。
具体的に、エントリを表す00〜ffのうち66で状態2に遷移し、それ以外の場合は状態1に戻るので、0xZZZZ_ZZ66に状態2のアドレス0xYYYY_YY00が格納され、それ以外のアドレスに対して状態1のアドレス0xXXXX_XX00が格納される。メモリ部分MZのヒット情報は、ヒットしたことを示すHITである。従って、状態3のメモリMZまで到達すれば、キーワード列が存在することになる。
図4A〜図4Cは検索装置における処理の一例を示すフローチャートである。
図4Aに示されるように、上記のようなオートマトンを利用した検索装置の処理が開始すると、まず、ステップST1において、検索条件の入力を行う。すなわち、図1Aおよび図1Bの例であれば、"blue","green","red","yellow"を入力し、また、図3Aおよび図3Bの例であれば、"fo"を入力する。
図4Aに示されるように、上記のようなオートマトンを利用した検索装置の処理が開始すると、まず、ステップST1において、検索条件の入力を行う。すなわち、図1Aおよび図1Bの例であれば、"blue","green","red","yellow"を入力し、また、図3Aおよび図3Bの例であれば、"fo"を入力する。
次に、ステップST2に進んで、入力された検索条件、すなわち、キーワード列に基づいてオートマトンの作成を行って、ステップST3に進み、メモリ上にオートマトンを構築する。
さらに、ステップST4に進んで、検索対象文書を入力としてメモリ上のオートマトンを用いて検索を行い、ステップST5に進んで、検索結果を出力して処理を終了する。
図4Bは、図4AのフローチャートにおけるステップST3のメモリ上にオートマトンを構築する処理を、より詳細に示すものであり、例えば、前述した図3Bのようなテーブルをメモリ上に構築する処理を説明するためのものである。
まず、ステップST31において、オートマトンのノード(状態)ごとにテーブルを作成して、ステップST32に進み、オートマトンの辺(遷移先)を表現するために、テーブルのエントリに遷移先ノードのテーブルの先頭ポイント(アドレス)を書き込む。
さらに、ステップST33に進んで、最後の状態のテーブルにヒットフラグ(HIT)を書き込む。
図4Cは、図4AのフローチャートにおけるステップST4のメモリ上に構築したオートマトンを使用した検索処理を、より詳細に示すものである。
まず、ステップST41において、検索対象の文書から次の1文字を読み出し、ステップST42に進んで、文書が終わりであるか否かを判別する。ステップST42において、文書が終わりであると判別されると、図4AのステップST5に進み、文書が終わりではないと判別されると、ステップST43に進む。
ステップST43では、現在の状態と読み出した文字の文字コードを入力アドレスとして、オートマトンを構築したメモリからデータの読み出しを行い、さらに、ステップST44に進んで、読み出されたデータでキーワードがヒットするか否かを判別する。
ステップST44において、読み出されたデータでキーワードがヒットする、すなわち、ヒット情報が含まれる状態に到達すると判別されると、ステップST45に進んで、ヒット情報を更新してからステップST46に進み、読み出されたデータではキーワードがヒットしないと判別されると、そのままステップST46に進む。
ステップST46では、「現在の状態」を、前述したステップST43で読み出したデータに含まれる「次の状態」に更新してステップST41に戻る。
図5は関連技術としての検索装置の一例を概略的に説明するための図であり、決定性有限オートマトンのメモリサイズを小さくし、メモリ使用量およびキャッシュ利用効率を上げるようにしたものを示している。
図5に示されるように、ディスク装置などに格納された検索対象文書21が流し込まれると、そこから順に入力文字(バイトコード)22が取り出される。レジスタ(23)には、現在の状態が保持されている。
デフォルト用メモリ24は、現在の状態23を入力とし、デフォルトの遷移先、すなわち、根に相当する状態が記憶されており、その状態が次の状態としてレジスタ25に出力される。
入力文字22と現在の状態23は、ハッシュ器26に入力されると共に、レジスタ29に入力される。なお、ハッシュ器26は、例えば、XOR回路であり、現在の状態23と入力文字22の排他的論理和を演算してイベント用メモリ27へアクセスするためのアドレスを生成する。
イベント用メモリ27は、キーワード列のオートマトンを構成するメモリであり、キーワード列の文字とキーワード列における順番(状態)のXORの値をアドレスとする位置に、(現在の)状態と文字の組み、次の遷移先である次の状態、および、ヒット(HIT)情報が格納されており、それ以外の位置にはゼロが格納されている。
ここで、イベント用メモリ27は、アクセス時のアドレスに応じて記憶しているデータを出力するので、キーワード列の状態と文字のXORの値がアドレスとして入力されると、キーワード列の状態と文字の組み,次の状態,および,ヒット(HIT)情報を含む出力データ(現在の状態,入力文字+次の状態)28を出力し、それ以外のアドレスが入力されると、ゼロデータを出力する。ヒット情報が出力された時には、キーワード列が存在することが判明する。
なお、デフォルト用メモリ24およびイベント用メモリ27は、例えば、半導体チップに内蔵された検索コア(アクセラレータ)におけるキャッシュメモリに適用することができる。このとき、デフォルト用メモリ24およびイベント用メモリ27は、検索コアに内蔵されたキャッシュメモリを論理的に分割して割り当てることになる。
イベント用メモリ27の出力データ28のうち、状態と文字の組みは、レジスタ29に保持された現在の状態と入力文字の組みと比較され、一致するか否かが判別される。一致すれば、キーワード列内に、現在の状態23と入力文字22から決定される根以外の遷移先があることを意味するので、選択回路31でイベント用メモリ27の出力データ28の次の状態が選択される。一致しなければ、キーワード列内に、現在の状態(23)と入力文字(22)から決定される根以外の遷移先がないことを意味するので、すなわち、デフォルトの状態であるため、選択回路31でデフォルト用メモリ24から出力された次の状態が選択される。選択された次の状態は、現在の状態を格納するレジスタ23に入力される。これにより、現在の状態は、選択された次の状態に置き換えられる。
なお、上述した図5に示す関連技術の検索装置によれば、例えば、前述した図3Bに示すメモリ上のデータを次のように、デフォルト用メモリ24およびイベント用メモリ27に登録する。なお、図3Bにおいて、イベント用メモリ27に登録する遷移先状態は、ハッチングにより示されている。
すなわち、メモリ部分MXにおいて、アドレス0xXXXX_XX66に対応する遷移先状態(状態2のアドレス0xYYYY_YY00)をイベント用メモリ27に登録し、他のアドレス(0xXXXX_XX00〜0xXXXX_XX65, および, 0xXXXX_XX67〜0xXXXX_XXff)に対応する遷移先状態(状態1のアドレス0xXXXX_XX00)をデフォルト用メモリ24に登録する。
また、メモリ部分MYにおいて、アドレス0xYYYY_YY66に対応する遷移先状態(状態2のアドレス0xYYYY_YY00)およびアドレス0xYYYY_YY6fに対応する遷移先状態(状態3のアドレス0xZZZZ_ZZ00)をイベント用メモリ27に登録し、他のアドレス(0xYYYY_YY00〜0xYYYY_YY65, 0xYYYY_YY67〜0xYYYY_YY6e, および, 0xYYYY_YY70〜0xYYYY_YYff)に対応する遷移先状態(状態1のアドレス0xXXXX_XX00)をデフォルト用メモリ24に登録する。
さらに、メモリ部分MZにおいて、アドレス0xZZZZ_ZZ66に対応する遷移先状態(状態2のアドレス0xYYYY_YY00)をイベント用メモリ27に登録し、他のアドレス(0xZZZZ_ZZ00〜0xZZZZ_ZZ65, および, 0xZZZZ_ZZ67〜0xZZZZ_ZZff)に対応する遷移先状態(状態1のアドレス0xXXXX_XX00)をデフォルト用メモリ24に登録する。
このように、図5に示す関連技術としての検索装置は、同一遷移先のエントリをデフォルト(default)遷移先として格納するデフォルト用メモリ24と、キーワードに関連するデフォルトではない遷移先を格納するためのイベント用メモリ27と、を備えている。なお、デフォルト用メモリ24では、1エントリまたはある定められた入力ごとにデフォルトの遷移先を格納する。
図6A〜図6Cは図5に示す検索装置の動作を説明するための図であり、前述した図3Aと同様に、キーワード"fo"を検索する場合のオートマトンと、デフォルト用メモリ24およびイベント用メモリ27内の格納データの内容と、を示す図である。
図6Aに示されるように、オートマトンの定義されていない(キーワードではない)入力の遷移先を示す点線はすべて0x00ノードに向かっているので、デフォルト用メモリ24は、1エントリで、図6Bに示すような遷移先情報0x00と、ヒットしないことを示すヒット(HIT)情報と、を格納する。すなわち、1つのキーワードについて、これだけの情報をデフォルト用メモリ24に記憶すればよい。
イベント用メモリ27は、例えば、8ビットの256エントリの1枚構成とし、ハッシング関数として、「インデックス(アドレス)=現在の状態のID xor 入力文字バイトコード」と定義する。タグは、現在の状態のIDのみとし、入力文字バイトコードはタグとして保持しない。
これは、入力文字バイトコードはインデックス(アドレス)と現在の状態のIDから演算可能であるため、図5の構成において、イベント用メモリ27から出力される現在の状態のIDと入力文字バイトコード22から演算して出力データ28に挿入する演算機構を設ける。もちろん、イベント用メモリ27に入力文字バイトコード22も格納するようにしてもよいが、その分メモリサイズが大きくなる。
図6Cに示されるように、図6Aのオートマトンのイベント用メモリ27の格納データは0x00で示され、"f"は0x66であり、そのハッシング(XOR)値は0x66であるため、アドレス0x66には、タグとして0x00が格納され、遷移先情報として0x01が格納され、そして、ヒット情報として0(ヒットしない)が格納される。
0x01からは、"f"(0x66)で同じ状態を維持し、すなわち、0x01へ遷移するため、そのXOR値は0x67となり、アドレス0x67にタグ0x01、および、遷移先情報0x01を格納する。また、0x01からは、"o"(0x6F)で0x02に遷移するため、そのXOR値は0x6Eとなり、アドレス0x6Eにタグ0x01、遷移先情報0x02を格納する。さらに、0x02からは、"f"(0x66)で0x01へ遷移するため、そのXOR値は0x64となり、アドレス0x64にタグ0x02、および、遷移先情報0x01を格納する。
次に、入力文字列"afaffafo"があり、この中から"fo"を検索するオートマトン処理を行う場合を説明する。
入力"a"(0x61)に対して、イベント用メモリ27のインデックスは0x61でエントリ未格納であるため、デフォルト用メモリ24が出力する次の状態(遷移先情報)0x00が選択され、そのヒット情報は0である。現在の状態は、0x00になる。
入力"f"(0x66)に対して、イベント用メモリ27のインデックスは0x66でタグが0x00、次の状態(遷移先情報)が0x01で、そのヒット情報は0である。タグと現在の状態が一致するので、ヒット情報は0で、現在の状態は、0x01になる。
次の入力"a"(0x61)に対して、イベント用メモリ27のインデックスは0x60でエントリ未格納であるため、デフォルト用メモリ24が出力する次の状態(遷移先情報)0x00が選択され、そのヒット情報は0である。現在の状態は、0x00になる。
次の入力"f"(0x66)に対して、イベント用メモリ27のインデックスは0x66でタグが0x00、次の状態(遷移先情報)が0x01で、そのヒット情報は0である。タグと現在の状態が一致するので、ヒット情報は0で、現在の状態は、0x01になる。
次の入力"f"(0x66)に対して、イベント用メモリ27のインデックスは0x67でタグが0x01、次の状態(遷移先情報)が0x01で、そのヒット情報は0である。タグと現在の状態が一致するので、ヒット情報は0で、現在の状態は、0x01になる。
次の入力"a"(0x61)に対して、イベント用メモリ27のインデックスは0x60でエントリ未格納であるため、デフォルト用メモリ24が出力する次の状態(遷移先情報)0x00が選択され、そのヒット情報は0である。現在の状態は、0x00になる。
次の入力"f"(0x66)に対して、イベント用メモリ27のインデックスは0x66でタグが0x00、次の状態(遷移先情報)が0x01で、そのヒット情報は0である。タグと現在の状態が一致するので、ヒット情報は0で、現在の状態は、0x01になる。
次の入力"o"(0x6F)に対して、イベント用メモリ27のインデックスは0x6Eでタグが0x01、次の状態(遷移先情報)が0x01で、そのヒット情報は1である。タグと現在の状態が一致するので、ヒット情報は1で、現在の状態は、0x01になる。
以上が、"fo"を検索する場合の例であるが、多数のキーワードを検索するオートマトンの場合も同様である。
図7は図5に示す検索装置におけるイベント用メモリのデータ例を示す図であり、キーワード"blue","red","yellow","orange","green","purple","white"を検索するオートマトンを格納したイベント用メモリ27の利用分布(利用されるインデックス)を示すものである。
図7から明らかなように、エントリにまだ余裕があることが分かる。すなわち、例えば、図7のようなオートマトンを実現する場合、約36KBのメモリサイズが必要であるが、図5に示す関連技術の検索装置であれば、デフォルト用メモリ24が144B、イベント用メモリ27が2048Bの合計2.19KBで十分であり、メモリサイズを約1/16に削減することができる。
すなわち、文字コードサイズをn、キーワード文字数をk、状態IDサイズをmとすると、メモリ容量は2n×(k+1)×mで表される。n=8(ビット)、k=100、m=4とすれば、メモリ容量は約100KBになる。
これに対して、関連技術の検索装置によれば、タグサイズをsとすれば、メモリ容量は(k+1)×m+(k+α)×(s+m)である。s=100とすれば、メモリ容量は約2.8KBになる。通常、ハッシュ値に偏りがあるため、必要なメモリ量は上記の数倍と成るが、それでも大幅なメモリ容量の低減が可能である。
このように、図5〜図7を参照して説明した関連技術としての検索装置は、各状態の遷移先情報をデフォルト用メモリ(24)とイベント用メモリ(27)に分割し、ほとんどの入力の遷移先をデフォルト用メモリ(24)に登録することでオートマトンの遷移先情報を格納するメモリサイズを削減している。
しかしながら、1つの状態に対してそのような遷移先が複数存在する場合が考慮されていなかった。具体的に、例えば、文字照合を行うオートマトンにおいて、照合したい文字列に対応するオートマトンのほぼ全ての状態に、「スペース文字」や「タブ文字」といった無視したい文字(以下、「無視文字」とも称する)の自分自身への遷移があり、多バイト文字に対応するためには中間状態を用意して、それに遷移する必要があった。
そのため、仮に、無視文字に10種類の文字が定義されているとき、デフォルトの遷移先が1つしかない場合でも10エントリのイベント用メモリが全状態数だけ必要になり、イベント用メモリが無駄に消費されてしまうことになる。
以下、検索装置および検索方法の実施例を、添付図面を参照して詳述する。
図8は第1実施例に係る検索装置を概略的に説明するための図であり、図9は図8に示す検索装置におけるデフォルト用メモリの構成を説明するための図である。
図8は第1実施例に係る検索装置を概略的に説明するための図であり、図9は図8に示す検索装置におけるデフォルト用メモリの構成を説明するための図である。
図8に示す検索装置と前述した図5に示す関連技術としての検索装置との比較から明らかなように、本実施例の検索装置は、概略的に、デフォルト用メモリ4の構成が関連技術のもの(24)とは異なっている。
すなわち、図8および図9に示されるように、デフォルト用メモリ4は、1状態に複数のデフォルト遷移先を持つことができ、複数枚のデフォルト用メモリユニットD0〜Dn−1、デフォルト用メモリユニットD0〜Dn−1に対応したタグおよびヒット情報登録部TH、および、マッピングテーブルMTを備えている。
マッピングテーブルMTは、入力ビットパターンとデフォルト用メモリユニットD0〜Dn−1(デフォルト用メモリユニットの番号0〜n−1)との対応表であり、入力ビットパターンをインデックスとして、デフォルト用メモリユニットD0〜Dn−1の番号を得ることができるようになっている。
そして、得られたデフォルト用メモリユニットの番号(0〜n−1)に基づいてデフォルト用メモリユニット(D0〜Dn−1)の何れかを選択し、そのサイクルにおけるデフォルト遷移先(次の状態)とするようになっている。
なお、他の構成は、実質的に前述した図5に示す関連技術としての検索装置と同様なので、その説明は省略する。
ここで、デフォルト用メモリ4(デフォルト用メモリユニットD0〜Dn−1)およびイベント用メモリ7は、例えば、半導体チップ(CHIP)に内蔵された検索コア(SC:アクセラレータ)におけるキャッシュメモリに適用することができる。このとき、デフォルト用メモリ4(デフォルト用メモリユニットD0〜Dn−1)およびイベント用メモリ7は、検索コア(SC)に内蔵されたキャッシュメモリを論理的に分割して割り当てることになる。
図10Aおよび図10Bは図8に示す検索装置の動作を説明するための図であり、図10Aは遷移状態図を示し、図10Bはメモリ上のデータを概念的に示すものである。なお、ここでは、説明を簡単にするために、"fo"のキーワード列を検索する場合を例として説明する。すなわち、図10Aおよび図10Bは、キーワード"fo"を検索する場合のオートマトン、並びに、デフォルト用メモリ4およびイベント用メモリ7に格納されるデータの内を示している。
図10Aに示されるように、オートマトンの定義されていない(キーワードではない)入力の遷移先を示す点線は、すべて0x00ノードに向かっているので、デフォルト用メモリ4は、1エントリで遷移先情報0x00を格納する。また、イベント用メモリ7は、インデックス8ビットの256エントリを1枚構成とし、ハッシング関数として「インデックス(アドレス)=現在の状態のID xor 入力文字バイトコード」と定義する。タグは、現在の状態のIDのみとし、入力バイトコードは、インデックスと現在の状態のIDから特定可能であるため、タグとして保持しないこととする。
ここで、0x00から0x66の入力で0x01へ遷移するので、ハッシング値は、0x00 xor 0x66 = 0x66となり、インデックス0x66にタグ0x00、遷移先情報0x01を登録する。
0x01から0x66の入力で0x01へ遷移するので、ハッシング値は0x01 xor 0x66 = 0x67となり、インデックス0x67にタグ0x01、遷移先情報0x01を登録する。
0x01から0x6Fの入力で0x02へ遷移するので、ハッシング値は0x01 xor 0x6F = 0x6Eとなり、インデックス0x6Eにタグ0x01、遷移先情報0x02を登録する。
上記の条件に加えて、無視文字(無視したい文字)として次の文字が定義されているものとする。
無視文字:
0x20 スペース文字
0x09 水平タブ文字
0x0a 改行文字
0x20 スペース文字
0x09 水平タブ文字
0x0a 改行文字
デフォルト用メモリ4は、第1デフォルト用メモリユニットD1および第2デフォルト用メモリユニットD2の2枚のメモリユニットを備え、連想度1のキャッシュ構成(ダイレクトマップ)で、128個のエントリがあるものとする。なお、説明を簡略化するために、デフォルト用メモリ4が2枚のデフォルト用メモリユニットD1およびD2で構成された場合を説明するが、図9に示されるように、デフォルト用メモリ4は、n枚のデフォルト用メモリユニットD0〜Dn−1(例えば、D0〜D7の8枚)で構成することができるのはいうまでもない。
第1デフォルト用メモリユニットD1には、初期状態への遷移先が予め書き込まれ、また、第2デフォルト用メモリユニットD2には、無視文字の場合の遷移先が予め書き込まれているものとする。すなわち、オートマトンの各状態ビットパターン0x00, 0x01, 0x02により選択されるエントリとして、予め次のような次状態が書き込まれているものとする。
状態 D1 D2 ヒット値(ヒット情報)
0x00 0x00 0x00 0
0x01 0x00 0x01 0
0x02 0x00 0x02 1
0x00 0x00 0x00 0
0x01 0x00 0x01 0
0x02 0x00 0x02 1
これに対応して、マッピングテーブルMTには、次のように予め書き込まれている。なお、下記のデフォルト用メモリユニットの番号は、第1デフォルト用メモリユニットD1を選択する場合は"1"、また、第2デフォルト用メモリユニットD2を選択する場合は"2"としている。
入力ビットパターン デフォルト用メモリユニットの番号
0x00 1
0x01 1
... 1
0x08 1
0x09 2
0x0a 2
0x0b 1
... 1
0x1f 1
0x20 2
0x21 1
... 1
0xff 1
0x00 1
0x01 1
... 1
0x08 1
0x09 2
0x0a 2
0x0b 1
... 1
0x1f 1
0x20 2
0x21 1
... 1
0xff 1
次に、入力文字列"af a ffaf o"に対して、以下のようにオートマトン処理を行う。
まず、初期状態は、0x00である。入力"a"(0x61)に対して、イベント用メモリのインデックスは0x61でエントリは未登録となっている。そこで、入力"a"(0x61)からマッピングテーブルを引き、第1デフォルト用メモリユニットD1を選択する。第1デフォルト用メモリユニットD1の遷移先情報は0x00でヒット値は0である。
次に、0x00を現在の状態とする。入力"f"(0x66)に対して、イベント用メモリのインデックスは0x66でタグが0x00となり、イベント用メモリの遷移先情報は0x01となる。なお、ヒット値は0である。
タグと現在の状態が一致しているので、0x01を現在の状態とする。入力" "(0x20:スペース文字;無視文字)に対して、イベント用メモリのインデックスは0x21でエントリは未登録となっている。入力" "(0x20)からマッピングテーブルを引き第2デフォルト用メモリユニットD2を選択する。第2デフォルト用メモリユニットD2の遷移先情報は0x01で、ヒット値は0である。
そして、0x00を現在の状態とする。入力"a"(0x61)に対して、イベント用メモリのインデックスは0x60でエントリは未登録である。入力"a"(0x61)からマッピングテーブルを引き第1デフォルト用メモリユニットD1を選択する。なお、デフォルト用メモリの遷移先情報は0x00でヒット値は0である。
次に、0x00を現在の状態とする。入力" "(0x20)に対して、イベント用メモリのインデックスは0x20でエントリは未登録である。入力" "(0x20)からマッピングテーブルを引き第2デフォルト用メモリユニットD2を選択する。ここで、デフォルト用メモリの遷移先情報は0x00でヒット値は0である。
また、0x00を現在の状態とする。入力"f#(0x66)に対して、イベント用メモリのインデックスは0x66でタグは0x00、そして、イベント用メモリの遷移先情報は0x01である。なお、ヒット値は0である。
さらに、タグと現在の状態が一致しているので、0x01を現在の状態とする。入力"f"(0x66)に対して、イベント用メモリのインデックスは0x67でタグは0x01、そして、イベント用メモリの遷移先情報は0x01である。なお、ヒット値は0である。
また、タグと現在の状態が一致しているので、0x01を現在の状態とする。入力"a"(0x61)に対して、イベント用メモリのインデックスは0x60でエントリは未登録である。入力"a"(0x61)からマッピングテーブルを引き第1デフォルト用メモリユニットD1を選択する。ここで、デフォルト用メモリの遷移先情報は0x00でヒット値は0である。
さらに、0x00を現在の状態とする。入力"f"(0x66)に対して、イベント用メモリのインデックスは0x66でタグは0x00、そして、イベント用メモリの遷移先情報は0x01である。なお、ヒット値は0である。
ここで、タグと現在の状態が一致しているので、0x01を現在の状態とする。入力" "(0x20)に対して、イベント用メモリのインデックスは0x21でエントリは未登録である。入力" "(0x20)からよりマッピングテーブルを引き第2デフォルト用メモリユニットD2を選択する。なお、デフォルト用メモリの遷移先情報は0x01でヒット値は0である。
さらに、0x01を現在の状態とする。入力"o"(0x6F)に対して、イベント用メモリのインデックスは0x6Eでタグは0x01、そして、イベント用メモリの遷移先情報は0x02である。なお、ヒット値は0である。
そして、タグと現在の状態が一致しているので、0x02を現在の状態とする。最後に現在の状態0x02からデフォルト用メモリのヒット値(デフォルト用メモリ番号に依存せず一意に決まる)を引き、ヒット値は1でキーワードヒットとなる。
図11は第2実施例に係る検索装置におけるデフォルト用メモリの構成を説明するための図であり、デフォルト用メモリユニットを多重化して連想度(現在の状態から次の状態を選ぶ)を持たせ、アドレスの衝突が生じ難くしたセットアソシエイティブ構成としたものを示している。
前述した図9に示す第1実施例では、デフォルト用メモリ4がn枚のデフォルト用メモリユニットD0〜Dn−1で構成されているのに対して、図11に示す本第2実施例では、デフォルト用メモリ4を4枚重ね(4ウェイ)の3組のデフォルト用メモリユニットD00〜D03,D10〜D13,D20〜D23で構成するようになっている。
なお、タグおよびヒット情報登録部TH0〜TH3は、各組のデフォルト用メモリユニットの重なり枚数(4枚)に応じた構成で、それぞれタグおよびヒット情報を登録できるようになっている。また、図11では、4枚重ね(4ウェイ)の例が示されているが、この多重化の枚数(ウェイ数)は、例えば、8ウェイまたはさらに多くすることもできる。
ここで、デフォルト用メモリおよびイベント用メモリとして使用するメモリ容量の考察を行う。
まず、デフォルト用メモリの連想度を1、エントリ数128〜512とすると、デフォルト用メモリおよびイベント用メモリの各エントリサイズは次のようになる。
まず、デフォルト用メモリの連想度を1、エントリ数128〜512とすると、デフォルト用メモリおよびイベント用メモリの各エントリサイズは次のようになる。
デフォルト用メモリ:
タグ(27ビット程度)+ヒット情報(32ビット)+次状態(32ビット)×枚数
イベント用メモリ:
タグ(32ビット)+次状態(32ビット)+α(2ビット程度)
タグ(27ビット程度)+ヒット情報(32ビット)+次状態(32ビット)×枚数
イベント用メモリ:
タグ(32ビット)+次状態(32ビット)+α(2ビット程度)
全デフォルト用メモリ(128〜512)の使用を仮定して、全ノードに付加されている遷移がある場合の増加分を比較すると、デフォルト用メモリに登録する場合は、枚数が1増えるため、4B×エントリ数(128〜512)=0.5KB〜2KBとなる。
イベント用メモリに登録する場合は、各ノードにつき1エントリが占有するため、ノード数×エントリサイズ(約8B)×遷移文字数=1KB〜4KB×遷移文字数となる。従って、本実施例を適用することにより、その辺を登録するメモリ容量は、最大(遷移文字数=1の場合)で1/2に減少することが分かる。これにより、イベント用メモリが枯渇するのを避けることができる。
すなわち、本実施例によれば、デフォルト用メモリ(デフォルト用メモリユニット)の容量は増加するものの、イベント用メモリの容量を大幅に低減することができるため、全体としてメモリ容量(例えば、検索コアに設けられたキャッシュメモリの容量)を低減することができる。
すなわち、同じメモリ容量(キャッシュメモリの容量)に対しては、キャッシュミスの頻度を低下させて検索性能を向上させることが可能になり、或いは、同じ検索性能を得る場合には、メモリ容量を削減すること可能になる。
このように、本実施例によれば、例えば、「スペース文字」や「タブ文字」といった無視文字が存在する場合でも、その無視文字に対するメモリの消費を低減することができ、決定性有限オートマトンのメモリサイズをより一層小さくすることが可能になる。
図12は各実施例が適用される検索装置の一例を概略的に示す図であり、また、図13は図12の検索装置を含む検索システムの全体構成を概略的に示す図である。図12および図13において、参照符号SSはサーチサーバ、RSはラックシステム、PBはプロセッサボックス、PMはプロセッサモジュール、PGはプロセッサグループを示している。
図12では、サーチサーバSSは、1つのラックシステムRSで構成されており、そのラックシステムRSは、複数個(例えば、15個)のプロセッサボックスPBを備え、さらに、各プロセッサボックスPBは、それぞれ複数枚(例えば、28枚)のプロセッサモジュールPMを備えて構成されている。
また、各プロセッサモジュールPMは、それぞれ3つの半導体チップCHIPと3つのメモリMEMを備え、さらに、各半導体チップCHIPは、各々が1つの処理装置CPUと4つの検索コア(アクセラレータ)SCで構成される2つのプロセッサグループPGを備えて構成されている。
ここで、上述した各実施例の検索装置は、例えば、プロセッサグループPGに設けられた各検索コアSCに適用される。すなわち、各検索コアSCには、それぞれ高速アクセスが可能なキャシュメモリ(一時キャッシュ)が内蔵されており、このキャッシュメモリに対してオートマトンを作成して格納することになる。
図13に示されるように、データ管理部は、ディレクタサーバDSおよびストレージサーバSTRで構成され、また、検索処理部は、サーチサーバSSで構成される。サーチサーバSSは、例えば、LAN等のネットワークNETを介してディレクタサーバDSに繋がれ、例えば、そのディレクタサーバDSに繋がれたXMLのような構造化文書のデータが格納されたストレージサーバSTRにおける文書データを処理する。
なお、図12および図13に示す検索装置および検索システムは単なる例であり、適用されるシステムの規模や要求される検索性能等に応じて様々に変化され得るのはいうまでもない。例えば、より大規模なシステムでは、サーチサーバSSを複数台のラックシステムRSで構成し、また、複数台のディレクタサーバDSにより管理を行うといった構成にすることも可能である。
以上、上述した各実施例は、様々に変形することが可能であり、どのような決定性有限オートマトンにも適用することができ、そのようなオートマトンを使用するワープロソフト、或いは、データベース検索などに対して幅広く適用することが可能である。
以上の実施例を含む実施形態に関し、さらに、以下の付記を開示する。
(付記1)
現在の状態をインデックスとするデフォルト遷移先情報を保持するデフォルト用メモリと、
前記現在の状態と入力に基づく情報をインデックスとして前記現在の状態と前記入力が特定できるタグおよび遷移先情報を保持するイベント用メモリと、を有する検索装置であって、
前記デフォルト用メモリは、n枚のデフォルト用メモリユニットを備え、1つの前記現在の状態に対してn個の前記デフォルト遷移先情報を前記n枚のデフォルト用メモリユニットに登録する検索装置。
(付記1)
現在の状態をインデックスとするデフォルト遷移先情報を保持するデフォルト用メモリと、
前記現在の状態と入力に基づく情報をインデックスとして前記現在の状態と前記入力が特定できるタグおよび遷移先情報を保持するイベント用メモリと、を有する検索装置であって、
前記デフォルト用メモリは、n枚のデフォルト用メモリユニットを備え、1つの前記現在の状態に対してn個の前記デフォルト遷移先情報を前記n枚のデフォルト用メモリユニットに登録する検索装置。
(付記2)
付記1に記載の検索装置において、
前記各デフォルト用メモリユニットは、入力ビットパターンに従って選択される検索装置。
付記1に記載の検索装置において、
前記各デフォルト用メモリユニットは、入力ビットパターンに従って選択される検索装置。
(付記3)
付記2に記載の検索装置において、
さらに、前記入力ビットパターンをインデックスとして対応する前記デフォルト用メモリユニットの番号を得ることができるマッピングテーブルを備える検索装置。
付記2に記載の検索装置において、
さらに、前記入力ビットパターンをインデックスとして対応する前記デフォルト用メモリユニットの番号を得ることができるマッピングテーブルを備える検索装置。
(付記4)
付記2または3に記載の検索装置において、
前記入力ビットパターンは、無視文字を含む検索装置。
付記2または3に記載の検索装置において、
前記入力ビットパターンは、無視文字を含む検索装置。
(付記5)
付記1〜4のいずれか1項に記載の検索装置において、
さらに、前記デフォルト用メモリユニットに対応したタグおよびヒット情報を登録するタグおよびヒット情報登録部を備える検索装置。
付記1〜4のいずれか1項に記載の検索装置において、
さらに、前記デフォルト用メモリユニットに対応したタグおよびヒット情報を登録するタグおよびヒット情報登録部を備える検索装置。
(付記6)
付記1〜5のいずれか1項に記載の検索装置において、
前記検索装置は、構造化文書のデータから所定の文字列を検索する検索装置。
付記1〜5のいずれか1項に記載の検索装置において、
前記検索装置は、構造化文書のデータから所定の文字列を検索する検索装置。
(付記7)
付記6に記載の検索装置において、
前記構造化文書は、XML文書である検索装置。
付記6に記載の検索装置において、
前記構造化文書は、XML文書である検索装置。
(付記8)
付記1〜7のいずれか1項に記載の検索装置において、
前記各デフォルト用メモリユニットは、多重化して連想度を有する検索装置。
付記1〜7のいずれか1項に記載の検索装置において、
前記各デフォルト用メモリユニットは、多重化して連想度を有する検索装置。
(付記9)
付記1〜8のいずれか1項に記載の検索装置において、
前記検索装置は、半導体チップ内に設けられた検索コアであり、且つ、
前記デフォルト用メモリおよび前記イベント用メモリは、前記検索コアに設けられたキャシュメモリである検索装置。
付記1〜8のいずれか1項に記載の検索装置において、
前記検索装置は、半導体チップ内に設けられた検索コアであり、且つ、
前記デフォルト用メモリおよび前記イベント用メモリは、前記検索コアに設けられたキャシュメモリである検索装置。
(付記10)
付記9に記載の検索装置を複数結合すると共に、該各検索装置がアクセス可能な主記憶装置を備える検索サーバ。
付記9に記載の検索装置を複数結合すると共に、該各検索装置がアクセス可能な主記憶装置を備える検索サーバ。
(付記11)
付記10に記載の検索サーバと、
検索対象のデータが格納されたストレージサーバと、
前記検索サーバおよび前記ストレージサーバを管理するディレクタサーバと、を備える検索システム。
付記10に記載の検索サーバと、
検索対象のデータが格納されたストレージサーバと、
前記検索サーバおよび前記ストレージサーバを管理するディレクタサーバと、を備える検索システム。
(付記12)
現在の状態をインデックスとするデフォルト遷移先情報をデフォルト用情報メモリに格納し、
前記現在の状態と入力に基づく情報をインデックスとして前記現在の状態と前記入力が特定できるタグおよび遷移先情報をイベント用メモリに格納する検索方法であって、
前記デフォルト用メモリへの前記デフォルト遷移先情報の格納は、1つの前記現在の状態に対してn個のデフォルト遷移先を登録する検索方法。
現在の状態をインデックスとするデフォルト遷移先情報をデフォルト用情報メモリに格納し、
前記現在の状態と入力に基づく情報をインデックスとして前記現在の状態と前記入力が特定できるタグおよび遷移先情報をイベント用メモリに格納する検索方法であって、
前記デフォルト用メモリへの前記デフォルト遷移先情報の格納は、1つの前記現在の状態に対してn個のデフォルト遷移先を登録する検索方法。
(付記13)
コンピュータに、
現在の状態をインデックスとするデフォルト遷移先情報をデフォルト用情報メモリに格納させる手順と、
前記現在の状態と入力に基づく情報を生成させる手順と、
前記情報をインデックスとして前記現在の状態と前記入力が特定できるタグおよび遷移先情報をイベント用メモリに格納させる手順とを実行させる検索プログラムであって、
前記デフォルト用メモリへの前記デフォルト遷移先情報の格納を、1つの前記現在の状態に対してn個のデフォルト遷移先を登録する検索プログラム。
コンピュータに、
現在の状態をインデックスとするデフォルト遷移先情報をデフォルト用情報メモリに格納させる手順と、
前記現在の状態と入力に基づく情報を生成させる手順と、
前記情報をインデックスとして前記現在の状態と前記入力が特定できるタグおよび遷移先情報をイベント用メモリに格納させる手順とを実行させる検索プログラムであって、
前記デフォルト用メモリへの前記デフォルト遷移先情報の格納を、1つの前記現在の状態に対してn個のデフォルト遷移先を登録する検索プログラム。
1,11,21 検索対象文書
2,12,22 入力文字
3,13,23 現在の状態
4,24 デフォルト用メモリ
5,25 次の状態
6,26 ハッシュ器(XOR)
7,27 イベント用メモリ
8,28 現在の状態,入力文字+次の状態
9,29 レジスタ
10,30 判定部
31,100 選択回路
CHIP 半導体チップ
D0〜Dn;D00〜D03,D10〜D13,D20〜D23 デフォルト用メモリユニット
MEM メモリ
PB プロセッサボックス
PG プロセッサグループ
PM プロセッサモジュール
RS ラックシステム
SC 検索コア(アクセラレータ)
SS サーチサーバ
TH,TH0〜TH3 タグおよびヒット情報登録部
2,12,22 入力文字
3,13,23 現在の状態
4,24 デフォルト用メモリ
5,25 次の状態
6,26 ハッシュ器(XOR)
7,27 イベント用メモリ
8,28 現在の状態,入力文字+次の状態
9,29 レジスタ
10,30 判定部
31,100 選択回路
CHIP 半導体チップ
D0〜Dn;D00〜D03,D10〜D13,D20〜D23 デフォルト用メモリユニット
MEM メモリ
PB プロセッサボックス
PG プロセッサグループ
PM プロセッサモジュール
RS ラックシステム
SC 検索コア(アクセラレータ)
SS サーチサーバ
TH,TH0〜TH3 タグおよびヒット情報登録部
Claims (10)
- 現在の状態をインデックスとするデフォルト遷移先情報を保持するデフォルト用メモリと、
前記現在の状態と入力に基づく情報をインデックスとして前記現在の状態と前記入力が特定できるタグおよび遷移先情報を保持するイベント用メモリと、を有する検索装置であって、
前記デフォルト用メモリは、n枚のデフォルト用メモリユニットを備え、1つの前記現在の状態に対してn個の前記デフォルト遷移先情報を前記n枚のデフォルト用メモリユニットに登録する検索装置。 - 請求項1に記載の検索装置において、
前記各デフォルト用メモリユニットは、入力ビットパターンに従って選択される検索装置。 - 請求項2に記載の検索装置において、
さらに、前記入力ビットパターンをインデックスとして対応する前記デフォルト用メモリユニットの番号を得ることができるマッピングテーブルを備える検索装置。 - 請求項1〜3のいずれか1項に記載の検索装置において、
さらに、前記デフォルト用メモリユニットに対応したタグおよびヒット情報を登録するタグおよびヒット情報登録部を備える検索装置。 - 請求項1〜4のいずれか1項に記載の検索装置において、
前記各デフォルト用メモリユニットは、多重化して連想度を有する検索装置。 - 請求項1〜5のいずれか1項に記載の検索装置において、
前記検索装置は、半導体チップ内に設けられた検索コアであり、且つ、
前記デフォルト用メモリおよび前記イベント用メモリは、前記検索コアに設けられたキャシュメモリである検索装置。 - 請求項6に記載の検索装置を複数結合すると共に、該各検索装置がアクセス可能な主記憶装置を備える検索サーバ。
- 請求項7に記載の検索サーバと、
検索対象のデータが格納されたストレージサーバと、
前記検索サーバおよび前記ストレージサーバを管理するディレクタサーバと、を備える検索システム。 - 現在の状態をインデックスとするデフォルト遷移先情報をデフォルト用情報メモリに格納し、
前記現在の状態と入力に基づく情報をインデックスとして前記現在の状態と前記入力が特定できるタグおよび遷移先情報をイベント用メモリに格納する検索方法であって、
前記デフォルト用メモリへの前記デフォルト遷移先情報の格納は、1つの前記現在の状態に対してn個のデフォルト遷移先を登録する検索方法。 - コンピュータに、
現在の状態をインデックスとするデフォルト遷移先情報をデフォルト用情報メモリに格納させる手順と、
前記現在の状態と入力に基づく情報を生成させる手順と、
前記情報をインデックスとして前記現在の状態と前記入力が特定できるタグおよび遷移先情報をイベント用メモリに格納させる手順とを実行させる検索プログラムであって、
前記デフォルト用メモリへの前記デフォルト遷移先情報の格納を、1つの前記現在の状態に対してn個のデフォルト遷移先を登録する検索プログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2008/050811 WO2009093307A1 (ja) | 2008-01-22 | 2008-01-22 | 検索装置および検索方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2009093307A1 JPWO2009093307A1 (ja) | 2011-05-26 |
JP5071486B2 true JP5071486B2 (ja) | 2012-11-14 |
Family
ID=40900825
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009550392A Expired - Fee Related JP5071486B2 (ja) | 2008-01-22 | 2008-01-22 | 検索装置および検索方法 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP5071486B2 (ja) |
WO (1) | WO2009093307A1 (ja) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63311530A (ja) * | 1987-06-15 | 1988-12-20 | Hitachi Ltd | 文字列検索装置 |
JPH03131969A (ja) * | 1989-10-18 | 1991-06-05 | Hitachi Ltd | 記号列検索方法および検索装置 |
JPH06139278A (ja) * | 1992-10-26 | 1994-05-20 | Hitachi Ltd | 文字コード変換機能を備えた文字列検索装置 |
JPH10105576A (ja) * | 1996-06-27 | 1998-04-24 | Fujitsu Ltd | スパースな状態遷移表に基づく複数記号列の照合装置および方法 |
JP2001229172A (ja) * | 2000-02-15 | 2001-08-24 | Fujitsu Ltd | テーブルを用いたデータ処理装置および処理システム |
JP2005242668A (ja) * | 2004-02-26 | 2005-09-08 | Nippon Telegr & Teleph Corp <Ntt> | パターンマッチング装置および方法ならびにプログラム |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4365162B2 (ja) * | 2003-08-20 | 2009-11-18 | 富士通株式会社 | 構造化文書のデータを検索する装置および方法 |
JP4266222B2 (ja) * | 2005-11-30 | 2009-05-20 | 日本電信電話株式会社 | 単語翻訳装置およびそのプログラム並びにコンピュータ読み取り可能な記録媒体 |
-
2008
- 2008-01-22 WO PCT/JP2008/050811 patent/WO2009093307A1/ja active Application Filing
- 2008-01-22 JP JP2009550392A patent/JP5071486B2/ja not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63311530A (ja) * | 1987-06-15 | 1988-12-20 | Hitachi Ltd | 文字列検索装置 |
JPH03131969A (ja) * | 1989-10-18 | 1991-06-05 | Hitachi Ltd | 記号列検索方法および検索装置 |
JPH06139278A (ja) * | 1992-10-26 | 1994-05-20 | Hitachi Ltd | 文字コード変換機能を備えた文字列検索装置 |
JPH10105576A (ja) * | 1996-06-27 | 1998-04-24 | Fujitsu Ltd | スパースな状態遷移表に基づく複数記号列の照合装置および方法 |
JP2001229172A (ja) * | 2000-02-15 | 2001-08-24 | Fujitsu Ltd | テーブルを用いたデータ処理装置および処理システム |
JP2005242668A (ja) * | 2004-02-26 | 2005-09-08 | Nippon Telegr & Teleph Corp <Ntt> | パターンマッチング装置および方法ならびにプログラム |
Also Published As
Publication number | Publication date |
---|---|
JPWO2009093307A1 (ja) | 2011-05-26 |
WO2009093307A1 (ja) | 2009-07-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Kumar et al. | Advanced algorithms for fast and scalable deep packet inspection | |
CN109446362B (zh) | 基于外存的图数据库结构、图数据存储方法、装置 | |
WO2018064962A1 (zh) | 数据存储方法、电子设备和计算机非易失性存储介质 | |
KR101467589B1 (ko) | 데이터 구조를 가지는 하나 이상의 장치 판독가능 매체, 및장치 실행가능 명령어를 구비한 하나 이상의 장치 판독가능 매체 | |
US20130042055A1 (en) | Memory system including key-value store | |
EP0772836A2 (en) | A method for storing and retrieving data and a memory arrangement | |
CN108304484A (zh) | 关键词匹配方法及装置、电子设备和可读存储介质 | |
CN110109873B (zh) | 一种用于消息队列的文件管理方法 | |
CN103488710B (zh) | 大数据页中高效存储非定长数据方法 | |
CN108287840A (zh) | 一种基于矩阵哈希的数据存储和查询方法 | |
CN111339042B (zh) | 数据的操作处理方法、系统及调度服务器 | |
Lin et al. | Perfect hashing based parallel algorithms for multiple string matching on graphic processing units | |
CN109460406B (zh) | 一种数据处理方法及装置 | |
US20150006577A1 (en) | Method and system for searching and storing data | |
CN102999637A (zh) | 根据文件特征码为文件自动添加文件标签的方法及系统 | |
CN115470284A (zh) | 一种多源异构数据源导入Janusgraph图数据库的方法和装置 | |
CN100395712C (zh) | 软件系统的资源管理方法 | |
CN113392040B (zh) | 一种地址映射方法、装置、设备 | |
CN110020272A (zh) | 缓存方法、装置以及计算机存储介质 | |
Yin et al. | Content‐Based Image Retrial Based on Hadoop | |
JP5071486B2 (ja) | 検索装置および検索方法 | |
CN116842012A (zh) | 一种Redis集群的分片存储方法、装置、设备及存储介质 | |
JP6006740B2 (ja) | インデックス管理装置 | |
CN115510059A (zh) | 一种基于b+树的etc收费系统用户卡状态名单存取方法 | |
JP5041003B2 (ja) | 検索装置および検索方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20120724 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120806 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150831 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |