美食家指南
美食家指南
“生活中成功的秘诀之一就是吃你喜欢的食物 - 马克·吐温”
我认为我们每个人都喜欢吃饭,是的,我知道有些人天生就喜欢吃得过多。在这个 GraphGist 中,我们将看到图模型如何让你更接近你最喜欢的食物。我通常一天喝 6-7 杯茶/咖啡,有些人称之为咖啡因成瘾,但谁在乎呢。接下来,我们将看到**Neo4j 如何带你前往城市中最好的自助餐或拿铁咖啡馆**

美食家模型
以下是我们的美食家模型,每家餐厅都由一个节点表示。请注意,餐厅按区域分组,**IndiraNagar 有星巴克咖啡和 Beanstalk**,**Frazer Town 有 Savoury 餐厅。**另一件重要的事情是,我在 Neo4j 模型中将每种餐厅提供的食物都表示为一个节点,因为我们的大多数查询都需要快速搜索餐厅提供的食物。
-
餐厅提供的每种食物将具有以下属性
-
食物名称
-
价格
-
评分
-
评论
-
通过存储每道菜的评分和评论,我们可以轻松地找出在城市/地区吃“X”菜的最佳地点。假设你正在计划一个派对,你想邀请你的朋友参加自助餐,所以你开始搜索找出参加自助餐的最佳地点,当然是在你的预算范围内。
在大多数情况下,一家餐厅以其“X”或“Y”菜而闻名,而不是以其所有菜肴而闻名。因此,存储每道菜的评分和评论比仅在餐厅整体级别存储更有意义。
使用上述 Neo4j 模型,我们可以非常轻松地回答所有这些问题。我们已经花了很长时间讨论 Cypher 了,让我们在太空中抛出一些节点吧
设置
//Bangalore City
create (bangalore:City{city:"Bangalore"})
// Locations around city - Koramangala, IndiraNagar, Richmond Town, Jayanagar, Frazer Town
create (koramangala:Location{location:"Koramangala"}),
(koramangala)-[:in]->(bangalore),
(indiraNagar:Location{location:"IndiraNagar"}),
(indiraNagar)-[:in]->(bangalore),
(richmondTown:Location{location:"Richmond Town"}),
(richmondTown)-[:in]->(bangalore),
(jayanagar:Location{location:"Jayanagar"}),
(jayanagar)-[:in]->(bangalore),
(frazerTown:Location{location:"Frazer Town"}),
(frazerTown)-[:in]->(bangalore)
// Black Pearl, Koramangala
create (blackPearl:Restaurant{name:"The Black Pearl",address:"Koramangala 5th Block",contactNumber:"080-49652187"}),
(blackPearl)<-[:at]-(koramangala),
(blackPearlBuffet:Buffet{name:"Buffet",price:1000,rating:6,comments:["Buffet is ok","Not that good as heared"]}),
(blackPearl)-[:serves]->(blackPearlBuffet)
// Blu Petal, Koramangala
create (bluPetal:Restaurant{name:"Buff Buffet Buff - BluPetal Hotel",address:"Koramangala 5th Block",contactNumber:"080-49652556"}),
(bluPetal)<-[:at]-(koramangala),
(bluPetalBuffet:Buffet{name:"Buffet",price:800,rating:7.5,comments:["Buffet is good with some crispy starters","Ambience is not big but food is awesome"]}),
(bluPetal)-[:serves]->(bluPetalBuffet)
// Barleyz, Koramangala
create (barleyz:Restaurant{name:"Barleyz",address:"Koramangala 6th Block",contactNumber:"080-49653421"}),
(barleyz)<-[:at]-(koramangala),
(barleyzBuffet:Buffet{name:"Buffet",price:1000,rating:7,comments:["Buffet is good but service is very bad","Food is just OK","Good place for dinner"]}),
(barleyz)-[:serves]->(barleyzBuffet)
// Beanstalk, IndiraNagar
create (beansTalk:Restaurant{name:"Beanstalk",address:"80 Feet Road, Indiranagar",contactNumber:"080-65358858"}),
(beansTalk)<-[:at]-(indiraNagar),
(beansTalkLatte:Latte{name:"Latte",price:70,rating:8,comments:["The perfect cup of Latte","I can be found here on Sunday"]}),
(beansTalk)-[:serves]->(beansTalkLatte)
// Cafe Coffee Day, IndiraNagar
create (ccd80Feet:Restaurant{name:"Cafe Coffee Day",address:"80 Feet Road, Indiranagar",contactNumber:"9243601943"}),
(ccd80Feet)<-[:at]-(indiraNagar),
(ccd80FeetLatte:Latte{name:"Latte",price:90,rating:7,comments:["Same as other CCDs","Ambience is good, good place to enjoy a cup of coffee"]}),
(ccd80Feet)-[:serves]->(ccd80FeetLatte)
// Starbucks Coffee, IndiraNagar
create (starBucks:Restaurant{name:"Starbucks Coffee",address:"100 Feet Road, Indiranagar",contactNumber:"8884678529"}),
(starBucks)<-[:at]-(indiraNagar),
(starBucksBlueberryMuffin:Muffin{name:"Blueberry Muffin",price:140,rating:9,comments:["I love Starbucks Blueberry Muffin"]}),
(starBucks)-[:serves]->(starBucksBlueberryMuffin),
(starBucksChocolateMuffin:Muffin{name:"Java Chip Chocolate Muffin",price:145,rating:9,comments:["Perfect place for Muffin lovers"]}),
(starBucks)-[:serves]->(starBucksChocolateMuffin),
(starBucksWhiteChocolate:Chocolate{name:"White Hot Chocolate",price:130,rating:9,comments:["Great combination of white chocolate and steamed milk"]}),
(starBucks)-[:serves]->(starBucksWhiteChocolate),
(starBucksCappuccino:Cappuccino{name:"Cappuccino",price:155,rating:10,comments:["Probably the best place for Cappuccino lovers"]}),
(starBucks)-[:serves]->(starBucksCappuccino),
(starBucksEspresso:Espresso{name:"Espresso",price:110,rating:8,comments:["Similar to CCD"]}),
(starBucks)-[:serves]->(starBucksEspresso),
(starBucksLatte:Latte{name:"Latte",price:180,rating:10,comments:["Perfect cup of latte, may be a bit costly but worth every penny"]}),
(starBucks)-[:serves]->(starBucksLatte)
// Lazeez Restaurant, Koramangala
create (lazeez:Restaurant{name:"Lazeez",address:"Koramangala 5th Block",contactNumber:"080-49653192"}),
(lazeez)<-[:at]-(koramangala),
(lazeezMuttonBiryani:MuttonBiryani{name:"Mutton Biryani",price:175,rating:9,comments:["How non vegeterian live, awesome mutton Biryani"]}),
(lazeez)-[:serves]->(lazeezMuttonBiryani),
(lazeezChickenBiryani:ChickenBiryani{name:"Chicken Biryani",price:165,rating:7,comments:["Their Chicken Biryani is not as good as Mutton Biryani"]}),
(lazeez)-[:serves]->(lazeezChickenBiryani),
(lazeezChickenIrani:ChickenIrani{name:"Chicken Irani",price:155,rating:8,comments:["I liked it"]}),
(lazeez)-[:serves]->(lazeezChickenIrani),
(lazeezMuttonStew:MuttonStew{name:"Mutton Stew",price:165,rating:8,comments:["A perfect mutton stew"]}),
(lazeez)-[:serves]->(lazeezMuttonStew)
// Hyderabad Biryani House, Richmond Town
create (hyderabadBiryaniHouse:Restaurant{name:"Hyderabad Biryani House",address:"Richmond Town",contactNumber:"080-65979401,080-65979203"}),
(hyderabadBiryaniHouse)<-[:at]-(richmondTown),
(hBHMuttonBiryani:MuttonBiryani{name:"Mutton Biryani",price:190,rating:8,comments:["Good place to have mutton biryani","Their Victoria Road shop is much better than their other outlets"]}),
(hyderabadBiryaniHouse)-[:serves]->(hBHMuttonBiryani),
(hBHChickenBiryani:ChickenBiryani{name:"Chicken Biryani",price:180,rating:7,comments:["Their Chicken Birynai is not as good as their Mutton Biryani"]}),
(hyderabadBiryaniHouse)-[:serves]->(hBHChickenBiryani),
(hBHMuttonMughlai:MuttonMughlai{name:"Mutton Mughlai",price:220,rating:8,comments:["I love their mutton biryani and mughlai mutton","Only problem is ambience"]}),
(hyderabadBiryaniHouse)-[:serves]->(hBHMuttonMughlai)
// Savoury Restaurant, Frazer Town
create (savoury:Restaurant{name:"Savoury Restaurant",address:"Mosque Road, Frazer Town",contactNumber:"080-49336333"}),
(savoury)<-[:at]-(frazerTown),
(savouryMuttonBiryani:MuttonBiryani{name:"Mutton Biryani",price:170,rating:10,comments:["Their Mutton Biryani taste is bit different than others, very good place to overeat, good ambience and parking facility"]}),
(savoury)-[:serves]->(savouryMuttonBiryani),
(savouryMuttonChops:MuttonChops{name:"Mutton Chops",price:240,rating:9,comments:["Perfect place for non vegeterians, wide variety of dishes including arabian, thai, indian and chinese"]}),
(savoury)-[:serves]->(savouryMuttonChops)
// Shivaji Military Hotel, Jayanagar
create (sjMilitaryHotel:Restaurant{name:"Shivaji Military Hotel",address:"8th Block, Jayanagar",contactNumber:"9845149217,9980739217"}),
(sjMilitaryHotel)<-[:at]-(jayanagar),
(militaryHotelMuttonBiryani:MuttonBiryani{name:"Mutton Biryani",price:175,rating:10,comments:["Awesomest place to have mutton biryani in Bangalore","They beat everyone, best place for biryani"]}),
(sjMilitaryHotel)-[:serves]->(militaryHotelMuttonBiryani),
(militaryHotelChickenBiryani:ChickenBiryani{name:"Chicken Biryani",price:150,rating:9,comments:["I love their chicken biryani, very old hotel. At lunch time, its hard to find place to sit"]}),
(sjMilitaryHotel)-[:serves]->(militaryHotelChickenBiryani),
(militaryHotelNattyChickenBiryani:NattyChickenBiryani{name:"Natty Chicken Biryani",price:175,rating:9,comments:["Superb Natty Chicken Biryani, they have maintaned their taste"]}),
(sjMilitaryHotel)-[:serves]->(militaryHotelNattyChickenBiryani)
// Meghana Foods, Koramangala
create (meghana:Restaurant{name:"Meghana Foods",address:"Koramangala 5th Block",contactNumber:"080-49653429"}),
(meghana)<-[:at]-(koramangala),
(meghanaMuttonBiryani:MuttonBiryani{name:"Mutton Biryani",price:265,rating:9,comments:["Heared a lot of this place, very good Biryani"]}),
(meghana)-[:serves]->(meghanaMuttonBiryani),
(meghanaChickenBiryani:ChickenBiryani{name:"Chicken Biryani",price:215,rating:8,comments:["As good as their Mutton Biryani"]}),
(meghana)-[:serves]->(meghanaChickenBiryani),
(meghanaPrawnsBiryani:PrawnsBiryani{name:"Prawns Biryani",price:275,rating:8,comments:["Among very few places where you can get prawns Biryani"]}),
(meghana)-[:serves]->(meghanaPrawnsBiryani),
(meghanaChillyPaneer:ChillyPaneer{name:"Chilly Paneer",price:195,rating:7,comments:["It was good"]}),
(meghana)-[:serves]->(meghanaChillyPaneer)
见解
是时候获得一些有趣问题的答案了。
星巴克咖啡,IndiraNagar 提供什么?请提供他们的价格、评分和评论
match (bangalore:City{city:"Bangalore"})<-[:in]-(indiraNagar:Location{location:"IndiraNagar"}),
(indiraNagar)-[:at]->(restaurant:Restaurant{name:"Starbucks Coffee"}),
(restaurant)-[:serves]->(eatable)
return eatable.name AS Menu,eatable.price AS Price,eatable.rating AS Rating,eatable.comments AS Comments;
请提供 IndiraNagar 所有餐厅的列表,以及地址和联系电话
match (bangalore:City{city:"Bangalore"})<-[:in]-(indiraNagar:Location{location:"IndiraNagar"}),
(indiraNagar)-[:at]->(restaurant:Restaurant)
return restaurant.name AS Restaurant,restaurant.address AS Address,restaurant.contactNumber AS Contact_Number;
Koramangala 的哪些餐厅提供自助餐?请提供餐厅名称、自助餐价格、评分和评论
match (bangalore:City{city:"Bangalore"})<-[:in]-(koramangala:Location{location:"Koramangala"}),
(koramangala)-[:at]->(restaurant:Restaurant),
(restaurant)-[:serves]->(buffet:Buffet)
return restaurant.name AS Restaurant,buffet.price AS Price,buffet.rating AS Rating,buffet.comments AS Comments;
IndiraNagar 附近哪些餐厅提供 120 卢比内的拿铁咖啡?
match (bangalore:City{city:"Bangalore"})<-[:in]-(indiraNagar:Location{location:"IndiraNagar"}),
(indiraNagar)-[:at]->(restaurant:Restaurant),
(restaurant)-[:serves]->(latte:Latte)
where latte.price <= 120
return restaurant.name AS Restaurant,restaurant.address AS Address,latte.price AS Price,latte.rating AS Rating,latte.comments AS Comments;
人们普遍对星巴克咖啡,IndiraNagar,班加罗尔有什么评价?
match (bangalore:City{city:"Bangalore"})<-[:in]-(indiraNagar:Location{location:"IndiraNagar"}),
(indiraNagar)-[:at]->(restaurant:Restaurant{name:"Starbucks Coffee"}),
(restaurant)-[:serves]->(eatable)
return eatable.comments AS Starbucks_Comments;
星巴克咖啡,IndiraNagar,班加罗尔提供的卡布奇诺咖啡顾客评价如何?
match (bangalore:City{city:"Bangalore"})<-[:in]-(indiraNagar:Location{location:"IndiraNagar"}),
(indiraNagar)-[:at]->(restaurant:Restaurant{name:"Starbucks Coffee"}),
(restaurant)-[:serves]->(cappuccino:Cappuccino)
return cappuccino.comments AS Starbucks_Cappuccino_Reviews;
比较星巴克咖啡,IndiraNagar 和 Beanstalk,IndiraNagar 的拿铁咖啡
match (bangalore:City{city:"Bangalore"})<-[:in]-(indiraNagar:Location{location:"IndiraNagar"}),
(indiraNagar)-[:at]->(starbucks:Restaurant{name:"Starbucks Coffee"}),
(indiraNagar)-[:at]->(beanstalk:Restaurant{name:"Beanstalk"}),
(starbucks)-[:serves]->(sLatte:Latte),
(beanstalk)-[:serves]->(bLatte:Latte)
return sLatte.rating AS Starbucks_Latte_Rating,sLatte.price AS Starbucks_Price,sLatte.comments AS Starbucks_Comments,bLatte.rating AS Beanstalk_Latte_Rating,bLatte.price AS Beanstalk_Price,bLatte.comments AS Beanstalk_Comments;
班加罗尔的哪些餐厅提供羊肉 Biryani?请提供他们的地址、评分、价格和顾客评论
match (bangalore:City{city:"Bangalore"})<-[:in]-(area:Location),
(area)-[:at]->(restaurant:Restaurant),
(restaurant)-[:serves]->(muttonBiryani:MuttonBiryani)
return restaurant.name AS Restaurant,area.location AS Area,restaurant.address AS Address,muttonBiryani.rating AS Rating,muttonBiryani.price AS Price;
请提供提供羊肉 Biryani 的餐厅列表,并根据评分降序排列,价格升序排列
match (bangalore:City{city:"Bangalore"})<-[:in]-(area:Location),
(area)-[:at]->(restaurant:Restaurant),
(restaurant)-[:serves]->(muttonBiryani:MuttonBiryani)
return restaurant.name AS Restaurant,area.location AS Area,restaurant.address AS Address,muttonBiryani.rating AS Rating,muttonBiryani.price AS Price
order by Rating DESC, Price ASC
星巴克咖啡,IndiraNagar 200 卢比以下提供什么?请提供按价格排序的列表
match (bangalore:City{city:"Bangalore"})<-[:in]-(indiraNagar:Location{location:"IndiraNagar"}),
(indiraNagar)-[:at]->(restaurant:Restaurant{name:"Starbucks Coffee"}),
(restaurant)-[:serves]->(eatable)
where eatable.price <= 200
return eatable.name as Menu,eatable.price AS Price,eatable.rating AS Rating,eatable.comments AS Comments
order by Price ASC
还可以做些什么?
你可以继续添加你的果汁店、汤店、茶摊、路边摊。你甚至可以添加一些额外的属性,例如菜系,这将让你查询特定菜系的特定菜肴。假设你想吃你最喜欢的辣椒鸡,但你想在一些中餐厅(中国菜)吃。你甚至可以添加餐厅的营业时间,以及你能想到的任何其他内容。
我对图数据库,特别是 Neo4j 的看法
图模型确实为你提供了一些有趣问题的答案。不,我们不会抨击关系数据库,你也可以在其他数据库中设计类似的东西。但我真正喜欢图数据库,特别是 Neo4j 的一点是,你可以真正将你的查询可视化为一个逐步的方法来达到最终结果,并且**这一切都是可能的,因为一切都相互关联。**很高兴看到一些大公司和初创公司正在使用 Neo4j,我在我附近发现了一家 Wooplr
由 Mahtab 在大量茶的帮助下创建
此页面是否有帮助?