xqgzh
1
在官方文档中, 说明N TEPS是N跳, 但是却没有说明具体是指第N跳, 还是从1-N的所有跳?
所以我参考官方文档写了下面这个语句:
GO 2 STEPS from 301 OVER friend BIDIRECT YIELD friend._src, friend._dst, friend._type;
然后发现返回的结果中, 包含了第1跳和第二跳的所有边(包含正反向), 我理解是根据返回的字段, 语句内部做了去重处理, 由于同时包含了_src, _dst, _type 三个参数, 所以去重的结果就是把所有的边都包含进去了
所以, 有两个问题比较疑惑, 希望官方能够澄清:
-
edge 的隐含属性 _type 其实就是 edgeId, 如果这个值是正的,表示是正向, 如果是负的则表示反向, 这样理解正确吗?
-
如果同时指定 _src, _dst, _type 三个参数, 是不是就可以返回所有的边了?
上述语句是执行在 1.0.rc4 版本上
期待官方回复, 谢谢!
在官方文档中, 说明N TEPS是N跳, 但是却没有说明具体是指第N跳, 还是从1-N的所有跳?
只有N跳的数据
edge 的隐含属性 _type 其实就是 edgeId, 如果这个值是正的,表示是正向, 如果是负的则表示反向, 这样理解正确吗?
_type 是edgeType,正向的是表示出边,反向表示入边
如果同时指定 _src, _dst, _type 三个参数, 是不是就可以返回所有的边了?
_src, _dst, _type这三个参数是边上的默认属性。只有符合条件的边返回。
xqgzh
3
你确认只有N跳吗? 不是1-N跳的数据? 我专门通过Studio试了下, 发现GO 2 STEPS 是把所有的边都返回了
xqgzh
6
这与我看到的结果不符, 假设有如下边
101->201->301
按照上述语句, “GO 2 STEPS from 301 OVER friend BIDIRECT YIELD friend._src, friend._dst, friend._type;” 会返回:
src, dst, type
101, 201, -27
201, 301, -27
其中 201 -> 301 其实是N=1时的结果, 但是 N=2时也返回了
正向的第一跳是101->201, 第二跳201->301, 返回201->301
返回的第一跳是301->201, 第二跳是201->101 返回201->101
结果应该是
201->301
201->101
xqgzh
8
你说得对, 确实返回的结果是
201, 301, 27
201, 101, -27
但是我理解你说的“只返回第N跳的数据”是指只返回 “201->101”, 而不会返回 201->301
你查询语句不是带了BIDIRECT 吗?
这个表示查找正向边和反向边。
你把BIDIRECT 去了,只查找正向边,结果就是201, 301, 27。
xqgzh
10
再次使用下述模型, 以4001为目标,做了验证:
1001 → 2001 → 3001 → 4001 → 5001 → 6001 → 7001
go 3 steps from 4001 over friend BIDIRECT yield friend._src as src, friend._dst as dst, friend._type as type;
返回结果如下:
结论是: 当指定返回_src, _dst, _type 时, GO N STEPS 会返回 1-N之间的, 以4001为中心的所有正反边
双向查询时,本次查询到的边的src和dst都会作为下一次查询的起点
RC4的显示结果有点迷, 可以用最新的版本试一下, 结果会清晰的多.
steam
15
这个帖子有些历史了,建议你重新开一个帖子呢, 这边要先行关闭帖子了。你可以在新帖子上附上这个帖子的链接。