2012-01-16 5 views
1

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

order_by :price, :asc 

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

ответ

2

добавить атрибут «sortMissingLast = истинное» к определению поля Прайса в schema.xml

0

Да, вы должны должны добавить sortMissingLast = верно в поле в 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