Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.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
Graph 在子图上使用algo算法_Graph_Neo4j_Cypher_Subgraph - Fatal编程技术网

Graph 在子图上使用algo算法

Graph 在子图上使用algo算法,graph,neo4j,cypher,subgraph,Graph,Neo4j,Cypher,Subgraph,假设我有以下子图(或视图): 如何对上述结果图运行调用algo.louvain.stream 此外,如何在algo.louvain找到的每个社区上运行algo.scc 如果您没有找到(或无法破译),下面是提供的示例: CALL algo.louvain( 'MATCH (p:User) RETURN id(p) as id', 'MATCH (p1:User)-[f:FRIEND]-(p2:User) RETURN id(p1) as source, id(p2) as targe

假设我有以下子图(或视图):

如何对上述结果图运行
调用algo.louvain.stream

此外,如何在
algo.louvain
找到的每个社区上运行
algo.scc

如果您没有找到(或无法破译),下面是提供的示例:

CALL algo.louvain(
  'MATCH (p:User) RETURN id(p) as id',
  'MATCH (p1:User)-[f:FRIEND]-(p2:User)
   RETURN id(p1) as source, id(p2) as target, f.weight as weight',
  {graph:'cypher',write:true});
文档没有明确说明,但是传递给
algo.louvain
的第一个查询指定了
algo.louvain
要考虑的节点集合,第二个查询指定了查询1中指定的节点(或连接到节点)之间的关系

这意味着您必须指定您在问题中提到的空方括号之间的关系类型。如果没有连接节点的东西,算法就无法运行——如果没有顶点的边,它毕竟不是一个图形

另外,无论第二个查询的形状如何,都必须将
返回id(p1)复制为源,id(p2)复制为目标,否则Java将抛出错误

最后,就在每个社区上运行
algo.scc
而言,您需要修改上述查询,以将配置中的
writeProperty
指定为
algo.louvain
。一旦该查询成功运行,在
algo.louvain
运行中考虑的每个节点都将有一个0、1、2等值作为您指定的属性。然后,对于这些社区中的每一个,您都可以使用与上面调用
algo.louvain
相同的结构调用
algo.scc
;但是,在传递给
algo.scc
的第一个查询中,您将指定您所关注的社区。例如(这是基于您的问题而不是文档的即兴提问):

然后,正如文档所建议的,您可以找到具有以下内容的最大分区:

MATCH (u:Person)
RETURN u.partition as partition,count(*) as size_of_partition
ORDER by size_of_partition DESC
LIMIT 1;
或者以您选择的任何方式进一步查询(子)图,因为算法的结果作为属性写入
Person
节点。HTH.

如果您没有找到(或无法破译),下面是提供的示例:

CALL algo.louvain(
  'MATCH (p:User) RETURN id(p) as id',
  'MATCH (p1:User)-[f:FRIEND]-(p2:User)
   RETURN id(p1) as source, id(p2) as target, f.weight as weight',
  {graph:'cypher',write:true});
文档没有明确说明,但是传递给
algo.louvain
的第一个查询指定了
algo.louvain
要考虑的节点集合,第二个查询指定了查询1中指定的节点(或连接到节点)之间的关系

这意味着您必须指定您在问题中提到的空方括号之间的关系类型。如果没有连接节点的东西,算法就无法运行——如果没有顶点的边,它毕竟不是一个图形

另外,无论第二个查询的形状如何,都必须将
返回id(p1)复制为源,id(p2)复制为目标,否则Java将抛出错误

最后,就在每个社区上运行
algo.scc
而言,您需要修改上述查询,以将配置中的
writeProperty
指定为
algo.louvain
。一旦该查询成功运行,在
algo.louvain
运行中考虑的每个节点都将有一个0、1、2等值作为您指定的属性。然后,对于这些社区中的每一个,您都可以使用与上面调用
algo.louvain
相同的结构调用
algo.scc
;但是,在传递给
algo.scc
的第一个查询中,您将指定您所关注的社区。例如(这是基于您的问题而不是文档的即兴提问):

然后,正如文档所建议的,您可以找到具有以下内容的最大分区:

MATCH (u:Person)
RETURN u.partition as partition,count(*) as size_of_partition
ORDER by size_of_partition DESC
LIMIT 1;

或者以您选择的任何方式进一步查询(子)图,因为算法的结果作为属性写入
Person
节点。HTH.

@Top.Deck很高兴听到!:)@顶部。甲板很好听!:)