2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Phone Appli DevelopersAdvent Calendar 2019

Day 4

特定の映画の出演者の他の出演作品を表示する。#neo4j

Last updated at Posted at 2019-12-04

#始めに
advent calendarに乗じて、興味があったがあまり触れていなかったグラフDBを少し触ってみようと思い、この題材になりました☺️
映画の出演者が出ている他の映画を簡単に検索できるような物を作成します。(今後も、絶対Wikipediaを使います。🥳)

neo4jとは https://neo4j.com

様々な要素同士の関係性を扱えるDB
RDBではなく、GraphDB
無向グラフ.(有向グラフも扱うことはできるが、非推奨)

Wikipediaとかがいい例
アイアンマン(映画) -> ロバートダウニー・Jr -> アベンジャーズ
->キャプテンアメリカ -> (以下ループ)

データの作成

まず、映画と出演者のデータを作成します。
今回はneo4jのSample Dataを利用します。
$ :play movie graph
Web Consoleに上記を入力します。
すると、2ページ目にSample Dataを作成するためのQuery(Cypher)が表示されます。(以下Cypher)
Cypherが書かれているTextBoxをクリックするとConsoleに自動入力され、実行できます。
スクリーンショット 2019-12-04 11.18.28.png
実際の作成後が以下になります。
スクリーンショット 2019-12-04 11.22.56.png

##特定の映画の出演者の他の出演作品を表示する。
まず、特定の映画の出演者を表示してみましょう。(今回は、マトリックスです。)
以下のCypherを実行します。
$ MATCH(n:Movie{title:"The Matrix"})<-[r:ACTED_IN]-(m:Person) return n,m
を実行します。

スクリーンショット 2019-12-04 11.40.35.png

すると,The Matrixの出演者が表示されます。
次にこの演者が出ている他の映画を表示します。
以下Cypherを実行します
MATCH(n:Movie{ title:"The Matrix"})<-[r:ACTED_IN]-(m:Person)-[d:ACTED_IN]->(s:Movie) return n,m,s
スクリーンショット 2019-12-04 11.56.41.png
これで、The Matrixの出演者の他の出演作品を取得することができました。

neo4jでは、tableなどグラフ以外の表示が可能なので、必要な情報に絞って表示します。
MATCH(n:Movie{ title:"The Matrix"})<-[r:ACTED_IN]-(m:Person)-[d:ACTED_IN]->(s:Movie) return m.name,s.title
上記のCypherの結果が以下です。
スクリーンショット 2019-12-04 12.19.37.png

これで、The Matrixの出演者の他の出演作品が一覧で確認できるようになりました。(マトリックスが3部作とは知らなかった、、、🤔)

#最後に
neo4jのWeb Consoleを触りましたが、様々なプログラミング言語で利用できます。
neo4jでないですが、グラフDBはパナマ文書の解析やFacebookなどにも使われています。
今後、グラフDBを用いて面白い物が作成できればと思います。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?