Package org.apache.lucene.search
Class CachingWrapperFilter
- java.lang.Object
-
- org.apache.lucene.search.Filter
-
- org.apache.lucene.search.CachingWrapperFilter
-
- All Implemented Interfaces:
Serializable
public class CachingWrapperFilter extends Filter
Wraps another filter's result and caches it. The purpose is to allow filters to simply filter, and then wrap with this class to add caching.NOTE: if you wrap this filter as a query (eg, using ConstantScoreQuery), you'll likely want to enforce deletions (using either
CachingWrapperFilter.DeletesMode.RECACHE
orCachingWrapperFilter.DeletesMode.DYNAMIC
).- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
CachingWrapperFilter.DeletesMode
Expert: Specifies how new deletions against a reopened reader should be handled.
-
Constructor Summary
Constructors Constructor Description CachingWrapperFilter(Filter filter)
New deletes are ignored by default, which gives higher cache hit rate on reopened readers.CachingWrapperFilter(Filter filter, CachingWrapperFilter.DeletesMode deletesMode)
Expert: by default, the cached filter will be shared across reopened segments that only had changes to their deletions.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected DocIdSet
docIdSetToCache(DocIdSet docIdSet, IndexReader reader)
Provide the DocIdSet to be cached, using the DocIdSet provided by the wrapped Filter.boolean
equals(Object o)
DocIdSet
getDocIdSet(IndexReader reader)
Creates aDocIdSet
enumerating the documents that should be permitted in search results.int
hashCode()
String
toString()
-
-
-
Field Detail
-
cache
protected final org.apache.lucene.search.CachingWrapperFilter.FilterCache<DocIdSet> cache
-
-
Constructor Detail
-
CachingWrapperFilter
public CachingWrapperFilter(Filter filter)
New deletes are ignored by default, which gives higher cache hit rate on reopened readers. Most of the time this is safe, because the filter will be AND'd with a Query that fully enforces deletions. If instead you need this filter to always enforce deletions, pass eitherCachingWrapperFilter.DeletesMode.RECACHE
orCachingWrapperFilter.DeletesMode.DYNAMIC
.- Parameters:
filter
- Filter to cache results of
-
CachingWrapperFilter
public CachingWrapperFilter(Filter filter, CachingWrapperFilter.DeletesMode deletesMode)
Expert: by default, the cached filter will be shared across reopened segments that only had changes to their deletions.- Parameters:
filter
- Filter to cache results ofdeletesMode
- SeeCachingWrapperFilter.DeletesMode
-
-
Method Detail
-
docIdSetToCache
protected DocIdSet docIdSetToCache(DocIdSet docIdSet, IndexReader reader) throws IOException
Provide the DocIdSet to be cached, using the DocIdSet provided by the wrapped Filter.This implementation returns the given
DocIdSet
, ifDocIdSet.isCacheable()
returnstrue
, else it copies theDocIdSetIterator
into anFixedBitSet
.- Throws:
IOException
-
getDocIdSet
public DocIdSet getDocIdSet(IndexReader reader) throws IOException
Description copied from class:Filter
Creates aDocIdSet
enumerating the documents that should be permitted in search results. NOTE: null can be returned if no documents are accepted by this Filter.Note: This method will be called once per segment in the index during searching. The returned
DocIdSet
must refer to document IDs for that segment, not for the top-level reader.- Specified by:
getDocIdSet
in classFilter
- Parameters:
reader
- aIndexReader
instance opened on the index currently searched on. Note, it is likely that the provided reader does not represent the whole underlying index i.e. if the index has more than one segment the given reader only represents a single segment.- Returns:
- a DocIdSet that provides the documents which should be permitted or prohibited in search results. NOTE: null can be returned if no documents will be accepted by this Filter.
- Throws:
IOException
- See Also:
DocIdBitSet
-
-