[ https://issues.apache.org/jira/browse/SOLR-9279?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15392520#comment-15392520 ]
ASF GitHub Bot commented on SOLR-9279: -------------------------------------- Github user softwaredoug commented on the issue: https://github.com/apache/lucene-solr/pull/49 Ok this needs another look at @dsmiley as I've addressed a bug where Long comparisons failed - Adds test that demonstrates bug comparing Longs - Changed compare to take two Comparables instead of doubles - Perform an integer comparison when it appears the two input values are effectively integers - Otherwise does a floating point comparison Unfortunately, I think tihs interface can't take arbitrary value sources. I feel like I need to enforce the safest comparison (integer vs floating pt) to avoid bugs. > 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: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org