Of course, another approach doesn't occur to me until the weekend..... But, even if building a filter is a time-consuming process, you could always build them as a warm-up when your searcher starts, and cache them *then*. That way, the user doesn't see a long pause when the filter is built the first time and you also don't have updating issues. I guess you'd do this by firing a few carefully-selected queries at your engine upon startup and using a CachingWrapperFilter (?).... I believe Solr uses something similar. Of course, you want to keep your IndexReader open as long as possible, which you want to do anyway....
FWIW Erick