public final class UsageTrackingFilterCachingPolicy extends Object implements FilterCachingPolicy
FilterCachingPolicy that tracks usage statistics of recently-used
filters in order to decide on which filters are worth caching.
It also uses some heuristics on segments, filters and the doc id sets that
they produce in order to cache more aggressively when the execution cost
significantly outweighs the caching overhead.FilterCachingPolicy.CacheOnLargeSegmentsALWAYS_CACHE| Constructor and Description |
|---|
UsageTrackingFilterCachingPolicy()
Create a new instance with sensible defaults.
|
UsageTrackingFilterCachingPolicy(float minSizeRatio,
int historySize,
int minFrequencyCostlyFilters,
int minFrequencyCheapFilters,
int minFrequencyOtherFilters)
Create a new instance.
|
| Modifier and Type | Method and Description |
|---|---|
void |
onUse(Filter filter)
Callback that is called every time that a cached filter is used.
|
boolean |
shouldCache(Filter filter,
LeafReaderContext context,
DocIdSet set)
Whether the given
DocIdSet should be cached on a given segment. |
public UsageTrackingFilterCachingPolicy(float minSizeRatio,
int historySize,
int minFrequencyCostlyFilters,
int minFrequencyCheapFilters,
int minFrequencyOtherFilters)
minSizeRatio - the minimum size ratio for segments to be cached, see FilterCachingPolicy.CacheOnLargeSegmentshistorySize - the number of recently used filters to trackminFrequencyCostlyFilters - how many times filters whose getDocIdSet method is expensive should have been seen before being cachedminFrequencyCheapFilters - how many times filters that produce DocIdSets that are cheap to cached should have been seen before being cachedminFrequencyOtherFilters - how many times other filters should have been seen before being cachedpublic UsageTrackingFilterCachingPolicy()
public void onUse(Filter filter)
FilterCachingPolicyonUse in interface FilterCachingPolicypublic boolean shouldCache(Filter filter, LeafReaderContext context, DocIdSet set) throws IOException
FilterCachingPolicyDocIdSet should be cached on a given segment.
This method will be called on each leaf context to know if the filter
should be cached on this particular leaf. The filter cache will first
attempt to load a DocIdSet from the cache. If it is not cached
yet and this method returns true then a cache entry will be
generated. Otherwise an uncached set will be returned.shouldCache in interface FilterCachingPolicyIOExceptionCopyright © 2000-2015 Apache Software Foundation. All Rights Reserved.