tinkerpop3
tinkerpop3 copied to clipboard
Search should be a P-predicate (match.any(), match.exact(), etc.)
I noticed this in the documentation.
graph.search("hell*", Match.ANY).count()
If a P
-predicate is created for Match.ANY
(and the others) then, when the TraversalStrategy
that folds has()
-steps into BlazeGraphStep
, it can do what it needs with the P
-predicate and thus, the following would work:
g = graph.traversal()
g.V().has("key",matches.any("hell*")).count()
The reason that reg-ex (and stuff like geo) are NOT in TinkerPop is that various backends have different semantics for such predicates. Thus, we recommend that graph providers simply create respective P
-predicates and GraphStep
rules for handling the HasContainers
.
-
P
-predicates are easy to implement.
https://github.com/apache/incubator-tinkerpop/blob/master/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/P.java
- How to fold in
has()
-steps.
https://github.com/apache/incubator-tinkerpop/blob/master/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/strategy/optimization/TinkerGraphStepStrategy.java
- How to use the folds for index lookups in a
GraphStep
implementation.
https://github.com/apache/incubator-tinkerpop/blob/master/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/step/sideEffect/TinkerGraphStep.java
@mikepersonick