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.CacheOnLargeSegments
ALWAYS_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.CacheOnLargeSegments
historySize
- 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 DocIdSet
s 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)
FilterCachingPolicy
onUse
in interface FilterCachingPolicy
public boolean shouldCache(Filter filter, LeafReaderContext context, DocIdSet set) throws IOException
FilterCachingPolicy
DocIdSet
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 FilterCachingPolicy
IOException
Copyright © 2000-2016 Apache Software Foundation. All Rights Reserved.