0

我的模型中有以下内容:

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

Profile.solr_reindex在 Rails 控制台中尝试过,但结果的顺序没有改变。 order_by :random工作,order_by :name工作,但我不能按分数排序。这就像我的文档提升不起作用。我的目标是让所有设置了图像的个人资料首先出现。我目前得到的是第一个结果是带有图像的配置文件,然后是一堆无图像的配置文件,然后是另一个带有图像的配置文件。

编辑:认为我没有在模型中为 定义字段可能很重要image,所以我尝试添加string :imageProfile. 没运气。

4

2 回答 2

0

好的,按分数提升和排序的坚果。我将以下内容放在searchable我的模型中的块中:

boolean :has_image, using: :image?

然后solr_search在我的控制器中的块中进行以下操作:

order_by :has_image, :desc
order_by :random, :desc

现在,我首先以随机顺序获取所有带有图像的配置文件,然后是所有没有图像的配置文件,也是随机顺序。

于 2012-11-29T23:00:57.660 回答
0

您还可以尝试根据您的标志影响得分,如下所示:

@search = Profile.solr_search do
  boost(10) { with(:has_image, true)}
  ...
end
于 2013-10-21T07:55:59.140 回答