2013-10-27 84 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

相关问题