【问题标题】:How P.test(V value) in Titan graph traversal query works?Titan图遍历查询中的P.test(V值)如何工作?
【发布时间】:2016-09-26 12:11:36
【问题描述】:

遇到一个场景,我需要使用 GraphTraversal api 编写一个 Titan 查询,它有各种子句,如 in、contains、within 等。

为了形成所需的子句,我使用了 P.within(..)、P.inside(..)、P.test(..) 等谓词。下面是遍历实例的示意图

traversal.has("field1", P.within(new String[]{"value1", "value2"})).
            has("field2", P.test((r1, r2) -> {
                    return ((String)r1)).contains((String)r2));
                }, "someVal"));

我想了解 Titan 内部如何评估此查询? 加载内存中的所有顶点后,它会评估所有谓词吗?

【问题讨论】:

    标签: java titan gremlin tinkerpop3


    【解决方案1】:

    P.within 这样的标准谓词将尽可能优化(在您的示例中,如果您的索引超过field1,Titan 会使用它)。另一方面,自定义谓词无法优化;正如你所说,Titan 会将所有顶点加载到内存中,然后应用过滤谓词。

    【讨论】:

      猜你喜欢
      • 2016-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多