我有一个项目有时间表的场景,时间表有很多不同的名称和截止日期。
鉴于我可以搜索项目并对项目字段值甚至多态字段值进行排序,我如何根据具有请求的计划名称的计划对结果进行排序。
用简单的英语,在 Thinking-Sphinx 中,我如何按匹配计划名称的截止日期对搜索结果进行排序,例如。我希望按“预订”(Schedule)截止日期对项目进行排序。
这似乎在 Sphinx 中应该很简单,但它避开了我。我已经考虑构建一个考虑日程名称的搜索后排序,但 Sphinx 排序会更受欢迎。
我已经尝试过类似以下的方法,但它不考虑计划名称。
class Project
has_many :schedules
define_index do
has schedules.due_date, :type => :datetime, :as => :due_date
end
end
$: Project.search(query, :order => "due_date desc", :match_mode => :extended)
有趣的是,我确实得到了结果(有点排序),但它不准确,可能是因为它没有考虑到属于一个项目的许多时间表,因此不是特定于字段值的。我也考虑过使用“with”但是
有没有办法用 Thinking Sphinx 完成这个任务?(我在 Rails 2.3.x 上,所以我在 think-sphinx 1.4.3 上。)
[编辑] 我已经使用 <=> 运算符成功地对这个后搜索进行了排序,但这需要查找时间表。我还研究了表达式排序,但这仅适用于正在搜索的模型的字段,我不知道我可以索引什么以使其可用。