2011-08-05 12 views
7

Jestem bardzo nowy w Neo4j i ogólnie w bazie danych wykresów. Ja prototypowania aplikacji, a ja nie wiem jak mam napisać te zapytaniaJak mogę napisać te zapytania w neo4j?

mam tę domenę:

użytkownika Restauracja Przegląd TypeOfFood

Więc Restarurant mieć jeden lub wielu TypeOfFood, Użytkownik opuszcza opinie o restauracjach. Użytkownik ma kilka preferowanych produktów spożywczych, które pasują do TypeOfFood, które sprzedaje restauracja. Również użytkownicy są ze sobą spokrewnieni z typowo przyjacielskimi relacjami.

Niektóre z zapytaniami Próbuję napisać:

  • Daj mi wszystkie restauracje, które moi przyjaciele oceniane z 3 lub więcej gwiazd, które sprawiają, że ten rodzaj żywności lubię (wyklucza te restauracje, które I już oceniony)

  • zaproponować mi przyjaciół może wiem (myślę, że to powinno być coś jak „wszystkich przyjaciół, którzy są przyjaciółmi moich przyjaciół, ale jeszcze nie w kopalni, zamówienie przez coś)

Odpowiedz

13

Używanie języka Cypher zapytania Neo4j mógłby napisać zapytania jak to:

Wybór top-20 najlepiej oceniane restauracje, posortowane według gwiazdek oraz liczbę opinii

start user=(users,name,'Nico') 
match user-[:FRIEND]->friend-[r,:RATED]->restaurant-[:SERVES]->food, 
     user-[:LIKES]->food,user-[:RATED]->rated_by_me 
where r.stars > 3 
return restaurant.name, avg(r.stars), count(*) 
order by avg(r.stars) desc, count(*) desc 
limit 20 

Znajomi Znajomych

start user=(users,name,'Nico') 
match user-[:FRIEND]->friend->[:FRIEND]->foaf 
return foaf, foaf.name 

Możesz wykonywać te zapytania szyfrowe w Neo4j Webadmin Console na swoim zestawie danych, ale także w powłoce neo4j, zdalnie za pomocą Cypher-Rest-Plugin przez Spring Data Graph.

Istnieje również screencast omawianie podobnych zapytań w cypher.

Możesz również użyć Gremlin, Neo4j-Traversers lub ręcznego przechodzenia przez getRelationships, jeśli chcesz.

+1

Dzięki Michael. Poszedłem do twojego profilu SO, aby znaleźć sposób na skontaktowanie się z tobą, spodziewając się normalnego kodera, ale jesteś gwiazdą rocka :) Czy robisz konsultacje? A może możesz mnie z kimś skontaktować? – NicoGranelli

+1

Dzięki za pochwałę. Możesz się ze mną skontaktować, subskrybując listę mailingową Neo4j. My w Neo Technology również prowadzimy konsultacje. –

+0

Witam @MichaelHunger, opublikowałem jedno zapytanie (http://stackoverflow.com/questions/17721173/neo4j-user-suggestion-w-mutual-count/17831172?noredirect=1#comment26066269_17831172), czy możesz mi pomóc to? i jak mogę Cię zapisać na liście mailingowej. Chcę wiedzieć o twoim doradztwie i jego opłatach. Dzięki –

Powiązane problemy