2

我需要获取到给定顶点距离最短的所有相关顶点,这些距离不超过某个最大距离值。

我想出了以下最大距离为 4 的查询,但是否可以进一步优化此查询?也许在 Neptune 中有一些用于图距离搜索的算法?

g.V('XXX').repeat(both().dedup()).emit().times(4) .project('id', 'count').by(id()).by(path().count(local))

4

1 回答 1

2

我看到了两个会影响查询性能的问题。

  1. 它使用路径跟踪(昂贵,因此很慢)
  2. 它重新访问初始顶点,您可能不希望它出现在结果中

这就是我要做的:

g.V('XXX').as('x').
  repeat(both().dedup().sack(assign).by(loops())).
    emit().
    times(4).
  where(neq('x')).
  project('id', 'count').
    by(id).
    by(sack()) // distances start at 0; if you want the distance to
               // start at 1, use sack(sum).by(constant(1)).sack()
于 2019-01-07T15:16:25.557 回答