2015-06-30 39 views
0

On ThiningSphinx v3如何檢索結合BatchedSearch的搜索結果權重?ThinkingSphinx:使用BatchedSearch查看結果的權重?

im使用一個BatchedSearch如上所述here

batch = ThinkingSphinx::BatchedSearch.new 
batch.searches << Article.search('foo', :select => '*, weight()') 
batch.searches << Article.search(:conditions => {:name => 'bar'}, :select => '*, weight()') 
batch.searches << Article.search_for_ids('baz', :select => '*, weight()') 
batch.populate 
res = batch.searches #=> [[foo results], [bar results], [baz results]] 

在每個這些3個搜索結果集,我想訪問Result Weights但似乎是,權重可以只通過單一的搜索對象來訪問?上面的代碼塊後,我曾嘗試:

res.each do |w| 
w.context[:panes] << ThinkingSphinx::Panes::WeightPane 
end 

res.first.first #is a valid search result 

res.first.first.weight 
#returns error: 
#<NoMethodError: undefined method `weight' for #<Work:0xb2a9a648>> 

回答

1

您需要前窗格添加到每個搜索對象您填充的結果。因此,請嘗試以下代碼:

batch = ThinkingSphinx::BatchedSearch.new 
batch.searches << Article.search('foo', :select => '*, weight()') 
batch.searches << Article.search(:conditions => {:name => 'bar'}, :select => '*, weight()') 
batch.searches << Article.search_for_ids('baz', :select => '*, weight()') 
batch.searches.each do |search| 
    search.context[:panes] << ThinkingSphinx::Panes::WeightPane 
end 
batch.populate 

res = batch.searches 
res.first.first.weight 
+0

更改建議後,我不再收到「未定義的方法」,但是所有搜索結果的weight都返回nil。是否有任何其他配置需要檢索重量?順道感謝您的幫助和偉大的插件。 – joshweir

+1

我的不好,我沒有包括額外的搜索參數來檢索weight()::select =>'*,weight()'。我會更新我的原始問題,以便清楚地說明這些問題。再次感謝。 – joshweir