0

所以在 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

是否也可以做这样的事情来提升领域?这样一个字段只有在某个类的文档中才会被提升。

有可能实现这样的目标吗?甚至可以直接在solr中使用吗?当然,这不起作用,因为 boost_fields 不需要阻塞:

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

1 回答 1

0

我还没有找到直接的方法来做到这一点,但你总是可以通过使用 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
于 2012-06-04T20:03:59.757 回答