Java Neo4j节点连接
您好,我正在尝试创建一个简单的neo4j数据库。我有一个for循环,它为目录中的每个文件创建一个新节点Java Neo4j节点连接,java,neo4j,Java,Neo4j,您好,我正在尝试创建一个简单的neo4j数据库。我有一个for循环,它为目录中的每个文件创建一个新节点 for(file f : files){ Node document = graphDb.createNode(); document.setProperty( "name", f.toString().trim()); graphDb.getReferenceNode().createRelationshipTo(document, Matri
for(file f : files){
Node document = graphDb.createNode();
document.setProperty( "name", f.toString().trim());
graphDb.getReferenceNode().createRelationshipTo(document, MatrixRelationshipTypes.REFRENCE);
那很好。然后,我尝试为文件中找到的每个名称创建一个节点:
Node pName = graphDb.createNode();
pName.setProperty("name", name.toString());
pName.createRelationshipTo(document, MatrixRelationshipTypes.CONTAINS_NAME);
问题是它为找到的每个名称都创建了一个节点,我知道这是我的代码告诉它的。我真正想要的是,如果其中一个名称不存在,它就创建一个节点。如果其中一个名称确实存在,则将其链接到它所在的两个文档
有什么想法吗???你想用一个。还有一些方法可以处理索引(在事务结束时)
Index name Index=graphDb.Index().forNodes(“名称”);
公共节点getOrCreateNode(字符串名称){
找到的节点=nameIndex.get(“name”,name).getSingle();
如果(find!=null)返回find;
节点名称Node=graphDb.createNode();
nameNode.setProperty(“名称”,名称);
添加(nameNode,“name”,name);
返回nameNode;
}
然后还可以使用通配符(Lucene搜索语法)查询节点索引
IndexHits nodes=nameIndex.query(“name:Jo*”);
Index<Node> nameIndex = graphDb.index().forNodes("names");
public Node getOrCreateNode(String name) {
Node found = nameIndex.get("name",name).getSingle();
if (found!=null) return found;
Node nameNode = graphDb.createNode();
nameNode.setProperty("name",name);
nameIndex.add(nameNode, "name", name);
return nameNode;
}
IndexHits<Node> nodes = nameIndex.query("name:Jo*");