我正在尝试按价格从较小值到较大值来订购太阳黑子搜索结果。
order_by :price, :asc
但是有些商品的价格没有。它们位于结果的前面。是否有一种很好的方法可以在最后显示它们而不是将它们排除在外?
答案 0 :(得分:2)
将属性“sortMissingLast = true”添加到schema.xml中的price字段定义
答案 1 :(得分:0)
是的,您应该将schemaMissingLast = 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
答案 2 :(得分:0)
在 schema.xml 中字段的fieldType中使用属性 sortMissingLast =“ true” 。
重新启动solr服务器。
(隐式默认值为false。)