2012-01-16 2 views
1

Sunspot 검색 결과를 작은 값에서 큰 값으로 정렬하려고합니다.Sunspot order_by 정렬이 nil 값인 마지막 값

order_by :price, :asc 

그러나 일부 품목에는 가격이 없습니다. 그들은 결과의 전면에 놓입니다. 그 (것)들을 밖으로 남겨두기 대신에 끝에 표시하는 좋은 방법 있는가?

답변

2

의 schema.xml

0

네의 가격 필드의 정의에 속성 "sortMissingLast = true"로 추가, 당신은 다음과 같이의 schema.xml의 필드에 sortMissingLast = 사실 무언가를 추가해야한다 :

<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