2011-04-15 59 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]} 

我意識到這些問題都與您的問題沒有直接關係 - 但是,最好先查詢查詢,然後仔細檢查行爲是否正確。