JP5998942B2 - Update method, update program, and verification processing apparatus - Google Patents
Update method, update program, and verification processing apparatus Download PDFInfo
- Publication number
- JP5998942B2 JP5998942B2 JP2013001412A JP2013001412A JP5998942B2 JP 5998942 B2 JP5998942 B2 JP 5998942B2 JP 2013001412 A JP2013001412 A JP 2013001412A JP 2013001412 A JP2013001412 A JP 2013001412A JP 5998942 B2 JP5998942 B2 JP 5998942B2
- Authority
- JP
- Japan
- Prior art keywords
- path
- state
- automaton
- matching
- condition
- 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
- 238000012545 processing Methods 0.000 title claims description 486
- 238000012795 verification Methods 0.000 title claims description 313
- 238000000034 method Methods 0.000 title claims description 112
- 230000007704 transition Effects 0.000 claims description 98
- 238000001514 detection method Methods 0.000 claims description 53
- 230000001186 cumulative effect Effects 0.000 description 72
- 238000010586 diagram Methods 0.000 description 57
- 101000805606 Deinagkistrodon acutus Zinc metalloproteinase-disintegrin-like acurhagin Proteins 0.000 description 11
- 238000006243 chemical reaction Methods 0.000 description 8
- 238000010276 construction Methods 0.000 description 8
- 238000012217 deletion Methods 0.000 description 8
- 230000037430 deletion Effects 0.000 description 8
- HEFNNWSXXWATRW-UHFFFAOYSA-N Ibuprofen Chemical compound CC(C)CC1=CC=C(C(C)C(O)=O)C=C1 HEFNNWSXXWATRW-UHFFFAOYSA-N 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000014509 gene expression Effects 0.000 description 4
- 240000006829 Ficus sundaica Species 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000001105 regulatory effect Effects 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本発明は、更新方法、更新プログラム、および照合処理装置に関する。 The present invention relates to an update method, an update program, and a verification processing device.
従来、入力ストリームに対して、オートマトンを用いて、パス・キーワードを含むクエリの照合を行う技術がある。オートマトンは、初期のオートマトンから照合に必要な部分ごとに段階的に更新される。オートマトンの更新では、オートマトンを記憶する記憶領域の使用量を抑制するため、オートマトンに規定された状態が削除されることがある。 Conventionally, there is a technique for matching a query including a path keyword to an input stream using an automaton. The automaton is updated step by step from the initial automaton for each part required for verification. In the automaton update, the state defined in the automaton may be deleted in order to suppress the use amount of the storage area for storing the automaton.
関連する技術としては、例えば、複数の分岐XPath式ごとにターゲットパスおよび述語それぞれの絶対パスおよびスコープパスを抽出し、各パスをノードとして部分的に等しいノードまたはノード間のリンクを共有可能部分として共有化するものがある。また、例えば、ノードまたはノード間のリンクを共有化して、複数の分岐XPath式から1つの共有化インデックスを構築し、共有化インデックスのノードごとに設定された参照カウンタをもとに、分岐XPath式の登録および削除を行う技術がある。また、例えば、構造化文書の構造情報から検索式で指定された要素が出現しなくなる条件を求め、中断条件が満たされた場合には検索オートマトンの状態遷移を削除し、すべての有効な状態遷移がなくなった場合には解析を終了する技術がある。 As a related technique, for example, an absolute path and a scope path of a target path and a predicate are extracted for each of a plurality of branch XPath expressions, and a partially equal node or a link between nodes is shared as a shareable part. There is something to share. Further, for example, a node or a link between nodes is shared to construct one shared index from a plurality of branch XPath expressions, and the branch XPath expression is based on a reference counter set for each node of the shared index. There is a technology to register and delete. In addition, for example, the condition that the element specified by the search expression does not appear is obtained from the structure information of the structured document, and when the interruption condition is satisfied, the state transition of the search automaton is deleted and all the valid state transitions are deleted. There is a technique for ending the analysis when there is no more.
しかしながら、上述した従来技術では、オートマトンから削除した状態と同一の状態に遷移する場合に行われる、削除した状態と同一の状態を再作成してオートマトンに追加する更新処理の処理量が増大して、クエリの照合処理にかかる処理時間が増大してしまう。 However, in the above-described conventional technology, the amount of update processing that is performed when transitioning to the same state as the state deleted from the automaton and re-creating the same state as the deleted state and adding to the automaton is increased. The processing time required for query matching processing increases.
1つの側面では、本発明は、オートマトンを用いたクエリの照合処理の高速化を図ることを目的とする。 In one aspect, an object of the present invention is to speed up a query matching process using an automaton.
本発明の一側面によれば、オートマトンを用いて、タグにより階層化された入力ストリームに対して、キーワードとキーワードに対応するパスの条件とを含むクエリの照合を行うコンピュータが、入力ストリームから条件を満たすパスを検出するたびに、条件を満たすパスごとの検出回数を計数し、初期状態と、開始タグ記号を示す開始状態と、終了タグ記号を示す終了状態とが規定され、条件を満たすパスを示すパス照合状態が複数規定されたオートマトンに、条件を満たすパスを示す新たなパス照合状態を追加する場合、計数した条件を満たすパスごとの検出回数に基づいて、オートマトンを更新する更新方法、更新プログラム、および照合処理装置が提案される。 According to one aspect of the present invention, a computer that performs matching of a query including a keyword and a path condition corresponding to the keyword with respect to an input stream hierarchized by tags using an automaton, Each time a path that satisfies the condition is detected, the number of detections for each path that satisfies the condition is counted, and an initial state, a start state that indicates a start tag symbol, and an end state that indicates an end tag symbol are defined. An update method for updating the automaton based on the number of detections for each path satisfying the counted condition when adding a new path matching state indicating a path satisfying the condition to the automaton in which a plurality of path matching states indicating An update program and a verification processing device are proposed.
本発明の一側面によれば、オートマトンを用いたクエリの照合処理の高速化を図ることができるという効果を奏する。 According to one aspect of the present invention, it is possible to increase the speed of query matching processing using an automaton.
以下に添付図面を参照して、本発明にかかる更新方法、更新プログラム、および照合処理装置の実施の形態を詳細に説明する。なお、本実施の形態では、オートマトンを総称する符号として「A」を用いるが、更新の状態を特定するために、「A0」,「A1」,「A2」…「An」の符号を付すことがある。「A0」は初期のオートマトンを示す符号であり、「A1」は1回目の更新後のオートマトンを示す符号であり、「A2」は2回目の更新後のオートマトンを示す符号であり、「An」はn回目の更新後のオートマトンを示す符号である。 Exemplary embodiments of an update method, an update program, and a verification processing device according to the present invention will be described below in detail with reference to the accompanying drawings. In the present embodiment, “A” is used as a code that collectively refers to automata, but “A0”, “A1”, “A2”... “An” are added in order to specify the update state. There is. “A0” is a code indicating the initial automaton, “A1” is a code indicating the automaton after the first update, “A2” is a code indicating the automaton after the second update, and “An” Is a code indicating the automaton after the nth update.
<オートマトン更新例>
図1は、本実施の形態にかかるオートマトン更新例を示す説明図である。図1に示すように、照合処理装置100は、入力ストリームSに対して、オートマトンAを用いて、クエリQの照合を行うコンピュータである。照合処理装置100は、クエリQの照合を行う際に、クエリQの照合に用いる各種状態がオートマトンAに規定されていなければ、クエリQの照合に用いる各種状態を新たにオートマトンAに追加することにより、オートマトンAを更新する。
<Example of automaton update>
FIG. 1 is an explanatory diagram showing an example of automaton update according to the present embodiment. As shown in FIG. 1, the matching
ここで、入力ストリームSとは、タグにより階層化されたデータ列であって、発生源Gとなるコンピュータからネットワーク101を介して受信されるデータ列である。入力ストリームSとは、例えば、XML(Extensible Markup Language)データやHTML(HyperText Markup Language)データである。以下の説明では、XMLデータを例に挙げて説明する。
Here, the input stream S is a data string that is hierarchized by tags, and is a data string that is received from the computer that is the source G via the
タグとは、要素の集合が存在する位置を示す情報であって、例えば、開始タグや終了タグである。位置とは、例えば、入力ストリームS内の階層である。開始タグとは、要素の集合の開始位置を示す情報であって、図1の例では、開始タグ<news>や開始タグ<name>などである。終了タグとは、要素の集合の終了位置を示す情報であって、図1の例では、終了タグ</news>や終了タグ</name>などである。要素とは、開始タグと終了タグとの間に含まれる文字列や開始タグや終了タグである。 A tag is information indicating a position where a set of elements exists, and is, for example, a start tag or an end tag. The position is, for example, a hierarchy in the input stream S. The start tag is information indicating the start position of a set of elements, and in the example of FIG. 1, is a start tag <news>, a start tag <name>, or the like. The end tag is information indicating the end position of the set of elements. In the example of FIG. 1, the end tag is an end tag </ news>, an end tag </ name>, or the like. An element is a character string, a start tag, or an end tag included between a start tag and an end tag.
クエリQとは、例えば、キーワードとキーワードに対応するパスの条件とを含む情報である。クエリQは、図1の例では、クエリDB102に記憶される。キーワードとは、入力ストリームS内の文字列と照合される文字列であって、図1の例では、文字列「Bob」である。パスとは、例えば、入力ストリームSの最上階層から任意のタグが示す階層までの経路である。以下の説明では、パスは、最上階層から任意のタグが示す階層までの経路上にある各タグのタグ内文字列を「/」で接続した形式で表記される。図1の例では、開始タグ<news>のパスは、最上階層であるルートが示す第0階層から開始タグ<news>が示す第1階層までの経路上の各タグのタグ内文字列を「/」で接続した「/news」である。同様に、開始タグ<date>のパスは、最上階層であるルートが示す第0階層⇒開始タグ<news>が示す第1階層⇒開始タグ<date>が示す第2階層の経路上の各タグのタグ内文字列を「/」で接続した「/news/date」である。 The query Q is information including, for example, a keyword and a path condition corresponding to the keyword. The query Q is stored in the query DB 102 in the example of FIG. The keyword is a character string that is collated with the character string in the input stream S, and is the character string “Bob” in the example of FIG. The path is, for example, a path from the top layer of the input stream S to a layer indicated by an arbitrary tag. In the following description, the path is expressed in a format in which the character strings in the tags of each tag on the route from the top layer to the layer indicated by an arbitrary tag are connected by “/”. In the example of FIG. 1, the path of the start tag <news> is a character string in the tag of each tag on the route from the 0th hierarchy indicated by the root that is the highest hierarchy to the 1st hierarchy indicated by the start tag <news>. “/ News” connected with “/”. Similarly, the path of the start tag <date> includes each tag on the route of the second hierarchy indicated by the start hierarchy <date> of the 0th hierarchy indicated by the root which is the highest hierarchy → the start tag <news> This is “/ news / date” in which the character strings in the tag are connected by “/”.
パスの条件とは、キーワードが存在する階層を示すパスの条件であって、図1の例では、「/news//name」である。「/news//name」は、第0階層⇒第1階層「news」⇒任意の階層「name」のパスを示す。「//」は、第1階層「news」から任意の階層「name」までの経路上に、どのような階層があってもよいことを示す。したがって、例えば、パス「/news/name」やパス「/news/write/name」やパス「/news/name/write/name」などが、クエリQ内のパスの条件を満たす。 The path condition is a path condition indicating a hierarchy in which a keyword exists, and is “/ news // name” in the example of FIG. “/ News // name” indicates a path from the 0th layer → the first layer “news” → an arbitrary layer “name”. “//” indicates that there may be any hierarchy on the route from the first hierarchy “news” to an arbitrary hierarchy “name”. Therefore, for example, the path “/ news / name”, the path “/ news / write / name”, the path “/ news / name / write / name”, and the like satisfy the conditions of the path in the query Q.
オートマトンAとは、例えば、少なくとも、初期状態と、開始タグ記号を示す開始状態と、終了タグ記号を示す終了状態とが規定された情報である。開始タグ記号とは、開始タグからタグ内文字列を除いた「<>」である。終了タグ記号とは、終了タグからタグ内文字列を除いた「</>」である。 The automaton A is information defining, for example, at least an initial state, a start state indicating a start tag symbol, and an end state indicating an end tag symbol. The start tag symbol is “<>” obtained by removing the character string in the tag from the start tag. The end tag symbol is “</>” obtained by removing the character string in the tag from the end tag.
オートマトンAには、さらに、クエリQの照合に用いる各種状態が規定されていてもよい。クエリQの照合に用いる各種状態とは、例えば、クエリQ内の条件を満たすパスを示すパス照合状態と、パス照合状態からクエリQ内のキーワードによって順次遷移されるキーワード照合途中状態およびキーワード照合完了状態と、である。また、オートマトンAの記憶領域には上限があるため、オートマトンAに規定することができる状態の数には上限があるとする。 In the automaton A, various states used for matching the query Q may be further defined. The various states used for query Q verification include, for example, a path verification status indicating paths that satisfy the condition in query Q, a keyword verification intermediate state that is sequentially shifted from the path verification status by a keyword in query Q, and keyword verification completion. State. Further, since the storage area of the automaton A has an upper limit, it is assumed that the number of states that can be defined in the automaton A has an upper limit.
以下の説明では、まず、オートマトンAの更新例1として、照合処理装置100が、オートマトンAの空き領域がなくなるまで、クエリQの照合に用いる各種状態を新たにオートマトンAに追加する場合の例を示す。次に、オートマトンAの更新例2として、照合処理装置100が、オートマトンAの空き領域がない時に、クエリQの照合に用いる各種状態を新たにオートマトンAに追加することにより、オートマトンAを更新する場合の例を示す。
In the following description, first, as an update example 1 of the automaton A, an example in which the
(オートマトン更新例1)
オートマトンAの更新例1においては、照合処理装置100は、入力ストリームSの先頭から読み込んで、クエリQの条件を満たすパスを検出する。照合処理装置100は、クエリQの条件を満たすパスを検出するごとに、クエリQの条件を満たすパスごとの検出回数を計数すると共に、クエリQのキーワードの照合に用いるパス照合状態を生成する。
(Automata update example 1)
In the update example 1 of the automaton A, the matching
例えば、照合処理装置100は、クエリQの条件を満たすパス「/news/write/name」を検出し、検出したパスを示すパス照合状態を生成する。ここで、パス照合状態には、クエリQの条件を満たすパス「/news/write/name」に固有なパスIDが割り当てられる。図1の例では、「4」が割り当てられる。
For example, the
また、照合処理装置100は、開始状態からの遷移先の変更を行う。具体的には、照合処理装置100は、開始状態からパス照合状態への遷移、パス照合状態から開始状態や終了状態への遷移、パス照合状態からクエリQ内のキーワードへの遷移、その遷移先状態を生成する。
Further, the
また、照合処理装置100は、入力ストリームSの走査位置がパス照合状態の時に「Bob」を読み込んだ場合に、クエリQのキーワードと照合できるよう、パス照合状態からの遷移先状態を生成する。遷移先状態は、第1のキーワード照合途中状態と、パス照合状態から第1のキーワード照合途中状態への遷移「B」と、である。また、照合処理装置100は、第1のキーワード照合途中状態からの遷移先になる第2のキーワード照合途中状態と、第1のキーワード照合途中状態から第2のキーワード照合途中状態への遷移「o」と、を生成する。また、照合処理装置100は、第2のキーワード照合途中状態からの遷移先になるキーワード照合完了状態と、第2のキーワード照合途中状態からキーワード照合完了状態への遷移「b」と、を生成する。
Further, the matching
また、照合処理装置100は、パス「/news/write/name」の検出回数を計数する。ここでは、照合処理装置100は、パス「/news/write/name」の検出回数「1」を計数したとする。
Further, the
照合処理装置100は、同様に、パス「/news/edit/name」を検出し、パス「/news/edit/name」のパスID「7」が割り当てられたパス照合状態を生成してオートマトンAに規定する。また、照合処理装置100は、キーワード照合途中状態と、キーワード照合完了状態と、を生成してオートマトンAに規定する。また、照合処理装置100は、パス「/news/edit/name」の検出回数「1」を計数する。
Similarly, the
また、照合処理装置100は、同様に、パス「/news/prev/name」を検出し、パス「/news/prev/name」のパスID「9」が割り当てられたパス照合状態を生成してオートマトンAに規定する。また、照合処理装置100は、キーワード照合途中状態と、キーワード照合完了状態と、を生成してオートマトンAに規定する。また、照合処理装置100は、パス「/news/prev/name」の検出回数「1」を計数する。ここで、オートマトンAの空き領域がなくなるとする。
Similarly, the
その後、同様に、照合処理装置100は、入力ストリームSを順次読み込んで処理を行い、パス「/news/write/name」の検出回数「3」を計数し、パス「/news/edit/name」の検出回数「3」を計数したとする。また、パス「/news/prev/name」の検出回数は「1」のままであるとする。これにより、オートマトンAの更新例1が終了する。
Thereafter, similarly, the matching
(オートマトン更新例2)
オートマトンAの更新例2において、照合処理装置100は、クエリQの条件を満たすパス「/news/ghost/name」を検出する。ここで、オートマトンAには、空き領域がないため、検出したパス「/news/ghost/name」のパスID「10」が割り当てられたパス照合状態を、新たにオートマトンAに規定することができない。
(Automata update example 2)
In the update example 2 of the automaton A, the
そこで、照合処理装置100は、オートマトンAに規定されたパス照合状態のうち、いずれかのパス照合状態を削除することにより、パスID「10」が割り当てられたパス照合状態を新たにオートマトンAに規定する。具体的には、照合処理装置100は、パスごとに計数した検出回数に基づいて、検出回数が少ないパスのパスIDが割り当てられたパス照合状態を削除する。そして、照合処理装置100は、パスID「10」が割り当てられたパス照合状態を生成してオートマトンAに新たに規定する。また、照合処理装置100は、キーワード照合途中状態と、キーワード照合完了状態と、を生成してオートマトンAに規定する。これにより、オートマトンAの更新例2が終了する。
Therefore, the
このように、照合処理装置100は、オートマトンAの更新において、オートマトンAに規定されたパス照合状態のうち、クエリQの条件を満たすと検出された検出回数が相対的に多いパス照合状態を残す。したがって、照合処理装置100は、オートマトンAに規定されたパス照合状態のうち、後に再び走査する可能性が相対的に高いパス照合状態を残すことができる。換言すれば、照合処理装置100は、後に再び走査する可能性が相対的に高いパス照合状態を削除してしまって、後に再び同一のパス照合状態を生成することになってしまうことを防止することができる。結果として、照合処理装置100は、オートマトン更新処理の負荷を低減し、オートマトンAにパス照合状態を生成することによって生じる処理遅延時間を抑制し、オートマトンAを用いたクエリQの照合処理を高速化することができる。
Thus, in the update of the automaton A, the matching
<入力ストリームSとクエリQとの照合例>
図2は、入力ストリームSとクエリQとの照合例を示す説明図である。照合処理装置100は、入力ストリームSにおいて、クエリQ内のパスの条件を満たすパスが示す階層にキーワード「Bob」が含まれる場合に、キーワード「Bob」を出力する。ここで、照合処理装置100は、文字列「Bob」と共に、文字列「Bob」の位置を示す情報を出力してもよい。文字列「Bob」の位置を示す情報とは、例えば、パスであってもよいし、文字列「Bob」が存在する行番号であってもよい。
<Example of collation between input stream S and query Q>
FIG. 2 is an explanatory diagram showing an example of collation between the input stream S and the query Q. The
図3は、入力ストリームSの変換例を示す説明図である。照合処理装置100は、入力ストリームSを先頭の<news>から末尾の</news>まで順次読み込む。照合処理装置100は、タグについて変換を行う。これにより、タグが圧縮されるため、オートマトンAの縮小化を図ることができる。
FIG. 3 is an explanatory diagram illustrating an example of conversion of the input stream S. The
図3の例では、開始タグ記号「<>」は「[」に変換される。また、終了タグ記号「</>」は「]」に変換される。また、タグ内文字列は、各々固有な番号に変換される。本例では、読み込み順に、「1」、「2」、…に変換される。例えば、「news」が「1」に、「date」が「2」に、「write」が「3」に、「name」が「4」に変換される。以下の説明では、変換された入力ストリームSを、「変換ストリームs」と表記する場合がある。 In the example of FIG. 3, the start tag symbol “<>” is converted to “[”. Also, the end tag symbol “</>” is converted to “]”. In addition, each character string in the tag is converted into a unique number. In this example, they are converted into “1”, “2”,. For example, “news” is converted into “1”, “date” is converted into “2”, “write” is converted into “3”, and “name” is converted into “4”. In the following description, the converted input stream S may be referred to as “converted stream s”.
図4は、入力ストリームSのパスを示す説明図である。パスとは、入力ストリームSの最上階層から各タグが示す階層までの経路を示す情報である。図4の例では、理解の容易のため、便宜上、入力ストリームSについてのパススキーマを用いてパスを説明するが、入力ストリームSがどのように構成されているかは、入力ストリームSを読み込んで自ら解析するまで照合処理装置100は認識していない。
FIG. 4 is an explanatory diagram showing the path of the input stream S. The path is information indicating a route from the top layer of the input stream S to the layer indicated by each tag. In the example of FIG. 4, for ease of understanding, the path will be described using a path schema for the input stream S for convenience. However, how the input stream S is configured is determined by reading the input stream S The
パススキーマは、入力ストリームSの階層構造を示すツリー構造体である。入力ストリームSでは、「news」が第1階層、「date」および「write」が第2階層、「name」が第3階層となる。第0階層のルートから第1階層の「news」に至るまでの経路がパスp1、ルートから「date」に至るまでの経路がパスp2、ルートから「write」に至るまでの経路がパスp3、ルートから「name」に至るまでの経路がパスp4である。 The path schema is a tree structure indicating the hierarchical structure of the input stream S. In the input stream S, “news” is the first hierarchy, “date” and “write” are the second hierarchy, and “name” is the third hierarchy. The path from the root of the 0th hierarchy to the "news" of the 1st hierarchy is the path p1, the path from the root to "date" is the path p2, the path from the root to "write" is the path p3, The path from the route to “name” is the path p4.
各パスp1〜p4に割り当てた数字は、図3で変換した固有な番号に対応する。具体的には、パスp#(#は数字)は、#に変換されたタグ文字列のタグが示す階層に到達するパスである。例えば、パスp2は、「2」に変換されたタグ内文字列「date」に到達するパスである。また、パスp4は、「4」に変換されたタグ内文字列「name」に到達するパスである。#は、後述するパスIDとなる。照合処理装置100は、入力ストリームSの読み込み中に、現在読み込んでいるタグを末尾とするパスを検出することになる。
The numbers assigned to the paths p1 to p4 correspond to the unique numbers converted in FIG. Specifically, the path p # (# is a number) is a path that reaches the hierarchy indicated by the tag of the tag character string converted to #. For example, the path p2 is a path that reaches the in-tag character string “date” converted to “2”. The path p4 is a path that reaches the in-tag character string “name” converted to “4”. # Is a path ID described later. While reading the input stream S, the
図5は、パスID管理テーブルの一例を示す説明図である。パスID管理テーブルTは、パスIDを管理するテーブルである。パスID管理テーブルTは、パスID項目と、パス項目と、累計項目と、前回項目と、を有し、パスごとに、各項目の値がレコードとして格納される。 FIG. 5 is an explanatory diagram showing an example of the path ID management table. The path ID management table T is a table for managing path IDs. The path ID management table T includes a path ID item, a path item, a cumulative item, and a previous item, and the value of each item is stored as a record for each path.
パスID管理テーブルTは、デフォルトではレコードがない空の状態である。パスID項目には、パスIDが格納される。パスIDとは、パスを一意に特定する識別情報であり、上述した#となる。パス項目には、パスが格納される。例えば、パスID「4」のパスp4の場合、「/news/write/name」が格納される。 The path ID management table T is empty by default with no records. The path ID item stores a path ID. The path ID is identification information for uniquely specifying a path, and is # described above. A path is stored in the path item. For example, in the case of the path p4 with the path ID “4”, “/ news / write / name” is stored.
累計項目には、パスがクエリQの条件に一致した累計回数が格納される。累計回数とは、例えば、そのパスにより到達したタグがクエリQの条件に一致した回数であって、そのパスに対応するパス照合状態の生成や削除に関わらず、累計される。 The cumulative number field stores the cumulative number of times that the path matches the query Q condition. The cumulative number of times is, for example, the number of times that the tag reached by the path matches the query Q condition, and is cumulative regardless of the generation or deletion of the path matching state corresponding to the path.
前回項目には、フラグが格納される。フラグとは、例えば、そのパスにより到達したタグが開始タグとして出現したか終了タグとして出現したかを示す識別子である。フラグは、未出現の場合が「(なし)」であり、開始タグとして出現すれば「開始」に設定され、開始タグとして出現した後に終了タグとして出現すれば「終了」に設定される。 A flag is stored in the previous item. The flag is an identifier indicating, for example, whether a tag reached by the path has appeared as a start tag or an end tag. The flag is “(none)” when it does not appear, and is set to “start” if it appears as a start tag, and is set to “end” if it appears as a start tag after appearing as a start tag.
例えば、入力ストリームSの読み込み中に開始タグ<name>が出現すると、照合処理装置100は、パスp4を検出して、パスID管理テーブルTの新規レコードに、パスID「4」と、パスp4(/news/write/name)、累計回数「1」、フラグ「開始」を登録する。その後、終了タグ</name>が出現すると、照合処理装置100は、パスp4のフラグを「開始」から「終了」に変更する。
For example, when the start tag <name> appears while the input stream S is being read, the
このようにして、パスID管理テーブルTには、パスが検出される都度レコードが追加され、その終了タグが検出されると、フラグが更新される。これにより、パスの累計回数を検出することができる。また、終了タグの直後に読み込まれた開始タグは、その終了タグのパスよりも1階層上の階層から辿ることにより、パスを検出できることになる。例えば、パスp2の終了タグ</date>の後に開始タグ<write>が出現するが、1つ上の階層の<news>に戻ってから<write>に辿ることにより、パスp3を検出することができる。 In this way, a record is added to the path ID management table T every time a path is detected, and the flag is updated when the end tag is detected. Thereby, the cumulative number of passes can be detected. In addition, the start tag read immediately after the end tag can be detected by tracing from the layer one level higher than the path of the end tag. For example, the start tag <write> appears after the end tag </ date> of the path p2, but the path p3 is detected by going back to <new> after returning to <news> one level above. Can do.
図6は、頻度管理テーブルの一例を示す説明図である。頻度管理テーブルFは、パスIDの出現頻度を管理するテーブルである。頻度管理テーブルFは、パスID項目を有し、パスが出現するごとに、パスID項目の値がレコードとして格納される。 FIG. 6 is an explanatory diagram showing an example of the frequency management table. The frequency management table F is a table for managing the appearance frequency of the path ID. The frequency management table F has a path ID item, and each time a path appears, the value of the path ID item is stored as a record.
頻度管理テーブルFは、デフォルトではレコードがない空の状態である。パスID項目には、パスIDが格納される。パスIDとは、上述したように、パスを一意に特定する識別情報であり、#となる。 The frequency management table F is empty by default with no records. The path ID item stores a path ID. As described above, the path ID is identification information that uniquely identifies a path, and is #.
例えば、入力ストリームSの読み込み中に開始タグ<name>が出現すると、照合処理装置100は、パスp4を検出して、頻度管理テーブルFの新規レコードに、パスID「4」を登録する。
For example, when the start tag <name> appears while the input stream S is being read, the
頻度管理テーブルFは、レコード数の上限が決定されたテーブルであって、レコード数が上限に達した場合に新たにレコードを格納する時は、最古のレコードを削除して新たにレコードを格納する。このようにして、頻度管理テーブルFには、パスが検出される都度レコードが追加される。 The frequency management table F is a table in which the upper limit of the number of records is determined. When a new record is stored when the number of records reaches the upper limit, the oldest record is deleted and a new record is stored. To do. In this way, a record is added to the frequency management table F every time a path is detected.
図7は、初期オートマトンA0の構築例を示す説明図である。図1に示したように、照合処理装置100は、初期オートマトンA0を記憶する。初期オートマトンA0は、どの入力ストリームSにも適用可能であるため、或るタイミングで構築して照合処理装置100内に保存しておけばよい。初期オートマトンA0が未構築の場合、照合処理装置100は、(A)において、初期状態N0と、開始タグ記号「<>」から変換された開始タグ記号「[」を示す開始状態N1を生成する。また、照合処理装置100は、終了タグ記号「</>」から変換された終了タグ記号「]」を示す終了状態N2を生成する。
FIG. 7 is an explanatory diagram showing a construction example of the initial automaton A0. As shown in FIG. 1, the
そして、照合処理装置100は、初期状態N0自身のループとなる遷移t00と、開始状態N1から初期状態N0への遷移t10と、終了状態N2から初期状態N0への遷移t20を生成する。「Σ」は、すべての記号を示す。なお、以下の図面中の遷移の符号txyにおいて、xは遷移元の状態の状態IDを示し、yは遷移先の状態の状態IDを示す。
Then, the
照合処理装置100は、(B)において、初期状態N0自身のループとなる遷移t00から「[」および「]」を削除し、初期状態N0から開始状態N1への遷移t01と、初期状態N0から終了状態N2への遷移t02を生成する。これにより、初期オートマトンA0が構築される。構築された初期オートマトンA0は、照合処理装置100内の記憶領域に格納され、入力ストリームSの受信が開始される都度、読み出される。
In (B), the
図8は、ノード構造体の一例を示す説明図である。ノード構造体Nとは、オートマトンAの状態の特徴を記憶するデータ構造体である。具体的には、ノード構造体Nは、状態ごとに、状態IDと、状態の種類と、ノードカウンタと、リストLとを記憶する。状態IDとは、状態を一意に特定する識別情報である。各状態には、状態IDとして固有の識別情報が割り当てられる。状態の種類とは、その状態が、どのような種類なのかを特定する属性情報である。例えば、上述した「初期状態」、「開始状態」、「終了状態」がある。このほか、「パス照合状態」、「キーワード照合途中状態」、「キーワード照合完了状態」がある。「パス照合状態」、「キーワード照合途中状態」、「キーワード照合完了状態」については、後述する。 FIG. 8 is an explanatory diagram illustrating an example of a node structure. The node structure N is a data structure that stores the characteristics of the state of the automaton A. Specifically, the node structure N stores a state ID, a state type, a node counter, and a list L for each state. The state ID is identification information that uniquely identifies the state. Each state is assigned unique identification information as a state ID. The type of state is attribute information that identifies what type the state is. For example, there are “initial state”, “start state”, and “end state” described above. In addition, there are a “path verification state”, a “keyword verification in progress”, and a “keyword verification completion status”. The “path verification status”, “keyword verification in progress”, and “keyword verification completion status” will be described later.
ノードカウンタとは、開始状態からノードに遷移した遷移回数である。リストLとは、状態の遷移先状態を特定する遷移を保持するデータ構造である。具体的には、リストLには、記号ごとに領域が用意されており、その領域に遷移先状態の状態IDが格納される。以下、図9に、初期オートマトンA0に規定された各状態のノード構造体Nを示す。 The node counter is the number of transitions from the start state to the node. The list L is a data structure that holds a transition that specifies a state transition destination state. Specifically, an area is prepared for each symbol in the list L, and the state ID of the transition destination state is stored in the area. FIG. 9 shows the node structure N in each state defined in the initial automaton A0.
図9は、初期オートマトンA0における各状態のノード構造体Nの一例を示す説明図である。図9において、(A)に初期状態N0のノード構造体N、(B)に開始状態N1のノード構造体N、(C)に終了状態N2のノード構造体Nを示す。 FIG. 9 is an explanatory diagram showing an example of the node structure N in each state in the initial automaton A0. 9A shows the node structure N in the initial state N0, FIG. 9B shows the node structure N in the start state N1, and FIG. 9C shows the node structure N in the end state N2.
(A)において、初期状態N0の状態IDは「0」である。また、初期状態N0であるため、状態の種類は「初期」である。また、初期状態N0において、「[」が出現すると開始状態N1に遷移することになるため、リストLの記号「[」の領域には、開始状態N1の状態ID「1」が格納される。同様に、初期状態N0において、「]」が出現すると終了状態N2に遷移することになるため、リストLの記号「]」の領域には、終了状態N2の状態ID「2」が格納される。また、全記号Σのうち「[」および「]」を除いた「Σ\{[,]}」の各々については、初期状態N0自身にループするため、「Σ\{[,]}」の各記号の領域には、初期状態N0の状態ID「0」が格納される。 In (A), the state ID of the initial state N0 is “0”. Further, since the state is the initial state N0, the state type is “initial”. In addition, when “[” appears in the initial state N0, the state transitions to the start state N1, and thus the state ID “1” of the start state N1 is stored in the area of the symbol “[” in the list L. Similarly, when “]” appears in the initial state N0, the state transitions to the end state N2, and thus the state ID “2” of the end state N2 is stored in the area of the symbol “]” of the list L. . Further, each of “Σ \ {[,]}” excluding “[” and “]” among all symbols Σ loops to the initial state N0 itself, and therefore “Σ \ {[,]}” In each symbol area, the state ID “0” of the initial state N0 is stored.
(B)において、開始状態N1の状態IDは「1」である。また、開始状態N1であるため、状態の種類は「開始」である。また、開始状態N1において、全記号Σのいずれの記号が出現しても初期状態N0に遷移することになるため、リストLの各記号の領域には、初期状態N0の状態ID「0」が格納される。 In (B), the state ID of the start state N1 is “1”. Further, since the state is the start state N1, the state type is “start”. In addition, since any symbol of all symbols Σ appears in the start state N1, the state transitions to the initial state N0. Therefore, the state ID “0” of the initial state N0 is set in each symbol area of the list L. Stored.
(C)において、終了状態N2の状態IDは「2」である。また、終了状態N2であるため、状態の種類は「終了」である。また、終了状態N2において、全記号Σのいずれの記号が出現しても初期状態N0に遷移することになるため、リストLの各記号の領域には、初期状態N0の状態ID「0」が格納される。初期オートマトンA0に含まれていないパス照合状態、キーワード照合途中状態、およびキーワード照合完了状態も、(A)〜(C)と同様のノード構造体Nである。 In (C), the state ID of the end state N2 is “2”. Further, since the state is the end state N2, the state type is “end”. In addition, since any symbol of all symbols Σ appears in the end state N2, the state transitions to the initial state N0. Therefore, the state ID “0” of the initial state N0 is set in each symbol area of the list L. Stored. The path matching state, the keyword matching in progress state, and the keyword matching completion state that are not included in the initial automaton A0 are also the node structures N similar to (A) to (C).
<照合処理装置100の動作例>
次に、照合処理装置100の動作例について具体的に説明する。以下の図において、図中、旗印は、オートマトンAの現在位置を示し、太矢印は走査を示す。
<Operation Example of
Next, an operation example of the
照合処理装置100は、例えば、パスID管理テーブルTの累計回数を用いてオートマトンAを更新する動作を行うことができる。以下の説明では、照合処理装置100によって行われる、パスID管理テーブルTの累計回数を用いてオートマトンAを更新する動作を、「第1の動作例」と表記する場合がある。
The
また、照合処理装置100は、例えば、パスID管理テーブルTの累計回数を頻度管理テーブルFにより修正し、修正した累計回数を用いてオートマトンAを更新する動作を行うことができる。以下の説明では、修正した累計回数を用いてオートマトンAを更新する動作を、「第2の動作例」と表記する場合がある。
Further, for example, the
また、照合処理装置100は、例えば、パスID管理テーブルTの累計回数とフラグとを用いてオートマトンAを更新する動作を行うことができる。以下の説明では、パスID管理テーブルTの累計回数とフラグとを用いてオートマトンAを更新する動作を、「第3の動作例」と表記する場合がある。
In addition, the
(照合処理装置100の第1の動作例)
まず、図10〜図30を用いて、照合処理装置100の第1の動作例について説明する。図10〜図30は、照合処理装置100の第1の動作例を示す説明図である。第1の動作例においては、パスID管理テーブルTの前回項目がなくてもよいし、頻度管理テーブルFがなくてもよい。したがって、図10〜図30では、パスID管理テーブルTの前回項目と、頻度管理テーブルFと、の表記を省略する。
(First operation example of collation processing apparatus 100)
First, a first operation example of the
図10は、初期オートマトンA0の走査開始前の状態を示している。図10では、クエリQと初期オートマトンA0が用意されている。また、入力ストリームSの各入力データが格納される第1バッファb1と、入力データから変換された変換入力データが格納される第2バッファb2と、現在のパスが登録される第3バッファb3と、が用意されている。図10は走査前であるため、第1バッファb1と第2バッファb2と第3バッファb3とは空である。また、パスID管理テーブルTにもレコードは存在しない。 FIG. 10 shows a state before the scanning of the initial automaton A0. In FIG. 10, a query Q and an initial automaton A0 are prepared. Also, a first buffer b1 in which each input data of the input stream S is stored, a second buffer b2 in which converted input data converted from the input data is stored, and a third buffer b3 in which the current path is registered , Is prepared. Since FIG. 10 is before scanning, the first buffer b1, the second buffer b2, and the third buffer b3 are empty. Further, there is no record in the path ID management table T.
次に、図11の説明に移行する。図11は、図10の状態から入力ストリームSのレコード1の先頭データである開始タグ<news>が受信された場合の処理を示している。
Next, the description proceeds to FIG. FIG. 11 shows processing when the start tag <news>, which is the top data of the
図11において、入力ストリームSの先頭データである開始タグ<news>が第1バッファb1に書き込まれると、照合処理装置100は、<news>を読み出して「[1」に変換し、第2バッファb2に書き込む。また、開始タグ<news>が受信されたため、照合処理装置100は、現在のパスpとして、「/news」を検出して第3バッファb3に書き込む。
In FIG. 11, when the start tag <news>, which is the top data of the input stream S, is written to the first buffer b1, the
そして、照合処理装置100は、パスID管理テーブルTに、パスID「1」、第3バッファb3内のパス「/news」、累計回数「(なし)」のレコードを登録する。
Then, the
第3バッファb3のパスp1はクエリQの条件に一致しないため、照合処理装置100は、第2バッファb2の「[」により、走査位置である初期状態N0から開始状態N1に走査し、第2バッファb2の「1」により、開始状態N1から初期状態N0に走査する。
Since the path p1 of the third buffer b3 does not match the condition of the query Q, the
次に、図12の説明に移行する。図12は、図11の状態から入力ストリームSのレコード1の開始タグ<date>が受信された場合の処理を示している。
Next, the description proceeds to FIG. FIG. 12 shows processing when the start tag <date> of the
図12において、入力ストリームSの開始タグ<date>が第1バッファb1に書き込まれると、照合処理装置100は、<date>を読み出して「[2」に変換し、第2バッファb2に書き込む。また、開始タグ<date>が受信されたため、照合処理装置100は、第3バッファb3の「/news」の末尾に「/date」を書き込む。
In FIG. 12, when the start tag <date> of the input stream S is written to the first buffer b1, the
そして、照合処理装置100は、パスID管理テーブルTに、パスID「2」、第3バッファb3内のパス「/news/date」、累計回数「(なし)」のレコードを登録する。
Then, the
また、第3バッファb3のパスp2はクエリQの条件に一致しない。このため、照合処理装置100は、第2バッファb2の「[」により、走査位置である初期状態N0から開始状態N1に走査し、第2バッファb2の「2」により、開始状態N1から初期状態N0に走査する。
Further, the path p2 of the third buffer b3 does not match the condition of the query Q. Therefore, the
次に、図13の説明に移行する。図13は、図12の状態から入力ストリームSのレコード1の文字列「2011−12−01」が受信された場合の処理を示している。
Next, the description proceeds to FIG. FIG. 13 shows processing when the character string “2011-12-01” of the
図13において、入力ストリームSの文字列「2011−12−01」が第1バッファb1に書き込まれると、照合処理装置100は、文字列「2011−12−01」を読み出して変換せずに第2バッファb2に書き込む。また、文字列が受信された場合、パスID管理テーブルTへの登録は実行されない。
In FIG. 13, when the character string “2011-12-01” of the input stream S is written to the first buffer b1, the
そして、照合処理装置100は、第2バッファb2の文字列「2011−12−01」のうちの先頭文字「2」により、走査位置である初期状態N0から初期状態N0に走査する。また、照合処理装置100は、第2バッファの文字列「2011−12−01」の先頭以降の文字により、同様に初期状態N0から初期状態N0に走査する。
Then, the
次に、図14の説明に移行する。図14は、図13の状態から入力ストリームSのレコード1の終了タグ</date>が受信された場合の処理を示している。
Next, the description proceeds to FIG. FIG. 14 shows processing when the end tag </ date> of the
図14において、入力ストリームSの終了タグ</date>が第1バッファb1に書き込まれると、照合処理装置100は、</date>を読み出して「]2」に変換し、第2バッファb2に書き込む。また、照合処理装置100は、第3バッファb3のパスp2:「/news/date」から「/」および終了タグ</date>のタグ内文字列「date」を削除して、パスp1:「/news」に戻す。
In FIG. 14, when the end tag </ date> of the input stream S is written to the first buffer b1, the
また、第3バッファb3のパスp1はクエリQの条件に一致しない。このため、照合処理装置100は、第2バッファb2の「]」により、走査位置である初期状態N0から終了状態N2に走査し、第2バッファb2の「2」により、終了状態N2から初期状態N0に走査する。
Further, the path p1 of the third buffer b3 does not match the query Q condition. For this reason, the
次に、図15の説明に移行する。図15は、図14の状態から入力ストリームSのレコード1の開始タグ<write>が受信された場合の処理を示している。
Next, the description proceeds to FIG. FIG. 15 shows processing when the start tag <write> of the
図15において、入力ストリームSの開始タグ<write>が第1バッファb1に書き込まれると、照合処理装置100は、<write>を読み出して「[3」に変換し、第2バッファb2に書き込む。また、開始タグ<write>が受信されたため、照合処理装置100は、第3バッファb3の「/news」の末尾に「/」およびタグ内文字列「write」を書き込む。
In FIG. 15, when the start tag <write> of the input stream S is written to the first buffer b1, the
そして、照合処理装置100は、パスID管理テーブルTに、パスID「3」、第3バッファb3内のパス「/news/write」、累計回数「(なし)」のレコードを登録する。
Then, the
また、第3バッファb3のパスp3はクエリQの条件に一致しない。このため、照合処理装置100は、第2バッファb2の「[」により、走査位置である初期状態N0から開始状態N1に走査し、第2バッファb2の「3」により、開始状態N1から初期状態N0に走査する。
Further, the path p3 of the third buffer b3 does not match the query Q condition. Therefore, the
次に、図16の説明に移行する。図16は、図15の状態から入力ストリームSのレコード1の開始タグ<name>が受信された場合の処理を示している。
Next, the description proceeds to FIG. FIG. 16 shows processing when the start tag <name> of the
図16において、入力ストリームSの開始タグ<name>が第1バッファb1に書き込まれると、照合処理装置100は、<name>を読み出して「[4」に変換し、第2バッファb2に書き込む。また、開始タグ<name>が受信されたため、照合処理装置100は、第3バッファb3の「/news/write」の末尾に「/」およびタグ内文字列「name」を書き込む。
In FIG. 16, when the start tag <name> of the input stream S is written to the first buffer b1, the
そして、照合処理装置100は、パスID管理テーブルTに、パスID「4」、第3バッファb3内のパス「/news/write/name」、累計回数「(なし)」のレコードを登録する。ここで、第3バッファb3のパスp4はクエリQの条件に一致する。このため、照合処理装置100は、レコードの累計回数を「(なし)」から「1」に更新する。
Then, the
また、第3バッファb3のパスp4はクエリQの条件に一致する。このため、照合処理装置100は、オートマトンAの1回目の更新を実行する。具体的には、照合処理装置100は、まず、新規状態を生成する。新規状態は、パスID「4」を示す状態である。この状態はクエリQの条件を満たすパスp4を特定する状態であるため、以下の説明では、この状態を「パス照合状態」と表記する場合がある。
The path p4 of the third buffer b3 matches the query Q condition. For this reason, the
また、第2バッファb2には、「[4」が書き込まれたため、パス照合状態N3は、開始状態N1からの遷移先状態となる。このとき、具体的には、開始状態N1のリストLの記号「4」の領域に、パス照合状態N3の状態IDが格納される。以下の説明では、簡単のため、各状態のリストLの更新についての説明は省略する。したがって、記号ΣのうちパスID「4」を除いた記号「Σ\{4}」で遷移される場合は、開始状態N1の遷移先は初期状態N0となる。一方で、パスID「4」で遷移される場合は、開始状態N1の遷移先はパス照合状態N3となる。 Further, since “[4” is written in the second buffer b2, the path verification state N3 becomes the transition destination state from the start state N1. At this time, specifically, the state ID of the path matching state N3 is stored in the area of the symbol “4” in the list L of the start state N1. In the following description, for the sake of simplicity, description of updating the list L in each state is omitted. Accordingly, when transition is made with the symbol “Σ \ {4}” excluding the path ID “4” in the symbol Σ, the transition destination of the start state N1 is the initial state N0. On the other hand, when the transition is made with the path ID “4”, the transition destination of the start state N1 is the path verification state N3.
また、パス照合状態N3が生成されると、照合処理装置100は、クエリQのキーワードを構成する文字によりパス照合状態N3から順次遷移される遷移先状態を生成する。以下の説明では、キーワードを構成する文字により遷移される遷移先状態のうち、末尾文字以外の文字により遷移される遷移先状態を、「キーワード照合途中状態」と表記する場合がある。以下の説明では、末尾文字により遷移される遷移先状態を、「キーワード照合完了状態」と表記する場合がある。
In addition, when the path matching state N3 is generated, the matching
図16の例では、先頭文字「B」および2番目の文字「o」により遷移される遷移先状態は、キーワード照合途中状態N4,N5となり、末尾文字「b」により遷移される遷移先状態は、キーワード照合完了状態N6となる。 In the example of FIG. 16, the transition destination states that are transitioned by the first character “B” and the second character “o” are the keyword matching intermediate states N4 and N5, and the transition destination state that is transitioned by the last character “b” is The keyword collation completion state N6 is entered.
また、照合処理装置100は、パス照合状態N3から開始状態N1への遷移(不図示)と終了状態N2への遷移(不図示)を生成する。また、照合処理装置100は、パス照合状態N3が自身にループする遷移(不図示)も生成する。この遷移は、全記号Σから開始タグ記号「[」、終了タグ記号「]」およびキーワードの先頭文字「B」を除いた記号「Σ\{[,],B}」となる。これにより、1回目のオートマトンAの更新が完了する。
Further, the matching
照合処理装置100は、更新後のオートマトンAにより走査を開始する。照合処理装置100は、第2バッファb2の「[4」の「[」により、走査位置である初期状態N0から開始状態N1に走査し、第2バッファb2の「4」により、開始状態N1からパス照合状態N3に走査する。走査位置は、パス照合状態N3となる。照合処理装置100は、パス照合状態N3に走査すると、パス照合状態N3のノードカウンタを「0」から「1」に更新する。図16〜図42において、パス照合状態の右上に示した数字は当該パス照合状態のノードカウンタの値を示す。
The
次に、図17の説明に移行する。図17は、図16の状態から入力ストリームSのレコード1の文字列「Alice」が受信された場合の処理を示している。
Next, the description proceeds to FIG. FIG. 17 shows processing when the character string “Alice” of the
図17において、入力ストリームSの文字列「Alice」が第1バッファb1に書き込まれると、照合処理装置100は、文字列「Alice」を読み出して変換せずに第2バッファb2に書き込む。また、文字列が受信された場合、パスID管理テーブルTへの登録は実行されない。
In FIG. 17, when the character string “Alice” of the input stream S is written into the first buffer b1, the
また、第2バッファb2の文字列「Alice」のうち先頭文字「A」はキーワードの先頭文字「B」と異なるため、照合処理装置100は、文字「A」により、走査位置であるパス照合状態N3からパス照合状態N3に走査する。また、照合処理装置100は、第2バッファの文字列「Alice」の先頭以降の文字により、同様にパス照合状態N3からパス照合状態N3に走査する。
In addition, since the first character “A” in the character string “Alice” in the second buffer b2 is different from the first character “B” of the keyword, the
次に、図18の説明に移行する。図18は、図17の状態から入力ストリームSのレコード1の終了タグ</name>が受信された場合の処理を示している。
Next, the description proceeds to FIG. FIG. 18 shows processing when the end tag </ name> of the
図18において、入力ストリームSの終了タグ</name>が第1バッファb1に書き込まれると、照合処理装置100は、</name>を読み出して「]4」に変換し、第2バッファb2に書き込む。また、照合処理装置100は、第3バッファb3のパスp4:「/news/write/name」から「/」および終了タグ</name>のタグ内文字列「name」を削除して、パスp3:「/news/write」に戻す。
In FIG. 18, when the end tag </ name> of the input stream S is written to the first buffer b1, the
また、第3バッファb3のパスp3はクエリQの条件に一致しない。このため、照合処理装置100は、第2バッファb2の「]」により、走査位置であるパス照合状態N3から終了状態N2に走査し、第2バッファb2の「4」により、終了状態N2から初期状態N0に走査する。
Further, the path p3 of the third buffer b3 does not match the query Q condition. For this reason, the
次に、図19の説明に移行する。図19は、図18の状態から入力ストリームSのレコード1の終了タグ</write>が受信された場合の処理を示している。
Next, the description shifts to the description of FIG. FIG. 19 shows processing when the end tag </ write> of the
図19において、入力ストリームSの終了タグ</write>が第1バッファb1に書き込まれると、照合処理装置100は、</write>を読み出して「]3」に変換し、第2バッファb2に書き込む。また、照合処理装置100は、第3バッファb3のパスp3:「/news/write」から「/」および終了タグ</write>のタグ内文字列「write」を削除して、パスp1:「/news」に戻す。
In FIG. 19, when the end tag </ write> of the input stream S is written to the first buffer b1, the
また、第3バッファb3のパスp1はクエリQの条件に一致しない。このため、照合処理装置100は、第2バッファb2の「]」により、走査位置である初期状態N0から終了状態N2に走査し、第2バッファb2の「3」により、終了状態N2から初期状態N0に走査する。
Further, the path p1 of the third buffer b3 does not match the query Q condition. Therefore, the
次に、図20の説明に移行する。図20は、図19の状態から入力ストリームSのレコード1の開始タグ<edit>が受信された場合の処理を示している。
Next, the description shifts to the description of FIG. FIG. 20 shows a process when the start tag <edit> of the
図20において、入力ストリームSの開始タグ<edit>が第1バッファb1に書き込まれると、照合処理装置100は、<edit>を読み出して「[5」に変換し、第2バッファb2に書き込む。また、開始タグ<edit>が受信されたため、照合処理装置100は、第3バッファb3の「/news」の末尾に「/」およびタグ内文字列「edit」を書き込む。
In FIG. 20, when the start tag <edit> of the input stream S is written to the first buffer b1, the
そして、照合処理装置100は、パスID管理テーブルTに、パスID「5」、第3バッファb3内のパス「/news/edit」、累計回数「(なし)」のレコードを登録する。
Then, the
また、第3バッファb3のパスp3はクエリQの条件に一致しない。このため、照合処理装置100は、第2バッファb2の「[」により、走査位置である初期状態N0から開始状態N1に走査し、第2バッファb2の「5」により、開始状態N1から初期状態N0に走査する。
Further, the path p3 of the third buffer b3 does not match the query Q condition. For this reason, the
次に、図21の説明に移行する。図21は、図20の状態から入力ストリームSのレコード1の開始タグ<name>が受信された場合の処理を示している。
Next, the description proceeds to FIG. FIG. 21 shows processing when the start tag <name> of the
図21において、入力ストリームSの開始タグ<name>が第1バッファb1に書き込まれると、照合処理装置100は、<name>を読み出して「[6」に変換し、第2バッファb2に書き込む。また、開始タグ<name>が受信されたため、照合処理装置100は、第3バッファb3の「/news/edit」の末尾に「/」およびタグ内文字列「name」を書き込む。
In FIG. 21, when the start tag <name> of the input stream S is written to the first buffer b1, the
そして、照合処理装置100は、パスID管理テーブルTに、パスID「6」、第3バッファb3内のパス「/news/edit/name」、累計回数「(なし)」のレコードを登録する。ここで、第3バッファb3のパスp6はクエリQの条件に一致する。このため、照合処理装置100は、レコードの累計回数を「(なし)」から「1」に更新する。
Then, the
また、第3バッファb3のパスp6はクエリQの条件に一致する。このため、照合処理装置100は、オートマトンAの2回目の更新を実行する。具体的には、照合処理装置100は、クエリQの条件を満たすパスp6を特定するパス照合状態N7を生成する。また、パス照合状態N7が生成されると、照合処理装置100は、クエリQのキーワードの各文字によりパス照合状態N7から順次遷移される遷移先状態として、キーワード照合途中状態N8,N9とキーワード照合完了状態N10とを生成する。
The path p6 of the third buffer b3 matches the query Q condition. For this reason, the
また、照合処理装置100は、パス照合状態N7から開始状態N1への遷移(不図示)と終了状態N2への遷移(不図示)を生成する。また、照合処理装置100は、パス照合状態N7が自身にループする遷移(不図示)も生成する。この遷移は、全記号Σから開始タグ記号「[」、終了タグ記号「]」およびキーワードの先頭文字「B」を除いた記号「Σ\{[,],B}」となる。これにより、2回目のオートマトンAの更新が完了する。
Further, the matching
照合処理装置100は、更新後のオートマトンAにより走査を開始する。照合処理装置100は、第2バッファb2の「[6」の「[」により、走査位置である初期状態N0から開始状態N1に走査し、第2バッファb2の「6」により、開始状態N1からパス照合状態N7に走査する。走査位置は、パス照合状態N7となる。照合処理装置100は、パス照合状態N7に走査すると、パス照合状態N7のノードカウンタを「0」から「1」に更新する。
The
次に、図22の説明に移行する。図22は、図21の状態から入力ストリームSのレコード1の文字列「Bob」が受信された場合の処理を示している。
Next, the description shifts to the description of FIG. FIG. 22 shows processing when the character string “Bob” of the
図22において、入力ストリームSの文字列「Bob」が第1バッファb1に書き込まれると、照合処理装置100は、文字列「Bob」を読み出して変換せずに第2バッファb2に書き込む。また、文字列が受信された場合、パスID管理テーブルTへの登録は実行されない。
In FIG. 22, when the character string “Bob” of the input stream S is written to the first buffer b1, the
また、第2バッファb2の文字列「Bob」のうち先頭文字「B」はキーワードの先頭文字「B」と一致するため、照合処理装置100は、文字「B」により、走査位置であるパス照合状態N7からキーワード照合途中状態N8に走査する。次に、照合処理装置100は、文字列「Bob」のうち2番目の文字「o」により、走査位置であるキーワード照合途中状態N8から次のキーワード照合途中状態N9に走査する。
In addition, since the first character “B” in the character string “Bob” in the second buffer b2 matches the first character “B” of the keyword, the
そして、照合処理装置100は、文字列「Bob」のうち末尾文字「b」により、キーワード照合途中状態N9からキーワード照合完了状態N10に走査する。ここで、キーワード照合完了状態N10に走査したため、照合処理装置100は、クエリQのキーワード「Bob」を出力する。
Then, the matching
次に、図23の説明に移行する。図23は、図22の状態から入力ストリームSのレコード1の終了タグ</name>が受信された場合の処理を示している。
Next, the description proceeds to FIG. FIG. 23 shows processing when the end tag </ name> of the
図23において、入力ストリームSの終了タグ</name>が第1バッファb1に書き込まれると、照合処理装置100は、</name>を読み出して「]6」に変換し、第2バッファb2に書き込む。また、照合処理装置100は、第3バッファb3のパスp6:「/news/edit/name」から「/」および終了タグ</name>のタグ内文字列「name」を削除して、パスp5:「/news/edit」に戻す。
In FIG. 23, when the end tag </ name> of the input stream S is written to the first buffer b1, the
ここで、第3バッファb3のパスp5はクエリQの条件に一致しない。このため、照合処理装置100は、第2バッファb2の「]」により、走査位置であるキーワード照合完了状態N10から終了状態N2に走査し、第2バッファb2の「6」により、終了状態N2から初期状態N0に走査する。
Here, the path p5 of the third buffer b3 does not match the query Q condition. For this reason, the
次に、図24の説明に移行する。図24は、図23の状態から、入力ストリームSのレコード1の残りの各データが受信され、照合処理装置100によって図10〜図23と同様にして処理された場合の処理結果を示している。
Next, the description proceeds to FIG. FIG. 24 shows a processing result when each remaining data of the
図24において、開始タグ<prev>が受信されると、照合処理装置100によって、開始タグ<prev>を変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新される。また、パスID管理テーブルTにパスID「7」に関するレコードが登録され、オートマトンAが走査される。
In FIG. 24, when the start tag <prev> is received, the
次に、開始タグ<write>が受信されると、照合処理装置100によって、開始タグ<write>を変換したデータが第2バッファb2に書き込まれ、第3バッファb3が更新される。また、パスID管理テーブルTにパスID「8」に関するレコードが登録され、オートマトンAが走査される。
Next, when the start tag <write> is received, the
そして、開始タグ<name>が受信されると、照合処理装置100によって、開始タグ<name>を変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新される。また、パスID管理テーブルTにパスID「9」に関するレコードが登録され、オートマトンAが走査される。また、オートマトンAにパス照合状態N11と、キーワード照合途中状態N12,N13と、キーワード照合完了状態N14と、が生成される。また、パス照合状態N11のノードカウンタは「0」から「1」に更新される。
When the start tag <name> is received, the
次に、文字列「Carol」が受信され、終了タグ</name>が受信され、終了タグ</write>が受信され、終了タグ</prev>が受信され、終了タグ</news>が受信される。ここで、各データが受信されるごとに、照合処理装置100によって、各データを変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新され、オートマトンAが走査される。走査位置は、初期状態N0となる。
Next, the character string “Carol” is received, the end tag </ name> is received, the end tag </ write> is received, the end tag </ prev> is received, and the end tag </ news> is received. Is done. Here, each time each data is received, the data obtained by converting each data is written into the second buffer b2 by the
次に、図25の説明に移行する。図25は、図24の状態から、入力ストリームSのレコード2の各データが受信され、照合処理装置100によって図10〜図24と同様にして処理された場合の処理結果を示している。
Next, the description proceeds to FIG. FIG. 25 shows a processing result when each data of the
図25において、開始タグ<news>が受信され、開始タグ<date>が受信され、文字列「2011−12−02」が受信され、終了タグ</date>が受信され、開始タグ<write>が受信される。ここで、各データが受信されるごとに、照合処理装置100によって、各データを変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新され、オートマトンAが走査される。
In FIG. 25, the start tag <news> is received, the start tag <date> is received, the character string “2011-12-02” is received, the end tag </ date> is received, and the start tag <write> is received. Is received. Here, each time each data is received, the data obtained by converting each data is written into the second buffer b2 by the
次に、開始タグ<name>が受信されると、照合処理装置100によって、開始タグ<name>を変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新される。また、パスID管理テーブルTのパスID「4」に関する累計回数が「1」から「2」に更新され、オートマトンAが走査される。また、パスID「4」を特定するパス照合状態N3のノードカウンタが「1」から「2」に更新される。
Next, when the start tag <name> is received, the
次に、文字列「Carol」が受信され、終了タグ</name>が受信され、終了タグ</write>が受信され、開始タグ<edit>が受信される。ここで、各データが受信されるごとに、照合処理装置100によって、各データを変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新され、オートマトンAが走査される。
Next, the character string “Carol” is received, the end tag </ name> is received, the end tag </ write> is received, and the start tag <edit> is received. Here, each time each data is received, the data obtained by converting each data is written into the second buffer b2 by the
次に、開始タグ<name>が受信されると、照合処理装置100によって、開始タグ<name>を変換したデータが第2バッファb2に書き込まれ、第3バッファb3が更新される。また、パスID管理テーブルTのパスID「6」に関する累計回数が「1」から「2」に更新され、オートマトンAが走査される。また、パスID「6」を特定するパス照合状態N7のノードカウンタが「1」から「2」に更新される。
Next, when the start tag <name> is received, the
次に、文字列「Dick」が受信され、終了タグ</name>が受信され、終了タグ</edit>が受信され、終了タグ</news>が受信される。ここで、各データが受信されるごとに、照合処理装置100によって、各データを変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新され、オートマトンAが走査される。走査位置は、初期状態N0となる。
Next, the character string “Dick” is received, the end tag </ name> is received, the end tag </ edit> is received, and the end tag </ news> is received. Here, each time each data is received, the data obtained by converting each data is written into the second buffer b2 by the
次に、図26の説明に移行する。図26は、図25の状態から、入力ストリームSのレコード3の途中までの各データが受信され、照合処理装置100によって図10〜図24と同様にして処理された場合の処理結果を示している。
Next, the description proceeds to FIG. FIG. 26 shows a processing result when each piece of data from the state of FIG. 25 to the middle of the
図26において、開始タグ<news>が受信され、開始タグ<date>が受信され、文字列「2011−12−03」が受信され、終了タグ</date>が受信され、開始タグ<write>が受信される。ここで、各データが受信されるごとに、照合処理装置100によって、各データを変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新され、オートマトンAが走査される。
In FIG. 26, the start tag <news> is received, the start tag <date> is received, the character string “2011-12-03” is received, the end tag </ date> is received, and the start tag <write> is received. Is received. Here, each time each data is received, the data obtained by converting each data is written into the second buffer b2 by the
次に、開始タグ<name>が受信されると、照合処理装置100によって、開始タグ<name>を変換したデータが第2バッファb2に書き込まれ、第3バッファb3が更新される。また、パスID管理テーブルTのパスID「4」に関する累計回数が「2」から「3」に更新され、オートマトンAが走査される。また、パスID「4」を特定するパス照合状態N3のノードカウンタが「2」から「3」に更新される。
Next, when the start tag <name> is received, the
次に、文字列「Alice」が受信され、終了タグ</name>が受信され、終了タグ</write>が受信され、開始タグ<edit>が受信される。ここで、各データが受信されるごとに、照合処理装置100によって、各データを変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新され、オートマトンAが走査される。
Next, the character string “Alice” is received, the end tag </ name> is received, the end tag </ write> is received, and the start tag <edit> is received. Here, each time each data is received, the data obtained by converting each data is written into the second buffer b2 by the
次に、開始タグ<name>が受信されると、照合処理装置100によって、開始タグ<name>を変換したデータが第2バッファb2に書き込まれ、第3バッファb3が更新される。また、パスID管理テーブルTのパスID「6」に関する累計回数が「2」から「3」に更新され、オートマトンAが走査される。また、パスID「6」を特定するパス照合状態N7のノードカウンタが「2」から「3」に更新される。
Next, when the start tag <name> is received, the
次に、文字列「Dick」が受信され、終了タグ</name>が受信され、終了タグ</edit>が受信され、開始タグ<prev>が受信され、開始タグ<write>が受信される。ここで、各データが受信されるごとに、照合処理装置100によって、各データを変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新され、オートマトンAが走査される。
Next, the character string “Dick” is received, the end tag </ name> is received, the end tag </ edit> is received, the start tag <prev> is received, and the start tag <write> is received. . Here, each time each data is received, the data obtained by converting each data is written into the second buffer b2 by the
次に、開始タグ<name>が受信されると、照合処理装置100によって、開始タグ<name>を変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新される。また、パスID管理テーブルTのパスID「9」に関する累計回数が「1」から「2」に更新され、オートマトンAが走査される。また、パスID「9」を特定するパス照合状態N11のノードカウンタが「1」から「2」に更新される。
Next, when the start tag <name> is received, the
次に、文字列「Carol」が受信され、終了タグ</name>が受信され、終了タグ</write>が受信される。ここで、各データが受信されるごとに、照合処理装置100によって、各データを変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新され、オートマトンAが走査される。
Next, the character string “Carol” is received, the end tag </ name> is received, and the end tag </ write> is received. Here, each time each data is received, the data obtained by converting each data is written into the second buffer b2 by the
次に、開始タグ<edit>が受信されると、照合処理装置100によって、開始タグ<edit>を変換したデータが第2バッファb2に書き込まれ、第3バッファb3が更新される。また、パスID管理テーブルTにパスID「10」に関するレコードが登録され、オートマトンAが走査される。
Next, when the start tag <edit> is received, the
次に、図27の説明に移行する。図27は、図26の状態から入力ストリームSのレコード3の開始タグ<name>が受信された場合の処理を示している。
Next, the description proceeds to FIG. FIG. 27 shows processing when the start tag <name> of the
図27において、入力ストリームSの開始タグ<name>が第1バッファb1に書き込まれると、照合処理装置100は、<name>を読み出して「[11」に変換し、第2バッファb2に書き込む。また、開始タグ<name>が受信されたため、照合処理装置100は、第3バッファb3の「/news/prev/edit」の末尾に「/」およびタグ内文字列「name」を書き込む。
In FIG. 27, when the start tag <name> of the input stream S is written to the first buffer b1, the
そして、照合処理装置100は、パスID管理テーブルTに、パスID「11」、第3バッファb3内のパス「/news/prev/edit/name」、累計回数「(なし)」のレコードを登録する。ここで、第3バッファb3のパスp11はクエリQの条件に一致する。このため、照合処理装置100は、レコードの累計回数を「(なし)」から「1」に更新する。
Then, the
また、第3バッファb3のパスp11はクエリQの条件に一致する。このため、照合処理装置100は、オートマトンAの3回目の更新を実行する。具体的には、照合処理装置100は、クエリQの条件を満たすパスp11を特定するパス照合状態N15を生成する。このとき、オートマトンAには、既に最大規定数のパス照合状態が規定されているため、照合処理装置100は、オートマトンAに規定されているパス照合状態N3,N7,N11のうち、いずれかのパス照合状態を削除して、パス照合状態N15を生成する。
The path p11 of the third buffer b3 matches the query Q condition. For this reason, the
例えば、照合処理装置100は、パスID管理テーブルTの累計回数が最小になるパスID「9」を特定する。次に、照合処理装置100は、特定したパスID「9」を特定するパス照合状態N11を削除する。そして、照合処理装置100は、パス照合状態N11の削除に伴って、パス照合状態N11から順次遷移されるキーワード照合途中状態N12,N13とキーワード照合完了状態N14とを削除する。次に、照合処理装置100は、パス照合状態N15を生成する。また、パス照合状態N15が生成されると、照合処理装置100は、クエリQのキーワードを構成する文字によりパス照合状態N15から順次遷移される遷移先状態として、キーワード照合途中状態N16,N17とキーワード照合完了状態N18とを生成する。
For example, the
また、照合処理装置100は、パス照合状態N15から開始状態N1への遷移(不図示)と終了状態N2への遷移(不図示)を生成する。また、照合処理装置100は、パス照合状態N15が自身にループする遷移(不図示)も生成する。この遷移は、全記号Σから開始タグ記号「[」、終了タグ記号「]」およびキーワードの先頭文字「B」を除いた記号「Σ\{[,],B}」となる。これにより、3回目のオートマトンAの更新が完了する。
Further, the matching
照合処理装置100は、更新後のオートマトンAにより走査を開始する。照合処理装置100は、第2バッファb2の「[11」の「[」により、走査位置である初期状態N0から開始状態N1に走査し、第2バッファb2の「11」により、開始状態N1からパス照合状態N15に走査する。走査位置は、パス照合状態N15となる。照合処理装置100は、パス照合状態N15に走査すると、パス照合状態N15のノードカウンタを「0」から「1」に更新する。
The
ここでは、照合処理装置100は、パス照合状態N11を削除してパス照合状態N15を生成したが、これに限らない。例えば、照合処理装置100は、パス照合状態N15を生成してから、パス照合状態N11を削除してもよい。また、例えば、照合処理装置100は、パス照合状態N11にパス照合状態N15を上書きすることにより、パス照合状態N11の削除とパス照合状態N15の生成とを行ってもよい。この場合、照合処理装置100は、キーワード照合途中状態N12,N13とキーワード照合完了状態N14とを、キーワード照合途中状態N16,N17とキーワード照合完了状態N18として、流用してもよい。
Here, the
次に、図28の説明に移行する。図28は、図27の状態から、入力ストリームSのレコード3の残りの各データが受信され、照合処理装置100によって図10〜図24と同様にして処理された場合の処理結果を示している。
Next, the description proceeds to FIG. FIG. 28 shows a processing result when each remaining data of the
図28において、文字列「Bob」が受信され、終了タグ</name>が受信され、終了タグ</edit>が受信され、終了タグ</prev>が受信され、終了タグ</news>が受信される。ここで、各データが受信されるごとに、照合処理装置100によって、各データを変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新され、オートマトンAが走査される。図28において、パスID管理テーブルTは更新されない。また、オートマトンAは更新されない。走査位置は、初期状態N0となる。
In FIG. 28, the character string “Bob” is received, the end tag </ name> is received, the end tag </ edit> is received, the end tag </ prev> is received, and the end tag </ news> is set. Received. Here, each time each data is received, the data obtained by converting each data is written into the second buffer b2 by the
次に、図29の説明に移行する。図29は、図28の状態から、入力ストリームSのレコード4の各データが受信され、照合処理装置100によって図10〜図24と同様にして処理された場合の処理結果を示している。
Next, the description proceeds to FIG. FIG. 29 shows a processing result when each data of the
図29において、開始タグ<news>が受信され、開始タグ<date>が受信され、文字列「2011−12−04」が受信され、終了タグ</date>が受信され、開始タグ<write>が受信される。ここで、各データが受信されるごとに、照合処理装置100によって、各データを変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新され、オートマトンAが走査される。
In FIG. 29, the start tag <news> is received, the start tag <date> is received, the character string “2011-12-04” is received, the end tag </ date> is received, and the start tag <write> is received. Is received. Here, each time each data is received, the data obtained by converting each data is written into the second buffer b2 by the
次に、開始タグ<name>が受信されると、照合処理装置100によって、開始タグ<name>を変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新される。また、パスID管理テーブルTのパスID「4」に関する累計回数が「3」から「4」に更新され、オートマトンAが走査される。また、パスID「4」を特定するパス照合状態N3のノードカウンタが「3」から「4」に更新される。
Next, when the start tag <name> is received, the
次に、文字列「Carol」が受信され、終了タグ</name>が受信され、終了タグ</write>が受信され、開始タグ<prev>が受信され、開始タグ<write>が受信される。ここで、各データが受信されるごとに、照合処理装置100によって、各データを変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新され、オートマトンAが走査される。
Next, the character string “Carol” is received, the end tag </ name> is received, the end tag </ write> is received, the start tag <prev> is received, and the start tag <write> is received. . Here, each time each data is received, the data obtained by converting each data is written into the second buffer b2 by the
次に、開始タグ<name>が受信されると、照合処理装置100によって、開始タグ<name>を変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新される。また、パスID管理テーブルTのパスID「9」に関する累計回数が「2」から「3」に更新され、オートマトンAが走査される。また、パスID管理テーブルTの累積回数に基づいて、パスID「11」のパスを特定するパス照合状態N15が削除され、パスID「9」のパスを特定するパス照合状態N11が再作成される。また、パスID「9」を特定するパス照合状態N11のノードカウンタが「0」から「1」に更新される。
Next, when the start tag <name> is received, the
次に、文字列「Alice」が受信され、終了タグ</name>が受信され、終了タグ</write>が受信され、開始タグ<write>が受信される。ここで、各データが受信されるごとに、照合処理装置100によって、各データを変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新され、オートマトンAが走査される。
Next, the character string “Alice” is received, the end tag </ name> is received, the end tag </ write> is received, and the start tag <write> is received. Here, each time each data is received, the data obtained by converting each data is written into the second buffer b2 by the
次に、開始タグ<name>が受信されると、照合処理装置100によって、開始タグ<name>を変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新される。また、パスID管理テーブルTのパスID「9」に関する累計回数が「3」から「4」に更新され、オートマトンAが走査される。また、パスID「9」を特定するパス照合状態N11のノードカウンタが「1」から「2」に更新される。
Next, when the start tag <name> is received, the
次に、文字列「Bob」が受信され、終了タグ</name>が受信され、終了タグ</write>が受信され、終了タグ</prev>が受信され、終了タグ</news>が受信される。ここで、各データが受信されるごとに、照合処理装置100によって、各データを変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新され、オートマトンAが走査される。走査位置は、初期状態N0となる。
Next, the character string “Bob” is received, the end tag </ name> is received, the end tag </ write> is received, the end tag </ prev> is received, and the end tag </ news> is received. Is done. Here, each time each data is received, the data obtained by converting each data is written into the second buffer b2 by the
次に、図30の説明に移行する。図30は、図29の状態から、入力ストリームSのレコード5の各データが受信され、照合処理装置100によって図10〜図24と同様にして処理された場合の処理結果を示している。
Next, the description proceeds to FIG. FIG. 30 shows a processing result when each data of the
図30において、開始タグ<news>が受信され、開始タグ<date>が受信され、文字列「2011−12−05」が受信され、終了タグ</date>が受信され、開始タグ<prev>が受信され、開始タグ<edit>が受信される。ここで、各データが受信されるごとに、照合処理装置100によって、各データを変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新され、オートマトンAが走査される。
In FIG. 30, the start tag <news> is received, the start tag <date> is received, the character string “2011-12-05” is received, the end tag </ date> is received, and the start tag <prev> Is received and the start tag <edit> is received. Here, each time each data is received, the data obtained by converting each data is written into the second buffer b2 by the
次に、開始タグ<name>が受信され、照合処理装置100によって、開始タグ<name>を変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新される。また、パスID管理テーブルTのパスID「11」に関する累計回数が「1」から「2」に更新される。また、パスID管理テーブルTの累積回数に基づいて、パスID「6」のパスを特定するパス照合状態N7が削除され、パスID「11」のパスを特定するパス照合状態N15が再作成される。また、パスID「11」を特定するパス照合状態N15のノードカウンタが「0」から「1」に更新される。
Next, the start tag <name> is received, the
次に、文字列「Dick」が受信され、終了タグ</name>が受信され、終了タグ</edit>が受信され、終了タグ</prev>が受信され、終了タグ</news>が受信される。ここで、各データが受信されるごとに、照合処理装置100によって、各データを変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新され、オートマトンAが走査される。走査位置は、初期状態N0となる。
Next, the character string “Dick” is received, the end tag </ name> is received, the end tag </ edit> is received, the end tag </ prev> is received, and the end tag </ news> is received. Is done. Here, each time each data is received, the data obtained by converting each data is written into the second buffer b2 by the
このように、照合処理装置100は、オートマトンAの更新において、オートマトンAに規定されたパス照合状態のうち、クエリQの条件を満たすと検出された検出回数が相対的に多いパス照合状態を残す。したがって、照合処理装置100は、オートマトンAに規定されたパス照合状態のうち、後に再び走査する可能性が相対的に高いパス照合状態を残すことができる。換言すれば、照合処理装置100は、後に再び走査する可能性が相対的に高いパス照合状態を削除してしまって、後に再び同一のパス照合状態を生成することになってしまうことを防止することができる。結果として、照合処理装置100は、オートマトン更新処理の負荷を低減し、オートマトンAにパス照合状態を生成することによって生じる処理遅延時間を抑制し、オートマトンAを用いたクエリQの照合処理を高速化することができる。
Thus, in the update of the automaton A, the matching
(照合処理装置100の第2の動作例)
次に、図31〜図36を用いて、照合処理装置100の第2の動作例について説明する。図31〜図36は、照合処理装置100の第2の動作例を示す説明図である。第2の動作例においては、パスID管理テーブルTの前回項目がなくてもよい。したがって、図31〜図36では、パスID管理テーブルTの前回項目の表記を省略する。
(Second operation example of collation processing apparatus 100)
Next, a second operation example of the
図31は、第2の動作例における初期オートマトンAの走査開始前の状態を示している。図31においては、図10に示したクエリQと初期オートマトンAと第1バッファb1と第2バッファb2と第3バッファb3とに加えて、クエリQの条件に一致した過去5回分のパスIDを格納する頻度管理テーブルFが用意されている。 FIG. 31 shows a state before the scanning of the initial automaton A in the second operation example. In FIG. 31, in addition to the query Q, the initial automaton A, the first buffer b1, the second buffer b2, and the third buffer b3 shown in FIG. A frequency management table F to be stored is prepared.
図31は走査前であるため、第1バッファb1と第2バッファb2と第3バッファb3とは空である。また、パスID管理テーブルTと頻度管理テーブルFにもレコードは存在しない。この後、照合処理装置100は、入力ストリームSのレコード1の各データを図11〜図15と同様にして処理する。
Since FIG. 31 is before scanning, the first buffer b1, the second buffer b2, and the third buffer b3 are empty. Further, there is no record in the path ID management table T and the frequency management table F. Thereafter, the
次に、図32の説明に移行する。図32は、図16と同様に入力ストリームSのレコード1の開始タグ<name>が受信された場合の処理を示している。
Next, the description shifts to the description of FIG. FIG. 32 shows processing when the start tag <name> of the
図32において、入力ストリームSの開始タグ<name>が第1バッファb1に書き込まれると、照合処理装置100は、<name>を読み出して「[4」に変換し、第2バッファb2に書き込む。また、開始タグ<name>が受信されたため、照合処理装置100は、第3バッファb3の「/news/write」の末尾に「/」およびタグ内文字列「name」を書き込む。
In FIG. 32, when the start tag <name> of the input stream S is written to the first buffer b1, the
そして、照合処理装置100は、パスID管理テーブルTに、パスID「4」、第3バッファb3内のパス「/news/write/name」、累計回数「(なし)」のレコードを登録する。ここで、第3バッファb3のパスp4はクエリQの条件に一致する。このため、照合処理装置100は、レコードの累計回数を「(なし)」から「1」に更新する。また、第3バッファb3のパスp4はクエリQの条件に一致する。このため、照合処理装置100は、頻度管理テーブルFにパスID「4」を登録する。
Then, the
また、第3バッファb3のパスp4はクエリQの条件に一致する。このため、照合処理装置100は、オートマトンAの更新を実行する。具体的には、照合処理装置100は、まず、パスID「4」を示すパス照合状態N3を生成する。また、パス照合状態N3が生成されると、照合処理装置100は、クエリQのキーワードを構成する文字によりパス照合状態N3から順次遷移される遷移先状態として、キーワード照合途中状態N4,N5と、キーワード照合完了状態N6と、を生成する。
The path p4 of the third buffer b3 matches the query Q condition. For this reason, the
また、照合処理装置100は、パス照合状態N3から開始状態N1への遷移(不図示)と終了状態N2への遷移(不図示)を生成する。また、照合処理装置100は、パス照合状態N3が自身にループする遷移(不図示)も生成する。この遷移は、全記号Σから開始タグ記号「[」、終了タグ記号「]」およびキーワードの先頭文字「B」を除いた記号「Σ\{[,],B}」となる。これにより、1回目のオートマトンAの更新が完了する。
Further, the matching
照合処理装置100は、更新後のオートマトンAにより走査を開始する。照合処理装置100は、第2バッファb2の「[4」の「[」により、走査位置である初期状態N0から開始状態N1に走査し、第2バッファb2の「4」により、開始状態N1からパス照合状態N3に走査する。走査位置は、パス照合状態N3となる。
The
照合処理装置100は、パス照合状態N3に走査すると、パス照合状態N3のノードカウンタを「0」から「1」に更新する。この後、照合処理装置100は、入力ストリームSのレコード1の各データを図17〜図20と同様にして処理する。
When the
次に、図33の説明に移行する。図33は、図21と同様に入力ストリームSのレコード1の開始タグ<name>が受信された場合の処理を示している。
Next, the description proceeds to FIG. FIG. 33 shows processing when the start tag <name> of the
図33において、入力ストリームSの開始タグ<name>が第1バッファb1に書き込まれると、照合処理装置100は、<name>を読み出して「[6」に変換し、第2バッファb2に書き込む。また、開始タグ<name>が受信されたため、照合処理装置100は、第3バッファb3の「/news/edit」の末尾に「/」およびタグ内文字列「name」を書き込む。
In FIG. 33, when the start tag <name> of the input stream S is written to the first buffer b1, the
そして、照合処理装置100は、パスID管理テーブルTに、パスID「6」、第3バッファb3内のパス「/news/edit/name」、累計回数「(なし)」のレコードを登録する。ここで、第3バッファb3のパスp6はクエリQの条件に一致する。このため、照合処理装置100は、レコードの累計回数を「(なし)」から「1」に更新する。また、第3バッファb3のパスp6はクエリQの条件に一致する。このため、照合処理装置100は、頻度管理テーブルFにパスID「6」を登録する。
Then, the
また、第3バッファb3のパスp6はクエリQの条件に一致する。このため、照合処理装置100は、オートマトンAの更新を実行する。具体的には、照合処理装置100は、クエリQの条件を満たすパスp6を特定するパス照合状態N7を生成する。また、パス照合状態N7が生成されると、照合処理装置100は、クエリQのキーワードを構成する文字によりパス照合状態N7から順次遷移される遷移先状態として、キーワード照合途中状態N8,N9とキーワード照合完了状態N10とを生成する。
The path p6 of the third buffer b3 matches the query Q condition. For this reason, the
また、照合処理装置100は、パス照合状態N7から開始状態N1への遷移(不図示)と終了状態N2への遷移(不図示)を生成する。また、照合処理装置100は、パス照合状態N7が自身にループする遷移(不図示)も生成する。この遷移は、全記号Σから開始タグ記号「[」、終了タグ記号「]」およびキーワードの先頭文字「B」を除いた記号「Σ\{[,],B}」となる。これにより、2回目のオートマトンAの更新が完了する。
Further, the matching
照合処理装置100は、更新後のオートマトンAにより走査を開始する。照合処理装置100は、第2バッファb2の「[6」の「[」により、走査位置である初期状態N0から開始状態N1に走査し、第2バッファb2の「6」により、開始状態N1からパス照合状態N7に走査する。走査位置は、パス照合状態N7となる。照合処理装置100は、パス照合状態N7に走査すると、パス照合状態N7のノードカウンタを「0」から「1」に更新する。この後、照合処理装置100は、入力ストリームSのレコード1の各データを図22および図23と同様にして処理する。
The
次に、図34の説明に移行する。図34は、図24と同様に入力ストリームSのレコード1の残りの各データが受信され、照合処理装置100によって処理された場合の処理結果を示している。
Next, the description shifts to the description of FIG. FIG. 34 shows the processing result when the remaining data of the
図34において、開始タグ<prev>が受信されると、照合処理装置100によって、開始タグ<prev>を変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新される。また、パスID管理テーブルTにパスID「7」に関するレコードが登録され、オートマトンAが走査される。
In FIG. 34, when the start tag <prev> is received, the
次に、開始タグ<write>が受信されると、照合処理装置100によって、開始タグ<write>を変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新される。また、パスID管理テーブルTにパスID「8」に関するレコードが登録され、オートマトンAが走査される。
Next, when the start tag <write> is received, the
次に、開始タグ<name>が受信されると、照合処理装置100によって、開始タグ<name>を変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新される。また、パスID管理テーブルTにパスID「9」に関するレコードが登録され、オートマトンAが走査される。また、頻度管理テーブルFにパスID「9」が登録される。また、オートマトンAにパス照合状態N11と、キーワード照合途中状態N12,N13と、キーワード照合完了状態N14と、が生成される。パス照合状態N11のノードカウンタは「0」から「1」に更新されている。
Next, when the start tag <name> is received, the
次に、文字列「Carol」が受信され、終了タグ</name>が受信され、終了タグ</write>が受信され、終了タグ</prev>が受信され、終了タグ</news>が受信される。ここで、各データが受信されるごとに、照合処理装置100によって、各データを変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新され、オートマトンAが走査される。走査位置は、初期状態N0となる。
Next, the character string “Carol” is received, the end tag </ name> is received, the end tag </ write> is received, the end tag </ prev> is received, and the end tag </ news> is received. Is done. Here, each time each data is received, the data obtained by converting each data is written into the second buffer b2 by the
次に、図35の説明に移行する。図35は、図34の状態から、図25と同様に入力ストリームSのレコード2の各データが受信され、照合処理装置100によって処理された場合の処理結果を示している。
Next, the description proceeds to FIG. FIG. 35 shows a processing result when each data of the
図35において、開始タグ<news>が受信され、開始タグ<date>が受信され、文字列「2011−12−02」が受信され、終了タグ</date>が受信され、開始タグ<write>が受信される。ここで、各データが受信されるごとに、照合処理装置100によって、各データを変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新され、オートマトンAが走査される。
35, the start tag <news> is received, the start tag <date> is received, the character string “2011-12-02” is received, the end tag </ date> is received, and the start tag <write> is received. Is received. Here, each time each data is received, the data obtained by converting each data is written into the second buffer b2 by the
次に、開始タグ<name>が受信されると、照合処理装置100によって、開始タグ<name>を変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新される。また、パスID管理テーブルTのパスID「4」に関する累計回数が「1」から「2」に更新され、オートマトンAが走査される。また、頻度管理テーブルFにパスID「4」が登録される。また、パスID「4」を特定するパス照合状態N3のノードカウンタが「1」から「2」に更新される。
Next, when the start tag <name> is received, the
次に、文字列「Carol」が受信され、終了タグ</name>が受信され、終了タグ</write>が受信され、開始タグ<edit>が受信される。ここで、各データが受信されるごとに、照合処理装置100によって、各データを変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新され、オートマトンAが走査される。
Next, the character string “Carol” is received, the end tag </ name> is received, the end tag </ write> is received, and the start tag <edit> is received. Here, each time each data is received, the data obtained by converting each data is written into the second buffer b2 by the
次に、開始タグ<name>が受信されると、照合処理装置100によって、開始タグ<name>を変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新される。また、パスID管理テーブルTのパスID「6」に関する累計回数が「1」から「2」に更新され、オートマトンAが走査される。また、頻度管理テーブルFにパスID「6」が登録される。ここで、頻度管理テーブルFのレコード数は上限に達する。また、パスID「6」を特定するパス照合状態N7のノードカウンタが「1」から「2」に更新される。
Next, when the start tag <name> is received, the
次に、文字列「Dick」が受信され、終了タグ</name>が受信され、終了タグ</edit>が受信され、終了タグ</news>が受信される。ここで、各データが受信されるごとに、照合処理装置100によって、各データを変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新され、オートマトンAが走査される。走査位置は、初期状態N0となる。
Next, the character string “Dick” is received, the end tag </ name> is received, the end tag </ edit> is received, and the end tag </ news> is received. Here, each time each data is received, the data obtained by converting each data is written into the second buffer b2 by the
次に、図36の説明に移行する。図36は、図35の状態から、入力ストリームSのレコード3の途中までの各データが受信され、照合処理装置100によって処理された場合の処理結果を示している。
Next, the description shifts to the description of FIG. FIG. 36 shows a processing result when each piece of data from the state of FIG. 35 to the middle of the
図36において、開始タグ<news>が受信され、開始タグ<date>が受信され、文字列「2011−12−03」が受信され、終了タグ</date>が受信され、開始タグ<write>が受信される。ここで、各データが受信されるごとに、照合処理装置100によって、各データを変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新され、オートマトンAが走査される。
In FIG. 36, the start tag <news> is received, the start tag <date> is received, the character string “2011-12-03” is received, the end tag </ date> is received, and the start tag <write> is received. Is received. Here, each time each data is received, the data obtained by converting each data is written into the second buffer b2 by the
次に、開始タグ<name>が受信されると、照合処理装置100によって、開始タグ<name>を変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新される。また、パスID管理テーブルTのパスID「4」に関する累計回数が「2」から「3」に更新され、オートマトンAが走査される。
Next, when the start tag <name> is received, the
また、頻度管理テーブルFがレコード数の上限に達しているため、頻度管理テーブルFから最古のパスID「4」が削除され、頻度管理テーブルFにパスID「4」が登録される。ここで、頻度管理テーブルFから削除されたパスID「4」に関するパスID管理テーブルTの累計回数を「3」から「2」に更新する。照合処理装置100は、入力ストリームSの以降の文字列について同様に処理を行う。入力ストリームSの以降の文字列についての処理の説明は省略する。
Further, since the frequency management table F has reached the upper limit of the number of records, the oldest path ID “4” is deleted from the frequency management table F, and the path ID “4” is registered in the frequency management table F. Here, the cumulative number of times in the path ID management table T related to the path ID “4” deleted from the frequency management table F is updated from “3” to “2”. The
上述した第2の動作例においては、パスID管理テーブルTの前回項目のフラグをオートマトンAの更新に使用しない例を示したが、これに限らない。例えば、第2の動作例においては、第3の動作例と同様の動作を行ってパスID管理テーブルTの前回項目を更新してもよい。そして、上述したようにパスID管理テーブルTの累計回数を頻度管理テーブルFにより修正し、修正した累計回数とフラグとを用いてオートマトンAを更新してもよい。 In the second operation example described above, an example in which the flag of the previous item in the path ID management table T is not used for updating the automaton A is shown, but the present invention is not limited to this. For example, in the second operation example, the previous item of the path ID management table T may be updated by performing the same operation as in the third operation example. Then, as described above, the cumulative number of times of the path ID management table T may be corrected by the frequency management table F, and the automaton A may be updated using the corrected cumulative number of times and the flag.
このように、照合処理装置100は、パスIDごとのクエリQの条件を満たす累計回数を、頻度を考慮して計数する。例えば、照合処理装置100は、過去にクエリQの条件を満たすと検出された所定回数の中でのパスIDごとのクエリQの条件を満たす累計回数を計数する。したがって、照合処理装置100は、オートマトンAに規定されたパス照合状態のうち、近々、再び走査する可能性が相対的に高いパス照合状態を残すことができる。換言すれば、照合処理装置100は、後に再び走査する可能性が相対的に高いパス照合状態を削除してしまって、後に再び同一のパス照合状態を生成することになってしまうことを防止することができる。結果として、照合処理装置100は、オートマトン更新処理の負荷を低減し、オートマトンAにパス照合状態を生成することによって生じる処理遅延時間を抑制し、オートマトンAを用いたクエリQの照合処理を高速化することができる。
In this way, the
(照合処理装置100の第3の動作例)
次に、図37〜図41を用いて、照合処理装置100の第3の動作例について説明する。図37〜図41は、照合処理装置100の第3の動作例を示す説明図である。第3の動作例においては、頻度管理テーブルFがなくてもよい。したがって、図37〜図41では、頻度管理テーブルFの表記を省略する。
(Third Operation Example of Collation Processing Device 100)
Next, a third operation example of the
図37は、第3の動作例におけるオートマトンAの状態の一例を示している。図37において、第2バッファb2と第3バッファb3とは空である。また、パスID管理テーブルTは、図示した状態である。以下では、第1バッファb1に示す入力ストリームSのレコード6が受信された場合に、照合処理装置100によってレコード6の各データが処理された場合の処理結果について説明する。
FIG. 37 shows an example of the state of the automaton A in the third operation example. In FIG. 37, the second buffer b2 and the third buffer b3 are empty. Further, the path ID management table T is in the illustrated state. Hereinafter, the processing result when each data of the
次に、図38の説明に移行する。図38は、図37の状態から、入力ストリームSのレコード6の途中までの各データが、照合処理装置100によって処理された場合の処理結果を示している。
Next, the description shifts to the description of FIG. FIG. 38 shows a processing result when each data from the state of FIG. 37 to the middle of the
図38において、開始タグ<news>が受信され、開始タグ<date>が受信され、文字列「2011−12−06」が受信され、終了タグ</date>が受信され、開始タグ<write>が受信される。ここで、各データが受信されるごとに、照合処理装置100によって、各データを変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新され、オートマトンAが走査される。
In FIG. 38, the start tag <news> is received, the start tag <date> is received, the character string “2011-12-06” is received, the end tag </ date> is received, and the start tag <write> is received. Is received. Here, each time each data is received, the data obtained by converting each data is written into the second buffer b2 by the
次に、開始タグ<name>が受信されると、照合処理装置100によって、開始タグ<name>を変換したデータが第2バッファb2に書き込まれ、現在のパスにより第3バッファb3が更新される。また、パスID管理テーブルTのパスID「4」に関する累計回数が「6」から「7」に更新され、オートマトンAが走査される。また、パスID「4」を特定するパス照合状態N3のノードカウンタが「6」から「7」に更新される。
Next, when the start tag <name> is received, the
次に、図39の説明に移行する。図39は、図38の状態から、入力ストリームSのレコード6の開始タグ<ghost>が受信された場合の処理を示している。
Next, the description shifts to the description of FIG. FIG. 39 shows a process when the start tag <host> of the
図39において、入力ストリームSの開始タグ<ghost>が第1バッファb1に書き込まれると、照合処理装置100は、<ghost>を読み出して「[9」に変換し、第2バッファb2に書き込む。また、開始タグ<ghost>が受信されたため、照合処理装置100は、第3バッファb3の「/news/write/name」の末尾に「/」およびタグ内文字列「ghost」を書き込む。
In FIG. 39, when the start tag <host> of the input stream S is written to the first buffer b1, the
そして、照合処理装置100は、パスID管理テーブルTに、パスID「9」、第3バッファb3内のパス「/news/write/name/ghost」、累計回数「(なし)」のレコードを登録する。ここで、パスp9の親パスとなるパスp4を示すパス照合状態N3がオートマトンAに規定されているため、終了状態N2からパス照合状態N3への遷移を生成すると共に、パスID「4」に関するパスID管理テーブルTの前回項目に「開始」を設定する。
Then, the
ここで、第3バッファb3のパスp9はクエリQの条件に一致しない。このため、照合処理装置100は、第2バッファb2の「[」により、走査位置である初期状態N0から開始状態N1に走査し、第2バッファb2の「9」により、開始状態N1から初期状態N0に走査する。次に、図40の説明に移行する。図40は、図39の状態から、入力ストリームSのレコード6の開始タグ<name>が受信された場合の処理を示している。
Here, the path p9 of the third buffer b3 does not match the query Q condition. Therefore, the
図40において、入力ストリームSの開始タグ<name>が第1バッファb1に書き込まれると、照合処理装置100は、<name>を読み出して「[10」に変換し、第2バッファb2に書き込む。また、開始タグ<name>が受信されたため、照合処理装置100は、第3バッファb3の「/news/write/name/ghost」の末尾に「/」およびタグ内文字列「name」を書き込む。
In FIG. 40, when the start tag <name> of the input stream S is written to the first buffer b1, the
そして、照合処理装置100は、パスID管理テーブルTに、パスID「10」、第3バッファb3内のパス「/news/write/name/ghost/name」、累計回数「(なし)」のレコードを登録する。ここで、第3バッファb3のパスp10はクエリQの条件に一致する。このため、照合処理装置100は、レコードの累計回数を「(なし)」から「1」に更新する。
Then, the
また、第3バッファb3のパスp10はクエリQの条件に一致する。このため、照合処理装置100は、オートマトンAの更新を実行する。具体的には、照合処理装置100は、クエリQの条件を満たすパスp10を特定するパス照合状態N15を生成する。このとき、オートマトンAには、既に最大規定数のパス照合状態が規定されているため、照合処理装置100は、オートマトンAに規定されているパス照合状態のうち、いずれかのパス照合状態を削除してから、パスp10を特定するパス照合状態N15を生成する。
The path p10 of the third buffer b3 matches the query Q condition. For this reason, the
例えば、照合処理装置100は、パスID管理テーブルTの累計回数が最小になるパスID「4」を特定する。しかしながら、パスID「4」に対応する前回項目に「開始」が設定されているため、パスID「4」のパスを特定するパス照合状態N3は、近々、走査されるパス照合状態である。したがって、照合処理装置100は、パスID「4」のパスを特定するパス照合状態N3を削除しない。
For example, the
そこで、照合処理装置100は、パスID管理テーブルTの累積回数が2番目に小さいパスID「8」を特定する。次に、照合処理装置100は、パスID「8」に対応する前回項目に「開始」が設定されていないため、特定したパスID「8」を特定するパス照合状態N11を削除する。
Therefore, the
そして、照合処理装置100は、パスID「8」を特定するパス照合状態N11の削除に伴って、パスID「8」を特定するパス照合状態から順次遷移されるキーワード照合途中状態N12,N13とキーワード照合完了状態N14とを削除する。次に、照合処理装置100は、パスp10を特定するパス照合状態N15を生成する。また、パスp10を特定するパス照合状態N15が生成されると、照合処理装置100は、クエリQのキーワードを構成する文字によりパスp10を特定するパス照合状態N15から順次遷移される遷移先状態を生成する。遷移先状態は、キーワード照合途中状態N16,N17とキーワード照合完了状態N18とである。
Then, the
また、照合処理装置100は、パスp10を特定するパス照合状態N15から開始状態N1への遷移(不図示)と終了状態N2への遷移(不図示)を生成する。また、照合処理装置100は、パスp10を特定するパス照合状態N15が自身にループする遷移(不図示)も生成する。この遷移は、全記号Σから開始タグ記号「[」、終了タグ記号「]」およびキーワードの先頭文字「B」を除いた記号「Σ\{[,],B}」となる。これにより、1回目のオートマトンAの更新が完了する。
In addition, the matching
照合処理装置100は、更新後のオートマトンAにより走査を開始する。照合処理装置100は、第2バッファb2の「[10」の「[」により、走査位置である初期状態N0から開始状態N1に走査し、第2バッファb2の「10」により、開始状態N1からパスp10を特定するパス照合状態N15に走査する。走査位置は、パスp10を特定するパス照合状態N15となる。
The
照合処理装置100は、パスp10を特定するパス照合状態N15に走査すると、パスp10を特定するパス照合状態N15のノードカウンタを「0」から「1」に更新する。この後、文字列「Emily」が受信され、終了タグ</name>が受信される。
When the
次に、図41の説明に移行する。図41は、図40の状態から、入力ストリームSのレコード6の終了タグ</ghost>が受信された場合の処理を示している。
Next, the description proceeds to FIG. FIG. 41 shows the processing when the end tag </ host> of the
図41において、入力ストリームSの終了タグ</ghost>が第1バッファb1に書き込まれると、照合処理装置100は、</ghost>を読み出して「]9」に変換し、第2バッファb2に書き込む。また、照合処理装置100は、第3バッファb3のパスp9:「/news/write/name/ghost」から「/」および終了タグ</ghost>のタグ内文字列「ghost」を削除して、パスp4:「/news/write/name」に戻す。ここで、パスp4を示すパス照合状態N3がオートマトンAに規定されているため、パスID「4」に関するパスID管理テーブルTの前回項目を「開始」から「終了」に更新する。
In FIG. 41, when the end tag </ host> of the input stream S is written to the first buffer b1, the
ここで、第3バッファb3のパスp4はクエリQの条件に一致する。このため、照合処理装置100は、第2バッファb2の「]」により、走査位置である初期状態N0から終了状態N2に走査し、第2バッファb2の「9」により、終了状態N2からパスp4を特定するパス照合状態N3に走査する。
Here, the path p4 of the third buffer b3 matches the query Q condition. For this reason, the
上述した第3の動作例においては、頻度管理テーブルFをオートマトンAの更新に使用しない例を示したが、これに限らない。例えば、第3の動作例においては、第2の動作例と同様の動作を行ってパスID管理テーブルTの累計回数を頻度管理テーブルFにより修正し、修正した累計回数とフラグとを用いてオートマトンAを更新してもよい。 In the third operation example described above, the example in which the frequency management table F is not used for updating the automaton A is shown, but the present invention is not limited thereto. For example, in the third operation example, the same operation as in the second operation example is performed to correct the cumulative number of the path ID management table T by the frequency management table F, and the automaton using the corrected cumulative number and flag. A may be updated.
このように、開始状態N1から走査された後であって、かつ、終了状態N2から走査される前であるパス照合状態があると、照合処理装置100は、当該パス照合状態を、近々、終了状態N2から走査されるとして、残しておく。したがって、照合処理装置100は、オートマトンAに規定されたパス照合状態のうち、近々、再び走査する可能性が相対的に高いパス照合状態を残すことができる。換言すれば、照合処理装置100は、後に再び走査する可能性が相対的に高いパス照合状態を削除してしまって、後に再び同一のパス照合状態を生成することになってしまうことを防止することができる。結果として、照合処理装置100は、オートマトン更新処理の負荷を低減し、オートマトンAにパス照合状態を生成することによって生じる処理遅延時間を抑制し、オートマトンAを用いたクエリQの照合処理を高速化することができる。
As described above, when there is a path matching state after scanning from the start state N1 and before scanning from the end state N2, the matching
<照合処理装置100のハードウェア構成例>
図42は、照合処理装置100のハードウェア構成例を示すブロック図である。図42において、照合処理装置100は、プロセッサ4201、記憶装置4202、入力装置4203、出力装置4204、および通信装置4205が、バス4206に接続されて構成されるコンピュータである。
<Hardware Configuration Example of
FIG. 42 is a block diagram illustrating a hardware configuration example of the
プロセッサ4201は、コンピュータの全体の制御を司る。また、プロセッサ4201は、記憶装置4202に記憶されている各種プログラムを実行することにより、記憶装置4202内のデータを読み出したり、実行結果となるデータを記憶装置4202に書き込んだりする。各種プログラムには、例えば、OS(Operating System)や本実施の形態の更新プログラムがある。
The processor 4201 controls the entire computer. In addition, the processor 4201 executes various programs stored in the
記憶装置4202は、ROM(Read Only Memory)、RAM(Random Access Memory)、フラッシュメモリ、磁気ディスクドライブなどで構成され、プロセッサ4201のワークエリアになったり、各種プログラムや各種プログラムの実行により得られたデータを含む各種データを記憶したりする。
The
入力装置4203は、キーボード、マウス、タッチパネルなどユーザの操作により、各種データの入力を行うインターフェースである。出力装置4204は、プロセッサ4201の指示により、データを出力するインターフェースである。出力装置4204には、例えば、ディスプレイやプリンタが挙げられる。通信装置4205は、ネットワーク101を介して外部からデータを受信したり、外部にデータを送信したりするインターフェースである。
The
<照合処理装置100の機能的構成例>
図43は、照合処理装置100の機能的構成例を示すブロック図である。照合処理装置100は、読込部4301と、特定部4302と、検出部4303と、第1の計数部4304と、第2の計数部4305と、更新部4306と、を有する。
<Example of Functional Configuration of
FIG. 43 is a block diagram illustrating a functional configuration example of the
照合処理装置100は、オートマトンAを用いて、入力ストリームSに対して、クエリQの照合を行うコンピュータである。ここで、入力ストリームSとは、タグにより階層化されたデータ列であって、発生源Gとなるコンピュータからネットワーク101を介して受信されるデータ列である。入力ストリームSとは、例えば、図2に示したようなXMLデータである。入力ストリームSとは、例えば、HTMLデータであってもよい。
The
タグとは、要素の集合が存在する位置を示す情報であって、例えば、開始タグや終了タグである。位置とは、例えば、入力ストリームS内の階層である。開始タグとは、要素の集合の開始位置を示す情報であって、例えば、図2に示した開始タグ<news>や開始タグ<name>などである。終了タグとは、要素の集合の終了位置を示す情報であって、例えば、図2に示した終了タグ</news>や終了タグ</name>などである。要素とは、開始タグと終了タグとの間に含まれる文字列や別の開始タグや別の終了タグである。 A tag is information indicating a position where a set of elements exists, and is, for example, a start tag or an end tag. The position is, for example, a hierarchy in the input stream S. The start tag is information indicating the start position of the set of elements, and is, for example, the start tag <news> or the start tag <name> shown in FIG. The end tag is information indicating the end position of the set of elements, and is, for example, the end tag </ news> or the end tag </ name> shown in FIG. The element is a character string included between the start tag and the end tag, another start tag, or another end tag.
クエリQとは、キーワードとキーワードに対応するパスの条件とを含む情報である。キーワードとは、入力ストリームSの文字列と照合される文字列であって、例えば、図2に示した文字列「Bob」である。パスとは、任意のタグの位置を示す情報であって、入力ストリームSの最上階層から任意のタグが示す階層までの経路である。例えば、図2に示した開始タグ<news>のパスは、最上階層である第0階層を示すルートから開始タグ<news>が示す第1階層までの経路「/news」である。パスの条件とは、キーワードが存在する階層を示すパスの条件であって、例えば、図2に示した「/news//name」である。 The query Q is information including a keyword and a path condition corresponding to the keyword. The keyword is a character string that is collated with the character string of the input stream S, and is, for example, the character string “Bob” illustrated in FIG. The path is information indicating the position of an arbitrary tag, and is a path from the top layer of the input stream S to the layer indicated by the arbitrary tag. For example, the path of the start tag <news> shown in FIG. 2 is a path “/ news” from the root indicating the 0th hierarchy, which is the highest hierarchy, to the first hierarchy indicated by the start tag <news>. The path condition is a path condition indicating a hierarchy in which the keyword exists, and is, for example, “/ news // name” illustrated in FIG.
「/news//name」は、第0階層のルート⇒第1階層「news」⇒任意の階層「name」のパスを示す。したがって、例えば、パス「/news/name」やパス「/news/write/name」やパス「/news/name/write/name」などが、クエリQ内のキーワードに対応するパスの条件を満たす。 “/ News // name” indicates the path of the root of the 0th layer → the first layer “news” → the arbitrary layer “name”. Therefore, for example, the path “/ news / name”, the path “/ news / write / name”, the path “/ news / name / write / name”, and the like satisfy the conditions of the path corresponding to the keyword in the query Q.
オートマトンAとは、例えば、少なくとも、初期状態と、開始タグ記号を示す開始状態と、終了タグ記号を示す終了状態とが規定された情報である。オートマトンAには、さらに、条件を満たすパスを示すパス照合状態が複数規定されていてもよいし、パス照合状態からの遷移先状態としてキーワード照合途中状態とキーワード照合完了状態とが規定されていてもよい。 The automaton A is information defining, for example, at least an initial state, a start state indicating a start tag symbol, and an end state indicating an end tag symbol. The automaton A may further include a plurality of path collation states indicating paths that satisfy the condition, and a keyword collation intermediate state and a keyword collation completion state are defined as transition destination states from the path collation state. Also good.
読込部4301は、入力ストリームSを先頭から読み込む。読込部4301は、例えば、図11に示したように、入力ストリームSのレコード1の先頭データである開始タグ<news>が受信され、第1バッファb1に書き込まれると、<news>を読み込む。そして、読込部4301は、読み込んだ開始タグ<news>を、「[1」に変換して、第2バッファb2に書き込む。
The
読込部4301は、例えば、図42に示した記憶装置4202に記憶されたプログラムをプロセッサ4201に実行させることにより、その機能を実現する。これにより、読込部4301は、特定部4302に処理させるデータを読み込むことができる。
The
特定部4302は、読込部4301によって入力ストリームS内の開始タグが読み込まれると、入力ストリームSの最上階層から開始タグが示す階層までのパスを特定する。特定部4302は、例えば、開始タグ<news>が受信され、読込部4301によって第2バッファに書き込まれると、現在のパス「/news」を特定して、第3バッファb3に書き込む。また、特定部4302は、特定したパスが、パスID管理テーブルTに登録されていないパスである場合は、パスID管理テーブルTに、パスID「1」、第3バッファb3内のパス「/news」、累計回数「(なし)」、フラグ「(なし)」のレコードを登録する。
When the start tag in the input stream S is read by the
また、特定部4302は、読込部4301によって入力ストリームS内の終了タグが読み込まれると、現在のパスが示す階層の上位階層を示すパスを特定する。特定部4302は、例えば、終了タグ</news>が受信され、読込部4301によって第2バッファに書き込まれると、第3バッファに書き込まれた現在のパス「/news」を取得する。次に、特定部4302は、取得した現在のパス「/news」から、「/」と終了タグ</news>のタグ内文字列「news」とを削除して、上位階層である第0階層を示すパス「(なし)」を特定して、第3バッファb3に書き込む。
Further, when the
特定部4302は、例えば、図42に示した記憶装置4202に記憶されたプログラムをプロセッサ4201に実行させることにより、その機能を実現する。これにより、検出部4303は、特定部4302によって特定されたパスを取得して、クエリQのパスの条件を満たすか否かを判定することができる。
The specifying
検出部4303は、特定部4302によって特定されたパスが条件を満たすか否かを判定することにより、条件を満たすパスを検出する。検出部4303は、例えば、特定部4302によって特定されたパスが「/news」である場合には、パスの条件「/news//name」を満たさないと判定して、検出しない。一方で、検出部4303は、例えば、特定部4302によって特定されたパスが「/news/name」である場合には、パスの条件「/news//name」を満たすと判定して、パス「/news/name」を検出する。
The
検出部4303は、例えば、図42に示した記憶装置4202に記憶されたプログラムをプロセッサ4201に実行させることにより、その機能を実現する。これにより、第1の計数部4304は、検出部4303によってパスが検出された累積回数を計数することができる。
The
第1の計数部4304は、検出部4303によって入力ストリームSから条件を満たすパスが検出されるたびに、条件を満たすパスごとの検出回数を計数する。第1の計数部4304は、例えば、検出部4303によって開始タグが示すパス「/news/name」が検出された場合には、パスID管理テーブルTのパス「/news/name」に対応する累積回数をインクリメントする。一方で、第1の計数部4304は、検出部4303によって終了タグが示すパス「/news/name」が検出された場合には、パスID管理テーブルTのパス「/news/name」に対応する累積回数をインクリメントしなくてもよい。
The
また、第1の計数部4304は、検出部4303によって開始タグが示すパス「/news/name」が検出された場合には、パスID管理テーブルTのパス「/news/name」に対応するフラグに「開始」を設定する。第1の計数部4304は、例えば、検出部4303によって終了タグが示すパス「/news/name」が検出された場合には、パスID管理テーブルTのパス「/news/name」に対応するフラグを「終了」に設定する。また、第1の計数部4304は、最新の所定回数分の条件を満たすパスの検出回数のうちの条件を満たすパスごとの検出回数を計数してもよい。第1の計数部4304は、例えば、上述したようにパスID管理テーブルTの累計回数を頻度管理テーブルFにより修正する。
In addition, when the
第1の計数部4304は、例えば、図42に示した記憶装置4202に記憶されたプログラムをプロセッサ4201に実行させることにより、その機能を実現する。これにより、更新部4306は、第1の計数部4304によって計数された検出回数に基づいてオートマトンAを更新することができる。
The
第2の計数部4305は、オートマトンAに規定されたパス照合状態ごとに開始状態から当該パス照合状態に遷移が行われた遷移回数を計数する。第2の計数部4305は、照合処理装置100によってオートマトンAが走査され、オートマトンAに規定されたパス照合状態に遷移が行われた場合に、遷移が行われたパス照合状態のノードカウンタをインクリメントする。
The
第2の計数部4305は、例えば、図42に示した記憶装置4202に記憶されたプログラムをプロセッサ4201に実行させることにより、その機能を実現する。これにより、更新部4306は、第2の計数部4305によって計数された遷移回数に基づいてオートマトンAを更新することができる。
For example, the
更新部4306は、オートマトンAに、条件を満たすパスを示す新たなパス照合状態を追加する場合、計数した検出回数に基づいて、オートマトンAを更新する。更新部4306は、例えば、オートマトンAに規定されたパス照合状態が所定数以上ある場合には、オートマトンAを更新する。更新部4306は、具体的には、オートマトンAに規定されたパス照合状態のうち、計数した検出回数が相対的に少ない条件を満たすパスを示すパス照合状態を削除する
The
また、更新部4306は、条件を満たすパスを検出した場合であって、オートマトンAに規定されたパス照合状態が所定数より少ない場合には、検出した条件を満たすパスを示すパス照合状態をオートマトンAに追加することにより、オートマトンAを更新する。
In addition, when the
上述したパス照合状態をオートマトンAから削除する処理と、上述したパス照合状態をオートマトンAに追加する処理と、を実行する順序は、削除する処理が先であってもよいし、追加する処理が先であってもよい。更新部4306は、例えば、図42に示した記憶装置4202に記憶されたプログラムをプロセッサ4201に実行させることにより、その機能を実現する。これにより、更新部4306は、照合処理装置100の第1の動作例を実現することができる。
The process of deleting the path matching state described above from the automaton A and the process of adding the path matching state described above to the automaton A may be executed first or the process of adding may be performed. It may be the destination. The
また、更新部4306は、計数した遷移回数に基づいて、オートマトンAに規定されたパス照合状態のうちで、計数した検出回数が同一の第1および第2のパス照合状態のいずれかを削除することにより、オートマトンAを更新してもよい。これにより、更新部4306は、照合処理装置100の第2の動作例を実現することができる。
Further, the
更新部4306は、例えば、オートマトンAに規定されたパス照合状態が所定数以上ある場合には、オートマトンAを更新する。更新部4306は、具体的には、オートマトンAに規定されたパス照合状態であって、読み込まれた開始タグに対応する終了タグが読み込まれたパス照合状態のうち、計数した検出回数が相対的に少ないパスを示すパス照合状態を削除する。これにより、更新部4306は、照合処理装置100の第3の動作例を実現することができる。
The
<更新処理手順>
図44は、照合処理装置100の更新処理の処理手順の一例を示すフローチャートである。
<Update procedure>
FIG. 44 is a flowchart illustrating an example of a processing procedure of update processing of the
まず、照合処理装置100は、初期オートマトンA0があるか否かを判断する(ステップS4401)。初期オートマトンA0がない場合(ステップS4401:No)、照合処理装置100は、初期化を実行する(ステップS4402)。初期化では、照合処理装置100は、記憶装置内のパスID管理テーブルTを空にする。
First, the
次に、照合処理装置100は、初期オートマトン構築処理を実行して(ステップS4403)、ステップS4405に移行する。初期オートマトン構築処理(ステップS4403)では、初期オートマトンA0が構築される。初期オートマトン構築処理(ステップS4403)の処理については図45を用いて後述する。
Next, the matching
一方で、初期オートマトンA0がある場合(ステップS4401:Yes)、照合処理装置100は、記憶装置から初期オートマトンA0を取得して(ステップS4404)、ステップS4405に移行する。ステップS4405において、照合処理装置100は、初期オートマトンA0を走査対象のオートマトンAに決定する(ステップS4405)。
On the other hand, if there is an initial automaton A0 (step S4401: YES), the
このあと、照合処理装置100は、入力ストリームSを待ち受ける(ステップS4406:No)。入力ストリームSが受信された場合(ステップS4406:Yes)、照合処理装置100は、入力ストリームSの先頭位置を現在の読込位置Scurに設定する(ステップS4407)。
Thereafter, the
そして、照合処理装置100は、現在の読込位置Scurのデータが、開始タグか文字か終了タグかを判断する(ステップS4408)。開始タグである場合(ステップS4408:開始タグ)、照合処理装置100は、第1の走査処理を実行して(ステップS4409)ステップS4408に戻る。第1の走査処理(ステップS4409)の詳細については図46を用いて後述する。
Then, the
文字である場合(ステップS4408:文字)、照合処理装置100は、第2の走査処理を実行して(ステップS4410)ステップS4408に戻る。第2の走査処理(ステップS4410)の詳細については図51を用いて後述する。
If it is a character (step S4408: character), the
終了タグである場合(ステップS4408:終了タグ)、照合処理装置100は、第3の走査処理を実行して(ステップS4411)ステップS4408に戻る。第3の走査処理(ステップS4411)の詳細については図52を用いて後述する。
If it is an end tag (step S4408: end tag), the
一方で、ステップS4408において、現在の読込位置Scurがない場合(ステップS4408:なし)、照合処理装置100は、現在の読込位置がない状態から一定時間が経過したか否かを判断する(ステップS4412)。一定時間経過していない場合(ステップS4412:No)、ステップS4408に戻る。これにより、入力ストリームSのデータ受信を待ち受けることになる。一方で、一定時間経過した場合(ステップS4412:Yes)、照合処理装置100は、更新処理を終了する。
On the other hand, in step S4408, when there is no current reading position Scur (step S4408: none), the
<初期オートマトン構築処理>
図45は、図44に示した初期オートマトン構築処理(ステップS4403)の処理手順の一例を示すフローチャートである。
<Initial automaton construction process>
FIG. 45 is a flowchart showing an example of the processing procedure of the initial automaton construction process (step S4403) shown in FIG.
照合処理装置100は、初期状態N0、開始状態N1および終了状態N2を作成し(ステップS4501)、作成した各状態の遷移先の初期値を初期状態N0に設定する(ステップS4502)。これにより、図7に示したように、初期オートマトンA0が構築される。構築された初期オートマトンA0は、記憶装置に記憶される。
The
<第1の走査処理>
図46は、図44に示した第1の走査処理(ステップS4409)の処理手順の一例を示すフローチャートである。
<First scanning process>
FIG. 46 is a flowchart illustrating an example of a processing procedure of the first scanning process (step S4409) illustrated in FIG.
照合処理装置100は、読み込まれた開始タグをバイナリ変換する(ステップS4601)。例えば、図3に示したように、開始タグ<news>が読み込まれた場合、「[1」に変換する。
The
照合処理装置100は、現在のパスpに、「/t」を追加する(ステップS4602)。「/」は階層の境界を示す記号である。tはタグ内文字列である。例えば、開始タグ<news>が読み込まれた場合、pは、p=/newsとなる。また、現在のパスが「/news/write」である場合に、開始タグ<name>が読み込まれた場合、pは、p=/news/write/nameとなる。
The
そして、照合処理装置100は、パスID管理テーブルTを参照して、パスID管理テーブルTに、現在のパスpが存在するか否かを判断する(ステップS4603)。パスID管理テーブルTに現在のパスpがある場合(ステップS4603:Yes)、ステップS4608に移行する。
Then, the
一方で、パスID管理テーブルTに現在のパスpがない場合(ステップS4603:No)、照合処理装置100は、パスID管理テーブルTに現在のパスpを追加して、パスpに新たなパスIDを割り当てる(ステップS4604)。例えば、パスID管理テーブルTが空の状態で開始タグ<news>が読み込まれた場合、パスID「1」、パスp=/newsを追加する。
On the other hand, when there is no current path p in the path ID management table T (step S4603: No), the
そして、照合処理装置100は、現在のパスpがクエリQの条件にマッチするか否かを判断する(ステップS4605)。マッチする場合(ステップS4605:Yes)、照合処理装置100は、第1の更新処理を実行して(ステップS4606)、ステップS4608に移行する。第1の更新処理(ステップS4606)の詳細については図47を用いて後述する。
Then, the
一方で、マッチしない場合(ステップS4605:No)、照合処理装置100は、第2の更新処理を実行して(ステップS4607)、ステップS4608に移行する。第2の更新処理(ステップS4607)の詳細については図49を用いて後述する。
On the other hand, when there is no match (step S4605: No), the
次に、照合処理装置100は、走査対象のオートマトンAの現在の読込位置Acurから「[i」について遷移させ、遷移先を新たな読込位置Acurにする(ステップS4608)。iは、pに対応するパスIDである。そして、照合処理装置100は、累計回数更新処理を実行する(ステップS4609)。累計回数更新処理の詳細については図50を用いて後述する。
Next, the
次に、照合処理装置100は、パスID管理テーブルTにおける現在のパスIDに対応する前回項目に「開始」を設定する(ステップS4610)。そして、照合処理装置100は、入力ストリームSの現在の読込位置Scurを開始タグの文字列長分加算して現在の読込位置Scurを更新し(ステップS4611)、第1の走査処理を終了する。
Next, the
<第1の更新処理>
図47は、図46に示した第1の更新処理(ステップS4606)の処理手順の一例を示すフローチャートである。
<First update process>
FIG. 47 is a flowchart illustrating an example of a processing procedure of the first update processing (step S4606) illustrated in FIG.
照合処理装置100は、オートマトンAに新規状態を追加できるか否かを判定する(ステップS4701)。ここで、追加できない場合(ステップS4701:No)、照合処理装置100は、削除処理を実行し(ステップS4702)、ステップS4703に移行する。削除処理の詳細については図48を用いて後述する。一方で、追加できる場合(ステップS4701:Yes)、照合処理装置100は、ステップS4703に移行する。
The
ステップS4703において、照合処理装置100は、パスID「i」に対応するパス照合状態Vを作成する(ステップS4703)。次に、照合処理装置100は、作成したパス照合状態Vからの「[」に関する遷移先を開始状態N1に設定し、「]」に関する遷移先を終了状態N2に設定する。そして、照合処理装置100は、作成したパス照合状態Vからのそれ以外の遷移先として、自分自身を設定する(ステップS4704)。
In step S4703, the matching
次に、照合処理装置100は、開始状態N1のパスID「i」に関する遷移先を初期状態N0からパス照合状態Vに変更する(ステップS4705)。また、照合処理装置100は、クエリQ内のキーワードkに関するキーワード状態を作成し、キーワード状態の間の遷移を設定する(ステップS4706)。キーワード状態とは、キーワードの各文字を遷移とした場合の遷移先状態であり、例えば、キーワード照合途中状態N4,N5およびキーワード照合完了状態N6である。
Next, the
次に、照合処理装置100は、パス照合状態Vからキーワードkの先頭文字に対応する状態への遷移を設定する(ステップS4707)。そして、照合処理装置100は、キーワードkの末尾文字に対応する状態を、キーワード照合完了状態N6として設定する(ステップS4708)。これにより、図16に示したように、初期オートマトンA0がオートマトンA1に更新される。
Next, the matching
<削除処理>
図48は、図47に示した削除処理(ステップS4702)の処理手順の一例を示すフローチャートである。
<Delete processing>
FIG. 48 is a flowchart illustrating an example of a processing procedure of the deletion process (step S4702) illustrated in FIG.
照合処理装置100は、現在のオートマトンAに規定されたパス照合状態を取得し、パス照合状態により特定されるパスIDの集合Sを取得する(ステップS4801)。次に、照合処理装置100は、集合Sのうち、パスID管理テーブルTの累積回数が最小になるパスIDを特定する(ステップS4802)。
The
そして、照合処理装置100は、特定したパスIDが2つ以上あるか否かを判定する(ステップS4803)。ここで、パスIDが1つである場合(ステップS4803:No)、照合処理装置100は、ステップS4806に移行する。
Then, the
一方で、パスIDが2つ以上ある場合(ステップS4803:Yes)、照合処理装置100は、特定した2つ以上のパスIDのうち、ノードカウンタが最小になるパスIDを特定する(ステップS4804)。次に、照合処理装置100は、特定したパスIDのうち、ランダムに一つのパスIDを特定する(ステップS4805)。そして、照合処理装置100は、ステップS4806に移行する。
On the other hand, when there are two or more path IDs (step S4803: Yes), the
ステップS4806において、照合処理装置100は、特定したパスIDを特定するパス照合状態を削除する(ステップS4806)。次に、照合処理装置100は、削除処理を終了する。
In step S4806, the matching
<第2の更新処理>
図49は、図46に示した第2の更新処理(ステップS4607)の処理手順の一例を示すフローチャートである。
<Second update process>
FIG. 49 is a flowchart illustrating an example of a processing procedure of the second update process (step S4607) illustrated in FIG.
照合処理装置100は、現在のパスpから末尾のタグである「/t」を取り除いて得られるパスをパスparとし、パスparに対応するパスIDをjとする(ステップS4901)。
The
次に、照合処理装置100は、パスID「j」を特定するパス照合状態がオートマトンAに規定されているか否かを判定する(ステップS4902)。ここで、規定されていない場合(ステップS4902:No)、照合処理装置100は、第2の更新処理を終了する。
Next, the matching
一方で、規定されている場合(ステップS4902:Yes)、照合処理装置100は、パスID「j」に対応するパス照合状態N3をwとし(ステップS4903)、終了状態N2のiに関する遷移先を、初期状態N0からパス照合状態wに変更する(ステップS4904)。これにより、図20に示したように、オートマトンAがオートマトンA1からオートマトンA2に更新される。
On the other hand, when defined (step S4902: Yes), the
<累計回数更新処理>
図50は、図46に示した累計回数更新処理(ステップS4609)の処理手順の一例を示すフローチャートである。
<Cumulative number update process>
FIG. 50 is a flowchart illustrating an example of a processing procedure of the cumulative number updating process (step S4609) illustrated in FIG.
照合処理装置100は、AcurがパスID照合状態か否かを判定する(ステップS5001)。ここで、パスID照合状態でない場合(ステップS5001:No)、照合処理装置100は、累計回数更新処理を終了する。
The
一方で、パスID照合状態である場合(ステップS5001:Yes)、照合処理装置100は、Acurのノードカウンタを更新する(ステップS5002)。次に、照合処理装置100は、パスID管理テーブルTにおけるAcurのパスIDに対応する累計回数を更新する(ステップS5003)。
On the other hand, when it is in the path ID collation state (step S5001: Yes), the
そして、照合処理装置100は、頻度管理テーブルFに空き領域があるか否かを判定する(ステップS5004)。ここで、空き領域がない場合(ステップS5004:No)、照合処理装置100は、頻度管理テーブルFの先頭データを取得する(ステップS5005)。次に、照合処理装置100は、パスID管理テーブルTにおける先頭データが示すパスIDに対応する累計回数を更新する(ステップS5006)。そして、照合処理装置100は、ステップS5007に移行する。
Then, the
一方で、空き領域がある場合(ステップS5004:Yes)、照合処理装置100は、ステップS5007に移行する。ステップS5007において、照合処理装置100は、AcurのパスIDを頻度管理テーブルFに末尾データとして追加する(ステップS5007)。ここで、頻度管理テーブルFのレコード数が上限に達している場合、パスIDが末尾データとして追加されると、先頭データが削除される。そして、照合処理装置100は、累計回数更新処理を終了する。
On the other hand, when there is a free area (step S5004: Yes), the
<第2の走査処理>
図51は、図44に示した第2の走査処理(ステップS4410)の処理手順の一例を示すフローチャートである。
<Second scanning process>
FIG. 51 is a flowchart showing an example of the processing procedure of the second scanning process (step S4410) shown in FIG.
照合処理装置100は、オートマトンAの現在の読込位置Acurから、今回読み込まれた文字について遷移させ、遷移先を新たなAcurにする(ステップS5101)。以下の説明では、今回読み込まれた文字を、「文字c」と表記する場合がある。そして、照合処理装置100は、現在の読込位置Acurが示す状態がキーワード照合完了状態N6であるか否かを判断する(ステップS5102)。
The
キーワード照合完了状態N6である場合(ステップS5102:Yes)、照合処理装置100は、クエリQ照合結果AnsとなるクエリQのキーワードkを出力して(ステップS5103)、ステップS5104に移行する。
When it is the keyword collation completion state N6 (step S5102: Yes), the
一方で、キーワード照合完了状態N6でない場合(ステップS5102:No)、ステップS5104に移行する。ステップS5104において、照合処理装置100は、入力ストリームSの現在の読込位置ScurをScur=Scur+1に更新する(ステップS5104)。すなわち、照合処理装置100は、1文字分読込位置Scurを進める。これにより、第2の走査処理(ステップS4410)を終了する。
On the other hand, when it is not the keyword matching completion state N6 (step S5102: No), the process proceeds to step S5104. In step S5104, the
<第3の走査処理>
図52は、図44に示した第3の走査処理(ステップS4411)の処理手順の一例を示すフローチャートである。
<Third scanning process>
FIG. 52 is a flowchart showing an example of the processing procedure of the third scanning process (step S4411) shown in FIG.
照合処理装置100は、読み込まれた終了タグをバイナリ変換する(ステップS5201)。例えば、図3に示したように、終了タグ</news>が読み込まれた場合、「]1」に変換する。
The
照合処理装置100は、オートマトンAの現在の読込位置Acurから「]i」について遷移させ、遷移先を新たな読込位置Acurにする(ステップS5202)。iはpに対応するパスIDである。そして、照合処理装置100は、現在のパスIDに関する前回項目が「開始」であれば、「終了」に更新する(ステップS5203)。
The
次に、照合処理装置100は、入力ストリームSの現在の読込位置Scurを終了タグの文字列長分加算して現在の読込位置Scurを更新する(ステップS5204)。そして、照合処理装置100は、現在のパスpの末尾から「/t」を削除したものを新たなパスpとし(ステップS5205)、第3の走査処理を終了する。
Next, the
このように、照合処理装置100によれば、照合処理においてクエリQの条件を満たすパスが検出されるごとにクエリQの条件を満たすパスごとの検出回数を計数し、検出回数に基づいてオートマトンAを更新することができる。これにより、照合処理装置100は、オートマトンAに規定されたパス照合状態のうち、後に走査する可能性が高いパス照合状態を把握して、オートマトンAを更新することができる。
As described above, according to the
例えば、照合処理装置100によれば、検出回数が最小のパスを示すパス照合状態を削除することができる。これにより、照合処理装置100は、オートマトンAに規定されたパス照合状態のうち、後に再び走査する可能性が相対的に高いパス照合状態を残すことができる。換言すれば、照合処理装置100は、後に再び走査する可能性が相対的に高いパス照合状態を削除してしまって、後に再び同一のパス照合状態を生成することになってしまうことを防止することができる。結果として、照合処理装置100は、オートマトン更新処理の負荷を低減し、オートマトンAにパス照合状態を生成することによって生じる処理遅延時間を抑制し、オートマトンAを用いたクエリQの照合処理を高速化することができる。
For example, according to the
また、例えば、照合処理装置100によれば、検出回数が同一の第1および第2のパスを示す第1および第2のパス照合状態があっても、ノードカウンタが少ないパス照合状態を削除することができる。これにより、照合処理装置100は、オートマトンAに規定されたパス照合状態のうち、後に再び走査する可能性が相対的に高いパス照合状態を残すことができる。換言すれば、照合処理装置100は、後に再び走査する可能性が相対的に高いパス照合状態を削除してしまって、後に再び同一のパス照合状態を生成することになってしまうことを防止することができる。結果として、照合処理装置100は、オートマトン更新処理の負荷を低減し、オートマトンAにパス照合状態を生成することによって生じる処理遅延時間を抑制し、オートマトンAを用いたクエリQの照合処理を高速化することができる。
Further, for example, according to the
また、例えば、照合処理装置100によれば、前回項目のフラグが「終了」になっているパスを示すパス照合状態のうちで、検出回数が最小のパス照合状態を削除することができる。これにより、照合処理装置100は、近々、終了状態N2から走査されるパス照合状態をオートマトンAに残しておく。したがって、照合処理装置100は、オートマトンAに規定されたパス照合状態のうち、近々、再び走査する可能性が相対的に高いパス照合状態を残すことができる。換言すれば、照合処理装置100は、後に再び走査する可能性が相対的に高いパス照合状態を削除してしまって、後に再び同一のパス照合状態を生成することになってしまうことを防止することができる。結果として、照合処理装置100は、オートマトン更新処理の負荷を低減し、オートマトンAにパス照合状態を生成することによって生じる処理遅延時間を抑制し、オートマトンAを用いたクエリQの照合処理を高速化することができる。
Further, for example, according to the
また、例えば、照合処理装置100によれば、パスID管理テーブルTの累計回数を頻度管理テーブルFにより修正することができる。これにより、照合処理装置100は、パスIDごとのクエリQの条件を満たす累計回数を、頻度を考慮して計数することができる。例えば、照合処理装置100は、過去にクエリQの条件を満たすと検出された所定回数の中での、パスIDごとのクエリQの条件を満たす累計回数を計数することができる。
Further, for example, according to the
上述した実施の形態に関し、さらに以下の付記を開示する。 The following additional notes are disclosed with respect to the embodiment described above.
(付記1)オートマトンを用いて、タグにより階層化された入力ストリームに対して、キーワードと前記キーワードに対応するパスの条件とを含むクエリの照合を行うコンピュータが、
前記入力ストリームから前記条件を満たすパスを検出するたびに、前記条件を満たすパスごとの検出回数を計数し、
初期状態と、開始タグ記号を示す開始状態と、終了タグ記号を示す終了状態とが規定され、前記条件を満たすパスを示すパス照合状態が複数規定されたオートマトンに、前記条件を満たすパスを示す新たなパス照合状態を追加する場合、計数した前記条件を満たすパスごとの検出回数に基づいて、前記オートマトンを更新する、
処理を実行することを特徴とする更新方法。
(Additional remark 1) The computer which collates the query containing the keyword and the conditions of the path | pass corresponding to the said keyword with respect to the input stream hierarchized by the tag using an automaton,
Each time a path satisfying the condition is detected from the input stream, the number of detections for each path satisfying the condition is counted,
An automaton in which an initial state, a start state indicating a start tag symbol, and an end state indicating an end tag symbol are defined, and a plurality of path matching states indicating paths satisfying the condition are indicated, indicates a path satisfying the condition. When adding a new path matching state, the automaton is updated based on the number of detections for each path that satisfies the counted condition.
An update method characterized by executing processing.
(付記2)前記更新する処理は、
前記オートマトンに規定されたパス照合状態が所定数以上ある場合には、前記オートマトンに規定されたパス照合状態のうち、計数した検出回数が相対的に少ない前記条件を満たすパスを示すパス照合状態を削除することにより、前記オートマトンを更新することを特徴とする付記1に記載の更新方法。
(Appendix 2) The update process is as follows:
When there are a predetermined number or more of path matching states defined for the automaton, among path matching states defined for the automaton, a path matching state indicating a path satisfying the condition with a relatively small number of detected counts. The update method according to
(付記3)前記コンピュータが、
前記入力ストリームを先頭から読み込み、
前記入力ストリーム内の開始タグを読み込むと、前記入力ストリームの最上階層から前記開始タグが示す階層までのパスを特定し、
特定したパスが前記条件を満たすか否かを判定することにより、前記条件を満たすパスを検出する、処理を実行し、
前記計数する処理は、
前記条件を満たすパスを検出した場合には、検出した前記条件を満たすパスの検出回数を計数し、
前記更新する処理は、
前記オートマトンに規定されたパス照合状態が所定数以上ある場合には、前記オートマトンに規定されたパス照合状態であって、読み込まれた開始タグに対応する終了タグが読み込まれたパス照合状態のうち、計数した検出回数が相対的に少ないパスを示すパス照合状態を削除することにより、前記オートマトンを更新する、
ことを特徴とする付記1または2に記載の更新方法。
(Supplementary note 3)
Read the input stream from the beginning,
When the start tag in the input stream is read, the path from the top layer of the input stream to the layer indicated by the start tag is specified,
Detecting a path that satisfies the condition by determining whether or not the identified path satisfies the condition,
The counting process is:
If a path that satisfies the condition is detected, the number of detections of the detected path that satisfies the condition is counted,
The update process is as follows:
If there are a predetermined number or more of path matching states defined in the automaton, the path matching state defined in the automaton is a path matching state in which an end tag corresponding to the read start tag is read. Updating the automaton by deleting a path matching state indicating a path with a relatively small number of detected counts,
The update method according to
(付記4)前記更新する処理は、
前記条件を満たすパスを検出した場合であって、前記オートマトンに規定されたパス照合状態が所定数より少ない場合には、検出した前記条件を満たすパスを示すパス照合状態を前記オートマトンに追加することにより、前記オートマトンを更新する、
ことを特徴とする付記1〜3のいずれか一つに記載の更新方法。
(Appendix 4) The update process is as follows:
When a path satisfying the condition is detected and the number of path matching states defined in the automaton is less than a predetermined number, a path matching state indicating a path that satisfies the detected condition is added to the automaton. To update the automaton,
The update method according to any one of
(付記5)前記コンピュータが、
前記オートマトンに規定されたパス照合状態ごとに前記開始状態から当該パス照合状態に遷移が行われた遷移回数を計数する処理を実行し、
前記更新する処理は、
計数した遷移回数に基づいて、前記オートマトンに規定されたパス照合状態のうちで、計数した検出回数が同一の第1および第2のパス照合状態のいずれかを削除することにより、前記オートマトンを更新することを特徴とする付記1〜4のいずれか一つに記載の更新方法。
(Appendix 5) The computer
For each path matching state defined in the automaton, execute a process of counting the number of transitions made from the start state to the path matching state,
The update process is as follows:
Based on the counted number of transitions, the automaton is updated by deleting one of the first and second path matching states with the same number of detected counts among the path matching states defined for the automaton. The update method according to any one of
(付記6)前記検出回数を計数する処理は、前記条件を満たすパスを検出するたびに、最新の所定回数分の前記条件を満たすパスの検出回数のうちの前記条件を満たすパスごとの検出回数を計数することを特徴とする付記1〜5のいずれか一つに記載の更新方法。
(Supplementary Note 6) The process of counting the number of detections is performed every time a path satisfying the condition is detected, the number of detections for each path satisfying the condition among the latest predetermined number of detections of the path satisfying the condition. The update method according to any one of
(付記7)オートマトンを用いて、タグにより階層化された入力ストリームに対して、キーワードと前記キーワードに対応するパスの条件とを含むクエリの照合を行うコンピュータに、
前記入力ストリームから前記条件を満たすパスを検出するたびに、前記条件を満たすパスごとの検出回数を計数し、
初期状態と、開始タグ記号を示す開始状態と、終了タグ記号を示す終了状態とが規定され、前記条件を満たすパスを示すパス照合状態が複数規定されたオートマトンに、前記条件を満たすパスを示す新たなパス照合状態を追加する場合、計数した前記条件を満たすパスごとの検出回数に基づいて、前記オートマトンを更新する、
処理を実行させることを特徴とする更新プログラム。
(Supplementary Note 7) A computer that performs matching of a query including a keyword and a path condition corresponding to the keyword on an input stream hierarchized by tags using an automaton,
Each time a path satisfying the condition is detected from the input stream, the number of detections for each path satisfying the condition is counted,
An automaton in which an initial state, a start state indicating a start tag symbol, and an end state indicating an end tag symbol are defined, and a plurality of path matching states indicating paths satisfying the condition are indicated, indicates a path satisfying the condition. When adding a new path matching state, the automaton is updated based on the number of detections for each path that satisfies the counted condition.
An update program characterized by causing a process to be executed.
(付記8)オートマトンを用いて、タグにより階層化された入力ストリームに対して、キーワードと前記キーワードに対応するパスの条件とを含むクエリの照合を行う照合処理装置であって、
前記入力ストリームから前記条件を満たすパスを検出するたびに、前記条件を満たすパスごとの検出回数を計数する計数部と、
初期状態と、開始タグ記号を示す開始状態と、終了タグ記号を示す終了状態とが規定され、前記条件を満たすパスを示すパス照合状態が複数規定されたオートマトンに、前記条件を満たすパスを示す新たなパス照合状態を追加する場合、前記計数部によって計数された前記条件を満たすパスごとの検出回数に基づいて、前記オートマトンを更新する更新部と、
を有することを特徴とする照合処理装置。
(Supplementary note 8) A collation processing device for collating a query including a keyword and a path condition corresponding to the keyword against an input stream hierarchized by a tag using an automaton,
A counter that counts the number of detections for each path that satisfies the condition each time a path that satisfies the condition is detected from the input stream;
An automaton in which an initial state, a start state indicating a start tag symbol, and an end state indicating an end tag symbol are defined, and a plurality of path matching states indicating paths satisfying the condition are indicated, indicates a path satisfying the condition. When adding a new path verification state, an updating unit that updates the automaton based on the number of detections for each path that satisfies the condition counted by the counting unit;
The collation processing apparatus characterized by having.
100 照合処理装置
4301 読込部
4302 特定部
4303 検出部
4304 第1の計数部
4305 第2の計数部
4306 更新部
A オートマトン
T パスID管理テーブル
DESCRIPTION OF
Claims (6)
前記入力ストリームから前記条件を満たすパスを検出するたびに、前記条件を満たすパスごとの検出回数を計数し、
初期状態と、開始タグ記号を示す開始状態と、終了タグ記号を示す終了状態とが規定され、前記条件を満たすパスを示すパス照合状態が複数規定されたオートマトンに、前記条件を満たすパスを示す新たなパス照合状態を追加する場合、計数した前記条件を満たすパスごとの検出回数に基づいて、前記オートマトンを更新する、
処理を実行することを特徴とする更新方法。 A computer that performs matching of a query including a keyword and a path condition corresponding to the keyword with respect to an input stream layered by tags using an automaton,
Each time a path satisfying the condition is detected from the input stream, the number of detections for each path satisfying the condition is counted,
An automaton in which an initial state, a start state indicating a start tag symbol, and an end state indicating an end tag symbol are defined, and a plurality of path matching states indicating paths satisfying the condition are indicated, indicates a path satisfying the condition. When adding a new path matching state, the automaton is updated based on the number of detections for each path that satisfies the counted condition.
An update method characterized by executing processing.
前記オートマトンに規定されたパス照合状態が所定数以上ある場合には、前記オートマトンに規定されたパス照合状態のうち、計数した検出回数が相対的に少ない前記条件を満たすパスを示すパス照合状態を削除することにより、前記オートマトンを更新することを特徴とする請求項1に記載の更新方法。 The update process is as follows:
When there are a predetermined number or more of path matching states defined for the automaton, among path matching states defined for the automaton, a path matching state indicating a path satisfying the condition with a relatively small number of detected counts. The update method according to claim 1, wherein the automaton is updated by deleting.
前記入力ストリームを先頭から読み込み、
前記入力ストリーム内の開始タグを読み込むと、前記入力ストリームの最上階層から前記開始タグが示す階層までのパスを特定し、
特定したパスが前記条件を満たすか否かを判定することにより、前記条件を満たすパスを検出する、処理を実行し、
前記計数する処理は、
前記条件を満たすパスを検出した場合には、検出した前記条件を満たすパスの検出回数を計数し、
前記更新する処理は、
前記オートマトンに規定されたパス照合状態が所定数以上ある場合には、前記オートマトンに規定されたパス照合状態であって、読み込まれた開始タグに対応する終了タグが読み込まれたパス照合状態のうち、計数した検出回数が相対的に少ないパスを示すパス照合状態を削除することにより、前記オートマトンを更新する、
ことを特徴とする請求項1または2に記載の更新方法。 The computer is
Read the input stream from the beginning,
When the start tag in the input stream is read, the path from the top layer of the input stream to the layer indicated by the start tag is specified,
Detecting a path that satisfies the condition by determining whether or not the identified path satisfies the condition,
The counting process is:
If a path that satisfies the condition is detected, the number of detections of the detected path that satisfies the condition is counted,
The update process is as follows:
If there are a predetermined number or more of path matching states defined in the automaton, the path matching state defined in the automaton is a path matching state in which an end tag corresponding to the read start tag is read. Updating the automaton by deleting a path matching state indicating a path with a relatively small number of detected counts,
The update method according to claim 1 or 2, characterized in that:
前記オートマトンに規定されたパス照合状態ごとに前記開始状態から当該パス照合状態に遷移が行われた遷移回数を計数する処理を実行し、
前記更新する処理は、
計数した遷移回数に基づいて、前記オートマトンに規定されたパス照合状態のうちで、計数した検出回数が同一の第1および第2のパス照合状態のいずれかを削除することにより、前記オートマトンを更新することを特徴とする請求項1〜3のいずれか一つに記載の更新方法。 The computer is
For each path matching state defined in the automaton, execute a process of counting the number of transitions made from the start state to the path matching state,
The update process is as follows:
Based on the counted number of transitions, the automaton is updated by deleting one of the first and second path matching states with the same number of detected counts among the path matching states defined for the automaton. The update method according to claim 1, wherein the update method is performed.
前記入力ストリームから前記条件を満たすパスを検出するたびに、前記条件を満たすパスごとの検出回数を計数し、
初期状態と、開始タグ記号を示す開始状態と、終了タグ記号を示す終了状態とが規定され、前記条件を満たすパスを示すパス照合状態が複数規定されたオートマトンに、前記条件を満たすパスを示す新たなパス照合状態を追加する場合、計数した前記条件を満たすパスごとの検出回数に基づいて、前記オートマトンを更新する、
処理を実行させることを特徴とする更新プログラム。 Using an automaton, to a computer that performs matching of a query including a keyword and a path condition corresponding to the keyword against an input stream hierarchized by tags,
Each time a path satisfying the condition is detected from the input stream, the number of detections for each path satisfying the condition is counted,
An automaton in which an initial state, a start state indicating a start tag symbol, and an end state indicating an end tag symbol are defined, and a plurality of path matching states indicating paths satisfying the condition are indicated, indicates a path satisfying the condition. When adding a new path matching state, the automaton is updated based on the number of detections for each path that satisfies the counted condition.
An update program characterized by causing a process to be executed.
前記入力ストリームから前記条件を満たすパスを検出するたびに、前記条件を満たすパスごとの検出回数を計数する計数部と、
初期状態と、開始タグ記号を示す開始状態と、終了タグ記号を示す終了状態とが規定され、前記条件を満たすパスを示すパス照合状態が複数規定されたオートマトンに、前記条件を満たすパスを示す新たなパス照合状態を追加する場合、前記計数部によって計数された前記条件を満たすパスごとの検出回数に基づいて、前記オートマトンを更新する更新部と、
を有することを特徴とする照合処理装置。 A collation processing device that performs collation of a query including a keyword and a path condition corresponding to the keyword with respect to an input stream hierarchized by tags using an automaton,
A counter that counts the number of detections for each path that satisfies the condition each time a path that satisfies the condition is detected from the input stream;
An automaton in which an initial state, a start state indicating a start tag symbol, and an end state indicating an end tag symbol are defined, and a plurality of path matching states indicating paths satisfying the condition are indicated, indicates a path satisfying the condition. When adding a new path verification state, an updating unit that updates the automaton based on the number of detections for each path that satisfies the condition counted by the counting unit;
The collation processing apparatus characterized by having.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013001412A JP5998942B2 (en) | 2013-01-08 | 2013-01-08 | Update method, update program, and verification processing apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013001412A JP5998942B2 (en) | 2013-01-08 | 2013-01-08 | Update method, update program, and verification processing apparatus |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014134901A JP2014134901A (en) | 2014-07-24 |
JP5998942B2 true JP5998942B2 (en) | 2016-09-28 |
Family
ID=51413129
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013001412A Expired - Fee Related JP5998942B2 (en) | 2013-01-08 | 2013-01-08 | Update method, update program, and verification processing apparatus |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5998942B2 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110019261B (en) * | 2017-09-30 | 2021-11-23 | 北京国双科技有限公司 | Data query method and device |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3832830B2 (en) * | 2003-04-25 | 2006-10-11 | インターナショナル・ビジネス・マシーンズ・コーポレーション | XPath evaluation method, XPath evaluation apparatus and information processing apparatus using the same |
JP4365162B2 (en) * | 2003-08-20 | 2009-11-18 | 富士通株式会社 | Apparatus and method for retrieving structured document data |
JP5320697B2 (en) * | 2007-07-26 | 2013-10-23 | 富士通株式会社 | Collation processing program and collation processing apparatus |
-
2013
- 2013-01-08 JP JP2013001412A patent/JP5998942B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2014134901A (en) | 2014-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11769003B2 (en) | Web element rediscovery system and method | |
US9858628B2 (en) | Systems and computer-implemented methods to compare and identify duplicative presentations of comparable data files including imagery and data representations of rental property listings | |
US10671661B2 (en) | Graph query logic | |
US7992081B2 (en) | Streaming validation of XML documents | |
US9131000B2 (en) | Methods, systems, and computer readable media for heuristics-based adaptive protocol parsing | |
CA2901695C (en) | Api version testing based on query schema | |
US7490078B2 (en) | Stream data processing system and method for avoiding duplication of data process | |
JP5375413B2 (en) | Data conversion apparatus, data conversion method, and data conversion program | |
US9223815B2 (en) | Method, apparatus, and program for supporting creation and management of metadata for correcting problem in dynamic web application | |
US8219901B2 (en) | Method and device for filtering elements of a structured document on the basis of an expression | |
US20100257440A1 (en) | High precision web extraction using site knowledge | |
US11106757B1 (en) | Framework for augmenting document object model trees optimized for web authoring | |
US20170068732A1 (en) | Multi-system segmented search processing | |
US20090204889A1 (en) | Adaptive sampling of web pages for extraction | |
JP3205406B2 (en) | Reference target variable determination processing method and translation processing system | |
US11138289B1 (en) | Optimizing annotation reconciliation transactions on unstructured text content updates | |
JP5998942B2 (en) | Update method, update program, and verification processing apparatus | |
US20070028163A1 (en) | Lightweight application program interface (API) for extensible markup language (XML) | |
US9483578B2 (en) | Computer-readable storage medium storing update program, update method, and update device | |
JP4954674B2 (en) | Software development support method, software development support device, software development support program, and computer system | |
CN110188432B (en) | System architecture verification method, electronic device and computer-readable storage medium | |
US20210200833A1 (en) | Health diagnostics and analytics for object repositories | |
KR20110094804A (en) | Semantic tagging server for supporting reuse of software artifacts, and methods thereof | |
CN113177391B (en) | Method for redirecting operation cursor in streaming interface, computing equipment and storage medium | |
CN115796146A (en) | File comparison method and device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20150903 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20160711 |
|
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: 20160802 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160815 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5998942 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |