2

最新性でブーストしたいのですが、日時/日付フィールドで絶対に並べ替えたくはありません (他の要因が関係しているため)。

Sunspot Railsで日付/日時フィールドをブーストするにはどうすればよいですか?

4

1 に答える 1

1

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」を追加することに注意してください。したがって、クエリ文字列の変数名の末尾にこれを含める必要があります。

于 2015-05-14T19:38:57.697 に答える