Sorting the Result


The document describes
search(query, options)
sort: An array of SortFields describing how to sort the results.

I have created index with two fields: ‘file’ and ‘content’

When I give SortField name as ‘file’ while searching, it results into

The exact command given by me:
index.search_each(“sleepless AND dreams”, :num_docs => 100, :sort =>
do |doc, score|


My question is how do I give field name for sorting.

Thanks and Regards,

P L Patodia


I believe your sort field needs to be a Ferret::Search::SortField

Here is how I am sorting (with two fields). You might be able to do
it without the array and just passing in a Ferret::Search::SortField
to :sort. I haven’t tried that though.

sort_fields = []
sort_fields <<'created_at')
sort_fields <<'url')
INDEX.search_each(query, {:sort => sort_fields}) do |doc, score|



On 3/2/06, Tom D. removed_email_address@domain.invalid wrote:


You may also want to specify the sort type. For example;

 include Ferret::Search
 sort_fields = []
 sort_fields <<'created_at',
                                      :sort_type =>

sort_fields <<‘url’,
:sort_type =>
INDEX.search_each(query, {:sort => sort_fields}) do |doc, score|

Although, now that I think about it, it would be nice if you could
just pass the search method a string or array of strings. Expect to
see this functionality in the future.