Кто-нибудь знает быстрый способ запроса нескольких путей в Neo4j?Как запросить несколько путей OR'ed Neo4j?
Допустим, у меня есть узлы фильмов, которые могут иметь тип, который я хочу, чтобы соответствовать (это псевдо-код)
MATCH
(m:Movie)<-[:TYPE]-(g:Genre { name:'action' })
OR
(m:Movie)<-[:TYPE]-(x:Genre)<-[:G_TYPE*1..3]-(g:Genre { name:'action' })
(m)-[:SUBGENRE]->(sg:SubGenre {name: 'comedy'})
OR
(m)-[:SUBGENRE]->(x)<-[:SUB_TYPE*1..3]-(sg:SubGenre {name: 'comedy'})
Проблема заключается в том, что первый «м: Фильм» узлы должны быть согласованы должны соответствуют одному из указанных путей, а второй SubGenre - в первом совпадении. Я могу сделать запрос, который работает с использованием MATCH и WHERE, но его очень медленный (30 секунд с небольшим набором данных 20 Мбайт).
Проблема в том, что я не знаю, как OR совпадать в Neo4j с другими совпадениями OR, зависящими от первых результатов.
Если я использую WHERE, то я должен объявить все узлы, используемые в каких-либо заявлений, в начальном MATCH, который делает запрос медленно (так как вы не можете ввести новые узлы в WHERE)
Кто-нибудь знает элегантный способ решить это? Благодаря !
Sweet, просто использовал измененную версию вашего запроса, чтобы получить результаты в 250 мс! Спасибо ! Я люблю Neo4j !! –