使用Titan或TinkPop Java api查找顶点/节点

时间:2016-01-04 08:42:45

标签: java titan gremlin tinkerpop

我正在试验泰坦图数据库。我有一点Neo4j的经验。在Neo4j中,有一个非常方便的api用于查询具有特定标签和属性值的顶点/节点。 在Neo4j:

Node node = graph.findNode(label, propertyName, propertyValue);

当然,创建索引是为了加快这个查找过程。

在Titan中,我使用

创建索引
TitanGraphIndex personIdIndex = titanManagement.buildIndex("personId", Vertex.class).addKey(personId).indexOnly(personLabel).unique().buildCompositeIndex();

现在我想用personLabel和特定的personId查找/查询顶点。我该怎么做?在Titan或TinkerPop中是否有相同的Java API来执行此操作?

2 个答案:

答案 0 :(得分:2)

为了利用索引,在查询中包含顶点标签非常重要:

g.V().has(label, propertyName, propertyValue)

对于没有标签约束(indexOnly(label))的索引,以下查询就足够了:

g.V().has(propertyName, propertyValue)

答案 1 :(得分:0)

构建索引后,只要使用索引标签,就会自动遍历它。在您执行此操作的情况下:

Vertex v = graph.traversal().V().has("personId", "123").next();

它将使用索引自动遍历以加快速度。 如果您尝试在没有标记为personId的情况下进行此遍历,则Titan会警告您效率低下。

修改:

如果您要为字符串或单词编制索引,只需快速警告,那么您可能需要查看thisthis。索引单词和字符串时需要一些额外的配置。即您需要使用适当的索引后端设置复合键。