1

我正在开发一个系统,该系统必须根据编号实时返回最热门的“文章”。该文章的点击量。

我的第一个想法是为每篇文章存储编号。点击次数与时间。然后我会规范化这个函数,并计算它的一阶导数,这将返回增长率。然后使用二阶导数,我将能够知道它的增长量以及它是否达到某个阈值 -> 将其标记为趋势。

问题是:例如,我可以在一天结束时“离线”执行此操作,但我不知道如何连续执行此操作...

我知道存在诸如 Storm 之类的东西,但我正在寻找与此一样具体的东西(用伪代码编写的算法或解决这个问题的文章,而不是通用的)。

4

1 回答 1

0

跟踪最热门文章的一种简单方法是使用 LRU 缓存。这有效地跟踪其最近访问的元素。频繁访问会将热门文章保留在 LRU 中,而不经常访问的文章则会退出。如果您想优化排名,您可以修改 LRU 以跟踪文章收到的点击次数。

当然,还有更复杂的方法,但这很容易实现,具有很好的计算特性,并且可能会提供类似的响应。

您也可以尝试为每篇文章使用循环缓冲区。一旦缓冲区填满,对文章的每次访问都可用于更新一个变量,该变量指示文章中最旧的命中。由于您知道最新和最旧的命中,因此您可以估计每个时间单位的命中。缺点:大量内存使用,经常访问的文章的统计数据不准确。

同样,您可以将每篇文章与包含<Time,Count>对的链接列表相关联。每次发生命中时,如果自Time. 如果时间过长,请在列表的前面添加一对新的。然后,您可以将链表视为计算导数的数据系列。当您遍历列表时,减少太旧的元素。

于 2015-10-08T20:09:23.467 回答