List of usage examples for org.apache.lucene.search LRUQueryCache LRUQueryCache
public LRUQueryCache(int maxSize, long maxRamBytesUsed)
maxSize queries with at most maxRamBytesUsed bytes of memory. From source file:org.elasticsearch.common.lucene.IndexCacheableQueryTests.java
License:Apache License
public void testCache() throws IOException { Directory dir = newDirectory();/*from www . j av a2 s . c o m*/ LRUQueryCache cache = new LRUQueryCache(10000, Long.MAX_VALUE); QueryCachingPolicy policy = QueryCachingPolicy.ALWAYS_CACHE; RandomIndexWriter writer = new RandomIndexWriter(getRandom(), dir); for (int i = 0; i < 10; ++i) { writer.addDocument(new Document()); } IndexReader reader = writer.getReader(); IndexSearcher searcher = newSearcher(reader); reader = searcher.getIndexReader(); // reader might be wrapped searcher.setQueryCache(cache); searcher.setQueryCachingPolicy(policy); assertEquals(0, cache.getCacheSize()); DummyIndexCacheableQuery query = new DummyIndexCacheableQuery(); searcher.count(query); int expectedCacheSize = reader.leaves().size(); assertEquals(expectedCacheSize, cache.getCacheSize()); searcher.count(query); assertEquals(expectedCacheSize, cache.getCacheSize()); writer.addDocument(new Document()); IndexReader reader2 = writer.getReader(); searcher = newSearcher(reader2); reader2 = searcher.getIndexReader(); // reader might be wrapped searcher.setQueryCache(cache); searcher.setQueryCachingPolicy(policy); // since the query is only cacheable at the index level, it has to be recomputed on all leaves expectedCacheSize += reader2.leaves().size(); searcher.count(query); assertEquals(expectedCacheSize, cache.getCacheSize()); searcher.count(query); assertEquals(expectedCacheSize, cache.getCacheSize()); reader.close(); reader2.close(); writer.close(); assertEquals(0, cache.getCacheSize()); dir.close(); }
From source file:org.modeshape.jcr.index.lucene.Searcher.java
License:Apache License
protected Searcher(LuceneConfig config, IndexWriter writer, String name) { this.searchManager = config.searchManager(writer); this.queryCache = new LRUQueryCache(MAX_QUERIES_TO_CACHE, MAX_RAM_BYTES_TO_USE); this.searchManagerRefreshService = Executors.newScheduledThreadPool(1, new NamedThreadFactory(name + "-lucene-search-manager-refresher")); this.searchManagerRefreshResult = this.searchManagerRefreshService.scheduleWithFixedDelay( this::refreshSearchManager, 0, config.refreshTimeSeconds(), TimeUnit.SECONDS); }