我的模型中有以下内容:
searchable do
boost { image? ? 2.0 : 1.0 }
end
我在我的控制器中执行以下操作:
@search = Profile.solr_search do
with :is_private, false
without(:id).equal_to(current_profile.id)
order_by :score, :desc
paginate page: (params[:page] || 1), per_page: 9
end
我在Rails控制台中尝试了Profile.solr_reindex
,但结果的排序没有改变。 order_by :random
有效,order_by :name
有效,但我不能按分数排序。就像我的文档提升不起作用。我的目标是将所有配置文件设置为首先显示。我目前得到的是第一个结果是带有图像的配置文件,然后是一堆无图像配置文件,然后是带有图像的另一个配置文件。
编辑:认为我在image
的模型中没有定义字段可能很重要,所以我尝试将string :image
添加到Profile
。没有运气。
答案 0 :(得分:0)
好吧,坚持按分数提升和排序。我在我的模型的searchable
块中添加了以下内容:
boolean :has_image, using: :image?
然后在我的控制器的solr_search
块中的以下内容:
order_by :has_image, :desc
order_by :random, :desc
现在我首先以一些随机顺序获取所有带有图像的配置文件,然后是所有带有图像的配置文件,也是随机顺序。
答案 1 :(得分:0)
您也可以尝试根据您的旗帜影响评分:
@search = Profile.solr_search do
boost(10) { with(:has_image, true)}
...
end