Graph Neo4J——基于关系强度的图列表提取

Graph Neo4J——基于关系强度的图列表提取,graph,neo4j,relationship,Graph,Neo4j,Relationship,我有一个典型的friend of friend图数据库,即社交网络数据库。要求将所有节点提取为一个列表,以使连接最少的节点在列表中显示在一起,而连接最多的节点在列表中放置得更远 基本上,它要求将一个图表表示为一个列表,我不确定我们是否真的能做到这一点。例如,如果A与强度为10的B相关,B与强度为80的C相关,A与C之间的关系为20 那么如何将其放入列表中? A、 B,C-不,因为A与C的距离相对大于B,事实并非如此 A、 C,B-是的,因为A和B的相关性比A,C和C,B小 有3个节点非常简单,但

我有一个典型的friend of friend图数据库,即社交网络数据库。要求将所有节点提取为一个列表,以使连接最少的节点在列表中显示在一起,而连接最多的节点在列表中放置得更远

基本上,它要求将一个图表表示为一个列表,我不确定我们是否真的能做到这一点。例如,如果A与强度为10的B相关,B与强度为80的C相关,A与C之间的关系为20 那么如何将其放入列表中? A、 B,C-不,因为A与C的距离相对大于B,事实并非如此 A、 C,B-是的,因为A和B的相关性比A,C和C,B小


有3个节点非常简单,但有很多节点-是否可以根据关系强度将它们放在列表中?

好的,我想这可能是您想要的。带权重的最短路径遍历的倒数。如果没有,请告诉我输出应该如何

MATCH p=(n)-[*]-(m)//搜索所有路径
n m在哪里
和ALL(x在节点(p)中,其中长度([x2在节点(p)中,其中x2=x])=1)//这将过滤简单路径
返回[n IN nodes(p)|n.name]作为名称,//将名称取出
将(acc=0,关系(p)| acc+r.STRENCE中的r)减少为总强度//计算通过遵循此路径产生的总强度
按长度排序(p)DESC,总强度ASC//获得最大长度(希望是完整的遍历)和最小强度
限制1

这对于一个大型图来说不是很有效,但我认为它确实是可行的——如果您需要在大型图上提高速度,可能需要使用traversal/graphalgo API最短路径功能。

您能提供更多的示例输入/输出吗?例如,示例查询集是
CREATE(a:Person{id:'01',name:'a'})CREATE(b:Person{id:'02',name:'B'}创建(c:Person{id:'03',name:'c'})创建(d:Person{id:'04',name:'d'})创建(e:Person{id:'05',name:'e'})创建(f:Person{id:'06',name:'f'})
创建(a)-[:与{Strength:30}相关]-(B),(a)-[:与{Strength:60}--(c),(a)[:与{Strength:与{Strength:80}相关的,与{Strength:100}]-(e),(c)-(与{Strength:15}]-(f),(f)-(与{Strength:45}相关的,与{Strength:40}]-(d)
此示例中的每个节点都是通过关系强度连接的-这是数字。现在我如何根据这些节点的强度按降序排列这些节点?此外,您可以编辑问题以避免填写太多注释。谢谢,Wes,但是如果您看到结果,它将显示为[E,B,C,F,D,a]我可以看到E和A之间的距离更远,虽然它们之间没有关系,但我的想法是让密切相关的人距离更远,即E和A应该彼此相邻,E&D应该距离更远。无论如何,我认为这个问题有点早——我试图用更多参数来定义问题陈述eters,当我有更多的细节时,我会在这里发布。我想我得到了我的问题陈述-基本上我想找出neo4j数据库中的频繁数据集,即neo4j中Apriori算法的实现。这在neo4j中是否存在?进一步补充-问题是-我们如何在neo4j中挖掘模式,也就是说,我只想找出所有的模式TERN及其在我的Neo4J数据库中的现有频率,例如A、e、F、g-出现在20张发票中-e、L、A-出现在5张发票中,A、g-出现在2张发票中,等等,即所有模式及其频率-那么我们如何做呢?对于关系数据库-我们实现了类似Apriori(ARules包)的算法,但Neo4J现在是否存在类似的情况?
MATCH p=(n)-[*]-(m) // search all paths
WHERE n <> m
  AND ALL (x IN nodes(p) WHERE length([x2 IN nodes(p) WHERE x2=x])=1) // this filters simple paths
RETURN [n IN nodes(p)| n.name] AS names, // get the names out
  reduce(acc=0, r IN relationships(p)| acc + r.Strength) AS totalStrength // calculate total strength produced by following this path
ORDER BY length(p) DESC , totalStrength ASC // get the max length (hopefully a full traversal), and the minimum strength
LIMIT 1