2014-06-26 155 views
1

我正在使用py2neo並嘗試傳遞匹配方法之間的參數(標籤),但我無法弄清楚語法。在瀏覽器中我會用這樣的:有沒有辦法通過參數匹配neo4j標籤

MATCH n 
where n:`Name` 
RETURN n 

這是我的Python代碼,在那裏我試圖做類似的比賽:

def similar_noder(a): 

try: 
    graph_db = neo4j.GraphDatabaseService(url) 
    query = neo4j.CypherQuery(graph_db, 
    """CYPHER 2.0 
     MATCH n  
     where (n:`{z}`) 
     RETURN id(n) 
     """) 
    result = query.execute(z=a) 
    for r in result:   
     label = ", ".join(str(e) for e in (r.values[0]))#label 
     print label    
except Exception as e: 
    print e 

在這種情況下,「一」是標籤「名稱「我試圖通過和匹配。我試圖找到所有具有標籤名稱的節點。

+1

[參數化標籤]可能的副本(http://stackoverflow.com/questions/21834113/parameterizing-labels) –

+0

@StefanArmbruster好,這是一個無賴。看起來這是不可能的。 – user2338089

+2

這不是一個無賴。不同的標籤可能會導致完全不同的查詢計劃,因此使用標籤參數沒有意義。您可以始終使用字符串連接或使用構建器對應用程序端的cypher語句進行參數化,例如Cypher DSL。 –

回答

2

的東西,你可以做,當你沒有太多的節點來搜索就是利用這樣的:

MATCH (n) 
WHERE {z} IN labels(n) 
RETURN n 

但它不會那麼快,因爲Cypher支架不能優化它,如果它不」在編譯時不知道標籤。

+0

這對我想要做的事情來說已經足夠了。謝謝! – user2338089

相關問題