Hmmm, I admit I'm not using embedded, and I'm using 3.2, but I'm
not seeing the behavior you are.

My question about reindexing could have been better stated, I
was just making sure you didn't have some leftover cruft where
your field was multi-valued from previous experiments, but if
you're reindexing each time that's not the problem.

Arrrggggh, camel case may be striking again. Try multiValued, not
multivalued....

If that's still not it, can we see the code?

Best
Erick

On Wed, Jun 15, 2011 at 3:47 PM, Simon, Richard T
<richard_si...@hms.harvard.edu> wrote:
> We rebuild the index from scratch each time we start (for now). The fields in 
> question are not multi-valued; in fact, I explicitly set multi-valued to 
> false, just to be sure.
>
> Yes, this is SolrJ, using the embedded server, if that matters.
>
> Using Solr/Lucene 3.1.0.
>
> -Rich
>
> -----Original Message-----
> From: Erick Erickson [mailto:erickerick...@gmail.com]
> Sent: Wednesday, June 15, 2011 3:44 PM
> To: solr-user@lucene.apache.org
> Subject: Re: getFieldValue always returns an ArrayList?
>
> Did you perhaps change the schema but not re-index? I'm grasping
> at straws here, but something like this might happen if part of
> your index has that field as a multi-valued field....
>
> If that't not the problem, what version of solr are you using? I
> presume this is SolrJ?
>
> Best
> Erick
>
> On Wed, Jun 15, 2011 at 2:21 PM, Simon, Richard T
> <richard_si...@hms.harvard.edu> wrote:
>> Hi - I am examining a SolrDocument I retrieved through a query. The field I 
>> am looking at is declared this way in my schema:
>>
>> <field name="uri" type="string" indexed="true" stored="true" 
>> multivalued="false" required="true" />
>>
>> I know multivalued defaults to false, but I set it explicitly because I'm 
>> seeing some unexpected behavior. I retrieve the value of the field like so:
>>
>> final String resource = (String)document.getFieldValue("uri");
>>
>>
>> However, I get an exception because an ArrayList is returned. I confirmed 
>> that the returned ArrayList has one element with the correct value, but I 
>> thought getFieldValue would return a String if the field is single valued. 
>> When I index the document, I have some code that retrieves the same field in 
>> the same way from the SolrInputDocument, and that code works.
>>
>> I looked at the code for SolrDocument.setField and it looks like the only 
>> way a field should be set to an ArrayList is if one is passed in by the code 
>> creating the SolrDocument. Why would it do that if the field is not 
>> multivalued?
>>
>> Is this behavior expected?
>>
>> -Rich
>>
>

Reply via email to