如何从Titan中提供的属性/键获取Vertex

时间:2015-10-08 19:52:27

标签: java titan

我正在关注Titan文档中的代码GraphOfTheGodsFactory source code我想从图中检索一个顶点,给定一些指定的值/键/属性。

我搜索了文档(我正在使用Titan 0.5.2),并尝试使用不同的函数,它们在执行时提供null。

我尝试的事情,

    `TitanManagement mgmt = graph.getManagementSystem();
    final PropertyKey userid = mgmt.makePropertyKey("userid").dataType(Integer.class).make();
    TitanGraphIndex namei = mgmt.buildIndex("userid",Vertex.class).addKey(userid).unique().buildCompositeIndex();  
    TitanTransaction tx = graph.newTransaction();
    Vertex ver1 = tx.addVertexWithLabel("user");
    ver1.setProperty("userid", "2");
    ver1.setProperty("username", "abc");
    Vertex found = graph.getVertex("2");`

found返回null。

请帮忙!

1 个答案:

答案 0 :(得分:4)

您无法通过这种方式找到Vertex

Vertex found = graph.getVertex("2"); 

该方法通过id查找顶点,但图中没有顶点,其id为" 2"这是一个字符串。现在,因为您有ver1,所以您确实知道Vertex的实际ID,以便您可以这样做:

Vertex found = graph.getVertex(ver1.getId()); 

通常情况下,您并不总是拥有该标识符,因此您希望通过您的域数据和您创建的索引来查找。在这种情况下,您可以:

Vertex found = graph.getVertices("userid","2").next(); 

这将对您的userid媒体资源进行索引查找。由于这实际上会返回Iterator,因此您必须next()关闭结果。显然,在这种情况下,这只返回一个结果,所以不用担心Iterator中的任何其他内容,但你应该在某些实际代码中以某种方式解释这一点。