思考Sphinx在使用delta索引时无法排序

时间:2011-04-15 15:04:56

标签: ruby-on-rails sphinx thinking-sphinx

我不确定这里有什么问题,但我们在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}

1 个答案:

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

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