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 回答