I used NRT readers all the time. I create then with 'applyDeletes' set to false for performance reasons and take the javadoc at its word that my code has to be prepared to deal with deleted documents. I thought I understood that and I wrote my code to be deleted-document-safe.
But I have recently revisited the issue and tried to understand what happens using a little test program. I create a document and add it to the index. I then create a new document that mirrors the first one but I change the value of a field. Then I call IndexWriter.updateDocument() which is a delete and an add. I then get a NRT reader with applyDeletes set to false and do a MatchAllDocsQuery search. I would expect to get 2 documents back: the current one and the updated one. But I only get back the updated one. But I know in real code with 1000's of documents flying into the index that I have gotten deleted documents returned. Can someone explain to me why my small test program doesn't get the deleted documents back? Stuart M Goldberg Senior Vice President of Software Develpment *FIX Flyer LLC* http://www.FIXFlyer.com/ <http://www.fixflyer.com/> NOTICE TO RECIPIENT: THIS E- MAIL IS MEANT ONLY FOR THE INTENDED RECIPIENT(S) OF THE TRANSMISSION, AND CONTAINS CONFIDENTIAL INFORMATION WHICH IS PROPRIETARY TO FIX FLYER LLC ANY UNAUTHORIZED USE, COPYING, DISTRIBUTION, OR DISSEMINATION IS STRICTLY PROHIBITED. ALL RIGHTS TO THIS INFORMATION IS RESERVED BY FIX FLYER LLC. IF YOU ARE NOT THE INTENDED RECIPIENT, PLEASE CONTACT THE SENDER BY REPLY EMAIL AND PLEASE DELETE THIS E-MAIL FROM YOUR SYSTEM AND DESTROY ANY COPIES. -- *Notice to Recipient*: https://www.fixflyer.com/disclaimer <https://www.fixflyer.com/disclaimer>