2014-02-20 2 views
0

Я использую набор данных last.fm и импортировал его в neo4j 2.0.1. Теперь я хочу, чтобы пересечь график, так что я могу получить подобный результат, который я получаю, выполнив следующие MySQL запроса:cypher запрос для перемещения графика

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

В Neo4j Я хочу, чтобы выполнить подобный запрос, начиная с конкретной index lets say 1000001->logs->features ... Любая помощь будет оценена по достоинству.

+0

вы можете поделиться образец набора данных или любой диаграммы графа? –

+0

График http://imgur.com/dgvzHFA – shailza

+0

График http://imgur.com/dgvzHFA и структура таблиц, используемых для вышеуказанного запроса MySQL, - http://imgur.com/iwi2fon. Существует 9 файлов csv, которые были использованы для импорта узлов и связей в neo4j. На втором рисунке, который я разделял, 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 и tracks, связанные с конкретным scrobble с именем 1000001

EDIT после комментария

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

Я бы порекомендовал reimport ваш набор данных с Labels. Дополнительная информация о этикетках: here. Это позволит сэкономить усилия по проверке типа снова и снова и позволит вам включить его в шаблон соответствия; также его более эффективным.

EDIT после метки были добавлены

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 строк. Хорошо, позвольте мне снова заявить о своей цели? Я хочу получить название этого трека, связанного с конкретным scrobble 100001. Позвольте мне объяснить вам схематическим образом, который мог бы ему помочь. Поток моего требования показан здесь http://imgur.com/pxhtV6W, где я хочу получить заголовок для конкретного scrobble. Скриншоты, которые могут помочь вам узнать отношения, находятся на http://imgur.com/LtHLTra,D4Qvasp и http://imgur.com/LtHLTra,D4Qvasp#1. – shailza

+0

Посмотрите, если это поможет сейчас. –

+0

Нет, это все еще работает. Можете ли вы сказать мне, какой должен быть запрос, чтобы увидеть один узел из графика в качестве вывода. Я хочу получить node = "100001". – shailza

Смежные вопросы