在我们的应用中,我们有用户和用户可以有朋友(想想Facebook,关系是双向的)。我们希望能够:
按名称或用户名在网站范围内搜索用户
允许每个用户按名称或用户名搜索她的朋友
设计这个的最佳方法是什么,请记住:
用户最多可以拥有5万个朋友。
用户可以随时更改其姓名和用户名
答案 0 :(得分:2)
我将建议另一项技术,我认为这将帮助您解决这个问题。您可以查看Neo4j(图形数据库),它将帮助您轻松建立关系(用户友好)和遍历图。
您还可以将Lucene用作Neo4j的单独索引引擎并进行全文搜索。 Check here.
此外,您可以在下面找到可能有用的示例。
PS:我和Neo4j没什么关系。
答案 1 :(得分: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
都必须重新编制索引。