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,我正在尝试改进已发布的查询: 同样,我有项图形数据库。每个项目都连接到多个属性,这些属性可以由多个项目共享。 但是,这次我想搜索项,从几个属性节点开始,然后查找连接最紧密的项 因此,我有一组属性pr=[“pr1”、“pr2”、“pr3”],我想找到最相关的项 i、 e match (pr)-[r]-(item) return item, count(r) as matching_properties order by matching_properties 但是,我也想找到类似的项目。在属性

我正在尝试改进已发布的查询:

同样,我有
图形数据库。每个
项目
都连接到多个
属性
,这些属性可以由多个
项目
共享。 但是,这次我想搜索
,从几个
属性
节点开始,然后查找连接最紧密的项

因此,我有一组属性
pr=[“pr1”、“pr2”、“pr3”]
,我想找到最相关的

i、 e

match (pr)-[r]-(item)
return item, count(r) as matching_properties
order by matching_properties
但是,我也想找到类似的项目。在
属性
之间存在类似的
关系,我想找到:

MATCH (pr) -[:SIMILAR]->(pr2)-[r]-(item)
我尝试通过执行以下操作检索所有项目:

MATCH (pr) -[r*1..2]-(item)
问题是,我只希望通过
属性
节点获得具有
相似
关系的路径,不幸的是,我有很多路径通过具有其他关系的其他节点。 所以我可以这样做:

MATCH (pr) -[r*1..2]-(item)
where (length(r)= 1 or ANY (x in r where (type(x)="SIMILAR"))) 
但这真的没有效率,因为它只是路径的一小部分。 我真的想做一个类似以下内容的可选匹配:

MATCH (pr) -[r2?:SIMILAR]->(pr2?)-[r]-(item)
where pr2.type = "property"
或者,在两个路径选项之间使用“或”操作数(我知道它不存在..)

有办法吗? 目前我正在使用neo4j 1.9.2,但我正计划迁移到2.0。 所以2.0版的答案对我也有好处。

类似的东西

从0开始的路径(
*0..
)也包括到起始节点的零长度路径

MATCH (pr:property)-[:SIMILAR*0..1]->(pr2:property)<-[:HAS_PROPERTY]-(item:item)
RETURN pr2, item
匹配(pr:property)-[:类似*0..1]->(pr2:property)类似这样的东西

从0开始的路径(
*0..
)也包括到起始节点的零长度路径

MATCH (pr:property)-[:SIMILAR*0..1]->(pr2:property)<-[:HAS_PROPERTY]-(item:item)
RETURN pr2, item

匹配(pr:property)-[:相似*0..1]->(pr2:property)这就是我想要的-它给出了所有相似/不相似的项。这就是我想要的-它给出了所有相似/不相似的项。