重要な概念は、インデックスがキー/値/オブジェクトのトリプレットであり、オブジェクトがインデックスを作成するノードまたは関係のいずれかであるということです。
インデックスを作成して使用する手順:
グラフ データベース レスト クライアントのインスタンスを作成します。
from neo4jrestclient.client import GraphDatabase
gdb = GraphDatabase("http://localhost:7474/db/data/")
ノードまたは関係インデックスを作成する (ノード インデックスの作成はこちら)
index = gdb.nodes.indexes.create('latin_genre')
ノードをインデックスに追加する
nelly = gdb.nodes.create(name='Nelly Furtado')
shakira = gdb.nodes.create(name='Shakira')
index['latin_genre'][nelly.get('name')] = nelly
index['latin_genre'][shakira.get('name')] = shakira
インデックスに基づいてノードを取得し、さらに処理を行います。
for artist in index['latin_genre']['Shakira']:
print artist.get('name')
詳細については、webadminのメモを参照してください。
Neo4j には、ノード インデックスと関係インデックスの 2 種類のインデックスがあります。ノード インデックスを使用してノードにインデックスを付けて検索し、関係インデックスを使用して関係に対して同じことを行います。
各インデックスにはプロバイダーがあり、これはそのインデックスを処理する基になる実装です。デフォルトのプロバイダーは lucene ですが、必要に応じて独自のインデックス プロバイダーを作成できます。
Neo4j インデックスは、キー/値/オブジェクトのトリプレット (「オブジェクト」はノードまたは関係) を取り、キー/値のペアにインデックスを付け、これを提供されたオブジェクトに関連付けます。キー/値/オブジェクトのトリプレットのセットにインデックスを付けた後、インデックスをクエリして、クエリに一致するキー/値のペアでインデックス付けされたオブジェクトを取得できます。
たとえば、データベースに「ユーザー」ノードがあり、ユーザー名または電子メールですばやく検索したい場合は、「ユーザー」という名前のノード インデックスを作成し、各ユーザー インデックスのユーザー名と電子メールを作成できます。デフォルトの lucene 構成では、「username:bob OR email:bob@gmail.com」のようなクエリで「Users」インデックスを検索できます。
データ ブラウザを使用して、この方法でインデックスをクエリできます。上記のクエリの構文は、「node:index:Users:username:bob OR email:bob@gmail.com」です。