Sphinx 正确的语法与思考狮身人面像
我有一个查询,我想对thinking sphinx运行相同的查询,但是我在Sphinx 正确的语法与思考狮身人面像,sphinx,thinking-sphinx,Sphinx,Thinking Sphinx,我有一个查询,我想对thinking sphinx运行相同的查询,但是我在having子句方面遇到了问题。相关代码如下所示: #technology_index.rb has taggings.tag_id, :as => :tag_id has id, :as => :technology_id #technology.rb search(params[:query], with: { tag_id: params[:filter].values.fl
having
子句方面遇到了问题。相关代码如下所示:
#technology_index.rb
has taggings.tag_id, :as => :tag_id
has id, :as => :technology_id
#technology.rb
search(params[:query],
with: { tag_id: params[:filter].values.flatten },
group_by: :technology_id,
having: "COUNT(`technology_id`)=#{params[:filter].size}"
)
这会引发以下错误(错误消息中的新行是我的):
问题在于具有:
子句,因为如果我删除它,至少查询可以工作。
假设从2.2.1测试版开始(使用2.2.6),(使用3.1.2)。我在文档中找不到任何信息,但如果我尝试类似于
的方法,让“COUNT(*)>1”
起作用,我想,我只是错误地调用了它。使用having:
和TS的正确方法是什么?sphinx似乎仍然不支持类似having:“COUNT('technology_id')={params[:filter].size}“
。无论如何,我的查询使用了
having:“COUNT(*)={params[:filter].size}
作为我使用技术进行分组时,id
只是为了澄清sphinx不支持的计数(列)-实际上它实际上没有空值的概念。但是COUNT(*)可以工作。(即,而不是有问题)
sphinxql: syntax error, unexpected IDENT, expecting '*' near '`technology_id`)=1 LIMIT 0, 20;
SHOW META' - SELECT *, groupby() AS sphinx_internal_group, id AS sphinx_document_id,
count(DISTINCT sphinx_document_id) AS sphinx_internal_count
FROM `technology_core` WHERE MATCH('fibrosis') AND `tag_id` IN (2)
AND `sphinx_deleted` = 0 GROUP BY `technology_id` HAVING COUNT(`technology_id`)=1
LIMIT 0, 20; SHOW META