我想增加新近度,但绝对不要按日期时间/日期字段排序(因为还有其他因素在起作用)。
如何提升 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”添加到时间字段的末尾,因此您需要将其包含在查询字符串中变量名称的末尾。