如何在Sunspot Rails中增加日期/日期时间字段?

时间:2013-10-01 04:51:47

标签: solr ruby-on-rails-4 sunspot sunspot-rails sunspot-solr

我想通过新近度来提升,但不是绝对按日期时间/日期字段排序(因为还有其他因素在起作用)。

如何在太阳黑子Rails中提升日期/日期时间字段?

1 个答案:

答案 0 :(得分:1)

太阳黑子没有内置功能来提升日期/日期时间字段,但是,使用solr本身可以这样做,如本文所示:

https://wiki.apache.org/solr/FunctionQuery#Date_Boosting

幸运的是,太阳黑子提供了一种手动将参数添加到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”,因此您需要在查询字符串的变量名末尾包含此内容。