是否有关于gremlin'match()'工作原理的文档?

时间:2019-04-10 10:02:56

标签: gremlin

我正在用遍历“ match()”的方式来编写gremlin查询。似乎某些模式匹配的行为与其他模式语言不同。

  1. 输入遍历器值如何由模式变量绑定。
g.V('A', 'B').match(__.as('x'), __.as('y')).project('x', 'y')
==>[x:v[A],y:v[A]]
==>[x:v[B],y:v[B]]

我认为模式变量xy没有约束,结果将是

==>[x:v[A],y:v[A]]
==>[x:v[A],y:v[B]]
==>[x:v[B],y:v[A]]
==>[x:v[B],y:v[B]]

似乎已隐式添加了约束x = y

  1. 将模式变量绑定到输入遍历器中未列出的值时。

有时,模式变量绑定到输入中未列出的值:

g.V('A', 'B').match(__.as('x').out().as('y'), __.as('y'))
==>[x:v[A],y:v[B]]
==>[x:v[B],y:v[C]]
==>[x:v[B],y:v[D]]

在此查询中,我们比以前的查询具有更多的约束。 因此,期望的结果较少,但是通过捕获输入遍历器中不包含的顶点可以提高结果。

当模式变量可以捕获此类顶点时,是否有清晰的文档。

  1. “提供的匹配模式无法解决”

类似查询:

g.V('A', 'B').match(__.as('x').out().as('y'), __.as('z'))
The provided match pattern is unsolvable: [[MatchStartStep(z), MatchEndStep], [MatchStartStep(x), VertexStep(OUT,vertex), MatchEndStep(y)]]
Type ':help' or ':h' for help.
Display stack trace? [yN]y
java.lang.IllegalStateException: The provided match pattern is unsolvable: [[MatchStartStep(z), MatchEndStep], [MatchStartStep(x), VertexStep(OUT,vertex), MatchEndStep(y)]]
    at org.apache.tinkerpop.gremlin.process.traversal.step.map.MatchStep$MatchAlgorithm.lambda$static$0(MatchStep.java:690)
    at org.apache.tinkerpop.gremlin.process.traversal.step.map.MatchStep$CountMatchAlgorithm.apply(MatchStep.java:757)
    at org.apache.tinkerpop.gremlin.process.traversal.step.map.MatchStep$CountMatchAlgorithm.apply(MatchStep.java:723)
    at org.apache.tinkerpop.gremlin.process.traversal.step.map.MatchStep.standardAlgorithm(MatchStep.java:398)

此约束比前一个约束少。 该错误是什么意思。

0 个答案:

没有答案