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密码查询_Neo4j_Cypher - Fatal编程技术网

过滤路径的neo4j密码查询

过滤路径的neo4j密码查询,neo4j,cypher,Neo4j,Cypher,我正在使用neo4j来存储具有两个标签中的一个标签的节点的数据:Person和Organization。所有节点都有一个属性:name 所有关系都标记为LinkedTo,并具有一个属性:score。一对人员和组织节点之间可能存在多个关系 我使用路径查询来搜索这些节点之间的路径,如: MATCH (n:Person) WHERE n.name =~ "(?i)person1" MATCH (m:Organization) WHERE m.name =~ "(?i)organization1" WI

我正在使用neo4j来存储具有两个标签中的一个标签的节点的数据:
Person
Organization
。所有节点都有一个属性:
name

所有关系都标记为
LinkedTo
,并具有一个属性:
score
。一对
人员
组织
节点之间可能存在多个关系

我使用路径查询来搜索这些节点之间的路径,如:

MATCH (n:Person) WHERE n.name =~ "(?i)person1"
MATCH (m:Organization) WHERE m.name =~ "(?i)organization1"
WITH m,n
MATCH p = (m)-[*1..4]-(n)
RETURN p ORDER BY length(p) LIMIT 10
这将返回所有路径(最多10条)

现在我想找到特定的路径,所有涉及的关系都有一个
score=1
。不确定如何实现这一点,我从匹配p=(m)-[f*1..4]-(n)开始,但它得到了一个弃用警告。所以在谷歌搜索、尝试和错误之后,我想到了这个:

MATCH (n:Person) WHERE n.name =~ "(?i)person1"
MATCH (m:Organization) WHERE m.name =~ "(?i)organization1"
WITH m,n
MATCH p = (m)-[*1..4]-(n)
WITH filter(x IN relationships(p) WHERE x.score=1) AS f
ORDER BY length(p)
UNWIND f AS ff
MATCH (a)-[ff]-(b)
RETURN a,b,ff LIMIT 10
但这是不正确的,不干净的,给了我路径中不需要的关系和节点


这可能是一个基本的密码查询,但我只是一个初学者,需要这方面的帮助。:)

据我所知,您正在搜索此查询:

MATCH p = (m:Organization)-[rels*1..4]-(n:Person) 
WHERE 
    n.name =~ "(?i)person1" AND
    m.name =~ "(?i)organization1" AND
    all(r IN rels WHERE r.score=1)
RETURN p
ORDER BY length(p)
由于
all(rels中的r,其中r.score=1)
,Neo4j只会在属性
score
设置为
1
的路径中展开关系

您还应该注意,您正在为节点
n
m
使用正则表达式条件,并且此运算符不能使用索引!
如果您的目标是进行不区分大小写的搜索,我建议您创建一个清理字段(例如
\u name
)以小写形式存储名称,并用
包含的
以开头的

替换您的正则表达式(谢谢您,这正是我要找的!)所以你也可以接受这个答案:(玩得开心!我做了,我想它没有注册!我现在做了!