2017-11-15 6 views
0

Neo4jを初めて使用しています。私はNeo4jでYelpデータセットを設定しようとしています。基本的に、私はそれらによって提供される3つのJSONファイルに興味すなわちノード間でNeo4J関係を作成する方法yelpデータセット

私は出力読める

business.jsonを作るために、友人の配列からいくつかのエントリを省略している

{ 
    "user_id": "-lGwMGHMC_XihFJNKCJNRg", 
    "name": "Gabe", 
    "review_count": 277, 
    "yelping_since": "2014-10-31", 
    "friends": ["Oa84FFGBw1axX8O6uDkmqg", "SRcWERSl4rhm-Bz9zN_J8g", "VMVGukgapRtx3MIydAibkQ", "8sLNQ3dAV35VBCnPaMh1Lw", "87LhHHXbQYWr5wlo5W7_QQ"], 
    "useful": 45, 
    "funny": 4, 
    "cool": 55, 
    "fans": 17, 
    "elite": [], 
    "average_stars": 4.72, 
    "compliment_hot": 5, 
    "compliment_more": 1, 
    "compliment_profile": 0, 
    "compliment_cute": 1, 
    "compliment_list": 0, 
    "compliment_note": 11, 
    "compliment_plain": 20, 
    "compliment_cool": 15, 
    "compliment_funny": 15, 
    "compliment_writer": 1, 
    "compliment_photos": 8 
} 

user.json

{ 
    "business_id": "YDf95gJZaq05wvo7hTQbbQ", 
    "name": "Richmond Town Square", 
    "neighborhood": "", 
    "address": "691 Richmond Rd", 
    "city": "Richmond Heights", 
    "state": "OH", 
    "postal_code": "44143", 
    "latitude": 41.5417162, 
    "longitude": -81.4931165, 
    "stars": 2.0, 
    "review_count": 17, 
    "is_open": 1, 
    "attributes": { 
     "RestaurantsPriceRange2": 2, 
     "BusinessParking": { 
      "garage": false, 
      "street": false, 
      "validated": false, 
      "lot": true, 
      "valet": false 
     }, 
     "BikeParking": true, 
     "WheelchairAccessible": true 
    }, 
    "categories": ["Shopping", "Shopping Centers"], 
    "hours": { 
     "Monday": "10:00-21:00", 
     "Tuesday": "10:00-21:00", 
     "Friday": "10:00-21:00", 
     "Wednesday": "10:00-21:00", 
     "Thursday": "10:00-21:00", 
     "Sunday": "11:00-18:00", 
     "Saturday": "10:00-21:00" 
    } 
} 

review.j息子

{ 
    "review_id": "VfBHSwC5Vz_pbFluy07i9Q", 
    "user_id": "-lGwMGHMC_XihFJNKCJNRg", 
    "business_id": "YDf95gJZaq05wvo7hTQbbQ", 
    "stars": 5, 
    "date": "2016-07-12", 
    "text": "My girlfriend and I stayed here for 3 nights and loved it.", 
    "useful": 0, 
    "funny": 0, 
    "cool": 0 
} 

我々はユーザーとビジネスとの関係がreview.jsonファイルを経由して関連しているサンプルファイルで見ることができるように。 review.jsonファイルを使用してuserbusinessの間にリレーションシップエッジを作成するにはどうすればよいですか。

Mark Needhamのチュートリアルでは、StackOverflowデータの人口が表示されていますが、この場合、リレーションシップファイルは既にサンプルデータとともに表示されています。同様のファイルを作成する必要がありますか?はいの場合、どのようにこの問題にアプローチする必要がありますか?またはユーザー&の間に関係を構築する他の方法はありますか?

答えて

1

それは非常にあなたが何をしたいのようにモデルに依存しますが、3つの輸入を行うことができます:

//Create Users - does assume the data is unique 
CALL apoc.load.json('file:///c://temp//SO//user.json') YIELD value AS user 
CREATE (u:User) 
SET u = user 

、その後の事業を追加します。企業にとって

CALL apoc.load.json('file:///c://temp//SO//business.json') YIELD value AS business 
CREATE (b:Business { 
      business_id  : business.business_id, 
      name   : business.name, 
      neighborhood : business.neighborhood, 
      address   : business.address, 
      city   : business.city, 
      state   : business.state, 
      postal_code  : business.postal_code, 
      latitude  : business.latitude, 
      longitude  : business.longitude, 
      stars   : business.stars, 
      review_count : business.review_count, 
      is_open   : business.is_open, 
      categories  : business.categories 
     }) 

、私たちをJSONにネストされたマップがあるため、SET b = businessを実行することはできません。だから、あなたがそれらを望むかどうかを決めることができ、別のルートを下る必要があるかもしれません。

最後に、私たちがすべて参加するレビューです。

CALL apoc.load.json('file:///c://temp//SO//review.json') YIELD value AS review 
CREATE (r:Review) 
SET r = review 
WITH r 
//Match user to a review 
MATCH (u:User {user_id: r.user_id}) 
CREATE (u)-[:HAS_REVIEW]->(r) 
WITH r, u 
//Match business to a review, and a user to a business 
MATCH (b:Business {business_id: r.business_id}) 
//Merge here in case of multiple reviews 
MERGE (u)-[:HAS_REVIEWED]->(b) 
CREATE (b)-[:HAS_REVIEW]->(r) 

明らかに - 変更ラベル/あなたが望むタイプとの関係、そしてあなたはそれを動作するようにapoc.periodic.iterateを使用する必要がある場合がありますので、それは、などのデータのサイズに応じたチューニングが必要になる場合があります。あなたは(そしてあなたがそれを使用する必要があります!)に感謝あなたの助けを

+0

おかげで、それを必要とする場合

黙示録はhereです。友達関係を作成する方法、つまりuser_idと友人の配列の間のユーザーレコードを教えてください。私はレビューと同じ方法で試しましたが、それは永遠に続いています。再度、感謝します – Moosa

関連する問題