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 >