我使用思考 - 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等。
我的语法在哪里错了?
答案 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
子句中),但我非常很怀疑。