我有一个应用程序根据相关性分数向用户显示数据。我可以显示5到7种不同类型的信息(例如用户标签,朋友标签,推荐标签,热门标签等)。每种信息类型都是一个单独的SQL查询。
然后我有一个算法,根据它的相关性对每种类型进行排名。该算法基于几个因素,包括自特定类型采取行动以来的持续时间,一种信息类型对另一种信息类型的重要程度,一种类型的显示频率等等。
排名后,我会向Feed中的用户展示,类似于Facebook。
我的问题很简单。在我通过排名算法运行数据之前我需要数据,因此最有效的方法是从数据库中仅提取我需要的数据。
目前,我拉出每种信息类型的前5个实例,然后对这些实例进行排名。每条数据都获得一个相关性分数,如果我没有足够的结果达到某个相关性阈值,我会回到数据库中查看每个数据的下一个。
这种方法存在的问题是我冒了太多的故事类型,我从来没有使用过,如果我第一次没有得到我需要的东西,我必须继续回到数据库。
我考虑过一个包含所有信息类型的大规模SQL查询。算法,它可以工作,但那真的是一个巨大的查询,他们我有mysql做了这么多的处理,我是一般的思维集,Mysql应该做数据检索和我的编程语言(PHP)应该做处理的东西。
必须有更好的方法!我确定某处有一篇学术文章,但我找不到它。
谢谢Stack Overflow
答案 0 :(得分:0)
我假设你的意思是信息类型(用户标签,朋友标签等);我会建议而不是再次针对特定的固定阈值再次获取数据,更改算法一点。尝试为每种信息类型分配权重,即使您获得了一些低优先级类型的记录,也不必再次获取它。