Patch looks good to me.
Enabling the caching for seeking in the TermsEnum itself wasnt very good, because some queries (e.g. Fuzzy) seek to more terms than they will end out "using" in the BooleanQuery. Its much better to be in the rewrite method. And I like passing docfreq so we the queries are less fragile and depend on this cache less.
Maybe we should consider the small patch to Standard's terms dict cache in
LUCENE-2672? The issue is that clone() with this hierarchy can be expensive, its new in flex because of the TermState abstraction i think. This might be important in rewrite methods that are going to add a lot of these terms (it certainly showed up in my profiler and made a big difference)
Uwe found an excellent explanation of this: http://forums.java.net/jive/thread.jspa?messageID=16538&tstart=0
It even affects arrays too, there is a bug for the array case, but its only fixed in -server: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6195753