【问题标题】:Neo4j browser is shutdownNeo4j 浏览器已关闭
【发布时间】:2015-10-19 22:40:42
【问题描述】:

我目前正在使用neo4j 2.2.5。我有大约 3000 万个实际航班和大约数千个机场。我有FlightAirport 节点,还有HAS_FLIGHTFLYING_TO 关系。这些关系连接了两个节点,源Airport 节点通过HAS_FLIGHT 关系连接到Flight 节点,Flight 节点通过FLYING_TO 关系连接到目标Airport

所以我的问题是,当我试图找到从伦敦市到东京市最多 2 个中转机场或中转机场的路径航班时,我的查询将花费 20 多分钟,最后连接丢失。

这是我的查询:

//从伦敦到东京的航线

MATCH path = (london :Airport{city:'London'})-[:HAS_FLIGHT|FLYING_TO*0..6]->(tokyo :Airport{city:'Tokyo'}) RETURN path;

【问题讨论】:

  • 你有:Airport(city)的索引吗?一般来说,有关优化 Cypher 查询的信息,请参阅 this blog post
  • william 是的,我已经创建了索引。

标签: neo4j garbage-collection cypher graph-databases


【解决方案1】:

上面的查询为您提供了最高 6 级的所有路径。在大多数情况下,您只需要最短路径:

MATCH path = allShortestPaths( (london :Airport{city:'London'})-[:HAS_FLIGHT|FLYING_TO*0..6]->(tokyo :Airport{city:'Tokyo'}))
RETURN path;

shortestPathallShortestPaths 的速度要快得多,因为它们会越早越过越长的路径。这对内存和垃圾收集的压力应该会小得多。

还仔细检查威廉在评论中提到的索引。

【讨论】:

  • stefanarmbruster 当我尝试执行该密码时,我得到了Java heap space,并且我已经根据它们的 flight_id 和 airport_id 创建了约束。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多