You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by Jack L <jl...@yahoo.ca> on 2007/05/04 22:34:43 UTC
Re[2]: facet.sort does not work in python output
I use this to sort the facet field values against count in
reverse order in Python:
sorted(facet_field_values.items(), lambda x, y: cmp(x[1], y[1]), reverse = True)
Thursday, May 3, 2007, 6:18:05 PM, you wrote:
> We resort it in solr-ruby:
> def field_facets(field)
> facets = []
> values = @data['facet_counts']['facet_fields'][field]
> Solr::Util.paired_array_each(values) do |key, value|
> facets << FacetValue.new(key, value)
> end
> facets
> end
> On May 3, 2007, at 8:10 PM, Mike Klaas wrote:
>> On 5/3/07, Jack L <jl...@yahoo.ca> wrote:
>>> The Python output uses nested dictionaries for facet counts.
>>> I read it online that Python dictionaries do not preserve order.
>>> So when a string is eval()'d, the sorted order is lost in the
>>> generated Python object. Is it a good idea to use list to wrap
>>> around the dictionary? This is only needed for the fields, sorted
>>> by counts.
>>
>> This might be fixed in the future, but for now, either resort on the
>> client-side (a one- or zero-liner), or specify json.nl=arrarr (which
>> affects the whole python response structure... probably not
>> recommended).
>>
>> There is some past discussion on the list if you search the archives.
>>
>> -Mike
Re: Re[2]: facet.sort does not work in python output
Posted by Mike Klaas <mi...@gmail.com>.
On 5/4/07, Jack L <jl...@yahoo.ca> wrote:
> I use this to sort the facet field values against count in
> reverse order in Python:
>
> sorted(facet_field_values.items(), lambda x, y: cmp(x[1], y[1]), reverse = True)
FWIW, the key= parameter is generally more efficient for python 2.4+:
sorted(facet.field_values.items(), key=lambda x: x[1], reverse=True)
or even
from operator import itemgetter
sorted(facet.field_values.items(), key=itemgetter(1), reverse=True)
digressionally,
-Mike