[ 
https://issues.apache.org/jira/browse/SOLR-9279?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15393869#comment-15393869
 ] 

ASF GitHub Bot commented on SOLR-9279:
--------------------------------------

Github user dsmiley commented on the issue:

    https://github.com/apache/lucene-solr/pull/49
  
    I think at the Lucene level we should make this widely useful by simply 
exposing a boolean compare(FunctionValues lhs, FunctionValues rhs).  If we go 
the way of your latest commit, it would be less useful as some potential users 
would skip over it to avoid the performance overhead of calling double & 
longVal, or because they have more interesting requirements and want to call 
some other method on functionValues.  So lets not tie their hands.
    
    Yes my concern is definitely performance based.  These things are 
super-sensitive to it as it operates once per matching document, which could be 
a ton.
    
    What you could perhaps do at the Solr layer is check if both the lhs & rhs 
extend from LongDocValues and if so then use the Long version... otherwise use 
the Double version which I think can represent Integer completely.  But it'd be 
very nice not to do that double instanceof check at every comparison... so 
perhaps that would lead to actually implementing getValues().


> Add greater than, less than, etc in Solr function queries
> ---------------------------------------------------------
>
>                 Key: SOLR-9279
>                 URL: https://issues.apache.org/jira/browse/SOLR-9279
>             Project: Solr
>          Issue Type: New Feature
>      Security Level: Public(Default Security Level. Issues are Public) 
>          Components: search
>            Reporter: Doug Turnbull
>             Fix For: master (7.0)
>
>
> If you use the "if" function query, you'll often expect to be able to use 
> greater than/less than functions. For example, you might want to boost books 
> written in the past 7 years. Unfortunately, there's no "greater than" 
> function query that will return non-zero when the lhs > rhs. Instead to get 
> this, you need to create really awkward function queries like I do here 
> (http://opensourceconnections.com/blog/2014/11/26/stepwise-date-boosting-in-solr/):
> if(min(0,sub(ms(mydatefield),sub(ms(NOW),315569259747))),0.8,1)
> The pull request attached to this Jira adds the following function queries
> (https://github.com/apache/lucene-solr/pull/49)
> -gt(lhs, rhs) (returns 1 if lhs > rhs, 0 otherwise)
> -lt(lhs, rhs) (returns 1 if lhs < rhs, 0 otherwise)
> -gte
> -lte
> -eq
> So instead of 
> if(min(0,sub(ms(mydatefield),sub(ms(NOW),315569259747))),0.8,1)
> one could now write
> if(lt(ms(mydatefield),315569259747,0.8,1)
> (if mydatefield < 315569259747 then 0.8 else 1)
> A bit more readable and less puzzling



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to