org.apache.lucene.facet.search
Class TotalFacetCountsCache

java.lang.Object
  extended by org.apache.lucene.facet.search.TotalFacetCountsCache

public final class TotalFacetCountsCache
extends Object

Manage an LRU cache for TotalFacetCounts per index, taxonomy, and facet indexing params.

WARNING: This API is experimental and might change in incompatible ways in the next release.

Field Summary
static int DEFAULT_CACHE_SIZE
          Default size of in memory cache for computed total facet counts.
 
Method Summary
 void clear()
          Clear the cache.
 int getCacheSize()
           
static TotalFacetCountsCache getSingleton()
          Get the single instance of this cache
 TotalFacetCounts getTotalCounts(IndexReader indexReader, TaxonomyReader taxonomy, FacetIndexingParams facetIndexingParams, CategoryListCache clCache)
          Get the total facet counts for a reader/taxonomy pair and facet indexing parameters.
 void load(File inputFile, IndexReader indexReader, TaxonomyReader taxonomy, FacetIndexingParams facetIndexingParams)
          Load TotalFacetCounts matching input parameters from the provided outputFile and add them into the cache for the provided indexReader, taxonomy, and facetIndexingParams.
 void setCacheSize(int size)
          Set the number of TotalFacetCounts arrays that will remain in memory cache.
 void store(File outputFile, IndexReader indexReader, TaxonomyReader taxonomy, FacetIndexingParams facetIndexingParams, CategoryListCache clCache)
          Store the TotalFacetCounts matching input parameters into the provided outputFile, making them available for a later call to load(File, IndexReader, TaxonomyReader, FacetIndexingParams).
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_CACHE_SIZE

public static final int DEFAULT_CACHE_SIZE
Default size of in memory cache for computed total facet counts. Set to 2 for the case when an application reopened a reader and the original one is still in use (Otherwise there will be switching again and again between the two.)

See Also:
Constant Field Values
Method Detail

getSingleton

public static TotalFacetCountsCache getSingleton()
Get the single instance of this cache


getTotalCounts

public TotalFacetCounts getTotalCounts(IndexReader indexReader,
                                       TaxonomyReader taxonomy,
                                       FacetIndexingParams facetIndexingParams,
                                       CategoryListCache clCache)
                                throws IOException
Get the total facet counts for a reader/taxonomy pair and facet indexing parameters. If not in cache, computed here and added to the cache for later use.

Parameters:
indexReader - the documents index
taxonomy - the taxonomy index
facetIndexingParams - facet indexing parameters
clCache - category list cache for faster computation, can be null
Returns:
the total facet counts.
Throws:
IOException

load

public void load(File inputFile,
                 IndexReader indexReader,
                 TaxonomyReader taxonomy,
                 FacetIndexingParams facetIndexingParams)
          throws IOException
Load TotalFacetCounts matching input parameters from the provided outputFile and add them into the cache for the provided indexReader, taxonomy, and facetIndexingParams. If a TotalFacetCounts for these parameters already exists in the cache, it will be replaced by the loaded one.

Parameters:
inputFile - file from which to read the data
indexReader - the documents index
taxonomy - the taxonomy index
facetIndexingParams - the facet indexing parameters
Throws:
IOException - on error
See Also:
store(File, IndexReader, TaxonomyReader, FacetIndexingParams, CategoryListCache)

store

public void store(File outputFile,
                  IndexReader indexReader,
                  TaxonomyReader taxonomy,
                  FacetIndexingParams facetIndexingParams,
                  CategoryListCache clCache)
           throws IOException
Store the TotalFacetCounts matching input parameters into the provided outputFile, making them available for a later call to load(File, IndexReader, TaxonomyReader, FacetIndexingParams). If these TotalFacetCounts are available in the cache, they are used. But if they are not in the cache, this call will first compute them (which will also add them to the cache).

Parameters:
outputFile - file to store in.
indexReader - the documents index
taxonomy - the taxonomy index
facetIndexingParams - the facet indexing parameters
clCache - category list cache for faster computation, can be null
Throws:
IOException - on error
See Also:
load(File, IndexReader, TaxonomyReader, FacetIndexingParams), getTotalCounts(IndexReader, TaxonomyReader, FacetIndexingParams, CategoryListCache)

clear

public void clear()
Clear the cache.


getCacheSize

public int getCacheSize()
Returns:
the maximal cache size

setCacheSize

public void setCacheSize(int size)
Set the number of TotalFacetCounts arrays that will remain in memory cache.

If new size is smaller than current size, the cache is appropriately trimmed.

Minimal size is 1, so passing zero or negative size would result in size of 1.

Parameters:
size - new size to set