java - Neo4j Traversal API limitation? -
we trying utilize traversal api retrieve, given set of company nodes, company nodes provide products contained in product nodes list. prior attempts @ using cypher not performing well. in example:
company 1 provides product , b company 2 provides product , b , c company 3 provides product , c if 3 companies included in company list query, , product , c in product list in query, want returned company 2 , 3 since provide product , c. here our query:
class="lang-java prettyprint-override">for ( path position : traversal.description() .depthfirst() .uniqueness(uniqueness.node_global) .relationships(rels.provides_product, direction.outgoing) .evaluator((evaluator) evaluators.includewhereendnodeis(productnodes)) .traverse(companynodes)) if utilize evaluator.includewhereendnodeis(productnodes) companies provide of products in productnodes list(all 3 companies in above example). if utilize evaluators.includeifcontainsall(productnodes) evaluator, don't company nodes if there more 1 product in product nodes list.
any suggestions appreciated.
i'm not sure if it's possible in 1 statement, nest them. company2 , company3 returned in next case:
for (final path position : traversal .description() .depthfirst() .uniqueness(uniqueness.relationship_level) .relationships(reltype.provides_product, direction.outgoing) .evaluator( (evaluator) evaluators.endnodeis(evaluation.include_and_continue, evaluation.exclude_and_continue, producta)).traverse(company1, company2, company3)) { (final path position2 : traversal .description() .depthfirst() .uniqueness(uniqueness.relationship_level) .relationships(reltype.provides_product, direction.outgoing) .evaluator( (evaluator) evaluators.endnodeis(evaluation.include_and_continue, evaluation.exclude_and_continue, productc)).traverse(position.startnode())) { system.out.println(position2.startnode()); } } java neo4j graph-traversal
No comments:
Post a Comment