1. A system comprising: an input port receiving a data stream having a current byte and a stream of preceding and subsequent bytes thereof; a history memory storing the stream of preceding bytes in blocks of history data; an index engine having a table of keys associated to memory addresses of the blocks, the index engine accessing the table to output a plurality of potential string matches upon entry of the current byte; a search engine processing the potential string matches by fetching the blocks of history data associated with each of the plurality of potential string matches and comparing a portion of each of the blocks to the current byte to output a string upon matching consecutive bytes in the block to the current byte and subsequent bytes thereof; and a control input limiting the number of potential string matches processed by the search engine.