如何设计使用ElasticSearch搜索用户和朋友?

时间:2012-12-07 00:24:56

标签: search solr lucene elasticsearch

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

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

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

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

    1. 用户最多可以拥有5万个朋友。

    2. 用户可以随时更改其姓名和用户名

2 个答案:

答案 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都必须重新编制索引。