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

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

Introduction

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

Prototype

public final long getCacheSize() 

Source Link

Document

Return the total number of DocIdSet s which are currently stored in the cache.

Usage

From source file:org.elasticsearch.common.lucene.IndexCacheableQueryTests.java

License:Apache License

public void testCache() throws IOException {
    Directory dir = newDirectory();/*w ww  . j a  va  2s .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();
}