1

我有userscafes还有他们的food_items(列出了一些成分)。到目前为止,我使用 solr 通过ingredients用户喜欢的一些来搜索 food_items。这是根据sunspot 文档使用 sunspot-solr 搜索完成的

此外,我能够收集like-ness到不同咖啡馆的用户的亲戚(基于他访问它的次数,搜索其菜单等)(这是一个动态生成的值)

问题: 我想使用 sunspot solr for rails 显示通过 solr 获取的相同结果(food_items),咖啡馆排名(结果重新排名)(基于用户对咖啡馆的相似性)
这个应用程序托管在 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 回答