所有Neo4j的文檔結構給出的節點像這樣的例子:Neo4j的性能
A -> B -> C (me -> friend -> friend_of_friend)
然而,我的結構是一樣的東西:
A <- B -> C (product <- sales -> customer)
凡銷售節點最重要的。但是,當我試圖找到這條路,neo4j需要時間,然後塊。
我可以擁有這樣的結構嗎?我能做些什麼來改善時間嗎?
@EDIT
創建銷售節點:
LOAD CSV WITH HEADERS FROM "file:///Sales" AS r FIELDTERMINATOR ' '
CREATE (:Sales {order: r.Order, orderLine: r.OrderLine, quantity: r.Quantity});
CREATE INDEX ON :Sales(order);
CREATE INDEX ON :Sales(orderLine);
創建產品節點:
LOAD CSV WITH HEADERS FROM "file:///Product" AS r FIELDTERMINATOR ' '
CREATE (:Product {productKey: r.ProductKey, color: r.Color});
CREATE INDEX ON :Product(productKey);
創建客戶端節點:
LOAD CSV WITH HEADERS FROM "file:///Customer" AS r FIELDTERMINATOR ' '
CREATE (:Customer {customerKey: r.CustomerKey, firstName: r.FirstName});
CREATE INDEX ON :Customer(customerKey);
關係:
LOAD CSV WITH HEADERS FROM "file:///Sales" AS r FIELDTERMINATOR ' '
MATCH (sales:Sales {order: r.Order, orderLine: r.OrderLine})
MATCH (customer:Customer{customerKey: r.CustomerKey})
MERGE (sales)-[:CUSTOMER]->(customer);
LOAD CSV WITH HEADERS FROM "file:///Sales" AS r FIELDTERMINATOR ' '
MATCH (sales:Sales {order: r.Order, orderLine: r.OrderLine})
MATCH (product:Product {productKey: r.ProductKey})
MERGE (sales)-[:PRODUCT]->(product);
我試圖做到這一點:
MATCH (p:Product) <- (s:Sales) -> (c:Customer)
WHERE p.color = 'blue'
RETURN p.productKey, p.color, s.order, c.customerKey
PS:說實話,我的結構更加複雜。除了客戶和產品節點之外,我還有「日期」節點和「促銷」節點,所有節點都連接到銷售節點。
您可以粘貼您使用的確切Cypher,並讓我們知道您創建的索引和約束? – InverseFalcon
@InverseFalcon感謝您的回覆。我編輯我的帖子。 – user6712306