gpt4 book ai didi

mysql - sphinx 搜索查询前 20 个按标题 WEIGHT 排序,后 20 个按标题 ASC 排序,无重复输出

转载 作者:行者123 更新时间:2023-11-29 19:14:28 31 4
gpt4 key购买 nike

如何在 sphinx 上通过 sql 命令选择前 20 行按标题 WEIGHT 排序,接下来 20 行按标题 ASC 排序(总共 40 个结果),但不要给出重复的标题输出。

我尝试了这个 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";

最佳答案

说实话,我真的不认为这在单个查询中是实用的。只需发出两个查询。然后删除应用程序中的所有重复项。

在第二个中,确保结果数量增加一倍以上,因此即使需要删除 20 个重复项,仍然会有 20 个。

如果确实需要一个命令,请考虑需要一个 UDF。在特定问题上,需要知道前 20 个结果的权重范围(因此可以创建一个虚拟列进行排序(即知道行是否在前 20 个结果中)

... ORDER BY IF(WEIGHT() BETWEEN topweight AND bottomweight, WEIGHT(), 0 ) DESC , title ASC

(这不是一个有效的 sphinxQL 命令,只是演示需要模拟的内容)因此前 20 个将按重量排序,非第一个将获得相同的值,然后按标题排序。

关于mysql - sphinx 搜索查询前 20 个按标题 WEIGHT 排序,后 20 个按标题 ASC 排序,无重复输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42825140/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com