0%

How to filter numbers: range search

Data can be filtered by a range of numeric values using the syntax field:[lower_bound to upper_bound] in the q parameter. An asterisk (*) can be used for either or both endpoints to specify an open-ended range query. See examples in the table below.

field:[* TO 100]Finds all field values less than or equal to 100.
field:[100 TO *]Finds all field values greater than or equal to 100.
field:[* TO *]Finds any document with a value between the effective values
of -Infinity and +Infinity for that field type.

Different types of brackets can be used:

  • [ & ] denote an inclusive range query, meaning it matches values including both the upper and lower bounds.
  • { & } denote an exclusive range query, meaning it matches values between the upper and lower bounds, but excludes them.

You can mix these types, so one end of the range is inclusive and the other is exclusive. For example: field:{1 TO 10] means values greater than 1 but less than or equal to 10.

Let’s use our knowledge gained so far to break down the query below:

num_found, df = solr_request(
    core='statistical-result', 
    params={
        'q': 'p_value:[1e-8 TO 0.001}',
        'fl': 'marker_symbol,top_level_mp_term_name,effect_size,p_value',
        'rows': 3
    }
)

In this example, we request data with a p-value less than or equal to 10−8 (inclusive) and a p-value greater than 0.001 (exclusive).