Implementations described herein relate to using a filter engine opcode
tree for evaluating multiple queries. The opcode tree includes opcode
nodes and branch nodes. Each opcode node includes one or more computer
instructions resulting from compiling a query. Executing the opcode tree
a single time evaluates each of multiple queries represented in the
opcode tree. When a new opcode node is added to the tree, the context of
the opcode tree and the structure of the new opcode are taken into
account when modifying a branch node or an opcode node. In certain
situation, a branch node is optimized to include an indexed lookup
function such as a hash function, to optimize processing of opcode nodes
that depend from the branch node. Adding and removing nodes to/from the
opcode tree can be handled by a filter engine component or by an opcode
object being added to/removed from the tree.