Rails プロジェクトでは、Thinking Sphinx プラグインと一緒に Sphinx を使用しています。float である属性 :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 順序付け式を使用すると、float が適切に並べ替えられないようです。
誰かがこの問題を解決しましたか、それを行う方法についてアイデアを持っていますか?