在 Rails 项目中,我将 Sphinx 与 Thinking Sphinx 插件一起使用。我索引一个带有属性 :foo 的表,它是一个浮点数。
对列 :foo 进行排序时,我想要的行为是 nil 值总是出现在列表的末尾,例如
id; foo (order foo desc)
-------
1; 5
2; 3
3; -4
4: -5
5: nil
6: nil
id; foo (order foo asc)
-------
4: -5
3; -4
2; 3
1; 5
5: nil
6: nil
如果它是普通的 sql,我会排序:
:order => "(foo IS NULL) ASC, foo DESC"
但这似乎是不可能的,因为我认为 NULL 值被转换为 0(这是真的吗?)。使用 sphinx 排序表达式似乎无法正确排序我的浮点数。
有没有人解决了这个问题或知道如何解决这个问题?