min(weight())
和
max(weight())
使用
ThinkingSphinx
. 我试过这个:
results = Work.search(
'example', :ranker => "expr('sum((4*lcs+2*(min_hit_pos==1)+exact_hit)*user_weight)*1000+bm25*20')",
:select => 'min(weight()) as min_weight, max(weight()) as max_weight')
results.context[:panes] << ThinkingSphinx::Panes::WeightPane
SELECT min(weight()) as min_weight, max(weight()) as max_weight
FROM `work`
WHERE MATCH('example')
LIMIT 0, 20
OPTION ranker=expr('sum((4*lcs+2*(min_hit_pos==1)+exact_hit)*user_weight)*1000+bm25*20')
如果我直接对sphinx运行上面的sphinx表达式,它会工作,但是
Work.search
呼叫错误:
undefined method `constantize' for nil:NilClass
查看代码库后,我发现错误与没有
sphinx_internal_class
在
:select
子句,并且进一步,我现在理解这将是一个问题,因为ThinkingSphinx想要查询
ActiveRecord
等
活动记录
在斯芬克斯询问之后?