2012-05-10 159 views
0

我正在编写一个社交网络,我需要一种方式来列出最常用的趋势,所有状态都存储在内容字段中,所以我需要做的就是匹配hashtag提到如:#trend1#trend2 #anothertrend用php/mysql发布Twitter风格趋势

并按他们排序,有没有办法我可以用MySQL做到这一点?或者我只能用PHP来做到这一点?

在此先感谢

+0

[机器学习](http://en.wikipedia.org/wiki/Machine_learning)不是一件简单的事情,可以用几句话来解释。所以把它当作一个真正的火箭科学* – zerkms

+0

不是很有帮助,但可以...... –

+0

它应该有足够的帮助来理解没有一个简单的方法来做到这一点。要实现甚至接近你想要的东西,你需要学习很多东西 – zerkms

回答

1

我认为最好将标签存储在专用表中,然后对其执行查询。 所以,如果你有一个下表布局

trend | date 

你就可以得到使用下面的查询趋势:

SELECT COUNT(*), trend FROM `trends` WHERE `date` = '2012-05-10' GROUP BY trend 

18 test2 
7 test3 
+0

谢谢,我认为这可能是继续进行的最佳方式。 –

1
  1. 创建主题标签与状态相关联的表。

  2. 选择最近一段时间的所有状态更新 - 比如最后半小时 - 加入hashtag关联表并按hashtag分组。

  3. 每组的计数都表示“趋势”。

2

你应该使用PHP代码可能提取的哈希标签,然后存储它们在你的数据库中与帖子内容分开。这样您就可以直接查询它们,而不必在每次排序时解析内容。

3

趋势背后的数学有点复杂;机器学习可能有点过分,但您可能需要通过一些示例来解决问题。

如果你使用@ deadtrunk的示例代码,你会错过在过去的半小时内发生的趋势;如果你以@ eggyal为例,你会错过整天保持强劲的趋势,但在最后半小时内却平静下来。

这个问题的经典解决方案是使用派生函数(http://en.wikipedia.org/wiki/Derivative);值得建立一个示例数据库并对此进行试验,并使您的解决方案具有足够的灵活性,以便随着时间改变。

虽然你想要构建一些简单的东西,但你的用户将会习惯于趋势,并且假设它不能像预期的那样工作,那么它就会被认为是中断的。