问题描述
|
我不确定这里是谁的错,但是我们的用户表中有一列称为last_logged_in_at,我们将其用于排序。这是在使用Think Sphinx且启用了增量索引的Rails 2.3项目中。
当记录的增量设置为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}
解决方法
对不起,一生的疯狂忙碌,因此回复缓慢。
您正在过滤字符串-Sphinx当前不允许使用。但是,有一些解决方法。
另外:您正在使用
:with_all
,但是:with
在您的情况下的行为完全相同。当您要在单个属性上匹配多个值时,1很有用。例如,此查询将匹配文章具有任何给定标签ID的结果:
Article.search :with => {:tag_ids => [1,2,3]}
但是,下一个查询将匹配具有所有给定标签ID的文章:
Article.search :with_all => {:tag_ids => [1,3]}
我意识到这些要点都与您的问题没有直接关系-但是,最好先使查询有效,然后再仔细检查行为是否正确。