2013-05-09 56 views
0

我有以下多個被調用的密碼查詢被多次調用。使用Index查找返回多個節點在密碼中

start n=node:MyIndex(Name="ABC") 
return n 

然後在其他地方的代碼

start m=node:MyIndex(NAME="XYZ") 
return m 

我的數據庫在Azure中託管等我有延遲/性能問題。爲了加速這個過程,並減少多次往返,我想將多個Cypher查詢合併爲一個。

實際上,我在查找中找到了10多個節點,但爲了簡單起見,我決定在下面僅顯示兩個節點的示例。

start n=node:MyIndex(Name="ABC"), m=node:MyIndex(NAME="XYZ") 
return n, m 

我的目標是讓我可以在一次往返而不是10+。如果在全部節點上的索引查找成功,它將成功運行。但是,如果一個索引查找失敗,則Cypher查詢返回零行,即使是。我希望我會在缺少的節點上獲得n或m的NULL等價物。但是,沒有運氣。

請建議我做錯了什麼和任何解決方法來減少往返。非常感謝!

回答

1

您可以使用參數化查詢與lucene syntax,例如:

START n=node:MyIndex({query}) return n 

{'query':'Name:(ABC XYZ)'} 

,這裏的名字的列表與你正在尋找空間分隔的名字字符串參數化。

+0

謝謝。這會給我的節點,但它不會幫助我確定哪些失蹤。例如,我將無法知道n或m是否丟失。其次,如果我有兩個不同的索引呢? – Anshul 2013-05-09 19:18:34

+0

您可以找出客戶端缺少的名稱。 你是什麼意思的不同指標?你能詳細說明你的問題嗎? – 2013-05-09 22:15:24

+0

不同的索引可以表示不同類型的節點。下面是一個例子。 m =節點:MyFriendIndex(NAME =「XYZ」)或m =節點:MyClassmateIndex(NAME =「XYZ」)等等。 – Anshul 2013-05-10 03:36:07

相關問題