I am trying to understand Neo4J java traversal API but after a thorough reading I am stuck on certain points.
What I seem to know:
Difference between PathExpander
and BranchOrderingPolicy
. As per my understanding, the former tells what relationships are eligible to be explored from a particular position and the latter specifies the ordering in which they should be evaluated.
I would like to know the following things:
Whether or to what extent this understanding is correct or if it can be altered to give the correct understanding.
If correct, how is
PathExpander
different fromEvaluator
.How does
PathExpander
andBranchOrderingPolicy
work. What I intend to ask is, isPathExpander
consulted everytime a relationship is added to the traversal and what does it do with the iterable of relationships returned. Similarly with branch ordering.During traversal how and when do the components
Expander
,BranchOrdering
,Evaluator
,Uniqueness
come into picture. Basically I wish to know the template algorithm where one would say like first expander is asked for a collection of relationships to expand and then ordering policy is consulted to select one of the eligibles....If correct, does the ordering policy specified by
BranchOrderingPolicy
apply on the eligible relationships only(after expander has done). Perhaps it must be.
Please include anything else that might be helpful in understanding the API.