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
[email protected]
https://lists.sourceforge.net/lists/listinfo/clucene-developers