Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.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

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_Cypher - Fatal编程技术网

Neo4j 具有无限关系的密码查询将花费永远的时间

Neo4j 具有无限关系的密码查询将花费永远的时间,neo4j,cypher,Neo4j,Cypher,我正在尝试为纽约地铁实现一个简单的图形数据库 总共有493个站点,带有标签:STOP和属性{name:“STOP name”},例如: 总共有566个关系[:DIRECT{dist:…}] 我试图得到的是一个节点列表和它们之间的总和(dist),从一个特定的停止点开始,只返回距离某个总和(dist)远的节点,当我限制关系的数量时,cypher查询可以完美运行,例如: match p=(n:STOP {name:"Van Cortlandt Park - 242 St"})-[:DIRECT*1.

我正在尝试为纽约地铁实现一个简单的图形数据库

总共有493个站点,带有标签:STOP和属性{name:“STOP name”},例如:

总共有566个关系[:DIRECT{dist:…}]

我试图得到的是一个节点列表和它们之间的总和(dist),从一个特定的停止点开始,只返回距离某个总和(dist)远的节点,当我限制关系的数量时,cypher查询可以完美运行,例如:

match p=(n:STOP {name:"Van Cortlandt Park - 242 St"})-[:DIRECT*1..10]-(m:STOP) 
WITH n,m,     
     reduce(acc=0, x in relationships(p)| acc + x.dist) as x 
WHERE x < 5 
return n.name, m.name, x 
limit 10
match p=(n:STOP{name:“Van Cortlandt Park-242 St”})-[:DIRECT*1..10](m:STOP)
与n,m,
将(acc=0,关系(p)| acc+x.dist)中的x减少为x
其中x<5
返回n.name,m.name,x
限制10
当我指定-[:DIRECT*]时,问题就开始了- 大约10分钟后,查询几乎失败,出现未知错误

以下是具有限制的查询分析:

==> +--------------------------------------------------------------------------------+
==> | n.name                        | m.name                    | x                  |
==> +--------------------------------------------------------------------------------+
==> | "Van Cortlandt Park - 242 St" | "238 St"                  | 0.33               |
==> | "Van Cortlandt Park - 242 St" | "231 St"                  | 0.78               |
==> | "Van Cortlandt Park - 242 St" | "Marble Hill - 225 St"    | 1.1800000000000002 |
==> | "Van Cortlandt Park - 242 St" | "215 St"                  | 1.6400000000000001 |
==> | "Van Cortlandt Park - 242 St" | "207 St"                  | 2.02               |
==> | "Van Cortlandt Park - 242 St" | "Dyckman St"              | 2.47               |
==> | "Van Cortlandt Park - 242 St" | "191 St"                  | 2.89               |
==> | "Van Cortlandt Park - 242 St" | "181 St"                  | 3.3400000000000003 |
==> | "Van Cortlandt Park - 242 St" | "168 St - Washington Hts" | 4.04               |
==> | "Van Cortlandt Park - 242 St" | "157 St"                  | 4.5600000000000005 |
==> +--------------------------------------------------------------------------------+
==> 10 rows
==> 
==> ColumnFilter(0)
==>   |
==>   +Slice
==>     |
==>     +Extract(0)
==>       |
==>       +Filter(0)
==>         |
==>         +ColumnFilter(1)
==>           |
==>           +Extract(1)
==>             |
==>             +ExtractPath
==>               |
==>               +Filter(1)
==>                 |
==>                 +TraversalMatcher
==> 
==> +------------------+------+--------+-------------+--------------------------------+
==> |         Operator | Rows | DbHits | Identifiers |                          Other |
==> +------------------+------+--------+-------------+--------------------------------+
==> |  ColumnFilter(0) |   10 |      0 |             | keep columns n.name, m.name, x |
==> |            Slice |   10 |      0 |             |                   {  AUTOINT3} |
==> |       Extract(0) |   10 |     40 |             |                 n.name, m.name |
==> |        Filter(0) |   10 |      0 |             |               x < {  AUTOINT2} |
==> |  ColumnFilter(1) |   10 |      0 |             |           keep columns n, m, x |
==> |       Extract(1) |   10 |    110 |             |                              x |
==> |      ExtractPath |   10 |      0 |           p |                                |
==> |        Filter(1) |   10 |     10 |             |            hasLabel(m:STOP(4)) |
==> | TraversalMatcher |   10 |     45 |             |              m,   UNNAMED52, m |
==> +------------------+------+--------+-------------+--------------------------------+
==>+--------------------------------------------------------------------------------+
==>| n.name | m.name | x|
==> +--------------------------------------------------------------------------------+
==>|“范考特兰特公园-242街”|“238街”| 0.33|
==>|“范考特兰特公园-242街”|“231街”| 0.78|
==>|“范考特兰特公园242街”|“大理石山225街”| 1.1800000000000002|
==>|“范考特兰特公园-242街”|“215街”| 1640000000000001|
==>|“范考特兰特公园-242街”|“207街”| 2.02|
==>|“范考特兰特公园-242街”|“戴克曼街”| 2.47|
==>|“范考特兰特公园-242街”|“191街”| 2.89|
==>|“范考特兰特公园-242街”|“181街”| 3.34000000000000003|
==>|“范考特兰特公园-242街”|“168街-华盛顿Hts”| 4.04|
==>|“范考特兰特公园-242街”|“157街”| 4.5600000000000005|
==> +--------------------------------------------------------------------------------+
=>10行
==> 
==>列过滤器(0)
==>   |
==>+片
==>     |
==>+提取(0)
==>       |
==>+过滤器(0)
==>         |
==>+列过滤器(1)
==>           |
==>+摘录(1)
==>             |
==>+提取路径
==>               |
==>+过滤器(1)
==>                 |
==>+遍历匹配器
==> 
==> +------------------+------+--------+-------------+--------------------------------+
==>|运算符|行|数据命中数|标识符|其他|
==> +------------------+------+--------+-------------+--------------------------------+
==>| ColumnFilter(0)| 10 | 0 | |保留n.name、m.name、x列|
==>|切片| 10 | 0 |{AUTOINT3}|
==>|摘录(0)| 10 | 40 | | n.name,m.name|
==>|过滤器(0)| 10 | 0 | | x<{AUTOINT2}|
==>|列过滤器(1)| 10 | 0 | |保留n、m、x列|
==>|摘录(1)| 10 | 110 | x|
==>|提取路径| 10 | 0 | p ||
==>|过滤器(1)| 10 | 10 | | hasLabel(m:停止(4))|
==>| TraversalMatcher | 10 | 45 | m,未命名52,m|
==> +------------------+------+--------+-------------+--------------------------------+

谢谢

你能分享你的数据库吗?你有:STOP(name)的索引吗?问题是,如果你不指定一个限制和方向,它将生成大量的路径,并且当它找到你的10条路径时,它不会立即停止。您是否尝试了带有
cypher 2.1.实验性前缀的新查询计划器?@MichaelHunger,在:STOP(name)上创建索引-之前已经完成,所以是的。完全同意你的观点,是的,我尝试添加了“cypher 2.1.实验”——同样的结果。我不确定导出图形的最佳方式是什么,以便我可以共享它。另外,我已经读了很多书,如果我使用Java Core,我可能会得到更好的结果-你认为呢?只需压缩graph.db目录并将其放在dropbox上。你很可能会更快地使用核心api,我只是想看看为什么这个密码查询在你的数据集上速度太慢。请通过neo4j.org将db发送给michael
==> +--------------------------------------------------------------------------------+
==> | n.name                        | m.name                    | x                  |
==> +--------------------------------------------------------------------------------+
==> | "Van Cortlandt Park - 242 St" | "238 St"                  | 0.33               |
==> | "Van Cortlandt Park - 242 St" | "231 St"                  | 0.78               |
==> | "Van Cortlandt Park - 242 St" | "Marble Hill - 225 St"    | 1.1800000000000002 |
==> | "Van Cortlandt Park - 242 St" | "215 St"                  | 1.6400000000000001 |
==> | "Van Cortlandt Park - 242 St" | "207 St"                  | 2.02               |
==> | "Van Cortlandt Park - 242 St" | "Dyckman St"              | 2.47               |
==> | "Van Cortlandt Park - 242 St" | "191 St"                  | 2.89               |
==> | "Van Cortlandt Park - 242 St" | "181 St"                  | 3.3400000000000003 |
==> | "Van Cortlandt Park - 242 St" | "168 St - Washington Hts" | 4.04               |
==> | "Van Cortlandt Park - 242 St" | "157 St"                  | 4.5600000000000005 |
==> +--------------------------------------------------------------------------------+
==> 10 rows
==> 
==> ColumnFilter(0)
==>   |
==>   +Slice
==>     |
==>     +Extract(0)
==>       |
==>       +Filter(0)
==>         |
==>         +ColumnFilter(1)
==>           |
==>           +Extract(1)
==>             |
==>             +ExtractPath
==>               |
==>               +Filter(1)
==>                 |
==>                 +TraversalMatcher
==> 
==> +------------------+------+--------+-------------+--------------------------------+
==> |         Operator | Rows | DbHits | Identifiers |                          Other |
==> +------------------+------+--------+-------------+--------------------------------+
==> |  ColumnFilter(0) |   10 |      0 |             | keep columns n.name, m.name, x |
==> |            Slice |   10 |      0 |             |                   {  AUTOINT3} |
==> |       Extract(0) |   10 |     40 |             |                 n.name, m.name |
==> |        Filter(0) |   10 |      0 |             |               x < {  AUTOINT2} |
==> |  ColumnFilter(1) |   10 |      0 |             |           keep columns n, m, x |
==> |       Extract(1) |   10 |    110 |             |                              x |
==> |      ExtractPath |   10 |      0 |           p |                                |
==> |        Filter(1) |   10 |     10 |             |            hasLabel(m:STOP(4)) |
==> | TraversalMatcher |   10 |     45 |             |              m,   UNNAMED52, m |
==> +------------------+------+--------+-------------+--------------------------------+