Sphinx Bestellung: nil / NULL-Werte letzte
-
06-07-2019 - |
Frage
Auf einem Rails-Projekt, ich bin mit Sphinx zusammen mit Denken Sphinx-Plugin. I-Index eine Tabelle mit einem Attribut: foo, die ein Schwimmer ist.
Ihr gewünschtes Verhalten, wenn für die Spaltensortierung. Foo, dass Null-Werte immer am Ende der Liste erscheinen würden, z
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
Wenn es normal war, SQL, ich würde Art wie:
:order => "(foo IS NULL) ASC, foo DESC"
Aber es scheint nicht möglich zu sein, da ich NULL-Werte denken übersetzt werden auf 0 (das ist wahr?). sphinx Ordnungs Ausdrücke scheint mein Wagen nicht richtig zu sortieren.
Hat jemand dieses Problem lösen oder hat eine Idee, wie es zu tun?
Lösung
Die Lösung, die Sie zur Verfügung gestellt haben, ist, was würde ich vorschlagen, -. Wie ja, du bist richtig, Sphinx NULLs als 0en behandelt
Andere Tipps
Eine Lösung, die ich mit in der Zwischenzeit kam zu Index ein zusätzliches Attribut, wie folgt aus:
define_index do
indexes foo, :sortable => true
has "foo IS NULL", :as => :foo_nil, :sortable => true
end
Was lässt mich so bestellen
:order => "foo_nil ASC, foo DESC"
Es ist ein bisschen ungeschickt, zumal ich viele Attribute, die ich so bestellt werden sollen.