2011-08-25 68 views
3

可能重複:
How is designed/programmed the reddit comment system?嵌套註釋背後的算法是什麼?

我想了解背後的reddit的留言顯示算法。如何評論與其孩子等有關?它們如何存儲在數據庫中?

比方說

comment1 
-comment2 
--comment3 
-comment4 
--comment5 
--comment6 
---comment7 
----comment8 
comment9 

如何顯示comment5這是comment4這是註釋1後後?這種測序背後的想法是什麼?以及如何將它們與數據庫相關聯?

+1

每個評論可能有一個「父母」列,其中包含父母的評論ID。 –

+3

既然你提到Reddit,你可能想看看這個:http://stackoverflow.com/questions/4278003/how-is-designed-programmed-the-reddit-comment-system/4278052#4278052 – EdoDodo

+0

我不能說Python。有_after .s和@s ... – ilhan

回答

2

AS @Rafe說,實際的存儲是很容易的,這將是這樣的:

| id | name | parent | 
| 1 | comment1 | 0 | 
| 2 | comment2 | 1 | 
| 3 | comment3 | 2 | 
| 4 | comment4 | 1 | 
| 5 | comment5 | 4 | 
| 6 | comment6 | 4 | 
| 7 | comment7 | 6 | 
| 8 | comment8 | 7 | 
| 9 | comment9 | 0 | 

當然,實際上從中獲取信息是(可以說)難的部分。當然,您可以通過以下方式獲得評論的子女:SELECT * FROM table WHERE parent='4'將爲您提供評論4的所有子女。但計算孩子,按等級順序列出所有的孩子會有點困難。其他答案可能會提供更多的信息。

2

@Rafe Kettler注意到的很多 - 評論可以有父列。但是,如果您想要使用更詳細和更深入的算法作爲實現模式,請參閱this message threading algorithm

3

它被稱爲等級。每條評論要麼沒有家長評論,要麼有一條家長評論。這樣,您就可以顯示每個「頂級」的評論(感謝他們沒有父母意見的事實),然後爲他們每個人的孩子的意見等等,等等

和數據庫結構可能是這樣的comments表:

  • id字段識別單個註釋,
  • parent_id設定爲父ID或未設置(設置爲NULL或設置爲0),
  • created - 時間戳創建註釋,
  • content - 實際評註內容,
  • 您需要任何其他領域,