我们正在尝试使用Traversal API检索给定的一组公司节点,只有提供产品节点列表中包含的所有产品的公司节点。先前使用Cypher的尝试表现不佳。在这个例子中:Neo4j Traversal API限制?
Company 1 provides product A and B
Company 2 provides product A and B and C
Company 3 provides product A and C
如果所有的3家公司中包括企业名单查询,产品A和C在查询产品列表,我们希望只返回了连队2和3,因为它们提供的产品A和C这里是我们的查询:
for (Path position : Traversal.description()
.depthFirst()
.uniqueness(Uniqueness.NODE_GLOBAL)
.relationships(Rels.PROVIDES_PRODUCT, Direction.OUTGOING)
.evaluator((Evaluator) Evaluators.includeWhereEndNodeIs(productNodes))
.traverse(companyNodes))
如果我们使用我们找回所有提供任何产品在productNodes
列表(所有3家公司在上面的例子中)的公司Evaluator.includeWhereEndNodeIs(productNodes)
。如果我们使用Evaluators.includeIfContainsAll(productNodes)
评估程序,如果产品节点列表中有多个产品,我们不会收回任何公司节点。
任何建议表示赞赏。
你可以添加原始密码查询吗?这会让你更容易理解你想达到的目标。 – 2013-02-20 07:58:58
Michael - 这是我们原来的Cypher查询 - 我们只希望返回的公司提供列表中的所有产品,并且此语法不起作用:START company = node(10719,37496,37417,37464),product = node(37512 ,65094)WHERE公司 - >产品RETURN公司,产品;谢谢 – 2013-02-25 14:09:45