为社交网站创建提要
Posted
技术标签:
【中文标题】为社交网站创建提要【英文标题】:Creating a feed for a social networking site 【发布时间】:2012-02-25 13:26:27 【问题描述】:我正在创建一个社交网站,但无法确定从各种表格中获取数据的最佳方式是在提要中显示。每次存储某些内容时,它都会存储一个时间戳,因此我想知道从按时间戳排序的各种不同表中检索数据的最佳方法,并且每页限制为 20 个结果。理想情况下,我希望 mysql 查询所有不同的表并为我订购和限制它,但是因为不同的表并不都必然相关,并且需要根据表的用途返回不同的数据我不认为这是将成为可能。我当然可以单独查询每个表,但是我如何将所有信息排序和排序到页面中,以便所有不同的实体都在一个有序列表中。我使用的服务器端语言是带有 codeigniter 框架的 php。
有人有什么想法吗?
【问题讨论】:
可以给出表格的一些结构。 【参考方案1】:您能否为从所有单独的表中返回的内容建立一个通用格式?例如,您将编写一个返回 FeedTitle、FeedSummary 和 Timestamp 的查询:
select top 20 *
from (
select a.Title as FeedTitle,
a.A + a.B + a.C as FeedSummary,
a.Timestamp as TimeStamp
from a
union all
select b.Name + ' married ' + b.Spouse as FeedTitle,
b.AtPlace as FeedSummary,
b.TimeStamp as TimeStamp
from b
) as allFeeds
order by TimeStamp desc
不确定确切的 my-sql 语法,这将在 SQL Server 中工作并且应该非常相似。无论如何,这只是伪代码,其想法是您将在数据库中执行一些应用程序逻辑,以希望获得性能提升(因此您不必在 PHP 中对大量数据进行排序)。
另一种方法是返回每个表的最后 20 个,然后让客户端对它们进行排序。所以将它们全部发送到 UI 并让 jQuery 代码显示前 20 个,然后让用户动态选择提要的类型,他们会看到任何一种类型或任何类型组合的前 20 个故事。
【讨论】:
这里有两个非常好的想法,非常感谢我特别喜欢 jQuery 方法,它可以为提要增加额外的维度以上是关于为社交网站创建提要的主要内容,如果未能解决你的问题,请参考以下文章