BlockingDeque<QueryMatcher> matcherPool = new LinkedBlockingDeque<QueryMatcher>();
for (int i=0; i < SEARCHER_POOL_SIZE; i++) {
try {
IndexSearcher searcher = new IndexSearcher(directory, true); //read-only for better concurrent performance.
TermMatcher termMatcher = new IndexReaderTermMatcher(searcher.getIndexReader(), PAYLOAD_TERM);
QueryMatcher matcher = new TermBasedQueryMatcher(scorer, termMatcher, this.facetingManager);
searcherPool.addFirst(searcher); //no blocking, throws exception.
matcherPool.addFirst(matcher);
} catch (CorruptIndexException cie) {
logger.fatal("HORROR!!! corrupted index. unable to reopen", cie);
} catch (IOException ioe) {