Thanks Mike. I found the problem.
The problem was that I was not converting the value of the fields to utf-8
and hence while adding it to doc it was getting stored as None.
So, when I did doc.get('fieldA') , instead of giving the blank or any other
string, it was giving out None.

To overcome this, I first converted the string to utf-8 format and then
field.setValue() and then doc.add(field), It seems to be working fine.,


However, I have one question. When I do a feild.setValue() and then
doc.add() will it replace the value of the field in the doc or add a new
field with the similar name and the new value? Since i am reusing the doc
and i am not reinitialising the doc anywhere and since you told that
doc.removeField() is an expensive operation.

Thanks,
Aditi


On Tue, Aug 19, 2008 at 5:39 PM, Michael McCandless <
[EMAIL PROTECTED]> wrote:

>
> On quick look that code looks fine, though removeField is an expensive
> operation and unnecessary for this.
>
> We really need the full traceback of the exception.
>
> Mike
>
>
> Aditi Goyal wrote:
>
>  Thanks Michael and Ian for your valuable response.
>> I am attaching a small default code. Please have a look and tell me where
>> am
>> I going wrong.
>>
>> import lucene
>> from lucene import Document, Field, initVM, CLASSPATH
>>
>> doc = Document()
>> fieldA = Field('fieldA', "", Field.Store.YES, Field.Index.UN_TOKENIZED)
>> fieldB = Field('fieldB', "", Field.Store.YES, Field.Index.TOKENIZED)
>> fieldC = Field ('fieldC', "", Field.Store.YES, Field.Index.TOKENIZED)
>>
>> doc.add(fieldA)
>> doc.add(fieldB)
>> doc.add(fieldC)
>>
>> def get_fields():
>>   if doc.getField('FieldA') is not None:
>>       doc.removeField('FieldA')
>>   if doc.getField('FieldB') is not None:
>>       doc.removeField('FieldB')
>>   if doc.getField('FieldC') is not None:
>>       doc.removeField('FieldC')
>>
>>   fieldA.setValue("abc")
>>   doc.add(fieldA)
>>   fieldB.setValue("xyz")
>>   doc.add(fieldB)
>>   fieldC.setValue("123")
>>   doc.add(fieldC)
>>
>>   return doc
>>
>>
>> def add_document():
>>   doc = get_fields()
>>   writer = lucene.IndexWriter(index_directory, analyzer, create_path)
>>   writer.addDocument(doc)
>>   writer.close()
>>
>> This writer.addDocument is throwing an exception saying
>> java.lang.NullPointerException
>>
>> Thanks,
>> Aditi
>>
>> On Tue, Aug 19, 2008 at 3:25 PM, Michael McCandless <
>> [EMAIL PROTECTED]> wrote:
>>
>>
>>> Ian Lea wrote:
>>>
>>> I don't think you need to remove the field and then add it again, but
>>>
>>>> I've no idea if that is relevant to your problem or not.
>>>>
>>>>
>>> That's right: just leave the Field there and change its value (assuming
>>> the
>>> doc you are changing to still uses that field).
>>>
>>> A full stack trace would be more help, and maybe an upgrade to 2.3.2,
>>>
>>>> and maybe a snippet of your code, and what is JCC?
>>>>
>>>>
>>> JCC generates the necessary C/C++ glue code for Python to directly invoke
>>> Java code.  The Chandler project created this for PyLucene because they
>>> were
>>> having trouble with GCJ:
>>>
>>>  http://blog.chandlerproject.org/author/vajda/
>>>
>>> Mike
>>>
>>>
>>> ---------------------------------------------------------------------
>>> 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]
>
>

Reply via email to