web-dev-qa-db-ja.com

Neo4j:自動インデックスを作成するためのステップバイステップ

新しいNeo4jデータベースを作成しています。ユーザーと呼ばれるタイプのノードがあり、ユーザーIdentifierおよびEmailAddressのプロパティのインデックスが必要です。データベースが新しい場合、どのようにしてインデックスを設定しますか? neo4j.propertiesファイルで、インデックスの作成をサポートしているようです。しかし、私はこれらをそのように設定すると

# Autoindexing

# Enable auto-indexing for nodes, default is false
node_auto_indexing=true

# The node property keys to be auto-indexed, if enabled
node_keys_indexable=EmailAddress,Identifier

ノードを追加してクエリを実行し、存在することがわかっている識別子を見つけます

START n=node:Identifier(Identifier = "USER0")
RETURN n;

その後、私は

MissingIndexException: Index `Identifier` does not exist

インデックスを作成して開始クエリで使用するにはどうすればよいですか?私はこれを達成するために設定ファイルと暗号を使いたいだけです。つまり、現時点では、Power Tool Consoleでのみプレイしています。

23
Aran Mulholland

以下をneo4j.propertiesファイルに追加します

# Autoindexing

# Enable auto-indexing for nodes, default is false
node_auto_indexing=true

# The node property keys to be auto-indexed, if enabled
node_keys_indexable=EmailAddress,Identifier

ノードの自動インデックスを作成する

neo4j-sh (0)$ index --create node_auto_index -t Node

それらが存在するかどうかを確認します

neo4j-sh (0)$ index --indexes

戻る必要があります

Node indexes:
node_auto_index

クエリを実行するときは、次の構文を使用してインデックスを指定します

start a = node:node_auto_index(Identifier="USER0")
return a;

ノードに自動インデックスが作成されるため、インデックスの名前はnode_auto_index

この情報は、 このページの下部にあるコメントからのものです

更新

自動インデックス作成がオンになる前に存在していた現在のデータにインデックスを付けたい場合(ここで、Property_Nameはインデックスの名前です)

START nd =node(*) 
WHERE has(nd.Property_Name)
WITH nd
SET nd.Property_Name = nd.Property_Name
RETURN count(nd);
51
Aran Mulholland

Neo4j 2.0では、代わりにラベルと新しい制約を使用する必要があります

    CREATE CONSTRAINT ON (n:User) ASSERT n.Identifier IS UNIQUE
    CREATE CONSTRAINT ON (n:User) ASSERT n.EmailAddress IS UNIQUE

メールがユーザーごとに一意でない場合は、代わりにプレーンインデックスを作成します。

    CREATE INDEX ON :User(EmailAddress)
8
boggle

インデックスは主にwhere条件に使用されるプロパティで作成されます。 Neo4j 2.0では、インデックスを簡単に作成できます。

ラベルにインデックスを作成する

CREATE INDEX ON :Person(name)

ラベルにインデックスをドロップする

DROP INDEX ON :Person(name)

一意性制約を作成する

CREATE CONSTRAINT ON (book:Book) ASSERT book.isbn IS UNIQUE

一意性制約を削除

DROP CONSTRAINT ON (book:Book) ASSERT book.isbn IS UNIQUE

Neo4j-browserのすべてのインデックスと制約を一覧表示するには、次のコマンドが役立ちます

:schema

以下を使用して、特定のラベルのインデックスと制約をリストします。

:schema ls -l :YourLabel
8
Somnath Muluk