0

我正在使用 Sphinx 和 ThinkingSphinx 来搜索和排序我的用户记录。我已经编写了自己的(相当复杂的)方法供 Sphinx 在对结果进行排序时使用,结果搜索代码如下所示:

users = User.search('',
 :without => {:id => id},
 :select => "<long SphinxQL expression> as result_weight",
 :order => 'result_weight desc'
)

所有这一切都很好,但我希望能够通过调用users.first.result_weight或类似的方式查看这个表达式对于我的每个结果的值。

我读了一些关于 ThinkingSphinx 的“窗格”,它可以用来向结果中添加字段,但我不知道如何使用它们来添加这个值。

如何才能做到这一点?

编辑:版本信息:

  • ThinkingSphinx 3.0.4
  • 狮身人面像 2.0.8
  • 导轨 3.2.11
  • 红宝石 1.9.2p125
4

1 回答 1

1

现有的 AttributesPane 将使您可以访问此值:

users = Users.search(
  :without => {:id => id},
  :select  => "... as result_weight",
  :order   => 'result_weight DESC'
)

users.context[:panes] << ThinkingSphinx::Panes::AttributesPane
users.each do |user|
  puts user.sphinx_attributes['result_weight']
end
于 2013-08-05T23:05:58.160 回答