GET SUBGRAPH查找一跳子图,却返回了多跳的结果

  • nebula 版本:v2.0.1
  • 部署方式:分布式
  • 安装方式:源码编译
  • 是否为线上版本:Y
  • 问题的具体描述:

按照我的理解,GET SUBGRAPH 1 STEPS FROM 559509069981450900 这条语句的返回结果中,应该仅包含关于559509069981450900的出边或者入边,这些直接与559509069981450900相连的边,构成1 STEP的SUBGRAPH。

然而,在我们的数据上运行该语句,结果集的_edges列共返回了两行,第一行全部是关于559509069981450900的出边或者入边,也就是我期望的结果,然而第二行却全部是与559509069981450900无关、却与第一行结果中出现的一跳邻居有关的出边或入边。

也就是说,GET SUBGRAPH 1 STEPS FROM 559509069981450900查出了关于559509069981450900的二跳子图。

具体_edges返回结果见附件。

请问这是合理的吗?或者有什么方法可以让GET SUBGRAPH语句不进行这样的返回?
因为这个问题会导致一次查询需要读取了太多与结果无关的节点的属性,耗时过长。_edges.txt (46.7 KB)

关于读取太多属性,如果可能可以考虑升级到 2.6 哈(2.x 的升级不算麻烦),新版本里默认 SUBGRAPH 只取结构不取属性(取属性需要指明 WITH PROP

关于结果里的edges,确实,默认输出里第n列的 _vertexcies 是从上一行的边的对端得到的点,_edges 是从这一列的 _vertexcies 扫出来的边。所以第二列的 _edges 确实不是你 Get 1 steps 语义想要的信息,但是只有边,没有点(但是因为他们是和上一跳 vertex 存在一起,所以扫出来不是特别昂贵,如果用新版本不带 with prop 就更好了)

合理的 ,参考 GET SUBGRAPH - Nebula Graph Database 手册

2 个赞

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。