首页 > 解决方案 > Neo4j - 具有关系权重的递归查询

问题描述

我正在构建一个工具,使用户能够向其他用户推荐一系列在线课程。

在由此产生的数据的背后,我想深入了解最推荐的课程序列是什么。这是模型的一部分:

在此处输入图像描述

在此图中,绿色数字是权重,显示有多少人推荐了一个又一个课程(例如:655 人推荐在 Intro to Prob 之后参加斯坦福大学的 ML)

节点中的recs字段是课程推荐的绝对数量(例如:Stanford ML 已被 1000 个用户按顺序推荐)

我想做的是从最终目标开始,找出最推荐的先决条件。

该算法可能会像这样工作:

Function fancy_algo (node, graph)
    If (no prereqs OR prereq weight is very low)
        Return graph
    Get all incoming nodes
    For each incoming node subject
        MR = most recommended pre-req
        Append MR to graph
        fancy_algo(MR, graph)

希望进行斯坦福机器学习的人的最终状态可能如下所示:

在此处输入图像描述

注意在“Intro to CS”之后我们没有包括“代数”,因为它的前置权重非常低(4567 个中有 20 个)。

这是可以用 Cypher 管理的吗?我将如何开始?

标签: neo4jcypher

解决方案


推荐阅读