2012-10-13 8 views
23

新しいNeo4jデータベースを作成しています。私はUserというノードのタイプを持っており、ユーザのプロパティに関するインデックスを希望します識別子EmailAddress。データベースが新しいときにインデックスを設定するにはどうすればよいですか?私はneo4j.propertiesファイルにインデックスの作成をサポートするように見えてきました。しかし、私はそうNeo4j:ステップバイステップで自動インデックスを作成する

# 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でしか再生していません。

+0

以下尻込みの答えを見ていることを確認します - どのようにインデックスあなたはそれが新しいデータベースだと言うように、最新のneo4jバージョンに移行することはオプションです... –

答えて

51

チェックは、彼らが

neo4j-sh (0)$ index --indexes 

を存在する場合

を返す必要があります

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

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

# 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.propertiesに以下を追加します。ノードが自動インデックスの名前がnode_auto_index

この情報は、this page

の下部にあるコメントから来ているインデックス化されたよう

インデックス

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

を指定するには、次の構文を使用して照会する場合

更新

あなたはINDEしたい場合X自動インデックス作成をオンにして前にあった、あなたの現在のデータ(PROPERTY_NAMEは、あなたのインデックスの名前です)のNeo4j 2.0では

START nd =node(*) 
WHERE has(nd.Property_Name) 
WITH nd 
SET nd.Property_Name = nd.Property_Name 
RETURN count(nd); 
+0

[Windows上でのneo4j-shの起動方法](http:// stackoverflow。 com/a/19275558/1174169) – cod3monk3y

+2

http:// localhost:7474/webadminを使用します。ページのロード後、コンソールタブを選択します。そこのシェルコマンドを実行することができます。 – MSRS

+1

この回答は本当に古く、これがこれを行うための最良の方法であるかどうかはわかりません。これに関するいくつかの明確化は良いでしょう。 –

8

は、あなたの代わりに

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

インデックスは、主に場所条件に使用されるプロパティで作成されます。 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-ブラウザですべてのインデックスと制約を一覧表示するために、以下のコマンドが便利です

:schema 

リストのインデックスや特定のラベルのための制約を持つ:

:schema ls -l :YourLabel 
関連する問題