GraphGists

餐厅推荐:引言

restaurant recommendation model

我们希望演示将领域建模为图并在几乎自然语言中回答问题是多么容易。

基于图的搜索和发现是像Neo4j这样的图数据库的一个突出用例。

在这里,我们使用一个关于提供各种菜肴并位于某个城市的餐厅领域。

领域图是使用Arrows工具创建的。

设置:创建朋友、餐厅、城市和菜肴

我们将创建一个小的示例图,包含喜欢某些菜肴的人以及提供这些菜肴的餐厅。我们的人都在同一个社交圈(朋友关系)中,因此我们可以根据他们的社交联系和偏好创建其他人会喜欢的菜肴和餐厅推荐。

CREATE (philip:Person {name:"Philip"})-[:IS_FRIEND_OF]->(emil:Person {name:"Emil"}),
       (philip)-[:IS_FRIEND_OF]->(michael:Person {name:"Michael"}),
       (philip)-[:IS_FRIEND_OF]->(andreas:Person {name:"Andreas"})
CREATE (sushi:Cuisine {name:"Sushi"}), (nyc:City {name:"New York"}),
       (iSushi:Restaurant {name:"iSushi"})-[:SERVES]->(sushi),(iSushi)-[:LOCATED_IN]->(nyc),
       (michael)-[:LIKES]->(iSushi),
       (andreas)-[:LIKES]->(iSushi),
       (zam:Restaurant {name:"Zushi Zam"})-[:SERVES]->(sushi),(zam)-[:LOCATED_IN]->(nyc),
       (andreas)-[:LIKES]->(zam)

Philip的朋友

首先,让我们看看一些图数据,找出谁是Philip的朋友。

MATCH (philip:Person {name:'Philip'})-[:IS_FRIEND_OF]-(person)
RETURN person.name

我们应该在图中有Philip的3个朋友 - Andreas、Michael和Emil。

纽约市的餐厅及其菜肴

现在我们来看看餐厅以及它们所在的城市和它们提供的菜肴。

MATCH (nyc:City {name:'New York'})<-[:LOCATED_IN]-(restaurant)-[:SERVES]->(cuisine)
RETURN nyc, restaurant, cuisine

此查询应向我们展示纽约 City 的节点和关系,在该 City 的2家 LOCATED_IN 餐厅,以及每家餐厅 SERVES 寿司 Cuisine。

图搜索推荐

sushi restaurants nyc

现在我们对数据有了概念,可以开始根据连接我们的人、位置、菜肴和餐厅的关系来推荐事物。

我们想通过回答以下问题为Philip做出推荐

"" 找到Philip的朋友喜欢在纽约的寿司餐厅。""

推荐标准

要回答这个问题,我们需要找到起点 - Philip需要推荐,所以他的节点是我们在图中开始搜索的地方。现在我们需要根据问题中的以下标准确定在图的哪些部分进行搜索

  • 找到Philip和他的朋友

  • 找到位于纽约的餐厅

  • 找到提供寿司菜肴的餐厅

  • 找到Philip的朋友喜欢的餐厅

推荐查询

根据这些标准,我们构建此查询

MATCH (philip:Person {name: 'Philip'}),
      (philip)-[:IS_FRIEND_OF]-(friend),
      (restaurant:Restaurant)-[:LOCATED_IN]->(:City {name: 'New York'}),
      (restaurant)-[:SERVES]->(:Cuisine {name: 'Sushi'}),
      (friend)-[:LIKES]->(restaurant)
RETURN restaurant.name as restaurantName, collect(friend.name) AS recommendedBy, count(*) AS numberOfRecommendations
ORDER BY numberOfRecommendations DESC

这告诉我们,Philip的2个朋友推荐iSushi餐厅的寿司,他的1个朋友推荐Zushi Zam餐厅的寿司。

关于推荐的更多信息

更大的图和更深的关系路径可以增加推荐引擎的复杂性和能力。此示例展示了利用网络中的关系构建这些系统以推荐产品、爱好、服务、相似性等方面的初步步骤和逻辑。

© . All rights reserved.