2012-05-02 103 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