我有一个应用程序可以根据相关性分数向用户显示数据。我可以显示 5 到 7 种不同类型的信息(例如,用户标签、朋友标签、推荐标签、热门标签等)。每种信息类型都是一个单独的 sql 查询。
然后我有一个算法,可以根据每种类型的相关程度对其进行排名。该算法基于几个因素,包括自对特定类型采取行动以来的时间、一种信息类型对另一种信息类型的重要性、一种类型的显示频率等。
一旦它们被排名,我就会在一个提要中向用户展示它们,类似于 Facebook。
我的问题很简单。我需要数据才能通过排名算法运行它,所以从数据库中只提取我需要的数据的最有效方法是什么。
目前,我提取每种信息类型的前 5 个实例,然后对它们进行排名。每条数据都有一个相关性分数,如果我没有足够的结果达到特定的相关性阈值,我会返回数据库中接下来的 5 个。
这种方法的问题在于,我可能会提取太多我从未使用过的故事类型,如果我第一次没有得到我需要的东西,我必须继续返回数据库。
我已经考虑过一个包含所有信息类型和算法的大规模 sql 查询,它可以工作,但这确实是一个巨大的查询,而且我让 mysql 做这么多的处理,我是一般的思维定势Mysql 应该进行数据检索,而我的编程语言 (php) 应该进行处理。
一定有更好的方法!我确定某处有一篇学术文章,但我一直找不到。
感谢堆栈溢出