I suspect you missed this comment in the schema file:
***
Plain numeric field types that store and index the text
      value verbatim (and hence don't support range queries, since the
      lexicographic ordering isn't equal to the numeric ordering)
***

So what's happening is that the field is being indexed as a text type and, I
suspect,
begin tokenized. The error you're getting is when trying to sort against a
tokenized
field which is undefined. At least that's my story and I'm sticking to
it....

Best
Erick

On Tue, Jan 18, 2011 at 8:10 AM, Sascha Szott <sz...@zib.de> wrote:

> Hi folks,
>
> I've noticed an unexpected behavior while working with the various built-in
> integer field types (int, tint, pint). It seems as the first two ones are
> subject to type checking, while the latter one is not.
>
> I'll give you an example based on the example schema that is shipped out
> with Solr. When trying to index the document
>
> <doc>
>  <field name="id">1</field>
>  <field name="foo_i">invalid_value</field>
>  <field name="foo_ti">1</field>
>  <field name="foo_pi">1</field>
> </doc>
>
> Solr responds with a NumberFormatException (the same holds when setting the
> value of foo_ti to "invalid_value"):
>
> java.lang.NumberFormatException: For input string: "invalid_value"
>
> Surprisingly, an attempt to index the document
>
> <doc>
>  <field name="id">1</field>
>  <field name="foo_i">1</field>
>  <field name="foo_ti">1</field>
>  <field name="foo_pi">invalid_value</field>
> </doc>
>
> is successful. In the end, sorting on foo_pi leads to an exception, e.g.,
> http://localhost:8983/solr/select?q=*:*&sort=foo_pi desc
>
> raises an HTTP 500 error:
>
> java.lang.StringIndexOutOfBoundsException: String index out of range: 0
>        at java.lang.String.charAt(String.java:686)
>        at
> org.apache.lucene.search.FieldCache$7.parseInt(FieldCache.java:234)
>        at
> org.apache.lucene.search.FieldCacheImpl$IntCache.createValue(FieldCacheImpl.java:457)
>        at
> org.apache.lucene.search.FieldCacheImpl$Cache.get(FieldCacheImpl.java:224)
>        at
> org.apache.lucene.search.FieldCacheImpl.getInts(FieldCacheImpl.java:430)
>        at
> org.apache.lucene.search.FieldCacheImpl$IntCache.createValue(FieldCacheImpl.java:447)
>        at
> org.apache.lucene.search.FieldCacheImpl$Cache.get(FieldCacheImpl.java:224)
>        at
> org.apache.lucene.search.FieldCacheImpl.getInts(FieldCacheImpl.java:430)
>        at
> org.apache.lucene.search.FieldComparator$IntComparator.setNextReader(FieldComparator.java:332)
>        at
> org.apache.lucene.search.TopFieldCollector$OneComparatorNonScoringCollector.setNextReader(TopFieldCollector.java:94)
>        at
> org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:249)
>        at org.apache.lucene.search.Searcher.search(Searcher.java:171)
>        at
> org.apache.solr.search.SolrIndexSearcher.getDocListNC(SolrIndexSearcher.java:988)
>        at
> org.apache.solr.search.SolrIndexSearcher.getDocListC(SolrIndexSearcher.java:884)
>        at
> org.apache.solr.search.SolrIndexSearcher.search(SolrIndexSearcher.java:341)
>        at
> org.apache.solr.handler.component.QueryComponent.process(QueryComponent.java:182)
>        at
> org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:195)
>        at
> org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131)
>        at org.apache.solr.core.SolrCore.execute(SolrCore.java:1316)
>        at
> org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:338)
>        at
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:241)
> [...]
>
>
> Is this a bug or did I missed something?
>
> -Sascha
>

Reply via email to