IntFieldSource incompatible with sint field type ------------------------------------------------
Key: SOLR-693 URL: https://issues.apache.org/jira/browse/SOLR-693 Project: Solr Issue Type: Bug Components: search Affects Versions: 1.3 Environment: RHEL 5, java6, builtin jetty container Reporter: Jerry Quinn I'm trying to create a custom scoring query in Solr to implement a date bias. I have a custom query parser that I'm using, that does nothing but wrap a BoostedQuery around the original query, which works in general. I'm indexing and storing the day number in an sint field. To implement my query, I extract the contents using org.apache.solr.search.function.IntFieldSource. Unfortunately, this throws an exception when it executes: HTTP ERROR: 500 For input string: "€?" java.lang.NumberFormatException: For input string: "€?" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:61) at java.lang.Integer.parseInt(Integer.java:460) at java.lang.Integer.parseInt(Integer.java:510) at org.apache.lucene.search.FieldCacheImpl$3.parseInt(FieldCacheImpl.java:148) at org.apache.lucene.search.FieldCacheImpl$7.createValue(FieldCacheImpl.java:262) at org.apache.lucene.search.FieldCacheImpl$Cache.get(FieldCacheImpl.java:72) at org.apache.lucene.search.FieldCacheImpl.getInts(FieldCacheImpl.java:245) at org.apache.lucene.search.FieldCacheImpl.getInts(FieldCacheImpl.java:239) at org.apache.solr.search.function.IntFieldSource.getValues(IntFieldSource.java:50) at org.apache.solr.search.function.FunctionQuery$AllScorer.<init>(FunctionQuery.java:103) at org.apache.solr.search.function.FunctionQuery$FunctionWeight.scorer(FunctionQuery.java:81) at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:132) at org.apache.lucene.search.Searcher.search(Searcher.java:126) at org.apache.lucene.search.Searcher.search(Searcher.java:105) at org.apache.solr.search.SolrIndexSearcher.getDocListNC(SolrIndexSearcher.java:966) at org.apache.solr.search.SolrIndexSearcher.getDocListC(SolrIndexSearcher.java:838) at org.apache.solr.search.SolrIndexSearcher.search(SolrIndexSearcher.java:269) at org.apache.solr.handler.component.QueryComponent.process(QueryComponent.java:160) at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:175) at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:135) at org.apache.solr.core.SolrCore.execute(SolrCore.java:1151) I ran into exactly the same problem when I tried to use the CustomScoreQuery and IntFieldSource classes from Lucene. I've tracked the problem down to the fact that IntFieldSource expects the contents of the field to actually be an integer as returned by FieldCache.getInts(). However, Solr converts a sortable int using NumberUtils.int2sortablestr(). If I change my code to create a custom FieldCache.IntParser that applies NumberUtils.SortableStr2int before returning the value, my query works as expected. For example: class MyIntParser implements FieldCache.IntParser { public int parseInt(String val) { return NumberUtils.SortedStr2int(val, 0, val.length()); } } Query q = new BoostedQuery(qry, new IntFieldSource("myfield", new MyIntParser())); -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.