Any thoughts on this one? Why does Solr output a string in a long field with 
XMLResponseWriter but fails doing so (as it should) with the javabin format?

On Tuesday 19 April 2011 10:52:33 Markus Jelsma wrote:
> Hi,
> 
> Nutch 1.3-dev seems to have changed its tstamp field from a long to a
> properly formatted Solr readable date/time but the example Solr schema for
> Nutch still configures the tstamp field as a long. This results in a
> formatted date/time in a long field, which i think should not be allowed
> in the first place by Solr.
> 
> <long name="tstamp">2011-04-19T08:16:31.675Z</long>
> 
> While the above is strange enough, i only found out it's all wrong when
> using the javabin format. The following query will throw an exception
> while using XML response writer works find and returns the tstamp as long
> but formatted as a proper date/time.
> 
> javabin:
> 
> curl
> "http://localhost:8983/solr/select?fl=id,boost,tstamp,digest&start=0&q=id:
> \[*+TO+*\]&wt=javabin&rows=2&version=1"
> 
> Apr 19, 2011 10:34:50 AM
> org.apache.solr.request.BinaryResponseWriter$Resolver getDoc
> WARNING: Error reading a field from document :
> SolrDocument[{digest=7ff92a31c58e43a34fd45bc6d87cda03}]
> java.lang.NumberFormatException: For input string:
> "2011-04-19T08:16:31.675Z" at
> java.lang.NumberFormatException.forInputString(NumberFormatException.java:4
> 8) at java.lang.Long.parseLong(Long.java:419)
>         at java.lang.Long.valueOf(Long.java:525)
>         at org.apache.solr.schema.LongField.toObject(LongField.java:82)
>         at org.apache.solr.schema.LongField.toObject(LongField.java:33)
>         at
> org.apache.solr.request.BinaryResponseWriter$Resolver.getDoc(BinaryResponse
> Writer.java:148) at
> org.apache.solr.request.BinaryResponseWriter$Resolver.writeDocList(BinaryRe
> sponseWriter.java:124) at
> org.apache.solr.request.BinaryResponseWriter$Resolver.resolve(BinaryRespons
> eWriter.java:88) at
> org.apache.solr.common.util.JavaBinCodec.writeVal(JavaBinCodec.java:143)
>         at
> org.apache.solr.common.util.JavaBinCodec.writeNamedList(JavaBinCodec.java:1
> 33) at
> org.apache.solr.common.util.JavaBinCodec.writeKnownType(JavaBinCodec.java:2
> 21) at
> org.apache.solr.common.util.JavaBinCodec.writeVal(JavaBinCodec.java:138)
>         at
> org.apache.solr.common.util.JavaBinCodec.marshal(JavaBinCodec.java:87)
>         at
> org.apache.solr.request.BinaryResponseWriter.write(BinaryResponseWriter.jav
> a:48) at
> org.apache.solr.servlet.SolrDispatchFilter.writeResponse(SolrDispatchFilter
> .java:322) at
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java
> :254) more trace from Jetty
> 
> Here's the wt=xml working fine and showing output for the tstamp field:
> 
> markus@midas:~$ curl
> "http://localhost:8983/solr/select?fl=id,boost,tstamp,digest&start=0&q=id:
> \[*+TO+*\]&wt=xml&rows=2&version=1"
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <response>
> <responseHeader><status>0</status><QTime>17</QTime>
> <lst name="params">
> <str name="fl">id,boost,tstamp,digest</str>
> <str name="start">0</str>
> <str name="q">id:[* TO *]</str>
> <str name="wt">xml</str>
> <str name="rows">2</str>
> <str name="version">1</str><
> /lst></responseHeader>
> <result name="response" numFound="2" start="0">
> <doc>
> <str name="digest">478e77f99f7005ae71aa92a879be2fd4</str>
> <str name="id">idfield</str>
> <long name="tstamp">2011-04-19T08:16:31.689Z</long>
> </doc>
> <doc>
> <str name="digest">7ff92a31c58e43a34fd45bc6d87cda03</str>
> <str name="id">idfield</str>
> <long name="tstamp">2011-04-19T08:16:31.675Z</long>
> </doc>
> </result>
> 
> 
> Cheers,

-- 
Markus Jelsma - CTO - Openindex
http://www.linkedin.com/in/markus17
050-8536620 / 06-50258350

Reply via email to