max_edge_returned_per_vertex 是否能够结合 N STEPS 使用?

max_edge_returned_per_vertex 这个参数是一个全局设置
有没有什么办法能够设置GO N STEPS 时, 每一跳的具体数量上限?

谢谢!

目前是只能全局限制的,包括采样,针对每一跳的限制还不支持,后面我们会考虑在 2.0 版本中结合 LIMIT 等语法来实现。

max_edge_returned_per_vertex 是针对稠密点用的
LIMIT 不行吗?

limit 怎么写? 比如限定第一跳200, 第二跳 100

$var1 = GO FROM 1 OVER edge YIELD edge._dst AS id | limit 200;
GO FROM $var1.id OVER edge YIELD edge._dst | limit 100;

https://docs.nebula-graph.com.cn/manual-CN/2.query-language/2.functions-and-operators/limit-syntax/

你可以搜索看看这几个关键词:
LIMIT
ORDER BY
GO
管道
自定义变量

1 个赞

第二步好像有问题? 第一步只返回200没问题, 但是第二步应该返回 第一步的数量*100, 并且需要限制第一步返回的每一个节点只能返回100个

这种情况一个query我也搞不定了。
要不你把第一个结果先返回给应用,然后再单独发第二个这样?
交给应用程序特别组装下第二个query

1 个赞
  • nebula 版本:1.2
  • 部署方式:分布式
  • 硬件信息
    • SSD
    • 内存 64G

请问一下 max_edge_returned_per_vertex 这个参数在 find all path from vid1 to vid2 over edge1 upto 3 steps 会生效吗? 目前这个参数没有修改过,在进行find all path 时会出现storaged OOM。

会生效的

像这种语句
GO FROM ‘T40_600519’ OVER E66,E67,E68,E69,E70,E71,E74,E75,E76,E77,E78,E79 BIDIRECT YIELD edge._dst AS id | limit 200;
匹配多条边时,怎么返回边的类型与终点,边的方向?

_type

OVER E66,E67,E68,E69,E70,E71,E74,E75,E76,E77,E78,E79 BIDIRECT
每条数据应该只是其中一条边,
这个yield后面怎么写?

case when吗

go 语句不支持,因为没办法把结果聚合到同一列。
match 是可以的。

MATCH (v:tag)-[e:E66|E67|E68]-(n) RETURN type(e),n