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 に答える