【问题标题】:Titan multiple ID queryTitan多ID查询
【发布时间】:2015-11-16 01:01:19
【问题描述】:

通过 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 运算符的等效方法 - 但在泰坦语法中:

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

【问题讨论】:

    标签: java titan gremlin


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        还可以为唯一字段使用复合泰坦索引,因为它更快。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-12-04
          • 2013-09-02
          • 1970-01-01
          • 2017-10-16
          • 2021-04-23
          • 2016-08-08
          • 2012-11-06
          • 1970-01-01
          相关资源
          最近更新 更多