Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j 在Cypher中构造路径时中断关系循环_Neo4j_Cypher_Graph Theory - Fatal编程技术网

Neo4j 在Cypher中构造路径时中断关系循环

Neo4j 在Cypher中构造路径时中断关系循环,neo4j,cypher,graph-theory,Neo4j,Cypher,Graph Theory,可以使用此密码脚本创建上图: CREATE (t1:Token {content: "Jake"}), (t2:Token {content: "wanted"}), (det:Token {content: "the"}), (t3:Token {content: "dog"}), (t4:Token {content: "neighbours"}), (t5:Token {content: "had"}), (t1)-[:PRECEDE

可以使用此密码脚本创建上图:

CREATE
    (t1:Token {content: "Jake"}),
    (t2:Token {content: "wanted"}),
    (det:Token {content: "the"}),
    (t3:Token {content: "dog"}),
    (t4:Token {content: "neighbours"}),
    (t5:Token {content: "had"}),
    (t1)-[:PRECEDES {index: 0}]->(t2),      
    (t2)-[:PRECEDES {index: 1}]->(det),      
    (det)-[:PRECEDES {index: 2}]->(t3),      
    (t3)-[:PRECEDES {index: 3}]->(det),      
    (det)-[:PRECEDES {index: 4}]->(t4),
    (t4)-[:PRECEDES {index: 5}]->(t5);
这是“杰克想要邻居的狗”这句话的图表。请注意,“the”一词出现两次。在这个模型中,每个节点代表一个特定的单词(不是单词的实例)。但是,我们应该能够重建单个句子,因为我们在
:prefers
关系的属性中编码了单词中的句子索引


有没有办法用Cypher查询这个句子作为路径,使用
index
属性来避免在表示
的节点上输入循环?

我想提出一个替代方案,因为一旦添加更多的句子,您的方案就会崩溃和/或执行得很糟糕

1) 对于每个句子,创建一个节点来表示该句子

2) 创建从该节点到句子中每个单词节点的关系,并在该关系上添加索引属性。(您可以对第一个和最后一个元素使用第一个/结束关系,或者将其添加为属性以简化密码)

3) 改为在“句子”节点上运行密码。按关系索引排序单词


这将使您的数据更易于阅读、查询和写入。

我同意Tezra关于句子节点的观点

对于你的模型,我有一个有趣的结果

 MATCH (t2:Token) 
 WHERE NOT (t2:Token)<-[:PRECEDES]-(:Token)
 WITH t2
 MATCH (t2)-[pr:PRECEDES*..]->(t3:Token)
 WITH t2, last(pr).index AS pos, t3.content AS txt ORDER BY pos
 RETURN t2.content, pos, txt
匹配(t2:令牌)
其中不包括(t2:Token)(t3:Token)
使用t2,最后一个(pr).索引为pos,t3.内容为txt,按pos排序
返回t2.content、pos、txt
最后两个词重复。我想较长的句子会产生更多的噪音 在prefers中可以有一个句子ID

我建议有:句子作为起始节点,与单词有关系

稍后,您将遇到“过度连接节点”问题(使用、打开、…) 看看graphaware的NLP插件