Как я мог написать эти запросы в neo4j?

Я очень новичок в neo4j и в графической базе данных в целом. Я делаю прототип приложения и не знаю, как мне написать эти запросы.

У меня есть этот домен:

Пользовательский обзор ресторана TypeOfFood

Так у Ресторана есть один или несколько TypeOfFood, Пользователь оставляет отзывы о ресторанах. У Пользователя есть некоторые предпочтительные продукты, соответствующие TypeOfFood, которые продаются в ресторане. Также пользователи связаны друг с другом типичными дружескими отношениями.

Некоторые из запросов, которые я пытаюсь написать:

  • Дайте мне все рестораны, которые мои друзья оценили на 3 или более звезд, в которых подают блюда, которые мне нравятся (исключая те рестораны, которые я уже оценил)

  • Предложите мне друзей, которых я, возможно, знаю (я думаю, это должно быть что-то вроде «все друзья, которые являются друзьями моих друзей, но еще не мои, заказать что-то»)


person NicoGranelli    schedule 05.08.2011    source источник


Ответы (1)


Используя язык запросов Neo4j Cypher, вы можете написать свои запросы следующим образом:

Выбор топ-20 ресторанов с самым высоким рейтингом, отсортированных по звездам и количеству отзывов

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

Друзья друга

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

Вы можете выполнить эти шифрованные запросы в консоли веб-администрирования Neo4j в вашем наборе данных, но и в нео4j-шелле, удаленно через Cypher-Rest-Plugin через График данных Spring.

Существует также скринкаст, в котором обсуждаются аналогичные запросы в шифровании.

Вы также можете использовать Gremlin, Neo4j-Traversers или вручную через getRelationships, если хотите.

person Michael Hunger    schedule 05.08.2011
comment
Спасибо, Майкл. Я зашел в ваш профиль SO, чтобы найти способ связаться с вами, ожидая нормального кодера, но вы рок-звезда :) Вы занимаетесь консалтингом? или, может быть, вы можете связать меня с кем-то? - person NicoGranelli; 07.08.2011
comment
Спасибо за похвалу. Вы можете связаться со мной, подписавшись на список рассылки Neo4j. Мы в Neo Technology также консультируем. - person Michael Hunger; 14.08.2011
comment
Привет @MichaelHunger, я отправил один запрос (stackoverflow.com/questions/17721173/), можете ли вы мне помочь в этом? и Как я могу подписаться на вас в списке рассылки. Я хочу знать о ваших консультациях и их стоимости. Спасибо - person Manish Sapkal; 26.07.2013