1

userscafesおよびそれら(いくつfood_itemsかの成分がリストされています)があります。ingredientsこれまで、solr を使用して、ユーザーが好きなものを介して food_items を検索していました。これは、 sunspot docsに従って、sunspot-solr 検索を使用して達成されました。

また、ユーザーの親戚をさまざまなカフェに集めることができlike-nessます (彼が訪れた回数、メニューを検索した回数などに基づいて) (これはその場で生成される動的な値です)

問題: solr 経由で取得した同じ結果 (food_items) を表示したい(結果の再ランキング) (ユーザーのカフェへの類似度に基づく) レール用の sunspot solr を使用する
このアプリは heroku でホストされていますと使用websolr

私はこれらを見つけました:

https://cwiki.apache.org/confluence/display/solr/Query+Re-Ranking

https://cwiki.apache.org/confluence/display/solr/RankQuery+API

QParserPluginしかし、黒点でランククエリを作成または生成する方法がわかりません。

sunspotカスタム クエリを作成する方法を提供します。そのため、類似性を取得して各レコードをランク​​付けするためのクエリを構築する際に助けを得ることができれば (または) そのようなロジックを実装する他の方法があれば、それは素晴らしいことです.
ありがとう!

4

1 に答える 1

0

次のようなことができます:-

def build_query(where_conditions)
  condition_procs = where_conditions.map{|c| build_condition c}

  Sunspot.search(table_clazz) do
    condition_procs.each{|c| instance_eval &c}
    paginate(:page => page, :per_page => per_page)
  end
end

def build_condition(condition)
  Proc.new do
    # write this code as if it was inside the sunspot search block
    keywords condition['words'], :fields => condition[:field].to_sym
  end
end

conditions = [{words: "tasty pizza", field: "title"},
              {words: "cheap",       field: "description"}]

build_query conditions
于 2015-06-03T15:07:31.717 に答える