public class

FilterManager

extends Object
java.lang.Object
   ↳ org.apache.lucene.search.FilterManager

Class Overview

Filter caching singleton. It can be used to save filters locally for reuse. This class makes it possible to cache Filters even when using RMI, as it keeps the cache on the searcher side of the RMI connection. Also could be used as a persistent storage for any filter as long as the filter provides a proper hashCode(), as that is used as the key in the cache. The cache is periodically cleaned up from a separate thread to ensure the cache doesn't exceed the maximum size.

Summary

Nested Classes
class FilterManager.FilterCleaner Keeps the cache from getting too big. 
class FilterManager.FilterItem Holds the filter and the last time the filter was used, to make LRU-based cache cleaning possible. 
Constants
int DEFAULT_CACHE_CLEAN_SIZE The default maximum number of Filters in the cache
long DEFAULT_CACHE_SLEEP_TIME The default frequency of cache cleanup
Fields
protected Map<IntegerFilterManager.FilterItem> cache The cache itself
protected int cacheCleanSize Maximum allowed cache size
protected long cleanSleepTime Cache cleaning frequency
protected FilterManager.FilterCleaner filterCleaner Cache cleaner that runs in a separate thread
protected static FilterManager manager
Protected Constructors
FilterManager()
Sets up the FilterManager singleton.
Public Methods
Filter getFilter(Filter filter)
Returns the cached version of the filter.
synchronized static FilterManager getInstance()
void setCacheSize(int cacheCleanSize)
Sets the max size that cache should reach before it is cleaned up
void setCleanThreadSleepTime(long cleanSleepTime)
Sets the cache cleaning frequency in milliseconds.
[Expand]
Inherited Methods
From class java.lang.Object

Constants

protected static final int DEFAULT_CACHE_CLEAN_SIZE

The default maximum number of Filters in the cache

Constant Value: 100 (0x00000064)

protected static final long DEFAULT_CACHE_SLEEP_TIME

The default frequency of cache cleanup

Constant Value: 600000 (0x00000000000927c0)

Fields

protected Map<IntegerFilterManager.FilterItem> cache

The cache itself

protected int cacheCleanSize

Maximum allowed cache size

protected long cleanSleepTime

Cache cleaning frequency

protected FilterManager.FilterCleaner filterCleaner

Cache cleaner that runs in a separate thread

protected static FilterManager manager

Protected Constructors

protected FilterManager ()

Sets up the FilterManager singleton.

Public Methods

public Filter getFilter (Filter filter)

Returns the cached version of the filter. Allows the caller to pass up a small filter but this will keep a persistent version around and allow the caching filter to do its job.

Parameters
filter The input filter
Returns
  • The cached version of the filter

public static synchronized FilterManager getInstance ()

public void setCacheSize (int cacheCleanSize)

Sets the max size that cache should reach before it is cleaned up

Parameters
cacheCleanSize maximum allowed cache size

public void setCleanThreadSleepTime (long cleanSleepTime)

Sets the cache cleaning frequency in milliseconds.

Parameters
cleanSleepTime cleaning frequency in milliseconds