与Neo4j的社会建议

时间:2018-05-31 11:20:12

标签: neo4j social-networking graph-databases

我对Neo4j完全陌生, 我会用它来计算我的应用程序中用户之间的隐含亲和力,并将其用于社交推荐。

简而言之,用户提供有关应用程序向他们建议的新闻,对象和旅行的反馈(布尔值)。

所以我应该在我的图表中有4种类型的节点:

  1. 用户
  2. 消息
  3. 物体
  4. 行驶
  5. 每次用户对某个项目(新闻,旅行,对象)给出正面反馈时,此事件应创建两个图形关系:HAS_VOTED(用户到项目),HAS_BEEN_VOTED(项目到用户)。这些关系有一个属性:vote,每次用户给出正反馈时都会增加。

    我的想法是使用此图表为非常用户计算所有其他用户的所有路径(使用长度路径的上限),并使用投票关系属性计算相同长度的路径的分数。

    我的问题是应该在此图中的大量循环和路径,因为在我的解决方案中,每个新的投票事件都会在用户之间创建两个关系,因此需要一个循环。

    这个问题可能会在路径计算过程中导致neo4j出现性能问题?

    这是解决我问题的正确shema设计吗?

    欢迎一些好的建议。

    提前致谢。

1 个答案:

答案 0 :(得分:0)

虽然Neo4j要求关系具有方向性,但它可以轻松地在两个方向上遍历关系。因此,使用2种关系来表示双向关系不需要(并且效率低且繁琐)。

所以,你可以摆脱HAS_BEEN_VOTED,只使用HAS_VOTED关系类型。

网上有很多关于用neo4j提出建议的文章。您应该进行搜索并找到对您有帮助的搜索。

此外,为了让您开始,您可以在Neo4j浏览器中输入此命令,以启动有关个性化推荐的教程(它可能会回答您的大多数问题):

:play http://guides.neo4j.com/sandbox/recommendations