【问题标题】:Thinking sphinx results based on model preference基于模型偏好思考 sphinx 结果
【发布时间】:2014-02-12 10:39:03
【问题描述】:

我有两个模型:“A”和“B”,并且想使用 Thinking sphinx 从它们中搜索对象,但我想要模型“A”的所有结果,然后是“B”。我怎样才能做到这一点? 我将以下选项传递给 sphinx 查询

{:match_mode=>:extended, :sort_mode=>:extended, :star=>true, :order=>"@relevance DESC", :ignore_errors=>true, :populate=>true, :per_page=>10, :retry_stale=>true, :classes => [A,B]}

然后使用以下方法获取搜索结果:

ThinkingSphinx.search "*xy*", options

但它给出了混合排序的结果,而我首先需要所有“A”对象。我该怎么做?

【问题讨论】:

    标签: ruby-on-rails thinking-sphinx


    【解决方案1】:

    最简单的方法是为两个模型的索引添加一个属性:

    has "1", :as => :sort_order, :type => :integer
    

    每个型号的字符串中的数字应该不同。然后你的:order 参数变为:

    :order => 'sort_order ASC, @relevance DESC'
    

    【讨论】:

    • 这是一个不错的 hack,在很多地方都很有用。现在,我使用 field-weights 选项来更加重视“A”模型对象。谢谢。
    猜你喜欢
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多