I added the following code:
for (int i = 0; i < numOfDocs; i++) {
if ( !reader.isDeleted(i)) {
doc = reader.document(i);
docs[i] =
doc.get(SearchEngineConstants.REPOSITORY_PATH);
}
}
return docs;
but it never goes in the if statement, for every value of i, isDeleted(i) is
returning true?!? Am I doing something wrong? I was trying to do what Doug
outlined below.
Thanks,
Rob
-----Original Message-----
From: Doug Cutting [mailto:[EMAIL PROTECTED]
Sent: Wednesday, June 04, 2003 12:34 PM
To: Lucene Users List
Subject: Re: java.lang.IllegalArgumentException: attempt to access a
deleted document
Rob Outar wrote:
> public synchronized String[] getDocuments() throws IOException {
>
> IndexReader reader = null;
> try {
> reader = IndexReader.open(this.indexLocation);
> int numOfDocs = reader.numDocs();
> String[] docs = new String[numOfDocs];
> Document doc = null;
>
> for (int i = 0; i < numOfDocs; i++) {
> doc = reader.document(i);
> docs[i] = doc.get(SearchEngineConstants.REPOSITORY_PATH);
> }
> return docs;
> }
> finally {
> if (reader != null) {
> reader.close();
> }
> }
> }
The limit of your iteration should be IndexReader.maxDoc(), not
IndexReader.numDocs():
http://jakarta.apache.org/lucene/docs/api/org/apache/lucene/index/IndexReade
r.html#maxDoc()
Also, you should first check that each document is not deleted before
calling IndexReader.document(int):
http://jakarta.apache.org/lucene/docs/api/org/apache/lucene/index/IndexReade
r.html#isDeleted(int)
Doug
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]