The field is a DateTime.

So I tried what you suggested and no luck. I noticed that when I  
remove the first_doc and num_doc options it appears to work correctly  
(getting all of the docs in the right order).

On Jul 12, 2006, at 7:13 PM, David Balmain wrote:

> On 7/13/06, Floyd Morgan <[EMAIL PROTECTED]> wrote:
>> Here is the index snippet:
>>
>> doc = Ferret::Document::Document.new
>> # insert the id
>> doc << Ferret::Document::Field.new( "id", post.id,
>> Ferret::Document::Field::Store::YES,
>>            Ferret::Document::Field::Index::UNTOKENIZED )
>> # insert the date
>>   doc << Ferret::Document::Field.new( "created_at", post.created_at,
>>            Ferret::Document::Field::Store::NO,
>> Ferret::Document::Field::Index::UNTOKENIZED )
>> # add some other stuff ...
>> # write to the index
>>   index << doc
>>
>> Here is the query snippet:
>>
>> sort_fields = []
>> sort_fields << Ferret::Search::SortField.new
>> ( "created_at", :sort_type =>
>>         Ferret::Search::SortField::SortType::INTEGER, :reverse =>  
>> true )
>>   # search the index
>>   top_docs = index.search( query, { :first_doc =>
>> first_doc , :num_docs => 5, :sort => sort_fields } )
>
>
> I'm not exactly sure what post.created_at but if it's a Time object
> then you need to convert it to a string that will sort correctly as a
> string. ie use strftime("%Y%m%d") (use whatever precision you need.
> Here is an example which adds 100 documents with 100 random dates in
> the last 100 days;
>
> require 'rubygems'
> require 'ferret'
> include Ferret::Index
> include Ferret::Search
>
> index = Index.new
> t = Time.now
>
> 100.times do
>   index << {:id => "x",
>             :date => (t-24*60*60*rand(100)).strftime("%Y%m%d")}
> end
>
> sort_fields = [SortField.new(:date,
>                              :sort_type =>  
> SortField::SortType::INTEGER,
>                              :reverse => true)]
>
> 10.times do |start|
>   index.search_each("x",
>                     :first_doc => start*10,
>                     :num_docs => 10,
>                     :sort => sort_fields) do |doc_id, score|
>     puts index[doc_id][:date]
>   end
> end
> _______________________________________________
> Ferret-talk mailing list
> [email protected]
> http://rubyforge.org/mailman/listinfo/ferret-talk
>

_______________________________________________
Ferret-talk mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/ferret-talk

Reply via email to