gpt4 book ai didi

java - 如何将此密码查询转换为 Java 代码?

转载 作者:行者123 更新时间:2023-11-30 08:29:03 26 4
gpt4 key购买 nike

我有一个 neo4j 图形数据库,我正在使用嵌入式 java,我如何将这个密码查询转换为 java 代码(是否可能)?

查询:

START n=node(*)
MATCH p=n-[rels:INCLUDE*]->m
WHERE ALL (rel IN rels
WHERE rel.status='on')
WITH COLLECT(p) AS paths, MAX(length(p)) AS maxLength
RETURN FILTER(path IN paths
WHERE length(path)= maxLength) AS longestPaths

该查询是在具有STATUS="on"属性的节点之间寻找最长的路径,并返回该路径。

因为我读到使用 neo4j 数据库,从 java api 比从 java 应用程序运行密码查询更快。

所以请帮助我编写 java 代码,它可以完成与此密码查询相同的事情。

提前致谢。

最佳答案

如果您指的是遍历框架,那么这是您最好的选择: http://docs.neo4j.org/chunked/stable/tutorial-traversal.html

您可能希望自己进行性能测试以确定哪个更快。

请原谅我,因为我的 java 有点生疏,我没有办法为您实际测试它。但是我认为这会得到你想要的。

List<Path> longestPaths = null;
int longestLength = 0;

for ( Path position : Traversal.description()
.depthFirst()
.relationships( Rels.INCLUDE )
.relationships( Rels.LIKES, Direction.OUTGOING )
.evaluator( new Evaluator {
public Evaluation evaluate(Path path) {
Relationship r = path.lastRelationship();
if(r != null && "on".equals(r.getProperty("status"))) {
return Evaluation.INCLUDE_AND_CONTINUE;
}

return EXCLUDE_AND_PRUNE;
}
} )
.traverse( node ) )
{
//Given that node is your start node this would be the (WHERE ALL rels status = on)

if(longestPaths == null || longestLength < position.length()) {
longestPaths = new ArrayList<Path>();
longestPaths.add(position);
longestLength = position.length();
}
}

//At this point you should have a collection of the longest paths

关于java - 如何将此密码查询转换为 Java 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19771208/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com