如何在使用太阳黑子solr的结果集中动态排序记录



我有users, cafes和它们的food_items(其中列出了一些成分)。到目前为止,我使用solr通过用户喜欢的一些ingredients来搜索food_items。这是根据太阳黑子文档

使用太阳黑子-太阳搜索完成的。

另外,我能够收集用户到不同咖啡馆的相对like-ness(基于他访问它的次数,搜索它的菜单等)(这是一个动态值,将在飞行中生成)

问题:我想显示通过solr获取的相同结果(food_items), 咖啡馆排名(结果重新排名)(基于用户对咖啡馆的相似度)使用太阳黑子solr for rails
这个应用程序托管在heroku上,使用websolr

我发现了这些:

https://cwiki.apache.org/confluence/display/solr/Query +评估

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

但我不知道如何在太阳黑子中创建QParserPlugin或生成排名查询。

sunspot提供了一种编写自定义查询的方法。因此,如果我能在构造查询以获取相似性并对每个记录进行排序(或)以任何其他方式实现此类逻辑方面得到帮助,那将是非常好的。
谢谢!

你可以这样做:-

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

相关内容

  • 没有找到相关文章

最新更新