2012-05-02 104 views
0

所以太阳黑子,也可以做到这一点:Boost_fields太阳黑子

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 

回答

0

我还没有发现直接的方式做到这一点,但你可以随时命名空间的字段名称,用太阳黑子的:作为选项。

因此,一个则在一个模型,你会怎么做:

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