2014-09-20 119 views
0

數據集包含各種ID,每個ID在不同時間戳和執行者處有許多事件。索引節點和度量Neo4j中的查詢執行時間

例如

ID, DateStamp, Assignment_Group 
ID1, 10:00:00, Group1 
ID1, 11:14:36, Group2 
ID2, 11:23:34, Group2 
ID3, 1:34,23, Group3 

.....

我已經創建了每個屬性的節點,並通過關係聯繫他們作爲

try (Transaction tx = db.beginTx();) { 
    myNode1[i] = db.createNode(); 
    myNode1[i].setProperty("ID", input_data[0]); 
    myNode2[i] = db.createNode(); 
    myNode2[i].setProperty("DateStamp", input_data[1]); 
    relation1=myNode1[i].createRelationshipTo(myNode2[i], OCCURS_AT); 
    relation1.setProperty("occuredAt", "some time"); 
    myNode3[i] = db.createNode(); 
    myNode3[i].setProperty("Assignment_Group", input_data[2]); 
    relation2=myNode1[i].createRelationshipTo(myNode3[i], RESOLVED_BY); 
    relation2.setProperty("ResolvedBy", "some group"); 
    tx.success(); 
} 

我想索引記錄在myNode1 []的基礎上。想知道如果同樣是可能的和如何?

也有可能測量查詢執行時間嗎?目前的做法似乎不太好

long time = System.currentTimeMillis(); 
result = engine.execute("match (n {Incident_ID: 'ID1'}) return n.Incident_ID"); 
System.out.println(System.currentTimeMillis() - time + "ms"); 

在此先感謝。

回答

0

你可以很容易地索引你的節點。您可以提供不同類型的節點標籤並使用模式索引(neo4j 2.0或更高版本)或使用傳統索引。這全部在Neo4j手冊的章節13,1934中描述。

除此之外,您是否真的需要爲日期戳創建節點?考慮將DateStamp屬性放在OCCURS_AT關係上。

+0

謝謝。 @Jim Biard。測量查詢執行時間的正確方法是什麼? – GvanJoic 2014-10-05 06:15:18