Switching to solr-user.
Jerry, what type of function are you trying to do that Solr won't do
for you out of the box?

-Yonik


On Tue, Aug 12, 2008 at 5:13 PM, Jerry Quinn (JIRA) <[EMAIL PROTECTED]> wrote:
>
>    [ 
> https://issues.apache.org/jira/browse/SOLR-693?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12621980#action_12621980
>  ]
>
> Jerry Quinn commented on SOLR-693:
> ----------------------------------
>
> I found SortableIntFieldSource but it's not publicly accessible.  It's also 
> in org.apache.solr.schema instead of org.apache.solr.search.function like all 
> the other ValueSource objects.
>
>> 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.
>
>

Reply via email to