太阳黑子中每个类的Boost_场

太阳黑子中每个类的Boost_场,boost,solr,sunspot,Boost,Solr,Sunspot,所以在太阳黑子中,有可能做到这一点: QUERY_DOCUMENT_BOOST_OPTIONS = { :user => 2, :product => 1, } fulltext query do [User, Product].each do |m| boost(QUERY_DOCUMENT_BOOST_OPTIONS[m.name.underscore.to_sym]) { with(:class, m) } end end 也可以这样做来提高能量场吗

所以在太阳黑子中,有可能做到这一点:

QUERY_DOCUMENT_BOOST_OPTIONS = {
  :user => 2,
  :product => 1,
}

fulltext query do
  [User, Product].each do |m|
    boost(QUERY_DOCUMENT_BOOST_OPTIONS[m.name.underscore.to_sym]) { with(:class, m) }
  end
end
也可以这样做来提高能量场吗?因此,只有当某个字段位于某个类的文档中时,它才会被提升

有可能实现这样的目标吗?在solr中是否可以直接使用?当然,这不起作用,因为boost_字段不占用块:

QUERY_FIELD_BOOST_OPTIONS[m.name.underscore.to_sym].each do |field, boost|
  boost_fields(field => boost) { with(:class, m) }
end

我还没有找到一种直接的方法来做到这一点,但是您可以通过使用sunspot的:as选项来命名字段名

那么在一个模型中,你会做:

searchable do 
  text: title, :as => 'model_title_text'
end
当你搜索时,你会做什么

search = Sunspot.search [Model] do
  fulltext query
  adjust_solr_params do |params| 
    params['qf'] += ' model_title_text^10'
  end
end