我們正在嘗試使用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