我正在编写一个社交网络,我需要一种方式来列出最常用的趋势,所有状态都存储在内容字段中,所以我需要做的就是匹配hashtag提到如:#trend1#trend2 #anothertrend用php/mysql发布Twitter风格趋势
并按他们排序,有没有办法我可以用MySQL做到这一点?或者我只能用PHP来做到这一点?
在此先感谢
我正在编写一个社交网络,我需要一种方式来列出最常用的趋势,所有状态都存储在内容字段中,所以我需要做的就是匹配hashtag提到如:#trend1#trend2 #anothertrend用php/mysql发布Twitter风格趋势
并按他们排序,有没有办法我可以用MySQL做到这一点?或者我只能用PHP来做到这一点?
在此先感谢
我认为最好将标签存储在专用表中,然后对其执行查询。 所以,如果你有一个下表布局
trend | date
你就可以得到使用下面的查询趋势:
SELECT COUNT(*), trend FROM `trends` WHERE `date` = '2012-05-10' GROUP BY trend
18 test2
7 test3
谢谢,我认为这可能是继续进行的最佳方式。 –
创建主题标签与状态相关联的表。
选择最近一段时间的所有状态更新 - 比如最后半小时 - 加入hashtag关联表并按hashtag分组。
每组的计数都表示“趋势”。
你应该使用PHP代码可能提取的哈希标签,然后存储它们在你的数据库中与帖子内容分开。这样您就可以直接查询它们,而不必在每次排序时解析内容。
趋势背后的数学有点复杂;机器学习可能有点过分,但您可能需要通过一些示例来解决问题。
如果你使用@ deadtrunk的示例代码,你会错过在过去的半小时内发生的趋势;如果你以@ eggyal为例,你会错过整天保持强劲的趋势,但在最后半小时内却平静下来。
这个问题的经典解决方案是使用派生函数(http://en.wikipedia.org/wiki/Derivative);值得建立一个示例数据库并对此进行试验,并使您的解决方案具有足够的灵活性,以便随着时间改变。
虽然你想要构建一些简单的东西,但你的用户将会习惯于趋势,并且假设它不能像预期的那样工作,那么它就会被认为是中断的。
[机器学习](http://en.wikipedia.org/wiki/Machine_learning)不是一件简单的事情,可以用几句话来解释。所以把它当作一个真正的火箭科学* – zerkms
不是很有帮助,但可以...... –
它应该有足够的帮助来理解没有一个简单的方法来做到这一点。要实现甚至接近你想要的东西,你需要学习很多东西 – zerkms