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]>