最新性でブーストしたいのですが、日時/日付フィールドで絶対に並べ替えたくはありません (他の要因が関係しているため)。
Sunspot Railsで日付/日時フィールドをブーストするにはどうすればよいですか?
最新性でブーストしたいのですが、日時/日付フィールドで絶対に並べ替えたくはありません (他の要因が関係しているため)。
Sunspot Railsで日付/日時フィールドをブーストするにはどうすればよいですか?
Sunspot には、日付/日時フィールドをブーストする機能が組み込まれていませんが、この記事で証明されているように、solr 自体を使用してこれを行うことができます。
https://wiki.apache.org/solr/FunctionQuery#Date_Boosting
幸いなことに、sunspot は手動でパラメーターを solr クエリに追加する方法を提供します。ここで行う必要があるのは、ブーストに使用している日付フィールドが model.rb の検索可能なブロックに含まれていることを確認することです。
searchable do
time :datetime_field, stored: true, trie: true
end
次に、おそらく models_controller.rb にある検索ブロックに、日付ブースト関数を追加します。
@search = Model.search do
# perform search
adjust_solr_params do |sunspot_params|
sunspot_params[:boost] = 'recip(ms(NOW,datetime_field_dts),3.16e-11,1,1)'
end
end
太陽黒点は時間フィールドの末尾に「_dts」を追加することに注意してください。したがって、クエリ文字列の変数名の末尾にこれを含める必要があります。