public class NRTManagerReopenThread extends Thread implements NRTManager.WaitingListener, Closeable
NRTManager
.
Typical usage looks like this:
... open your own writer ... NRTManager manager = new NRTManager(writer); // Refreshes searcher every 5 seconds when nobody is waiting, and up to 100 msec delay // when somebody is waiting: NRTManagerReopenThread reopenThread = new NRTManagerReopenThread(manager, 5.0, 0.1); reopenThread.setName("NRT Reopen Thread"); reopenThread.setPriority(Math.min(Thread.currentThread().getPriority()+2, Thread.MAX_PRIORITY)); reopenThread.setDaemon(true); reopenThread.start();Then, for each incoming query, do this:
// For each incoming query: IndexSearcher searcher = manager.get(); try { // Use searcher to search... } finally { manager.release(searcher); }You should make changes using the
NRTManager
; if you later need to obtain
a searcher reflecting those changes:
// ... or updateDocument, deleteDocuments, etc: long gen = manager.addDocument(...); // Returned searcher is guaranteed to reflect the just added document IndexSearcher searcher = manager.get(gen); try { // Use searcher to search... } finally { manager.release(searcher); }When you are done be sure to close both the manager and the reopen thrad:
reopenThread.close(); manager.close();
Thread.State, Thread.UncaughtExceptionHandler
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
Constructor and Description |
---|
NRTManagerReopenThread(NRTManager manager,
double targetMaxStaleSec,
double targetMinStaleSec)
Create NRTManagerReopenThread, to periodically reopen the NRT searcher.
|
Modifier and Type | Method and Description |
---|---|
void |
close() |
void |
run() |
void |
waiting(long targetGen) |
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield
public NRTManagerReopenThread(NRTManager manager, double targetMaxStaleSec, double targetMinStaleSec)
targetMaxStaleSec
- Maximum time until a new
reader must be opened; this sets the upper bound
on how slowly reopens may occurtargetMinStaleSec
- Mininum time until a new
reader can be opened; this sets the lower bound
on how quickly reopens may occur, when a caller
is waiting for a specific indexing change to
become visible.