问题描述
我对Gremlin还是陌生的,我正在尝试提高查询效率。
具有如下所示的图形:
[vertex: label=a] -> [vertex: label=b] -> [vertex: label=c] -> [vertex: label=d]
我需要遍历图,并获得遍历每一步的结果。
例如,从我的基本Vertex中,我可能需要使用标签“ b”获得与之相关的所有内容 并使用标签“ c”获得与“ b”相关的所有内容,依此类推。 / p>
我可以这样单独进行请求:
results1 = g.V('someid').out().hasLabel('b').toList()
results2 = g.V('someid').out().hasLabel('b').out().hasLabel('c').toList()
results3 = g.V('someid').out().hasLabel('b').out().hasLabel('c').out().hasLabel('d').toList()
但是这似乎与直觉相反,并且响应时间开始累积。
我不确定我要寻找的是什么,但是也许可以继续搜索图的子集,而不是每次都从基本顶点开始。
编辑:
我找到了Union步骤,但这似乎将多个小查询合并为一个大查询,我相信最终会导致效率低下,与单独执行所有查询相同。
解决方法
要返回查询去处的path
在Gremlin中非常简单。这是一个使用数据集对航线进行建模的简单示例:
g.V('3').
repeat(out().hasLabel('airport').simplePath()).
until(has('code','AGR')).
limit(5).
path().
by('code')
==>[AUS,JFK,BOM,AGR]
==>[AUS,YYZ,LHR,FRA,EWR,AGR]
您将在此处找到一些相关示例: http://www.kelvinlawrence.net/book/PracticalGremlin.html http://www.kelvinlawrence.net/book/PracticalGremlin.pdf