グラフ構造のデータを高速検索するグラフ型データベース「Neo4j」の勘所 - (page 3)

長瀬嘉秀 (Neo4jユーザーグループ) 案浦浩二 (Neo4jユーザーグループ)

2015-04-20 16:30

データベースの検索

 データベースは作成できたので、次に検索をしてみます。検索には、CypherのMATCH文を使います。1990年代に上映された映画を探すのは、以下のコマンドです。

MATCH (nineties:Movie) WHERE nineties.released > 1990 AND nineties.released < 2000 RETURN nineties.title
図6:Neo4jの検索コマンド
図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のグラフ
図8:Tom HanksとMeg Ryanのグラフ

 このグラフから『Joe Versus the Volcano(邦題:ジョー、満月の島へ行く)』で共演していることがわかります。

ZDNET Japan 記事を毎朝メールでまとめ読み(登録無料)

ZDNET Japan クイックポール

所属する組織のデータ活用状況はどの段階にありますか?

NEWSLETTERS

エンタープライズコンピューティングの最前線を配信

ZDNET Japanは、CIOとITマネージャーを対象に、ビジネス課題の解決とITを活用した新たな価値創造を支援します。
ITビジネス全般については、CNET Japanをご覧ください。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]