我不确定这里有什么问题,但我们在users表中有一个名为last_logged_in_at的列,我们用它来进行排序。这是在使用Thinking Sphinx且启用了增量索引的Rails 2.3项目中。
当记录的delta设置为true时,即使按last_logged_in_at排序也应将其置于顶部,它也会被推到底部。
我尝试将last_logged_in_at作为日期时间,时间戳甚至是整数,行为总是相同的。
任何想法为什么?
查询类似于:
{:populate=>true,
:match_mode=>:boolean,
:order=>"last_logged_in_at DESC, updated_at DESC",
:per_page=>20,
:with_all=>{:role_id=>17,
:state=>"activated",
:mandator_id=>9,
:profile_active=>true},
:page=>nil}
答案 0 :(得分:1)
对不起,生活很疯狂,因此回复很慢。
你正在过滤一个字符串 - 这是Sphinx目前不允许的。但是有ways around this。
另外:您使用的是:with_all
,但:with
在您的情况下表现完全相同。当您想要在单个属性上匹配多个值时,:with_all
非常有用。例如,此查询将匹配文章具有任何给定标记ID的结果:
Article.search :with => {:tag_ids => [1, 2, 3]}
但是下一个查询会将文章与给定标记ID的所有匹配:
Article.search :with_all => {:tag_ids => [1, 2, 3]}
我发现这些点都与您的问题没有直接关系 - 但是,最好先使查询有效,然后仔细检查行为是否正确。