2014-02-20 4 views
0

last.fm 데이터 세트를 사용하고 있으며 neo4j 2.0.1에서 가져 왔습니다. 특정부터 을그래프를 트래버스하는 cypher 쿼리

SELECT * from music.logs, music.features, music.nodespart2 
WHERE logs.song="1000001" 
    AND logs.song=features.scrobble 
    AND fetures.mbid=nodespart2.name; 

내가 유사한 쿼리를 실행할 neo4j에서 : 지금은 내가, 내가 MySQL의 쿼리 다음 실행하여 무엇입니까 비슷한 결과를 얻을 수 있도록 그래프를 통과 할 index lets say 1000001->logs->features ... 도움을 주시면 감사하겠습니다.

+0

당신이 데이터 세트 샘플 또는 그래프 다이어그램을 공유 할 수 있습니까? –

+0

그래프는 http://imgur.com/dgvzHFA – shailza

+0

그래프는 http://imgur.com/dgvzHFA이고 위 MySQL 쿼리에 사용 된 테이블 구조는 http://imgur.com/iwi2fon입니다. neo4j에서 노드와 관계를 가져 오는 데 사용 된 9 개의 CSV 파일이 있습니다. 두 번째 그림에서 공유 한 FEATURES & LOGS는 노드 간의 두 가지 유형의 관계입니다. 이 두 테이블의 "TYPE"열의 값은 FEATURES & LOGS입니다. 즉, 모든 경우에 항목이 동일합니다. – shailza

답변

0

그래프 모델에 대해서는 아직 확실하지 않으며 노드와 관계에 어떤 속성이 저장되어 있는지 잘 모르겠습니다. 그러나 링크에서 당신은

MATCH (a)-[:LOGS]->(b)-[:FEATURES]->(c) where a.type="listener" 
and b.type="scrobble" 
and c.type="track" and b.name = "100001" return * 

이 모든 listeners 이름으로 특정 scrobble 관련 tracks1000001

편집 주석 후 제공합니다 .. 쿼리가 작동합니다 아래 내가 생각하는 공유

MATCH (b)-[:FEATURES]->(c) where b.type="scrobble" and c.type="track" 
and b.name = "100001" return c.title 

데이터 세트를 Labels으로 다시 가져 오는 것이 좋습니다. 라벨에 대한 자세한 정보 : here. 그것은 유형을 반복적으로 검사하는 노력을 덜어 주며 일치 패턴 자체에 유형을 통합 할 수있게 해줍니다. 또한 더 효율적입니다. 레이블

Query1을 추가 한 후

편집 :

MATCH (a:listener)-[:LOGS]->(b:scrobble)-[:FEATURES]->(c:track) 
where b.name = "100001" return * 

QUERY2 :

MATCH (b:scrobble)-[:FEATURES]->(c:track) where b.name = "100001" return c.title 
+0

답장을 보내 주셔서 대단히 감사합니다. 해당 쿼리를 실행하려고했지만 0 행을 반환했습니다. 그럼 다시 내 목적을 밝히자. 특정 음원 100001과 관련된 트랙의 제목을 얻고 싶습니다. 도움이 될 수있는 다이어그램 방식으로 설명해 드리겠습니다. 내 요구 사항의 흐름은 여기에 나와 있으며 http://imgur.com/pxhtV6W에서 특정 스크 로블의 제목을 얻고 싶습니다. 관계를 파악하는 데 도움이되는 스크린 샷은 http://imgur.com/LtHLTra,D4Qvasp 및 http://imgur.com/LtHLTra,D4Qvasp#1에 있습니다. – shailza

+0

지금 도움이되는지 확인하십시오 .. –

+0

아니요, 여전히 작동하지 않습니다. 그래프에서 하나의 노드를 출력으로 보는 쿼리가 무엇인지 말해 줄 수 있습니까? node = "100001"을 얻고 싶습니다. – shailza