像主题标签一样实现推特和脸书

这可能看起来很傻。.一个没有研究的问题,但相信我,它不是。我对此做了一些研究。其中之一是以下链接:http://www.quora.com/Twitter-1/How-does-Twitter-implement-hashtags

另外,我不是在这里寻找完整的解决方案。我会做我的辛勤工作,但我只需要一些关于此的指导,只是想知道我应该以哪种方式接近?

我想实现twitter,现在甚至Facebook就像我的应用程序的主题标签一样。因此,用户可以添加带有主题标签的消息,其他人可以搜索它们。比如什么是趋势和什么是相关的。

我们正在我们的存储技术堆栈中使用Mysql,mongo和elasticsearch。任何想法,我怎么能开始工作来实现这个?我需要另一个存储吗?一种方法是,我可以将我的 hastag 存储在 db 中,然后在 Elasticsearch 中对它们进行文本搜索。

在这个领域有更多经验的人可以在这里提出什么建议?


答案 1

MongoDB的开始是解析用户使用的标签的每个消息,并将这些标签放入文档的子数组中。状态更新示例:

彼得

2014年4月29日星期二 12:28:34

朋友们,大家好,我参观了#washington#tradeshow,喝了一顿美味的#coffee

此消息在MongoDB中如下所示:

{
    author: "Peter",
    date: ISODate("2014-04-29 12:28:34"),
    text: "Hello friends, I visited the #tradeshow in #washington and drank a delicious #coffee",
    hashtags: [
        "tradeshow",
        "washington",
        "coffee"
    ]
}

然后,当您创建索引时,您可以快速搜索包含这些主题标签之一的所有邮件。您可能希望按日期对结果进行排序和限制,以便用户首先看到最新的结果。当您将其设置为包含日期的复合索引时,您还可以加快速度。db.collection.hashtags

如何实现“趋势”主题是一个相当复杂的问题。它也是非常主观的,这取决于你认为的“趋势”。Twitter或Facebook用于确定哪些主题是否流行的确切算法不是公开的。根据各种社交媒体分析师的说法,他们也经常更改它们,因此我们可以假设它们现在非常复杂。

这意味着我们无法帮助您自己提出算法。但是,当您已经想到了一种算法来计算主题标签的“时髦性”时,我们可以帮助您找到一个好的实现。


答案 2