我浏览了所有在网上找到的解决方案。
在我的情况下,无论是独立的还是聚合的都不起作用。是否有一种使用hook_query_alter()删除重复项的方法?
在视图中运行的sql查询如下:
SELECT node.changed AS node_changed, node.nid AS nid, SUM(search_index.score * search_total.count) AS score
FROM
{node} node
LEFT JOIN {search_index} search_index ON node.nid = search_index.sid
LEFT JOIN {search_total} search_total ON search_index.word = search_total.word
INNER JOIN {search_dataset} search_dataset ON search_index.sid = search_dataset.sid AND (search_index.type = search_dataset.type)
WHERE ((( (search_index.type = 'node') AND (search_dataset.data LIKE '% saadan %' ESCAPE '\\') AND (search_dataset.data LIKE '% goer %' ESCAPE '\\') AND (search_dataset.data LIKE '% du %' ESCAPE '\\') ))AND(( (node.status = '1') AND (node.type NOT IN ('nodetype')) )))
GROUP BY search_index.sid, score, node_changed, nid
HAVING (( (COUNT(*) >= '2') ))
ORDER BY node_changed DESC
LIMIT 10 OFFSET 0
最后注:
我还知道通过链接到hook_views_pre_render()来删除内容的解决方案,但我并不认为这是一个解决方案,因为它会破坏您的结果。
如果我将'GROUP BY search_index.sid,score,node_changed,nid‘替换为GROUP nid,则查询非常有效。我怎样才能做到这一点?
发布于 2013-07-22 12:55:14
希望这能帮到你,
使用不同或聚合,您可以解决您的问题。可以应用组BY或DISTINCT来删除重复记录。
去看看台阶。
使用不同
使用聚合
https://drupal.stackexchange.com/questions/79965
复制相似问题