通过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
答案 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索引,因为它更快。
另一种方法是对图表进行分区,以便您知道在哪里搜索它,然后使用迭代器。