neo4j查询集合中的匹配数量

时间:2014-12-29 15:50:58

标签: neo4j

我有这样的关系:

context-[EXPRESSED_AS]->root

假设我有两个上下文。第一个根源是base_forms,#34;温度","酷"和"热"。第二个根源是"酷"和"热"。我想查找所有上下文,按照匹配的数量排序[" cool"," temperature"]。

我试图使用这个Cypher查询,这个查询很接近,但不是很有效:

MATCH (n:Context)
OPTIONAL MATCH (n)-[:EXPRESSED_AS]->(r)
WHERE r.base_form IN ["cool","temperature"]
RETURN c, count(r) as c
ORDER BY c DESC

这会以预期的顺序返回上下文,但c值是相同的。我希望c等于集合中的匹配数,分别应为2和1。

感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

此查询与例如匹配所有上下文和optinally匹配包含两个特定根的上下文:

MATCH (n:Context)
OPTIONAL MATCH (n)<-[:EXPRESSED_AS]-(r)
WHERE r.base_form = "cool" AND r.base_form = "hot"
WITH count(r) AS c, n
ORDER BY c DESC 
RETURN n, c

Neo4j控制台链接:http://console.neo4j.org/r/9sexaf