org.apache.lucene.index
Class PruningReader

java.lang.Object
  extended by org.apache.lucene.index.IndexReader
      extended by org.apache.lucene.index.FilterIndexReader
          extended by org.apache.lucene.index.PruningReader
All Implemented Interfaces:
Closeable, Cloneable

public class PruningReader
extends FilterIndexReader

This class produces a subset of the input index, by removing some postings data according to rules implemented in a TermPruningPolicy, and optionally it can also remove stored fields of documents according to rules implemented in a StorePruningPolicy.


Nested Class Summary
 
Nested classes/interfaces inherited from class org.apache.lucene.index.FilterIndexReader
FilterIndexReader.FilterTermDocs, FilterIndexReader.FilterTermEnum, FilterIndexReader.FilterTermPositions
 
Nested classes/interfaces inherited from class org.apache.lucene.index.IndexReader
IndexReader.ReaderClosedListener
 
Field Summary
protected  int delTermCount
           
protected  int delVecCount
           
protected  int docCount
           
protected  int prunedVecCount
           
protected  StorePruningPolicy storePolicy
           
protected  int termCount
           
protected  TermPruningPolicy termPolicy
           
protected  int vecCount
           
 
Fields inherited from class org.apache.lucene.index.FilterIndexReader
in
 
Fields inherited from class org.apache.lucene.index.IndexReader
hasChanges
 
Constructor Summary
PruningReader(IndexReader in, StorePruningPolicy storePolicy, TermPruningPolicy termPolicy)
          Constructor.
 
Method Summary
 Document document(int n, FieldSelector fieldSelector)
          Applies a StorePruningPolicy to stored fields of a document.
 FieldInfos getFieldInfos()
          Applies a StorePruningPolicy to the list of available field infos.
 IndexReader[] getSequentialSubReaders()
          Expert: returns the sequential sub readers that this reader is logically composed of.
 TermFreqVector[] getTermFreqVectors(int docNumber)
          Applies TermPruningPolicy to terms inside term vectors.
 TermPositions termPositions()
          Applies TermPruningPolicy to term positions.
 TermEnum terms()
          Applies TermPruningPolicy to term enum.
 
Methods inherited from class org.apache.lucene.index.FilterIndexReader
directory, docFreq, doClose, doCommit, doDelete, doSetNorm, doUndeleteAll, getCommitUserData, getCoreCacheKey, getDeletesCacheKey, getIndexCommit, getTermFreqVector, getTermFreqVector, getTermFreqVector, getTermInfosIndexDivisor, getUniqueTermCount, getVersion, hasDeletions, hasNorms, isCurrent, isDeleted, isOptimized, maxDoc, norms, norms, numDocs, termDocs, termDocs, terms, toString
 
Methods inherited from class org.apache.lucene.index.IndexReader
acquireWriteLock, addReaderClosedListener, clone, clone, close, commit, commit, decRef, deleteDocument, deleteDocuments, document, doOpenIfChanged, doOpenIfChanged, doOpenIfChanged, doOpenIfChanged, ensureOpen, flush, flush, getCommitUserData, getCurrentVersion, getRefCount, incRef, indexExists, lastModified, listCommits, numDeletedDocs, open, open, open, open, open, open, open, open, open, open, open, openIfChanged, openIfChanged, openIfChanged, openIfChanged, removeReaderClosedListener, reopen, reopen, reopen, reopen, setNorm, setNorm, termPositions, tryIncRef, undeleteAll
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

docCount

protected int docCount

vecCount

protected int vecCount

termCount

protected int termCount

delTermCount

protected int delTermCount

prunedVecCount

protected int prunedVecCount

delVecCount

protected int delVecCount

termPolicy

protected TermPruningPolicy termPolicy

storePolicy

protected StorePruningPolicy storePolicy
Constructor Detail

PruningReader

public PruningReader(IndexReader in,
                     StorePruningPolicy storePolicy,
                     TermPruningPolicy termPolicy)
Constructor.

Parameters:
in - input reader
storePolicy - implementation of StorePruningPolicy - if null then stored values will be retained as is.
termPolicy - implementation of TermPruningPolicy, must not be null.
Method Detail

getSequentialSubReaders

public IndexReader[] getSequentialSubReaders()
Description copied from class: IndexReader
Expert: returns the sequential sub readers that this reader is logically composed of. For example, IndexSearcher uses this API to drive searching by one sub reader at a time. If this reader is not composed of sequential child readers, it should return null. If this method returns an empty array, that means this reader is a null reader (for example a MultiReader that has no sub readers).

NOTE: You should not try using sub-readers returned by this method to make any changes (setNorm, deleteDocument, etc.). While this might succeed for one composite reader (like MultiReader), it will most likely lead to index corruption for other readers (like DirectoryReader obtained through IndexReader.open(org.apache.lucene.store.Directory). Use the parent reader directly.

Overrides:
getSequentialSubReaders in class FilterIndexReader

document

public Document document(int n,
                         FieldSelector fieldSelector)
                  throws CorruptIndexException,
                         IOException
Applies a StorePruningPolicy to stored fields of a document.

Overrides:
document in class FilterIndexReader
Parameters:
n - Get the document at the nth position
fieldSelector - The FieldSelector to use to determine what Fields should be loaded on the Document. May be null, in which case all Fields will be loaded.
Returns:
The stored fields of the Document at the nth position
Throws:
CorruptIndexException - if the index is corrupt
IOException - if there is a low-level IO error
See Also:
Fieldable, FieldSelector, SetBasedFieldSelector, LoadFirstFieldSelector

getFieldInfos

public FieldInfos getFieldInfos()
Applies a StorePruningPolicy to the list of available field infos.

Overrides:
getFieldInfos in class FilterIndexReader

getTermFreqVectors

public TermFreqVector[] getTermFreqVectors(int docNumber)
                                    throws IOException
Applies TermPruningPolicy to terms inside term vectors.

Overrides:
getTermFreqVectors in class FilterIndexReader
Parameters:
docNumber - document for which term frequency vectors are returned
Returns:
array of term frequency vectors. May be null if no term vectors have been stored for the specified document.
Throws:
IOException - if index cannot be accessed
See Also:
Field.TermVector

termPositions

public TermPositions termPositions()
                            throws IOException
Applies TermPruningPolicy to term positions.

Overrides:
termPositions in class FilterIndexReader
Throws:
IOException - if there is a low-level IO error

terms

public TermEnum terms()
               throws IOException
Applies TermPruningPolicy to term enum.

Overrides:
terms in class FilterIndexReader
Throws:
IOException - if there is a low-level IO error