Я пытаюсь понять API обхода Java Neo4J, но после тщательного чтения я застрял в некоторых моментах.
Что я, кажется, знаю:
Разница между PathExpander
и BranchOrderingPolicy
. Насколько я понимаю, первая говорит о том, какие отношения могут быть исследованы с определенной позиции, а вторая указывает порядок, в котором они должны оцениваться.
Я хотел бы знать следующее:
Правильно ли это понимание и в какой степени, или можно ли его изменить, чтобы дать правильное понимание.
Если верно, то чем
PathExpander
отличается отEvaluator
.Как работают
PathExpander
иBranchOrderingPolicy
. Я хочу спросить,PathExpander
консультируются каждый раз, когда отношение добавляется к обходу, и что он делает с итерацией возвращаемых отношений. Аналогично с порядком веток.Во время обхода, как и когда появляются компоненты
Expander
,BranchOrdering
,Evaluator
,Uniqueness
. В основном я хочу знать алгоритм шаблона, где можно сказать, что первый расширитель запрашивает набор отношений для расширения, а затем проверяется политика заказа, чтобы выбрать один из подходящих ....Если верно, применяется ли политика заказа, указанная в
BranchOrderingPolicy
, только к приемлемым отношениям (после того, как расширитель сделал это). Возможно, так и должно быть.
Пожалуйста, включите что-нибудь еще, что может быть полезно для понимания API.