org.apache.lucene.search
Class CachingWrapperFilter

java.lang.Object
  extended by org.apache.lucene.search.Filter
      extended by org.apache.lucene.search.CachingWrapperFilter

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.


Constructor Summary
CachingWrapperFilter(Filter filter)
          Wraps another filter's result and caches it.
CachingWrapperFilter(Filter filter, boolean recacheDeletes)
          Wraps another filter's result and caches it.
 
Method Summary
protected  DocIdSet docIdSetToCache(DocIdSet docIdSet, AtomicReader reader)
          Provide the DocIdSet to be cached, using the DocIdSet provided by the wrapped Filter.
 boolean equals(Object o)
           
 DocIdSet getDocIdSet(AtomicReaderContext context, Bits acceptDocs)
          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
 

Constructor Detail

CachingWrapperFilter

public CachingWrapperFilter(Filter filter)
Wraps another filter's result and caches it. Deletions are not cached and AND'd in on the fly, see CachingWrapperFilter(Filter,boolean) for an explanation. This constructor is recommended for often changing indexes.

Parameters:
filter - Filter to cache results of
See Also:
CachingWrapperFilter(Filter,boolean)

CachingWrapperFilter

public CachingWrapperFilter(Filter filter,
                            boolean recacheDeletes)
Wraps another filter's result and caches it. If recacheDeletes is true, then new deletes (for example after DirectoryReader.openIfChanged(org.apache.lucene.index.DirectoryReader)) will cause the filter DocIdSet to be recached.

If your index changes seldom, it is recommended to use recacheDeletes=true, as recaching will only occur when the index is reopened. For near-real-time indexes or indexes that are often reopened with (e.g., DirectoryReader.openIfChanged(org.apache.lucene.index.DirectoryReader) is used), you should pass recacheDeletes=false. This will cache the filter results omitting deletions and will AND them in while scoring.

Parameters:
filter - Filter to cache results of
recacheDeletes - if deletions on the underlying index should recache
Method Detail

docIdSetToCache

protected DocIdSet docIdSetToCache(DocIdSet docIdSet,
                                   AtomicReader 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 a FixedBitSet.

Throws:
IOException

getDocIdSet

public DocIdSet getDocIdSet(AtomicReaderContext context,
                            Bits acceptDocs)
                     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:
context - a AtomicReaderContext instance opened on the index currently searched on. Note, it is likely that the provided reader info 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. The provided context is always an atomic context, so you can call AtomicReader.fields() on the context's reader, for example.
acceptDocs - Bits that represent the allowable docs to match (typically deleted docs but possibly filtering other documents)
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

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-2012 Apache Software Foundation. All Rights Reserved.