2011-04-15 58 views
0

我不确定谁在这里有问题,但我们的用户表中有一列名为last_logged_in_at的列,用于排序。这是在Rails 2.3项目中使用Thinking Sphinx并启用了delta索引。使用增量索引时思考狮身人面像无法排序

当记录将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

您可以分享您使用的搜索查询无效吗? – pat 2011-04-16 13:16:20

回答

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]} 

我意识到这些问题都与您的问题没有直接关系 - 但是,最好先查询查询,然后仔细检查行为是否正确。