hi,

We have quite a big index, but each document is pretty small.  (So +-
30 million documents in 3.2 Gb),

In our software, all updates are via a one IndexWriter, and we have
multiple threads using a single IndexSearcher.
What I'm noticing that when a 2nd IndexSearcher is opened, the
existing IndexSearcher occasionally blocks for a couple of seconds (+-
20-40).

We pull updated and new entries (10000 - 40000) into the index every 5 minutes.
For each:
   indexWriter->deleteDocuments( new Term( "a stored / untokenized key
field" ) )
   indexWriter->addDocument()

Once the update is complete:
   indexWriter->flush()

   /* re-open the IndexSearcher to make the changes visible */
   newSearcher = new IndexSearcher("index directory")   /* *** */

   acquire_write_lock...
       oldSearcher = indexSearcher;
       indexSearcher = newSearcher;
   release_write_lock..

   /* cleanup */
   oldSearcher->close();
   delete oldSearcher;

The searching threads that are "blocked" out of the index are just performing:
   acquire_read_lock....
        indexSearcher->search(BooleanQuery)
        /* process hits .... */
    release_read_lock


Is there a way to stop a "new IndexSearcher()" locking the index?
Or any suggestions to limit the amount of time the index is locked, or
better ways of implementing this?


Regards,
 Andrew Victor

------------------------------------------------------------------------------
BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA
The must-attend event for mobile developers. Connect with experts. 
Get tools for creating Super Apps. See the latest technologies.
Sessions, hands-on labs, demos & much more. Register early & save!
http://p.sf.net/sfu/rim-blackberry-1
_______________________________________________
CLucene-developers mailing list
CLucene-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/clucene-developers

Reply via email to