Sunspot order_by сортировать с последними нулевыми значениями - PullRequest
2 голосов
/ 16 января 2012

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

order_by :price, :asc

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

Ответы [ 3 ]

3 голосов
/ 09 августа 2012

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

0 голосов
/ 19 июня 2018

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

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

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

0 голосов
/ 16 сентября 2016

Да, вам следует добавить 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
...