Neo4j DeskTop, Neo4j Bloomの紹介 #neo4j
この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。
Neo4j Bloomとは、Neo4j DeskTopのアプリケーションの1つであり、Cyhperクエリが書けない人でも、高度な検索ができる優れたGUIツールです。弊社の木内がNeo4j Desktop, Neo4j ETLの紹介を掲載していますが、今回は、Neo4j Bloomをご紹介します。
- Bloomは、ローカルGDB又はリモートのGDBに接続します。
- Bloomのグラフ操作は、ローカルのリソース上で行われます。
-
標準のNeo4jブラウザーは、数百ノードを表示した時点で動きが鈍くなりますが、Bloomは数万ノード以上までスムーズに操作可能です。もちろん、手許のコンピュータのリソースに大きく依存します。ここでは、Windows10/1.70GHz/8GB/64ビットOSといった仕様のノードPCを利用しています。
[参照サイト]
https://neo4j.com/bloom/
[Neo4j Desktopとは]
Neo4j DesktopはNeo4j Enterprise Edition(有償版)にバンドルされているツールですが、開発やデモで利用する場合は、無料で利用できます。
・Neo4j Desktopでは、Neo4j Server Enterprise Editionを使っています。
・複数のバージョンのGDBをローカルで利用できます。
・Neoj4 Bloom, ETL, Browserなどのアプリケーションが統合されています。
・APOC、Graph Algorithms、GraphQLなどのフラグインが統合されている。
事前準備
Neo4j DeskTopのインストール
次のサイトを訪問し、Neo4j DeskTopのインストールパッケージを入手し、インストールを実行してください。ここでは、Windows10gをベースに解説しています。
Neo4j DeskTop Download
JDKが入っていない方は、JDK8をインストールしてください。
Neo4j DeskTopを起動すると、次のような画面が表示されます。
Neo4jサーバのインストール
初期状態では、Neo4jサーバが存在しない状態です。次の赤枠をクリックし、Neo4サーバをインストールしてください。
Create a Local Graphをクリックしてください。
グラフ名とパスワードを設定し、バージョンを選んで作成を開始します。
Neo4jサーバのインストールが終わったら起動してください。
Neo4jサーバが起動できました。
映画GDBのアップロード
Neo4jブラウザーをクリックしてください。
コマンドラインから、:play movie graphコマンドを実行してください。
右に進んでください。
Cypherクエリ文をクリックし、コマンドラインにロードしてから実行ボタンを押してください。
コマンドラインからcall db.schema()を実行し、メタグラフを表示してみてください。メタグラフは、Neo4j Bloomを利用する時に必要最低限の情報となります。
Neo4j Bloomのインストール
Neo4j Desktopのアプリケーションを利用するためには、それぞれの認証キー(activation key)が必要です。次のURLからBloomのアクティベーションキーがほしい、という旨を伝えて入手してください。
アクティベーションキーの入手
初期画面のサイドバーを下にスクロールし、Enable development modeをアクティブにしてください(ただ、クリックするだけでいいです)。
アクティベーションキーをサイドバーの2カ所に入力します(同じキーを2カ所にコピー)。
Neo4j Bloomを使う場合、その都度、アクティベーションキーの入力が必要です。
それから、Deployment Appを実行します(クリック)。
次のようにNeo4j Bloomの画面が表示されるはずです。
パースペクティブドローをクリックすると、次のように映画GDBがパースペクティブの対象になっているはずです。
Bloom画面の名称は、次のとおりです。
- シーン(Scene)
シーンとは、まさに映画の「シーン」のように色んなグラフ検索を行う場所であり、何かが行われている場面(シーン)でもあります。画面の枠のことではなく、ロケーション的にはサイドバーを除く右画面全体です。
Neo4j Bloomのパースペクティブ
パースペクティブとは
パースペクティブは、Neo4j Bloomで使用するグラフの構成や範囲、表示などをカスタマイズするコンポネントです。
- パースペクティブは、任意に追加や排除が可能です。
- カテゴリ(ノード)、属性も、任意に追加や排除可能です。
- Cypherクエリのテンプレートを事前登録して利用可能です(サーチフレーズ)。
- ノードのアイコンを登録できます。
- パースペクティブの設定内容をエクスポート及びインポート可能です。
パースペクティブの設定
パースペクティブドローをクリックしてからMovieをクリックしてみてください。属性のどれを表示するか、排除するかなどが設定できます。
Personもクリックしてみてください。同様な設定ができます。
Neo4j Bloomの操作
ここでは、Neo4j Bloomの機能を9個の演習を通して紹介します。
演習1
名前がTomで始まる人を検索します。
次のような結果になります。
演習2
Tom Hanksさんを検索してみます。
まさに、シーンを変える必要があります。右クリックしてClear Sceneをクリックすると、現在のシーンはすべて消えます。
それから、Tom Hanksさんを選択し、Enterキーを押します。
次のような結果になります。
演習3
Tom Hanksさんと関連している映画を検索してみます。
サーチバーのTom Hanksという名前の次にスペースを空けて、隣接したノードのラベル名(movie)を入力してみてください。自動的にデータモデルのリストを表示してくれます。1個選んでクリックします。
次のようにTom Hanksさんと関連している映画が表示されます。
演習4
次は、シーン画面からカテゴリレジェンドを操作してみます(画面右上のラベル達)。カテゴリレジェンドのラベルを選択すると、そのラベルに属するすべてのノードをロックオン/ロックアウトすることができます。
Personラベルをクリックしてみます。
次は、Movieラベルをクリックしてみます。
さらに、Movieラベルをクリックしてみます。
シーン画面で右クリックすると、コンテキストメニューが表示されます。
コンテキストメニューは、固定ではありません。それぞれのシーンで選択しているオプションに従ってできることを表示します。ここでは、インスペクト(Inspect)をクリックしてみます。
インスペクトは、選択されたノードの属性、リレーションシップ、隣接ノードなどを表示します。
次は、選択したノード(Tom Hanks)の属性を表示しています。
次は、選択したノードのリレーションシップを表示しています。
次は、隣接ノードと属性を表示しています。
演習5
Tom Hanksさんが出演及び監督した映画と、その映画の関係者を検索してみます。既に映画は検索済みなので、スペースを空けて隣接したノードのラベル名を入力すると、次のようなデータモデルのリストが表示されます。
1個選んでクリックしてみてください。
次のようなグラフが表示されるはずです。
ズームインすると、名称が見えてきます。
演習6
演習5のような状態では、もはや目で追っていくには限界があります。
ここでは、Tom Hanksさんが監督した映画に絞り込んで掘り下げてみます。
That Thing You Doという映画を選択し、右クリックをしてからDismiss Other Nodesをクリックしてみてください。
まるで映画のワンシーンのように、ターゲットしたノードを残して、他のグラフがすべて消えます。
ここから、カードリストを開いてみてください。
それから、Expandをクリックしてみてください。
次のようにTom Hanksさんが出演及び監督した映画と、その映画に出演した俳優さんが表示されます。
neo4j-bloom-operation-6-5
演習7
ここまでは、主にネットワーク上の隣接したノードの検索でした。
ここでは、ノードとノードを結ぶリレーションシップにフックを掛けるような検索を実行してみます。
サーチバーにfollow reviewのようにリレーションシップのタイプを入力してみてください。前方一致すれば、データモデルのリストが表示されます。それをクリックしてみてください。
フォローしている関係と、映画のレビューをしている関係だけが検索結果になっています。
演習8
Neo4j Bloomでは、ノードにアイコンを設定して表示できます。
アイコンを設定すると、こんな見栄えになります。
演習9
Neo4j Bloomでは、定型のCypherクエリを事前にテンプレートとして登録しておいて、一般ユーザはCypherクエリを意識せず、ただのキーワード検索として実行してもらうことが可能です。
これは、パースペクティブのサーチフレーズで設定します。
次のように、サーチフレーズとCypherクエリを書いて$nameのようにバインディング変数を埋め込んで置きます。
保存すると、サーチフレーズのリストとして表示されます。
サーチフレーズは、シーン画面のサーチバーで名称を入力すると、前方一致で反応してリストが表示されます(ここでは、find)。
サーチフレーズを選択し、変数としてTomを入力すると、前方一致の名前が表示されます。
検索を実行すると、次のような結果になります。
このようにサーチフレーズによる検索は、Cypherクエリが書けないユーザに対してCypherクエリを隠蔽し、平凡なキーワード検索として実行してもらうことができます。
- どうしても複雑なCypherクエリが必要な検索である場合
- 検索結果に何等かの制限を掛ける必要がある場合
- 複雑なシーンが重なるような定型検索である場合
まとめ
このようにNeo4j Bloomを利用すると、Cyhperクエリが書けない一般ユーザでも、手軽に高度な検索ができます。そこそこの検索システムなら、アプリケーションの開発は要らないかも知れません。