System and method for maintaining a dynamic dictionary
First Claim
1. A method, comprising:
- storing, in computer memory, data structures that collectively represent at least one dynamic dictionary of keywords that does not need to be recompiled in order to be updated, the data structures including (i) a management automaton that includes a plurality of management nodes, and (ii) a runtime automaton that is derived from the management automaton and includes a plurality of runtime nodes;
searching input data, using the runtime automaton; and
upon receiving a new keyword that is not included in the at least one dynamic dictionary;
updating the management automaton to include the new keyword, wherein updating the management automaton to include the new keyword comprises adding one or more new management nodes to the management automaton, each of the new management nodes corresponding to at least a portion of the new keyword,for at least one of the new management nodes;
ascertaining that the portion of the new keyword corresponded to by the new management node differs by an appendage of exactly one symbol from a sequence of symbols corresponded to by another one of the management nodes;
in response thereto, identifying the another one of the management nodes as a parent node of the new management node; and
in response thereto, storing, in the parent node, a child pointer to the new management node, the child pointer corresponding to the appended symbol, andbased on the update to the management automaton, updating the runtime automaton to include the new keyword.
3 Assignments
0 Petitions
Accused Products
Abstract
An apparatus and techniques for constructing and utilizing a “dynamic dictionary” that is not a compiled dictionary, and therefore does not need to be recompiled in order to be updated. The dynamic dictionary includes respective data structures that represent (i) a management automaton that includes a plurality of management nodes, and (ii) a runtime automaton that is derived from the management automaton and includes a plurality of runtime nodes. The runtime automaton may be used to search input data, such as communication traffic over a network, for keywords of interest, while the management automaton manages the addition of keywords to the dynamic dictionary. Typically, at least two (e.g., exactly two) such dynamic dictionaries are used in combination with a static dictionary.
205 Citations
17 Claims
-
1. A method, comprising:
-
storing, in computer memory, data structures that collectively represent at least one dynamic dictionary of keywords that does not need to be recompiled in order to be updated, the data structures including (i) a management automaton that includes a plurality of management nodes, and (ii) a runtime automaton that is derived from the management automaton and includes a plurality of runtime nodes; searching input data, using the runtime automaton; and upon receiving a new keyword that is not included in the at least one dynamic dictionary; updating the management automaton to include the new keyword, wherein updating the management automaton to include the new keyword comprises adding one or more new management nodes to the management automaton, each of the new management nodes corresponding to at least a portion of the new keyword, for at least one of the new management nodes; ascertaining that the portion of the new keyword corresponded to by the new management node differs by an appendage of exactly one symbol from a sequence of symbols corresponded to by another one of the management nodes; in response thereto, identifying the another one of the management nodes as a parent node of the new management node; and in response thereto, storing, in the parent node, a child pointer to the new management node, the child pointer corresponding to the appended symbol, and based on the update to the management automaton, updating the runtime automaton to include the new keyword. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
-
-
16. A method, comprising:
-
storing, in computer memory, data structures that collectively represent at least one dynamic dictionary of keywords that does not need to be recompiled in order to be updated, the data structures including (i) a management automaton that includes a plurality of management nodes, and (ii) a runtime automaton that is derived from the management automaton and includes a plurality of runtime nodes; searching input data, using the runtime automaton; upon receiving a new keyword that is not included in the at least one dynamic dictionary; updating the management automaton to include the new keyword, and based on the update to the management automaton, updating the runtime automaton to include the new keyword, wherein updating the runtime automaton to include the new keyword comprises adding one or more new runtime nodes to the runtime automaton, each of the new runtime nodes corresponding to at least a portion of the new keyword, wherein the runtime automaton uses an alphabet of symbols; and for each of the new runtime nodes; storing, in the new runtime node, a plurality of pointers to one or more of the new runtime nodes, the pointers including a respective pointer corresponding to each one of the symbols in the alphabet; and subsequently, storing, in one or more of the new runtime nodes, respective pointers to the new runtime node.
-
-
17. A method, comprising:
-
storing, in computer memory, data structures that collectively represent at least one dynamic dictionary of keywords that does not need to be recompiled in order to be updated, the data structures including (i) a management automaton that includes a plurality of management nodes, and (ii) a runtime automaton that is derived from the management automaton and includes a plurality of runtime nodes; searching input data, using the runtime automaton; and upon receiving a new keyword that is not included in the at least one dynamic dictionary; updating the management automaton to include the new keyword, and based on the update to the management automaton, updating the runtime automaton to include the new keyword, wherein updating the runtime automaton to include the new keyword comprises adding one or more new runtime nodes to the runtime automaton, each of the new runtime nodes corresponding to at least a portion of the new keyword, wherein adding the one or more new runtime nodes to the runtime automaton comprises; adding a regular runtime node, corresponding to the keyword, to the runtime automaton; and adding a reporting runtime node, corresponding to the keyword, to the runtime automaton, the reporting runtime node storing a plurality of pointers that point to the regular runtime node, wherein searching the input data comprises; traversing the runtime automaton, until the reporting runtime node is reached; and upon reaching the reporting runtime node, ascertaining that the new keyword is present in the input data, by ascertaining that at least two of the pointers stored in the reporting runtime node are equivalent to one another and do not point to a root node of the runtime automaton.
-
Specification