我正在使用 Sunspot Solr 进行多面搜索。但是,在尝试显示按所需顺序排序的构面值时,我遇到了问题。我的产品的尺码可能是(S、M、L、XL、XXL),有些产品的尺码可能是鞋码(8、9、10、11、12、13)。当将 facet.sort 方法设置为 'index' 时,它会将字符串值按字母顺序排列,从而分别产生 [L, M, S, XL, XXL] 和 [10, 11, 12, 8, 9]。实现自定义排序方法以实现这些目标的好方法是什么?
我的控制器:
@search = Product.search do
fulltext params[:search]
facet(:size, :sort => :index)
with(:size, params[:size]) if params[:size].present?
end
我的观点:
<% for row in @search.facet(:brand).rows %>
<li>
<% if params[:brand].blank? %>
<%= link_to link_to "#{row.value} (#{row.count})", params.merge({:brand => row.value}) %>
<% else %>
<strong><%= row.value %></strong> (<%= link_to "remove", params.merge({:brand => nil}) %>)
<% end %>
</li>
<% end %>
显示的结果排序
SIZE
L (10)
M (10)
S (10)
XL (10)
XXL (10)