org.apache.lucene.index
Class PayloadProcessorProvider

java.lang.Object
  extended by org.apache.lucene.index.PayloadProcessorProvider
Direct Known Subclasses:
FacetsPayloadProcessorProvider

public abstract class PayloadProcessorProvider
extends Object

Provides a PayloadProcessorProvider.ReaderPayloadProcessor to be used for a Directory. This allows using different PayloadProcessorProvider.ReaderPayloadProcessors for different source IndexReader, for e.g. to perform different processing of payloads of different directories.

NOTE: to avoid processing payloads of certain directories, you can return null in getReaderProcessor(org.apache.lucene.index.IndexReader).

NOTE: it is possible that the same PayloadProcessorProvider.ReaderPayloadProcessor will be requested for the same Directory concurrently. Therefore, to avoid concurrency issues you should return different instances for different threads. Usually, if your PayloadProcessorProvider.ReaderPayloadProcessor does not maintain state this is not a problem. The merge code ensures that the PayloadProcessorProvider.ReaderPayloadProcessor instance you return will be accessed by one thread to obtain the PayloadProcessorProvider.ReaderPayloadProcessors for different terms.

WARNING: This API is experimental and might change in incompatible ways in the next release.

Nested Class Summary
static class PayloadProcessorProvider.DirPayloadProcessor
          Deprecated. Use PayloadProcessorProvider.ReaderPayloadProcessor instead.
static class PayloadProcessorProvider.PayloadProcessor
          Processes the given payload.
static class PayloadProcessorProvider.ReaderPayloadProcessor
          Returns a PayloadProcessorProvider.ReaderPayloadProcessor for a given Term which allows processing the payloads of different terms differently.
 
Constructor Summary
PayloadProcessorProvider()
           
 
Method Summary
 PayloadProcessorProvider.DirPayloadProcessor getDirProcessor(Directory dir)
          Deprecated. Use getReaderProcessor(org.apache.lucene.index.IndexReader) instead. You can still select by Directory, if you retrieve the underlying directory from IndexReader.directory().
 PayloadProcessorProvider.ReaderPayloadProcessor getReaderProcessor(IndexReader reader)
          Returns a PayloadProcessorProvider.ReaderPayloadProcessor for the given Directory, through which PayloadProcessorProvider.ReaderPayloadProcessors can be obtained for each Term, or null if none should be used.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PayloadProcessorProvider

public PayloadProcessorProvider()
Method Detail

getReaderProcessor

public PayloadProcessorProvider.ReaderPayloadProcessor getReaderProcessor(IndexReader reader)
                                                                   throws IOException
Returns a PayloadProcessorProvider.ReaderPayloadProcessor for the given Directory, through which PayloadProcessorProvider.ReaderPayloadProcessors can be obtained for each Term, or null if none should be used. You should override this method, not getDirProcessor(org.apache.lucene.store.Directory).

Throws:
IOException

getDirProcessor

@Deprecated
public PayloadProcessorProvider.DirPayloadProcessor getDirProcessor(Directory dir)
                                                             throws IOException
Deprecated. Use getReaderProcessor(org.apache.lucene.index.IndexReader) instead. You can still select by Directory, if you retrieve the underlying directory from IndexReader.directory().

Returns a PayloadProcessorProvider.DirPayloadProcessor for the given Directory, through which PayloadProcessorProvider.ReaderPayloadProcessors can be obtained for each Term, or null if none should be used.

Throws:
IOException