Thanks for the feedback. Please direct all Lucene related questions to the Lucene User's List. You'll get more people to help and hopefully help other too.
I think if you change the SortedField.addField method to /** adds the data from the index into a string array */ private void addSortedField(String fieldName, IndexReader ir) throws IOException{ int numDocs = ir.numDocs(); fieldValues = new String[numDocs]; for (int i=0; i<numDocs; i++) { if(ir.isDeleted(i) == false){ fieldValues[i] = ir.document(i).get(fieldName); } else { fieldValues[i] = ""; } } ir.close(); } I think this will work. I'm not yet sure if this is the best way to go, but I think it will get around the bug. It removes any field values you are sorting on in the field so you should never run into a problem. I don't have an unoptimized index at hand, and unfortunately no time to test. Please let me know if this works. Thanks --Peter On 7/29/02 7:23 AM, "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> wrote: > Hi Peter, > > I've found the SearchBean very useful for our project, but seem to have run > into problems when it comes to searching an index which has had documents > removed using the IndexReader.delete method (without calling the > IndexWriter.optimize method). > > In particular the error returned is: > "java.lang.IllegalArgumentException: attempt to access a deleted document" > > This occurs in the SortedField.addField method and I believe has to do with > the fact that IndexReader returns all documents - whether deleted or not. > When the index is optimized the deleted documents are actually removed and > the problem does not occur (ie if the *.del file is removed from the index). > > Any thoughts on a work-around for this? > > Apologies if my understanding is flawed here - I'm new to this, and thanks > very much for your help. > -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>