如何才能从十亿条推文中找到十大主题标签

bra*_*ter 5 language-agnostic twitter

这是一个有人问我的面试问题,我的答案并不是很好.我想知道是否有人可以帮我理解解决方案:

"你有十亿条推文流入.你将如何找出前10个主题标签?"

谢谢

eri*_*son 6

创建一个地图,使用主题标签作为键,将计数器作为值.

增加收到的每条推文中每个标签的计数器.

检查计数器的值以找到前10名.

您对问题的措辞不包括任何会阻止这种直接解决方案的限制.在面试的情况下,我会要求澄清问题以引出这些限制.

在诸如"它必须以线性时间运行"的约束下,以及"它必须使用恒定量的内存",会出现更多有趣的答案.


我不确定是否存在针对该问题的常量内存解决方案,但我知道一个相关(通常更有用)的问题:识别构成给定部分结果的元素.我把它作为一个类似问题的答案.

(我说,"更有用",因为如果给定项目的总分数低于阈值,则它更可能是真实的"十大"材料.)

  • @brainydexter嗯,要么它可以在标签上保留一个索引(这不会太糟糕),要么保持它没有索引,只能排序.正如你从这个链接中看到的,我在几分钟内写了一篇Java,一台资源特别有限的服务器能够在一秒钟内对500万条记录进行排序.我只能想象数据库服务器会表现得更好.链接:http://ideone.com/Avid7 (2认同)