2013-10-27 85 views
1

我有一套將由用戶聲明的節點(我的意思是用戶輸入一些單詞,那些存在於我的節點中的節點將包含在我的節點集中),並且我想找到這些節點之間存在的最長路徑在neo4j嵌入式java數據庫中,節點(不一定要包括集合中的所有節點,但不應該包括一組節點中不存在的節點)(我不知道什麼是起始節點,所有節點可以是開始節點)在neo4j中找到節點集合(某些節點)之間最長路徑的最佳方法是什麼?

首先,我想也許我必須對這些節點和它們之間的關係做一個子圖,然後找到該子圖中最長的路徑,但我不知道什麼是正確的,最好的事情呢?

然後我想,我可以直接找到節點集之間最長的路徑(可以這樣做嗎?)。

或者如果不能做到這一點,那麼如何找到某些節點(節點集合)的關係並建立一組關係,然後找到關係集合之間最長的路徑?

我想要在性能方面達到最佳且最快的方式,而且我不希望密碼查詢,因爲我使用的是java核心api(它更快),所以請告訴我什麼是最好的方法?

將其視爲具有如此多節點的大型數據庫。

在此先感謝。

回答

0

恐怕除了遍歷整個圖之外,這不能通過任何標準算法來完成。因此,沒有最佳的表現方式。 neo4j沒有內置選項。

這是一個暗號查詢(對不起,我不知道其他的Neo4j輸入語言):

start n1=node(*), n2=node(user) 
match n1--n2 //filter only the just declared user nodes, or any other matching condition 
with n1, n2 
match p=n1-[r:..*]-m, m--n2 //all paths between declared user nodes 
return p 
order by length(r) desc 
limit 1 
+0

感謝烏拉圭回合時間,這太好了。 – fereshteh

相關問題