GremlinPipeline与Titan和OrientDB返回不同的结果

时间:2014-01-02 13:42:57

标签: java shortest-path gremlin orientdb titan

我正在尝试使用以下代码找到GremlinPipeline的最短路径:

final GremlinPipeline<String, List> pathPipe = new GremlinPipeline<String, List>(v1)
            .as("similar")
            .both("similar")
            .loop("similar", new PipeFunction<LoopBundle<Vertex>, Boolean>() {
                //@Override
                public Boolean compute(LoopBundle<Vertex> bundle) {
                    return bundle.getLoops() < 5 && bundle.getObject() != v2;
                }
            })
            .path();

我有两个场景。第一个是数据存储在Titan图数据库中,第二个存储在OrientDB图数据库中。当我在第一个场景中使用上面的代码时,我得到一个列表,每个条目对应于连接顶点v1和v2的路径。第一个条目始终是最短路径...例如

[v[4], v[8]]
[v[4], v[20868], v[8]]
[v[4], v[4], v[8]]
[v[4], v[25800], v[8]]

(4是v1的id,8是节点2的id)

但是当我将上述代码用于orientDB数据时,我会得到不同的结果,例如

[v[#9:0], v[#9:0], v[#9:0]] 
[v[#9:0], v[#9:0], v[#9:1]]  
[v[#9:0], v[#9:0], v[#9:45]] 
[v[#9:0], v[#9:0], v[#9:55]]

(#9:0是v1的id,#9:1是v2的id)

请注意,我使用以下代码打印结果:

Iterator iter = pathPipe.iterator();
    while(iter.hasNext()) {
        System.out.println(iter.next());
    }

编辑:我使用orientdb-1.6.1,titan 0.4.1,blueprints-core-2.5.0和blueprints-orient-graph-2.5.0

0 个答案:

没有答案