Something I forgot to mention are other easier alternatives to associating user data with a particular searcher.
For example, MyData (in your case Map<FieldName,Terms>) could simply be the single item in a solr user cache. Another option is like how Lucene caches FilteredQuery (basically a WeakHashMap<SolrIndexSearcher,MyStuff>) In either case, no regenerators or custom listeners are needed... just configure a request to be sent to your plugin on both firstSearcher and newSearcher events, and program your plugin to regenerate MyStuff if it's not in the cache. -Yonik
