Hey Michael,
The maxDoc() did the trick ! Thanks !
I have got some reading to do about numDocs() and maxDoc().....
Nagesh
On 7/25/08, ನಾಗೇಶ್ ಸುಬ್ರಹ್ಮಣ್ಯ (Nagesh S) <[EMAIL PROTECTED]> wrote:
> Hi Michael,
> The numDocs did come from IndexReader.numDocs().
>
> hmm...let me try with maxDoc.
>
> Nagesh
>
> On 7/25/08, Michael McCandless <[EMAIL PROTECTED]> wrote:
>>
>> Oh, I think I see the problem -- instead of numDocs in your for loop
>> (which I assume came from IndexReader.numDocs()) change that to maxDoc
>> (IndexReader.maxDoc()).
>>
>> Mike
>>
>> (Nagesh S) wrote:
>>
>>> Hi Michael,
>>> Thanks for your response. Yes, I got that.
>>>
>>> I guess, my question is, how do I access the newly added document ? In
>>> other words, if the index initially had 20 docs of which 10 were
>>> updated (that is, deleted and then added), how do I access the updated
>>> ones ?
>>>
>>> Initially, there was no check for delete - that is, I did not have
>>> IndexReader.isDeleted(int). It had the for loop only which would fail
>>> when obtaining a 'deleted' document with the following :
>>>
>>> java.lang.IllegalArgumentException: attempt to access a deleted
>>> document
>>> at org.apache.lucene.index.SegmentReader.document(SegmentReader.java:
>>> 331)
>>> at org.apache.lucene.index.MultiReader.document(MultiReader.java:108)
>>> at org.apache.lucene.index.IndexReader.document(IndexReader.java:437)
>>> etc.
>>>
>>> Regards,
>>> Nagesh
>>>
>>> On 7/25/08, Michael McCandless <[EMAIL PROTECTED]> wrote:
>>>>
>>>> When you call updateDocument, the old document is deleted but a
>>>> wholly new document is added. So the "else" clause in your loop
>>>> below
>>>> will report on the newly added documents (you won't miss any).
>>>>
>>>> Mike
>>>>
>>>> (Nagesh S) wrote:
>>>>
>>>>> Hi,
>>>>> I think, the earlier mail didn't make it through.
>>>>>
>>>>> I am writing a class to report on an index. This index has documents
>>>>> updated using the IndexWriter.updateDocument(Term, Document) method.
>>>>> That is, documents were deleted and added again. My aim is to see
>>>>> what
>>>>> documents (and their fields) are present in the index. Since the
>>>>> document was updated (i.e. deleted and added), it is marked as
>>>>> deleted
>>>>> and hence not able to obtain a Document object for the updated
>>>>> document.
>>>>>
>>>>> How do I report on such documents ?
>>>>>
>>>>> for (int i = 1; i < numDocs; i++) {
>>>>> //ir is an IndexReader object
>>>>> if (ir.isDeleted(i)) {
>>>>> bw.write("Document " + i + " has been deleted.");
>>>>> bw.newLine();
>>>>> } else {
>>>>> Document d = getDocument(ir, i);
>>>>>
>>>>> List<Field> l = d.getFields();
>>>>> int numFields = l.size();
>>>>> bw.write("Document has " + numFields + " fields as
>>>>> follows");
>>>>> bw.newLine();
>>>>>
>>>>> for (int j = 0; j < numFields; j++) {
>>>>> String fieldName = l.get(j).name();
>>>>> bw.write("\t Field : " + fieldName + " Value : "
>>>>> + d.getField(fieldName).stringValue());
>>>>> bw.newLine();
>>>>> }
>>>>> }
>>>>> }
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> 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]
>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> 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]
>>
>>
>