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

Reply via email to