データベースの検索
データベースは作成できたので、次に検索をしてみます。検索には、CypherのMATCH文を使います。1990年代に上映された映画を探すのは、以下のコマンドです。
MATCH (nineties:Movie) WHERE nineties.released > 1990 AND nineties.released < 2000 RETURN nineties.title
図6:Neo4jの検索コマンド
実際の検索コマンドと検索結果です。RTURN句の後に、nineties.titleというようにタイトルを表示するようにしているので、映画のタイトルの一覧になっています。他に、Tom Hanksの映画を検索するのは、次のようなCypherになります。
MATCH (tom:Person {name: "Tom Hanks"})-[:ACTED_IN]->(tomHanksMovies) RETURN tom,tomHanksMovies
これだけではシンプルすぎるので、もう少し複雑な例として、Tom Hanksと共演した人の名前の一覧を検索してみます。
MATCH (tom:Person {name:"Tom Hanks"})-[:ACTED_IN]->(m)<-[:ACTED_IN]-(coActors) RETURN coActors.name
ここで、Tom Hanksに関係しているデータをみてみましょう。そのデータを表示するには、次のようなCypherを入力します。
MATCH (bacon:Person {name:"Tom Hanks"})-[*1..4]-(hollywood) RETURN DISTINCT hollywood
ここでは、Tom Hanksに関係する1から4階層までのものを検索することを意味しています。
Tom Hanksに関連するものはたくさんあるので、かなり大きいグラフが表示されました。次に、Tom HanksとMeg RyanのつながりをCypherで調べてみます。この検索の場合、最短経路を検索すれば良いので、shortestPathを使います。コマンドは、以下のようになります。
MATCH p=shortestPath( (bacon:Person {name:"Tom Hanks"})-[*]-(meg:Person {name:"Meg Ryan"}) ) RETURN p
このグラフはこのようになります。
図8:Tom HanksとMeg Ryanのグラフ
このグラフから『Joe Versus the Volcano(邦題:ジョー、満月の島へ行く)』で共演していることがわかります。