泰坦多ID查询

Titan multiple ID query

通过一组 id 查询 Titan 以获取一组顶点的最佳方法是什么?

假设我有一些 UUID 为 属性 的节点,我想通过一组 ID 获取这些顶点 - 最好的查询方法是什么?

我可以遍历 id 集合并通过这个 API 逐个顶点获取所需的顶点(在此示例中,userId 是我在 id 集合上循环的对象):

for(String userId: usersList) {     
    tg.getVertices("UUID", userId).iterator();
}

或者这个:

for(String userId: usersList) {    
    tg.query().has("UUID", userId).vercities().iterator();
}

但我找不到一种方法可以给 Titan 列表并在一次通话中接通, 在 Java 中执行此操作的最佳方法是什么?

编辑

换句话说,我正在寻找 SQL IN 运算符的等效方法 - 但在 titan 语法中:

SELECT * 
FROM Users
WHERE City IN ('fe4e2e2c-8638-4081-b6de-e10252e638e7', 'fess2c-8638-4rgf-b6de-e102sdf3447');

你要找的是com.tinkerpop.blueprints.Contains谓词:

tg.query().has("UUID", Contains.IN, usersLists).verticies().iterator();

如果您使用的是 Titan 1.0(即 TinkerPop 3.x),您可以使用 Gremlin 更直接地执行此操作:

gremlin> g.V().has('name', within('marko','josh'))
==>v[1]
==>v[4]

最好将其添加到索引中,然后检索它,因为通过迭代器搜索图形效率不高,如果您认为要在该字段上进行搜索,最好将其添加到索引中。

对唯一字段也使用复合 titan 索引,因为它要快得多。

另一种方法是对图进行分区,以便您知道在哪里搜索它,然后使用迭代器。