To edit pages or tickets please login with username/password: aaf/aaf

Changeset 33

Show
Ignore:
Timestamp:
04/22/06 18:00:21 (3 years ago)
Author:
jk
Message:

#9 fixed, results are now ordered by score after retrieving them from the database

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/plugin/acts_as_ferret/lib/acts_as_ferret.rb

    r31 r33  
    2020 
    2121require 'active_record' 
    22 require 'ferret' 
     22require_gem 'ferret', '=0.3.2' 
     23#require 'rferret' 
     24#require 'ferret' 
    2325 
    2426# Yet another Ferret Mixin. 
     
    254256        def find_by_contents(q, options = {}) 
    255257          id_array = [] 
     258          scores_by_id = {} 
    256259          find_id_by_contents(q, options).each do |element| 
    257             id_array << element[:id] 
    258           end 
    259           logger.debug "id_array: #{id_array.inspect}" 
     260            id_array << id = element[:id].to_i 
     261            scores_by_id[id] = element[:score]  
     262          end 
    260263          begin 
    261264            if self.superclass == ActiveRecord::Base 
     
    271274            logger.debug "REBUILD YOUR INDEX! One of the id's didn't have an associated record: #{id_array}" 
    272275          end 
    273           logger.debug "Result id_array: #{id_array.inspect}, result: #{result}" 
     276 
     277          # sort results by score (descending) 
     278          result.sort! { |b, a| scores_by_id[a.id] <=> scores_by_id[b.id] } 
     279           
     280          logger.debug "Query: #{q}\nResult id_array: #{id_array.inspect},\nresult: #{result},\nscores: #{scores_by_id.inspect}" 
    274281          return result 
    275282        end  

To edit pages or tickets please login with username/password: aaf/aaf