2

在我们的应用程序中,我们有用户,用户可以有朋友(想想 Facebook,关系是双向的)。我们希望能够:

  1. 按名称或用户名在站点范围内搜索用户

  2. 允许每个用户按姓名或用户名搜索她的朋友

设计这个的最佳方法是什么,请记住:

  1. 一个用户最多可以有 50,000 个朋友。

  2. 用户可以随时更改他们的姓名和用户名

4

2 回答 2

2

我将建议另一种我认为可以帮助您解决此问题的技术。您可以查看Neo4j(图形数据库),它将帮助您轻松建立关系(用户朋友)和遍历图形。

您还可以将 Lucene 作为单独的索引引擎与 Neo4j 一起使用并进行全文搜索。在这里检查。

此外,您可以在下面找到一个可能会有所帮助的示例。

PS:我与 Neo4j 没有任何关系。

于 2012-12-07T07:56:49.827 回答
1

有如下文件:

type:friendship
parties_name:[mark zuckerburg, bill gates]
parties_id:[1, 753634] (what if many people are named bill gates)

因此,您的网络中的每个友谊都会有一个这样的行,并且当我们的特定mark zuckerburg更新他的友谊(和姓名)时,parties_id:1必须重新索引所有行。

于 2012-12-07T14:08:21.367 回答