无法获得order_by:得分与太阳黑子在Rails上工作

时间:2012-11-29 22:43:17

标签: ruby-on-rails ruby search solr sunspot

我的模型中有以下内容:

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。没有运气。

2 个答案:

答案 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