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

Rails コンソールで試してみProfile.solr_reindexましたが、結果の順序が変わりません。 order_by :random動作しorder_by :nameますが、スコアで並べ替えることができません。ドキュメント ブーストが機能していないようです。私の目標は、画像が設定されたすべてのプロファイルが最初に表示されるようにすることです。私が現在得ているのは、最初の結果は画像のあるプロファイル、次に画像のないプロファイルの束、次に画像のある別のプロファイルです。

編集:のモデルにフィールドを定義していないことが問題だったのではないかと考えたimageので、 に追加string :imageしてみましたProfile。運がない。

4

2 に答える 2

0

次のように、フラグに基づいてスコアリングに影響を与えることもできます。

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

さて、ブーストとスコアによる順序付けに夢中です。searchableモデルのブロックに次を入れました。

boolean :has_image, using: :image?

次に、solr_searchコントローラーのブロックに次のように記述します。

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

これで、最初に画像付きのすべてのプロファイルをランダムな順序で取得し、次に画像なしのすべてのプロファイルをランダムな順序で取得します。

于 2012-11-29T23:00:57.660 に答える