org.apache.lucene.search

Class FilterManager

public class FilterManager extends Object

Filter caching singleton. It can be used by RemoteCachingWrapperFilter or just to save filters locally for reuse. This class makes it possble to cache Filters even when using RMI, as it keeps the cache on the seaercher 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.

Author: Matt Ericson

Nested Class Summary
protected classFilterManager.FilterCleaner
Keeps the cache from getting too big.
protected classFilterManager.FilterItem
Holds the filter and the last time the filter was used, to make LRU-based cache cleaning possible.
Field Summary
protected Mapcache
The cache itself
protected intcacheCleanSize
Maximum allowed cache size
protected longcleanSleepTime
Cache cleaning frequency
protected static intDEFAULT_CACHE_CLEAN_SIZE
The default maximum number of Filters in the cache
protected static longDEFAULT_CACHE_SLEEP_TIME
The default frequency of cache clenup
protected FilterManager.FilterCleanerfilterCleaner
Cache cleaner that runs in a separate thread
protected static FilterManagermanager
Constructor Summary
protected FilterManager()
Sets up the FilterManager singleton.
Method Summary
FiltergetFilter(Filter filter)
Returns the cached version of the filter.
static FilterManagergetInstance()
voidsetCacheSize(int cacheCleanSize)
Sets the max size that cache should reach before it is cleaned up
voidsetCleanThreadSleepTime(long cleanSleepTime)
Sets the cache cleaning frequency in milliseconds.

Field Detail

cache

protected Map cache
The cache itself

cacheCleanSize

protected int cacheCleanSize
Maximum allowed cache size

cleanSleepTime

protected long cleanSleepTime
Cache cleaning frequency

DEFAULT_CACHE_CLEAN_SIZE

protected static final int DEFAULT_CACHE_CLEAN_SIZE
The default maximum number of Filters in the cache

DEFAULT_CACHE_SLEEP_TIME

protected static final long DEFAULT_CACHE_SLEEP_TIME
The default frequency of cache clenup

filterCleaner

protected FilterManager.FilterCleaner filterCleaner
Cache cleaner that runs in a separate thread

manager

protected static FilterManager manager

Constructor Detail

FilterManager

protected FilterManager()
Sets up the FilterManager singleton.

Method Detail

getFilter

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

getInstance

public static FilterManager getInstance()

setCacheSize

public void setCacheSize(int cacheCleanSize)
Sets the max size that cache should reach before it is cleaned up

Parameters: cacheCleanSize maximum allowed cache size

setCleanThreadSleepTime

public void setCleanThreadSleepTime(long cleanSleepTime)
Sets the cache cleaning frequency in milliseconds.

Parameters: cleanSleepTime cleaning frequency in millioseconds

Copyright © 2000-2007 Apache Software Foundation. All Rights Reserved.