org.apache.lucene.search
Class CachingWrapperFilter

java.lang.Object
  extended by org.apache.lucene.search.Filter
      extended by 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 or CachingWrapperFilter.DeletesMode.DYNAMIC).

See Also:
Serialized Form

Nested Class Summary
static class CachingWrapperFilter.DeletesMode
          Expert: Specifies how new deletions against a reopened reader should be handled.
 
Field Summary
protected  org.apache.lucene.search.CachingWrapperFilter.FilterCache<DocIdSet> cache
           
 
Constructor Summary
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
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 a DocIdSet enumerating the documents that should be permitted in search results.
 int hashCode()
           
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

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 either CachingWrapperFilter.DeletesMode.RECACHE or CachingWrapperFilter.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 of
deletesMode - See CachingWrapperFilter.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, if DocIdSet.isCacheable() returns true, else it copies the DocIdSetIterator into an FixedBitSet.

Throws:
IOException

getDocIdSet

public DocIdSet getDocIdSet(IndexReader reader)
                     throws IOException
Description copied from class: Filter
Creates a DocIdSet 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 class Filter
Parameters:
reader - a IndexReader 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

toString

public String toString()
Overrides:
toString in class Object

equals

public boolean equals(Object o)
Overrides:
equals in class Object

hashCode

public int hashCode()
Overrides:
hashCode in class Object


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