25

新しいNeo4jデータベースを作成しています。Userというタイプのノードがあり、userIdentifierと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

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

4

3 に答える 3

52

以下を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);
于 2012-10-14T00:05:49.130 に答える
9

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
于 2014-04-29T11:06:49.440 に答える
8

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)
于 2014-02-23T11:59:33.963 に答える