我试图从现有的7级缩放中创建一个具有5级缩放的地理哈希图。我尝试了以下代码:
FROM GRAPH mergedGraph
MATCH (from)-[via]->(to)
CASE WHEN substring(from.geohash,0,5)=substring(to.geohash,0,5)
THEN
CONSTRUCT
CREATE (h:HashNode{geohash:substring(from.geohash,0,5)})-[COPY OF via]->(h)
ELSE
CONSTRUCT create (:HashNode{geohash:substring(from.geohash,0,5)})-[COPY OF via]->(:HashNode{geohash:substring(to.geohash,0,5)})
END
RETURN GRAPH尽管在密码中这似乎不正确,但我得到了一个例外:
Caused by: org.opencypher.v9_0.util.SyntaxException: Invalid input 'S': expected 'l/L' (line 4, column 4 (offset: 57))在英文单词中,我想:如果开始节点和结束节点共享相同的Geo散列子字符串,那么创建一个具有指向它的关系的节点:

否则创建两个节点:

NB:我正在从事的项目是为APACHE火花设计的CYPHER
发布于 2018-09-30 17:18:38
我用以下步骤解决了我的问题:
1)从现有的图中创建具有5级的图:
//Creation Geohash Graph with level 5 from the initial graph (level 7)
val Level5 = session.cypher("""
| FROM GRAPH mergeGraph
| MATCH (from)-[via]->(to)
| CONSTRUCT
| CREATE (:HashNode{geohash:substring(from.geohash,0,5)})-[COPY OF via]->(:HashNode{geohash:substring(to.geohash,0,5)})
| RETURN GRAPH
""".stripMargin).graph2)从前面的图中复制远程节点:
session.cypher ("""
| CATALOG CREATE GRAPH nodes2 {
| FROM GRAPH session.Level5
| MATCH (n)
| WITH DISTINCT n.geohash AS geohash
|CONSTRUCT
| CREATE (h:HashNode{geohash:geohash})
|RETURN GRAPH
}""".stripMargin)最后:
3)通过从第一个关系复制关系并将它们影响到远程节点来创建远程level5图
val level5= session.cypher("""
FROM GRAPH Level5
| MATCH (from)-[via]->(to)
| FROM GRAPH nodes2
| MATCH (n), (m)
| WHERE from.geohash=n.geohash AND to.geohash = m.geohash
construct
| CREATE (n)-[COPY OF via]->(m)
| RETURN GRAPH
""".stripMargin).graph

https://stackoverflow.com/questions/52538098
复制相似问题