Example usage for org.apache.lucene.search LRUQueryCache LRUQueryCache

List of usage examples for org.apache.lucene.search LRUQueryCache LRUQueryCache

Introduction

In this page you can find the example usage for org.apache.lucene.search LRUQueryCache LRUQueryCache.

Prototype

public LRUQueryCache(int maxSize, long maxRamBytesUsed) 

Source Link

Document

Create a new instance that will cache at most maxSize queries with at most maxRamBytesUsed bytes of memory.

Usage

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);
}