Hi Dinh, Is it that your engine keeps an IndexSearcher[Reader] open all through this while? For the deleted document to actually reflect in the search (service), you'd need to reload the index searcher with the latest version. -- Anshum Gupta Naukri Labs! http://ai-cafe.blogspot.com
The facts expressed here belong to everybody, the opinions to me. The distinction is yours to draw............ On Wed, Oct 28, 2009 at 4:15 PM, Dinh <pcd...@gmail.com> wrote: > Hi all, > > I have a very simple method to delete a document that is indexed before > > /** > * @param id > */ > public void deleteById(String id) throws IOException { > IndexWriter writer = IndexWriterFactory.factory(); > > try { > writer.deleteDocuments(new Term(Configuration.Field.ID, > String.valueOf(id))); > writer.commit(); > } catch (ArrayIndexOutOfBoundsException e) { > // CHECK ignore this. Can happen if index has not been built yet > } catch (IOException e) { > System.out.println(e); > } > } > > The problem is after executing this method without any exception, I come > back and try to do a search the supposed-to-be-deleted record is still > there. I need to restart my servlet engine to have that record been really > deleted. How can it happen? > > Thanks > > Dinh >