2013-05-08 3 views
0

나는이 너무 OK 작동 결과사이퍼 neo4j : 키워드

start cat=node(21) match cat-[:HAS_KEYWORD]->composit-[:COMPOSITE_OF]->(word)-[:FOUND_IN]-single 

를이 쿼리가 잘 작동 두 부분

start cat=node(21) match cat-[:HAS_KEYWORD]->(word)-[:FOUND_IN]->doc return doc 

가있는 쿼리를 실행하고 반환하기 위해 노력하고있어 함께 사용하여 여러 쿼리와 빈 세트

을 retun 그러나 나는 그들에게

start cat=node(21) match cat-[:HAS_KEYWORD]->(word)-[:FOUND_IN]->doc 
with cat,doc               
match cat-[:HAS_KEYWORD]->composit-[:COMPOSITE_OF]->xx-[:FOUND_IN]->single  
return doc,single 
을 결합 할 때3210

결과가 없습니다.

무엇이 잘못 되었나요?

+0

이 좋은 생각을 할 수 있지만, 단일 경기 절 노력이되지 않을 수 있습니다 일치하는 하나의 <- [: FOUND_IN] - XX <- [: COMPOSITE_OF] - 붙지 - [: HAS_KEYWORD ] - 고양이 - [: HAS_KEYWORD] -> (단어) - [: FOUND_IN] -> 의사 – bendaizer

답변

0

여기서 문제는 빈 집합이므로 두 번째 일치는 전체 쿼리를 빈 집합으로 만듭니다.

어쩌면 당신은 UNION 기능을 찾고 있습니까? 이것은 실제로 2.0에서 나왔습니다.

0
그래서, 당신의 2 MATCH OPTIONAL MATCH로 변경

:

START cat=node(21) 
MATCH (cat)-[:HAS_KEYWORD]->(word)-[:FOUND_IN]->(doc) 
OPTIONAL MATCH (cat)-[:HAS_KEYWORD]->(composit)-[:COMPOSITE_OF]->(xx)-[:FOUND_IN]->(single) 
RETURN doc,single 

귀하의 OPTIONAL MATCH 조항이 MATCH 절에있는 모든 것을 실행하지만, 어떤 결과가 발견되지 않을 때 레코드를 줄이지 않고.

http://docs.neo4j.org/chunked/stable/query-optional-match.html