1. A method for processing a packet, comprising: processing the packet through a hardware-based packet classifier having an evolving rule, wherein the evolving rule is updated periodically in accordance with sample packets that are obtained within a sampling time interval, wherein the evolving rule is for matching a plurality of received packets from different flows, wherein each of the different flows comprises packets with a same projection, wherein the hardware based packet classifier comprises a register for storing the evolving rule; and processing the packet by a processor of a software-based packet classifier when the hardware-based packet classifier is unable to classify the packet, wherein the software-based packet classifier comprises a plurality of rules associated with packet classification, wherein each rule of the plurality of rules comprises a predicate and an action, wherein each predicate comprises a plurality of literals defined over a plurality of packet header fields, wherein each literal comprises a range defined by at least two values of one of the plurality of packet header fields, wherein a rule of the plurality of rules is evaluated for a match to the packet when a predicate of the rule matches a projection of the packet, and wherein the evolving rule is derived from at least two of the plurality of rules.