You are right, Lucene only gives IllegalArgumentException when the value is null. I assume it won't skip the field is the value is empty or null?

Thanks!

Jay

Michael McCandless wrote:

As far as I know, Lucene should accept a field with an empty string value -- how did you hit the IllegalArgumentException?

Mike

Jay wrote:

Thanks, Michael, for your quick reply and explanation.
One related question: is it true that Lucene indexer will reject a field that has the empty string value? (I saw an IllegalArgumentException). Will be nice if lucene just skip such a field silently, esp, for the new 2.3 api.

Jay
Michael McCandless wrote:
yu wrote:
Hi,

I am trying to use the latest 2.3 API on Field to improve the indexing performance by reusing Documents and Fields. After reading lucene-java wiki and the java doc on Field, I have a couple of questions about the comment in Field.setValue(), namely, "Note that you should only use this method after the Field has been consumed (ie, the Document containing this Field has been added to the index)":

1. Does "consumed" here include IndexWriter.deleteDocument(...) and IndexWriter.updateDocument(...)?
Yes.  Actually, just add/updateDocument.
2. Why does it require that the Field has been consumed first before it can be modified? For example, I may pre-allocate in a constructor a Document and related fields with some default values but do not (or cannot) add the document. Before I add my first document, I need to set the fields with valid values. It looks like the new Lucene core would null some of the fields if I do so. I do not understand the logic behind the requirement.
That use case is fine. You can absolutely change its value before it's consumed when the un-consumed value doesn't matter to you. That pre-allocation is a normal & fine use case, and fields should not be null'd by Lucene. The warning should instead state that "if the field holds a real value, then make sure it's consumed first before you change it". So, for example, if you add docs to a queue, and then use a thread pool to pull docs from that queue and call addDocument on them, you can't re-use the fields in the Document until a thread has added it to the index.
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]



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