To ensure deletion I use a while loop with a counter (to prevent an endless loop if there's a problem)
Term term = this.createIdTerm(id); Int count = 0; while(readDocument(indexName, id) != null) { count++; log.debug("deleting document " + id + " from index " + indexName); writer.deleteDocuments(term); writer.commit(); if(count > 10) { failed = true; break; } } If(failed) throw DeleteFailedException("Failed to delete document " + id + " from index " + indexName); And readDocument does this: IndexReader reader = this.getReader(indexName); Document doc = null; TermDocs td = reader.termDocs(this.createIdTerm(id)); if(td.next()) { int d = td.doc(); doc = reader.document(d); } this.returnReader(reader); return doc; Because IndexReader.termDocs doesn't return deleted documents, once the deletion is successful, readDocument returns a null. I'm not even sure if I need to make the writer.commit() call, but the load for us is small enough that performance isn't an issue. If performance does become an issue I might need to tweak this a bit, but it does ensure that a deletion is successful or it throws an exception. > -----Original Message----- > From: ysee...@gmail.com [mailto:ysee...@gmail.com] On Behalf Of Yonik > Seeley > Sent: Friday, May 25, 2012 12:40 PM > To: java-user@lucene.apache.org > Subject: Re: IndexReader.deleteDocument in Lucene 3.6 > > On Fri, May 25, 2012 at 5:23 AM, Nikolay Zamosenchuk > <nikolaz...@gmail.com> wrote: > > IndexWriter.deleteDocument(..) is not final, > > but doesn't return any result. > > Deleted terms are buffered for good performance, so at the time of > IndexWriter.deleteDocument(Term) we don't know how many documents > match the term. > > > Can anyone please suggest how to solve this issue? Can simply run > term > > query before, but it seems to be absolutely inefficient. > > You could switch to an asynchronous design and use a custom query that > keeps track of how many (or which) documents it matched. > > -Yonik > http://lucidimagination.com > > > > > > -- > > Best regards, Nikolay Zamosenchuk > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org > > For additional commands, e-mail: java-user-h...@lucene.apache.org > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org > For additional commands, e-mail: java-user-h...@lucene.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org For additional commands, e-mail: java-user-h...@lucene.apache.org