Как я мог написать эти запросы в neo4j?
Я очень новичок в neo4j и в графической базе данных в целом. Я создаю прототип приложения, и я не знаю, как я должен писать эти запросы
У меня есть такой домен:
Пользователь Ресторан Обзор TypeOfFood
Итак, у Рестартуранта есть один или несколько типов еды, пользователь оставляет отзывы о ресторанах. У пользователя есть несколько предпочтительных продуктов, соответствующих типу продуктов, которые продают в ресторане. Кроме того, пользователи связаны друг с другом типичными дружескими отношениями.
Некоторые из запросы, которые я пытаюсь написать:
-
Дайте мне все рестораны, которые мои друзья оценили с 3 или более звезд, которые делают вид еды, которую я люблю (исключая те рестораны, которые я уже рассмотрел)
-
Предложите мне друзей, которых я могу знать (я предполагаю, что это должно быть что-то вроде "все друзья, которые являются друзьями моих друзей, но еще не мои, заказать что-то)
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 консоли на ваш набор данных, но и в СУБД Neo4j-Shell и удаленно-через шифр-остальное-плагин через Весенняя данных диаграммы.
Есть также скринкаст обсуждение похожие запросы на Сайфера.
Вы также можете использовать Gremlin, Neo4j-Траверсеры или ручные траверсы через
getRelationships
, Если хотите.