如何通过sql命令在sphinx上选择前20行按标题权重排序和下20行按标题排序ASC (总共40个结果)在同一sql命令上,但不给出重复的标题输出。
我尝试了这个sql命令,但所有标题结果都是通过WEIGHT()排序的。
$sql = "SELECT *,MAX(WEIGHT()) AS tpw FROM vids_tab
WHERE MATCH('@title " . mysql_real_escape_string( 'fun | funny | today funny' ) . "')
GROUP 5 BY title ORDER BY tpw DESC, title ASC LIMIT 40 OPTION max_matches=40";发布于 2017-03-17 03:55:21
老实说,我真的不认为这在一个查询中是实用的。只需发出两个查询。然后删除应用程序中的任何重复项。
在第二个步骤中,确保结果的数量增加一倍以上,所以即使需要删除20个重复的结果,仍然会有20个。
如果真的想要一个命令,考虑一下需要一个UDF。对于特定的问题,需要知道前20个结果的权重范围(因此可以创建一个虚拟列进行排序(即知道行是否在前20个结果中))
... ORDER BY IF(WEIGHT() BETWEEN topweight AND bottomweight, WEIGHT(), 0 ) DESC , title ASC(这不是一个有效的sphinxQL命令,只是演示了需要模拟什么),所以前20个将按权重排序,non first将获得相同的值,然后按标题排序。
https://stackoverflow.com/questions/42825140
复制相似问题