Uploaded image for project: 'Solr'
  1. Solr
  2. SOLR-9279

Add greater than, less than, etc in Solr function queries

    Details

    • Type: New Feature
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 6.2
    • Component/s: search
    • Security Level: Public (Default Security Level. Issues are Public)
    • Labels:
      None

      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

        Attachments

          Activity

            People

            • Assignee:
              dsmiley David Smiley
              Reporter:
              softwaredoug Doug Turnbull
            • Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: