0

我有一个应用程序可以根据相关性分数向用户显示数据。我可以显示 5 到 7 种不同类型的信息(例如,用户标签、朋友标签、推荐标签、热门标签等)。每种信息类型都是一个单独的 sql 查询。

然后我有一个算法,可以根据每种类型的相关程度对其进行排名。该算法基于几个因素,包括自对特定类型采取行动以来的时间、一种信息类型对另一种信息类型的重要性、一种类型的显示频率等。

一旦它们被排名,我就会在一个提要中向用户展示它们,类似于 Facebook。

我的问题很简单。我需要数据才能通过排名算法运行它,所以从数据库中只提取我需要的数据的最有效方法是什么。

目前,我提取每种信息类型的前 5 个实例,然后对它们进行排名。每条数据都有一个相关性分数,如果我没有足够的结果达到特定的相关性阈值,我会返回数据库中接下来的 5 个。

这种方法的问题在于,我可能会提取太多我从未使用过的故事类型,如果我第一次没有得到我需要的东西,我必须继续返回数据库。

我已经考虑过一个包含所有信息类型和算法的大规模 sql 查询,它可以工作,但这确实是一个巨大的查询,而且我让 mysql 做这么多的处理,我是一般的思维定势Mysql 应该进行数据检索,而我的编程语言 (php) 应该进行处理。

一定有更好的方法!我确定某处有一篇学术文章,但我一直找不到。

感谢堆栈溢出

4

1 回答 1

0

我假设你的意思是信息类型(用户标签、朋友标签等);我建议不要再次针对特定的固定阈值再次获取您的数据,而是稍微更改您的算法。尝试为每种信息类型分配权重,即使您获得了一些低优先级类型的记录,您也不必再次获取它。

于 2013-10-10T07:07:12.937 回答