思考狮身人面像,排序和子选择

时间:2014-08-19 16:36:54

标签: ruby-on-rails ruby-on-rails-3.2 thinking-sphinx

我使用思考 - sphinx gem(3.1.0)来实现搜索功能。我想使用我的模型的文本属性来对结果进行排序,例如:属性属性设置为'笑脸'第一。 这是我使用的语法:

Model.search(query, 
             select: "*, (SELECT COUNT(*) FROM models WHERE models.property = 'smiley') AS prop",
             order: "prop desc, created_at desc")

这一切对我来说都很好,但机器总是正确的,并且它给出了这个错误信息:

  

sphinxql:语法错误,意外SELECT,期待IDENT(或11   其他令牌)附近有' SELECT COUNT(*)FROM等。

我的语法在哪里错了?

1 个答案:

答案 0 :(得分:0)

我认为您尝试做的事情只适用于Sphinx 2.2.3或更高版本(即将字符串属性过滤添加为功能时)。如果您已经得到了,那么以下内容应该会有效:

Model.search query,
  select: "*, weight() as rank, IF(property = 'smiley', 1, 0) as smiley",
  order:  "smiley DESC, rank DESC"

可能可以使用早期版本的Sphinx(假设它在技术上不是过滤器,因为它不在WHERE子句中),但我非常很怀疑。