代码之家  ›  专栏  ›  技术社区  ›  Antonio Caristia

NEO4J的社会建议

  •  0
  • Antonio Caristia  · 技术社区  · 6 年前

    我对Neo4J完全陌生, 我将使用它来计算应用程序中用户之间的隐式关联,并将其用于社交回复。

    简单地说,用户给出应用程序向他们建议的关于新闻、对象和旅行的反馈(布尔值)。

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

    1. 用户
    2. 新闻
    3. 对象
    4. 旅行

    每当用户对某个项目(新闻、旅游、对象)给出正面反馈时,此事件应创建两个关系:has_voted(用户对项目)、has_been_voted(项目对用户)。这些关系有一个属性:投票,每次用户给出正面反馈时,投票都会递增。

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

    我的问题是循环和路径的数量太多,应该在这个图中,因为在我的解决方案中,每个新的投票事件都会创建两个从用户到项目的关系,所以是一个循环。

    在路径计算过程中,这个问题会导致neo4j的性能问题吗?

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

    一些好的建议是受欢迎的。

    提前谢谢。

    1 回复  |  直到 6 年前
        1
  •  0
  •   cybersam    6 年前

    虽然neo4j要求关系是有方向性的,但它可以很容易地在两个方向上遍历关系。因此,不需要使用2个关系来表示双向关系(效率低且繁琐)。

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

    网上有很多关于Neo4J推荐的文章,你应该做一个搜索,找到对你有帮助的。

    此外,要启动您,您可以在Neo4J浏览器中输入此命令,以启动个性化建议教程(它可能会回答您的大部分问题):

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