Neo4j GDS通过Cypher创建图时能否自定义关系类型名称
可以在GDS创建图的阶段指定自定义关系名称,你之前的写法没有生效是因为缺少了一个必要的配置参数。
使用gds.graph.create.cypher创建Cypher投影时,GDS默认不会自动识别返回结果里的type字段作为关系类型,所有关系默认都会归入__ALL__这个通用类型下。你需要通过配置项显式告知GDS用哪个返回字段作为关系类型的取值来源。
修改后的创建图语句如下:
CALL gds.graph.create.cypher( "tags", "MATCH (t:Tag) RETURN id(t) AS id, labels(t) AS labels", " MATCH (t:Tag) WITH collect(t) as nodes UNWIND nodes as n UNWIND nodes as m WITH n, m WHERE id(n) < id(m) MATCH (n)-[:TAGGED_ON]->(v:Video)<-[:TAGGED_ON]-(m) RETURN id(n) AS source, id(m) AS target, count(v) AS weight, 'TAGGED_ON_THE_SAME_VIDEO' AS type ", // 新增配置项,指定用返回的type字段作为关系类型 { relationshipTypeProperty: 'type' } )
完成创建后可以执行以下语句验证关系类型是否符合预期:
CALL gds.graph.list('tags') YIELD relationshipTypes RETURN relationshipTypes
如果返回结果中包含TAGGED_ON_THE_SAME_VIDEO,再执行导出操作,新生成的tags数据库里的关系类型就会直接为你指定的自定义值,不需要后续再用APOC重命名。
内容的提问来源于stack exchange,提问作者David Chung
相关产品推荐
相关产品推荐

