Package org.apache.lucene.index
Class MergeScheduler
- java.lang.Object
-
- org.apache.lucene.index.MergeScheduler
-
- All Implemented Interfaces:
Closeable
,AutoCloseable
- Direct Known Subclasses:
ConcurrentMergeScheduler
,NoMergeScheduler
,SerialMergeScheduler
public abstract class MergeScheduler extends Object implements Closeable
Expert:IndexWriter
uses an instance implementing this interface to execute the merges selected by aMergePolicy
. The default MergeScheduler isConcurrentMergeScheduler
.- WARNING: This API is experimental and might change in incompatible ways in the next release.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
MergeScheduler.MergeSource
Provides access to new merges and executes the actual merge
-
Field Summary
Fields Modifier and Type Field Description protected InfoStream
infoStream
For messages about merge scheduling
-
Constructor Summary
Constructors Modifier Constructor Description protected
MergeScheduler()
Sole constructor.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract void
close()
Close this MergeScheduler.abstract void
merge(MergeScheduler.MergeSource mergeSource, MergeTrigger trigger)
Run the merges provided byMergeScheduler.MergeSource.getNextMerge()
.protected void
message(String message)
Outputs the given message - this method assumesverbose()
was called and returned true.protected boolean
verbose()
Returns true if infoStream messages are enabled.Directory
wrapForMerge(MergePolicy.OneMerge merge, Directory in)
Wraps the incomingDirectory
so that we can merge-throttle it usingRateLimitedIndexOutput
.
-
-
-
Field Detail
-
infoStream
protected InfoStream infoStream
For messages about merge scheduling
-
-
Method Detail
-
merge
public abstract void merge(MergeScheduler.MergeSource mergeSource, MergeTrigger trigger) throws IOException
Run the merges provided byMergeScheduler.MergeSource.getNextMerge()
.- Parameters:
mergeSource
- theIndexWriter
to obtain the merges from.trigger
- theMergeTrigger
that caused this merge to happen- Throws:
IOException
-
wrapForMerge
public Directory wrapForMerge(MergePolicy.OneMerge merge, Directory in)
Wraps the incomingDirectory
so that we can merge-throttle it usingRateLimitedIndexOutput
.
-
close
public abstract void close() throws IOException
Close this MergeScheduler.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Throws:
IOException
-
verbose
protected boolean verbose()
Returns true if infoStream messages are enabled. This method is usually used in conjunction withmessage(String)
:if (verbose()) { message("your message"); }
-
-