У меня есть огромный граф, который плотно связан, и я пытался использовать структуру двунаправленного обхода Neo4j для эффективного обнаружения пути между двумя узлами. Буду признателен, если кто-нибудь сможет объяснить роль maxDepth в методе sideSelector. Единственное объяснение, которое я смог найти, находится в javadoc, и оно очень расплывчато для меня. Описание в javadoc: maxDepth — необязательный параметр максимальной глубины для бокового селектора. Почему максимальная глубина важна для SideSelector? Потому что он знает обе стороны обхода в любой заданной точке.
Как знание глубины влияет на SideSelector?
Мой текущий код выглядит так:
BidirectionalTraversalDescription description = graphDb.bidirectionalTraversalDescription().
startSide(graphDb.traversalDescription()
.depthFirst()
.uniqueness(Uniqueness.NODE_PATH)
.expand(new RelsPathExpander(xxxx))
.evaluator(Evaluators.toDepth(3))).
endSide(graphDb.traversalDescription()
.depthFirst()
.uniqueness(Uniqueness.NODE_PATH)
.expand(new RelsPathExpander(xxxx))
.evaluator(Evaluators.toDepth(3)))
.collisionEvaluator(new Evaluator() {
@Override
public Evaluation evaluate(Path path) {
return Evaluation.INCLUDE_AND_CONTINUE;
}
}).sideSelector(SideSelectorPolicies.LEVEL, 100);
Спасибо!