【问题标题】:Thinking Sphinx, sorting and subselects思考狮身人面像,排序和子选择
【发布时间】:2014-08-19 16:36:53
【问题描述】:

我正在使用thinking-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 etc.

附近的其他标记)

我的语法哪里错了?

【问题讨论】:

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


    【解决方案1】:

    我认为您尝试做的事情只有在 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 子句中),但我非常怀疑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多