Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
三角形计数/聚类Neo4j_Neo4j_Graph Algorithm_Triangle Count - Fatal编程技术网

三角形计数/聚类Neo4j

三角形计数/聚类Neo4j,neo4j,graph-algorithm,triangle-count,Neo4j,Graph Algorithm,Triangle Count,我想在Neo4j图中测试三角形聚类。以下是一个示例: CREATE(a:Person { name: "a" })-[:FRIENDS]->(b:Person {name : "b"}), (a)-[:WORKS_AT]->(p:Business {name : "Mcdonalds"}), (b)-[:WORKS_AT]->(p), (c:Person { name: "c"})-[:FRIENDS]->(a), (c:Person { name: "c"})-[:FR

我想在Neo4j图中测试三角形聚类。以下是一个示例:

CREATE(a:Person { name: "a" })-[:FRIENDS]->(b:Person {name : "b"}),
(a)-[:WORKS_AT]->(p:Business {name : "Mcdonalds"}),
(b)-[:WORKS_AT]->(p),
(c:Person { name: "c"})-[:FRIENDS]->(a),
(c:Person { name: "c"})-[:FRIENDS]->(b),
(d:Person { name: "d"})-[:FRIENDS]->(a)
return *

MATCH (c:Person {name: "c"}),(p:Business {name : "Mcdonalds"}), (d:Person { name: "d"}),(b:Person {name : "b"})
CREATE (c)-[:WORKS_AT]->(p),
(e:Person { name: "e"})-[:FRIENDS]->(c),
(d)-[:FRIENDS]->(c),
(d)-[:FRIENDS]->(e),
(f:Person { name: "f"})-[:FRIENDS]->(b),
(g:Person { name: "g"})-[:FRIENDS]->(b),
(i:Person { name: "i"})-[:FRIENDS]->(b),
(h:Person { name: "h"})-[:FRIENDS]->(b),
(j:Person { name: "j"})-[:FRIENDS]->(b),
(k:Person { name: "k"})-[:FRIENDS]->(b)
return *

MATCH (g:Person {name: "g"}),(f:Person {name: "f"}),(c:Person {name: "c"}), (e:Person {name: "e"})
CREATE (g)-[:FRIENDS]->(c),
(f)-[:FRIENDS]->(c),
(g)-[:FRIENDS]->(e)
return *
在我的示例图中,我希望根据节点a、b、c与麦当劳的:works\u关系选择节点a、b、c,然后查看那些具有:friends关系的节点,并使用它们进行三角形计数。我得到的部分答案是:

CALL algo.triangleCount(
  'MATCH (p:Person)-[]-(:Person)-[:WORKS_AT]-(:Business {name : "Mcdonalds"}) RETURN id(p) as id',
  'MATCH (p1:Person)-[:FRIENDS]->(p2:Person) RETURN id(p1) as source, id(p2) as target',
  {concurrency:4, write:true, writeProperty:'triangle',graph:'cypher', clusteringCoefficientProperty:'coefficient'})
YIELD loadMillis, computeMillis, writeMillis, nodeCount, triangleCount, averageClusteringCoefficient  
但我希望有一些更接近于中的流示例中列出的内容,其中包含nodeId(在本例中为node.name)、三角形和系数的细分

我已经接近了:

CALL algo.triangleCount.stream(
  'MATCH (p:Person)-[]-(:Person)-[:WORKS_AT]-(:Business {name : "Mcdonalds"}) RETURN id(p) as id',
  'MATCH (p1:Person)-[:FRIENDS]->(p2:Person) RETURN id(p1) as source, id(p2) as target',
  {concurrency:4, write:true, writeProperty:'triangle',graph:'cypher', clusteringCoefficientProperty:'coefficient'})
YIELD nodeId, triangles, coefficient 
MATCH (p:Person) WHERE id(p) = nodeId
RETURN p.id as name, triangles, coefficient  ORDER BY coefficient DESC
这是我想出的答案。我缺少的关键是理解TriangalCount和TriangalCount.stream之间的区别。流实际上分析数据,而普通三角形计数仅提供性能、计数等统计信息

CALL algo.triangleCount.stream('match (p:Person)-[*1..2]-(b:Business) return p', '[]', {concurrency:4})
YIELD nodeId, triangles, coefficient
MATCH (p:Person) WHERE id(p) = nodeId
RETURN p.name AS name, triangles, coefficient
ORDER BY triangles