Neo4J图形算法Cypher投影应仅返回数字?

时间:2018-04-17 19:57:15

标签: neo4j cypher

你好我在Cypher中做了一个图形算法Neo4J请求,它首先找到节点然后找到它们之间的关系:

CALL algo.pageRank.stream('MATCH (u:User{uid:"0ee14110-426a-11e8-9d67-e79789c69fd7"}), 
(ctx:Context{name:"news180417"}), (u)<-[:BY]-(c:Concept)-[:AT]->(ctx) 
RETURN DISTINCT id(c) as id', 
'CALL apoc.index.relationships("TO","user:0ee14110-426a-11e8-9d67-e79789c69fd7") 
YIELD rel, start, end WITH DISTINCT rel, start, end MATCH (ctx:Context) 
WHERE rel.context = ctx.uid AND (ctx.name="news180417" ) 
RETURN DISTINCT id(start) AS source, id(end) AS target', 
{graph:'cypher', iterations:5});

哪个工作正常。但是,当我尝试返回c.uid而非其Neo4J id()时,图表算法不接受它。

这是否意味着我只能在图算法中使用Neo4J ID进行操作?

1 个答案:

答案 0 :(得分:2)

当你使用Cypher projection图表算法程序时,你会传递2个Cypher语句(和一个配置图)。

第一个Cypher语句必须返回一个id变量,其值是节点的本机ID。

第二个Cypher语句必须返回其值也是节点ID的sourcetarget个变量。

所以,是的,您的Cypher语句必须始终返回neo4j本地ID。