[jira] [Updated] (SOLR-9279) Add greater than, less than, etc in Solr function queries

2016-07-27 Thread David Smiley (JIRA)

 [ 
https://issues.apache.org/jira/browse/SOLR-9279?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

David Smiley updated SOLR-9279:
---
Attachment: SOLR-9279.patch

Your last patch was pretty good Doug.  I spent some time last night and this 
morning cleaning it up a tad (fixed ant precommit issues) and then I went a bit 
further.  I don't really like "SafeNumericComparisonValueSource" in Lucene so I 
moved it to Solr naming it SolrComparisonValueSource.  I also changed it to not 
do primitive to object conversion, and in so doing changed the api a bit to 
make the implementations do their job via a lambda.

What do you think?

> 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)
>
> Attachments: SOLR-9279.patch
>
>
> 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



[jira] [Updated] (SOLR-9279) Add greater than, less than, etc in Solr function queries

2016-07-05 Thread Doug Turnbull (JIRA)

 [ 
https://issues.apache.org/jira/browse/SOLR-9279?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Doug Turnbull updated SOLR-9279:

Description: 
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


  was:
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 to be attached to this Jira adds the following function queries

-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



> 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