Titan多重ID查询

时间:2015-11-16 01:01:20

标签: java titan gremlin

通过ID的集合查询Titan顶点集合的最佳方式是什么?

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

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

pub fn process(&mut self, line: &str, book_id: &'a str) {
    {
        let page_c = self.get_page(book_id);
        println!("page_c {}", page_c);
    } // page_c ceases to exist here, so the borrow of self ends
    for history in self.histories.iter() {
        println!("histories...");
    }
}

或者这个:

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

但我无法找到的方法是将Titan列入名单并进入一个电话, 在Java中执行此操作的最佳方法是什么?

修改

换句话说,我正在寻找SQL for(String userId: usersList) { tg.query().has("UUID", userId).vercities().iterator(); } 运算符的等价方式 - 但是在titan语法中:

IN

3 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

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

对于唯一字段也使用复合titan索引,因为它更快。

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