どうも、HyperEstraierでとってきた順序が保証されていないっぽい。
find([1, 2, 3…])でも順序がばらばらになるのかなぁ? > MySQL 4.0
とりあえずパッチ。
Index: acts_as_searchable.rb =================================================================== --- acts_as_searchable.rb (revision 1179) +++ acts_as_searchable.rb (working copy) @@ -202,7 +202,16 @@ ) ) - matches.blank? ? [] : find(matches.collect { |m| m.attr('db_id') }, find_options) + if matches.blank? + [] + else + alist = find(matches.collect { |m| m.attr('db_id') }, find_options).map do |row| + [row.id, row] + end + + rows = Hash[*alist.flatten] + matches.map {|m| rows[m.attr('db_id').to_i] } + end end # Clear all entries from index