- Direct Known Subclasses:
FlushByRamOrCountsPolicy
FlushPolicy controls when segments are flushed from a RAM resident internal
data-structure to the IndexWriters Directory.
Segments are traditionally flushed by:
- RAM consumption - configured via
IndexWriterConfig.setRAMBufferSizeMB(double) - Number of RAM resident documents - configured via
IndexWriterConfig.setMaxBufferedDocs(int)
IndexWriter consults the provided FlushPolicy to control the flushing process.
The policy is informed for each added or updated document as well as for each delete term. Based
on the FlushPolicy, the information provided via DocumentsWriterPerThread and
DocumentsWriterFlushControl, the FlushPolicy decides if a DocumentsWriterPerThread needs flushing and mark it as flush-pending via DocumentsWriterFlushControl.setFlushPending(org.apache.lucene.index.DocumentsWriterPerThread), or if deletes need to be applied.
- See Also:
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate booleanprotected DocumentsWriterPerThreadfindLargestNonPendingWriter(DocumentsWriterFlushControl control, DocumentsWriterPerThread perThread) Returns the current most RAM consuming non-pendingDocumentsWriterPerThreadwith at least one indexed document.protected voidinit(LiveIndexWriterConfig indexWriterConfig) Called by DocumentsWriter to initialize the FlushPolicyabstract voidonChange(DocumentsWriterFlushControl control, DocumentsWriterPerThread perThread) Called for each delete, insert or update.
-
Field Details
-
indexWriterConfig
-
infoStream
-
-
Constructor Details
-
FlushPolicy
FlushPolicy()
-
-
Method Details
-
onChange
public abstract void onChange(DocumentsWriterFlushControl control, DocumentsWriterPerThread perThread) Called for each delete, insert or update. For pure deletes, the givenDocumentsWriterPerThreadmay benull.Note: This method is called synchronized on the given
DocumentsWriterFlushControland it is guaranteed that the calling thread holds the lock on the givenDocumentsWriterPerThread -
init
Called by DocumentsWriter to initialize the FlushPolicy -
findLargestNonPendingWriter
protected DocumentsWriterPerThread findLargestNonPendingWriter(DocumentsWriterFlushControl control, DocumentsWriterPerThread perThread) Returns the current most RAM consuming non-pendingDocumentsWriterPerThreadwith at least one indexed document.This method will never return
null -
assertMessage
-