Сортировка солнечных пятен order_by с последними нулевыми значениями

Я пытаюсь упорядочить результаты поиска солнечных пятен по цене от меньшего к большему значению.

order_by :price, :asc

Однако есть некоторые предметы, которые имеют нулевую стоимость. Они размещаются перед результатами. Есть ли хороший способ отобразить их в конце, а не опускать?


person lulalala    schedule 16.01.2012    source источник


Ответы (3)


добавить атрибут sortMissingLast=true к определению поля цены в schema.xml

person Umar    schedule 09.08.2012

Да, вы должны добавить sortMissingLast=true в поле в schema.xml, что-то вроде этого:

<schema name="sunspot" version="1.0">
  <types>
    ...
    <!-- My custom types -->
    <fieldType name="sml_int" class="solr.SortableIntField" sortMissingLast="true" omitNorms="true"/>
  </types>
  <fields>
    ...
    <!-- My custom fields -->
    <dynamicField name="*_sml_int" type="sml_int" multiValued="false" indexed="true"/>
  </fields>
  ...
</schema>

Затем в вашем коде вы можете сделать это:

class MyModel < ActiveRecord::Base
  searchable do
    integer :price, as: :price_sml_int
  end
end
person Lev Lukomsky    schedule 16.09.2016

Используйте свойство sortMissingLast="true" в fieldType поля в schema.xml.

Перезапустите Solr-сервер.

(Неявное значение по умолчанию — false.)

person Ash    schedule 19.06.2018