最理想的海王星查询,用于获取距离最短的所有相关顶点

时间:2019-01-04 12:31:10

标签: amazon-web-services gremlin tinkerpop tinkerpop3 amazon-neptune

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

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

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

1 个答案:

答案 0 :(得分: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()