代码之家  ›  专栏  ›  技术社区  ›  thomasrutter

对于web应用程序,在多个页面上分离嵌套讨论的最佳方法是什么?

  •  2
  • thomasrutter  · 技术社区  · 17 年前

    我的应用程序中的注释可以嵌套无限级别,这种结构是用我认为是邻接关系表来表示的,这是一个单独的表,其中包含每对具有任何上升/下降关系的行。该关系表有CHILDID、PARENTID和LEVEL,其中级别2表示“曾祖父母”,以此类推。

    • 按日期将结果拆分为页面,而不管其在树中的位置如何,这样即使某个日期范围内的所有评论没有与其父级一起出现,它们也会一起出现。与父评论发布时间相似的任何评论都将出现在同一页面上,在这种情况下,我们可以将其显示为“嵌套”的,但也会有与父评论分离的评论。这可能是可以接受的——这是YouTube评论中的做法——比其父级晚得多的评论不会出现在与其父级相同的页面上(如果父级不在最新页面上),而是与其他最新评论一起出现。

    • 第三种选择是像Slashdot一样,它不将评论分成页面,而是有一个大树——为了保持页面大小的可控性,它开始剔除低评级的评论。

    这三种系统中的一些以某种方式限制了嵌套级别——这很容易做到,一旦我们在X个级别上递归,其他所有东西都可以组合在一起,就像它们是兄弟姐妹一样。例如,YouTube评论只呈现到一个级别。其他系统有时会在5个左右的级别后说“嵌套级别超过”。

    2 回复  |  直到 17 年前
        1
  •  2
  •   Michael Zuschlag    17 年前

    我假设你想要嵌套评论的原因是因为你的用户倾向于一次阅读一个感兴趣的话题。也就是说,你有理由相信用户会创建连贯的思想链,和/或在一个线程中讨论的内容会引起一些用户的兴趣,但不会引起其他用户的兴趣。

    如果是这样的话,我不知道为什么你会想按日期在页面上任意分割一个线程(选项1)。使用一个页面来剔除低评价的评论(选项3)似乎有点苛刻,可能会阻止用户发表评论。如果你有像SlashDot这样的受众群体,这可能是一件好事,但对于访问率更高的网站来说,这可能并不理想。

    我怀疑用户倾向于在最大的线程中发布无关的评论,这是用户不想费心四处滚动以找到线程末尾或找到更合适的线程的产物。通过自动压缩长线程,将所有线程的根显示在一个可管理长度的页面上,用户可以轻松扫描感兴趣的线程,并在需要时添加到其中。

        2
  •  0
  •       17 年前

    我认为你需要的是在数据库中存储分层数据。 Article at sitepoint Article at MySQL's website