SolrClient.SolrResponse module

SolrResponse object is returned on queries to Solr. It provides several handy methods for getting the data back.

class SolrClient.SolrResponse(data)
get_cursor()

If you asked for the cursor in your query, this will return the next cursor mark.

get_facet_keys_as_list(field)
Parameters:field (str) – Name of facet field to retrieve keys from.

Similar to get_facet_values_as_list but returns the list of keys as a list instead. Example:

>>> r.get_facet_keys_as_list('facet_test')
['Lorem', 'ipsum', 'amet,', 'dolor', 'sit']
get_facet_pivot()
Parses facet pivot response. Example::
>>> res = solr.query('SolrClient_unittest',{
'q':'*:*',
'fq':'price:[50 TO *]',
'facet':True,
'facet.pivot':'facet_test,price' #Note how there is no space between fields. They are just separated by commas
})
>>> res.get_facet_pivot()
{'facet_test,price': {'Lorem': {89: 1, 75: 1}, 'ipsum': {53: 1, 70: 1, 55: 1, 89: 1, 74: 1, 93: 1, 79: 1}, 'dolor': {61: 1, 94: 1}, 'sit': {99: 1, 50: 1, 67: 1, 52: 1, 54: 1, 71: 1, 72: 1, 84: 1, 62: 1}, 'amet,': {68: 1}}}

This method has built in recursion and can support indefinite number of facets. However, note that the output format is significantly massaged since Solr by default outputs a list of fields in each pivot field.

get_facet_values_as_list(field)
Parameters:field (str) – Name of facet field to retrieve values from.

Returns facet values as list for a given field. Example:

>>> res = solr.query('SolrClient_unittest',{
    'q':'*:*',
    'facet':'true',
    'facet.field':'facet_test',
})
>>> res.get_facet_values_as_list('facet_test')
[9, 6, 14, 10, 11]
>>> res.get_facets()
{'facet_test': {'Lorem': 9, 'ipsum': 6, 'amet,': 14, 'dolor': 10, 'sit': 11}}
get_facets()

Returns a dictionary of facets:

>>> res = solr.query('SolrClient_unittest',{
        'q':'product_name:Lorem',
        'facet':True,
        'facet.field':'facet_test',
})... ... ... ...
>>> res.get_results_count()
4
>>> res.get_facets()
{'facet_test': {'ipsum': 0, 'sit': 0, 'dolor': 2, 'amet,': 1, 'Lorem': 1}}
get_facets_ranges()

Returns query facet ranges

>>> res = solr.query('SolrClient_unittest',{
    'q':'*:*',
    'facet':True,
    'facet.range':'price',
    'facet.range.start':0,
    'facet.range.end':100,
    'facet.range.gap':10
    })
>>> res.get_facets_ranges()
{'price': {'80': 9, '10': 5, '50': 3, '20': 7, '90': 3, '70': 4, '60': 7, '0': 3, '40': 5, '30': 4}}
get_field_values_as_list(field)
Parameters:field (str) – The name of the field for which to pull in values.

Will parse the query results (must be ungrouped) and return all values of ‘field’ as a list. Note that these are not unique values. Example:

>>> r.get_field_values_as_list('product_name_exact')
['Mauris risus risus lacus. sit', 'dolor auctor Vivamus fringilla. vulputate', 'semper nisi lacus nulla sed', 'vel amet diam sed posuere', 'vitae neque ultricies, Phasellus ac', 'consectetur nisi orci, eu diam', 'sapien, nisi accumsan accumsan In', 'ligula. odio ipsum sit vel', 'tempus orci. elit, Ut nisl.', 'neque nisi Integer nisi Lorem']
get_first_field_values_as_list(field)
Parameters:field (str) – The name of the field for lookup.

Goes through all documents returned looking for specified field. At first encounter will return the field’s value.

get_flat_groups(field=None)

Flattens the group response and just returns a list of documents.

get_groups_count(field=None)

Returns ‘matches’ from group response.

If grouping on more than one field, provide the field argument to specify which count you are looking for.
get_json()

Returns json from the original response.

get_jsonfacet_counts_as_dict(field, data=None)

EXPERIMENTAL Takes facets and returns then as a dictionary that is easier to work with, for example, if you are getting something this:

{'facets': {'count': 50,
  'test': {'buckets': [{'count': 10,
     'pr': {'buckets': [{'count': 2, 'unique': 1, 'val': 79},
       {'count': 1, 'unique': 1, 'val': 9}]},
     'pr_sum': 639.0,
     'val': 'consectetur'},
    {'count': 8,
     'pr': {'buckets': [{'count': 1, 'unique': 1, 'val': 9},
       {'count': 1, 'unique': 1, 'val': 31},
       {'count': 1, 'unique': 1, 'val': 33}]},
     'pr_sum': 420.0,
     'val': 'auctor'},
    {'count': 8,
     'pr': {'buckets': [{'count': 2, 'unique': 1, 'val': 94},
       {'count': 1, 'unique': 1, 'val': 25}]},
     'pr_sum': 501.0,
     'val': 'nulla'}]}}}

This should return you something like this:

{'test': {'auctor': {'count': 8,
                     'pr': {9: {'count': 1, 'unique': 1},
                            31: {'count': 1, 'unique': 1},
                            33: {'count': 1, 'unique': 1}},
                     'pr_sum': 420.0},
          'consectetur': {'count': 10,
                          'pr': {9: {'count': 1, 'unique': 1},
                                 79: {'count': 2, 'unique': 1}},
                          'pr_sum': 639.0},
          'nulla': {'count': 8,
                    'pr': {25: {'count': 1, 'unique': 1},
                           94: {'count': 2, 'unique': 1}},
                    'pr_sum': 501.0}}}
get_ngroups(field=None)

Returns ngroups count if it was specified in the query, otherwise ValueError.

If grouping on more than one field, provide the field argument to specify which count you are looking for.

get_num_found()

Returns number of documents found on an ungrounded query.

>>> res = solr.query('SolrClient_unittest',{
        'q':'*:*',
        'facet':True,
        'facet.field':'facet_test',
})
>>> res.get_num_found()
50
get_results_count()

Returns the number of documents returned in current query.

>>> res = solr.query('SolrClient_unittest',{
    'q':'*:*',
    'facet':True,
    'facet.field':'facet_test',
    })
>>>
>>> res.get_results_count()
10
>>> res.get_num_found()
50
json_facet(field=None)

EXPERIMENTAL

Tried to kick back the json.fact output.