2012-05-10 398 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);值得建立一個示例數據庫並對此進行試驗,並使您的解決方案具有足夠的靈活性,以便隨着時間改變。

雖然你想要構建一些簡單的東西,但你的用戶將會習慣於趨勢,並且假設它不能像預期的那樣工作,那麼它就會被認爲是中斷的。