Class NRTManagerReopenThread

  • All Implemented Interfaces:
    Closeable, AutoCloseable, Runnable, NRTManager.WaitingListener

    public class NRTManagerReopenThread
    extends Thread
    implements NRTManager.WaitingListener, Closeable
    Utility class that runs a reopen thread to periodically reopen the NRT searchers in the provided 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();
     
    WARNING: This API is experimental and might change in incompatible ways in the next release.
    • Constructor Detail

      • NRTManagerReopenThread

        public NRTManagerReopenThread​(NRTManager manager,
                                      double targetMaxStaleSec,
                                      double targetMinStaleSec)
        Create NRTManagerReopenThread, to periodically reopen the NRT searcher.
        Parameters:
        targetMaxStaleSec - Maximum time until a new reader must be opened; this sets the upper bound on how slowly reopens may occur
        targetMinStaleSec - 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.