私はここで二つのオプションを参照してください。
1)すべてのノードが持っている新しい「スーパー」のラベルを作成し、このラベルにあなたのインデックスを作成します。ノードはすべてのノードが持つスーパーラベルを動作する新しいラベルを作成することができ、複数のラベルを持つことができますので
2)は、手動インデックス
1.「スーパー」ラベル
を使用してください。次にuid
プロパティのスキーマインデックスをに作成し、というラベルを付けてクエリを実行します。例えば
は、あなたが現在ノードラベルUser
とCustomer
があり、uid
プロパティは、両方のノードラベル間123
あるノードのためのインデックス付き検索を行いたいとしましょう。 User
またはCustomer
ラベルのいずれかを持っているすべてのノードに新しいラベルPerson
を作成します。
MATCH (a)
WHERE any(x in labels(a) WHERE x IN ["User", "Customer"])
SET a:Person;
今:Person(uid)
にインデックスを作成します。
CREATE INDEX ON :Person(uid);
これはそれが本当に一意性制約を持たなければならない固有の識別子であるので、 (インデックスを作成する):
CREATE CONSTRAINT ON (p:Person) ASSERT p.uid IS UNIQUE;
この新しいスキーマインデックスを検索:
MATCH (p:Person {uid: "123"})
RETURN p
かは、JavaのAPIであるため、:
:
Node person = graphdb.findNode("Person", "uid", "123")
2.マニュアルインデックス
は、JavaのAPIを使用しているので、あなたもcreating a manual indexのオプションがあります
// Create index
IndexManager index = graphdb.index();
Index<Node> people = index.forNodes("people");
// Add nodes to index
Node user1 = graphdb.createNode();
user1.setProperty("uid", "123");
// Search index
IndexHits<Node> hits = people.get("uid", "123");
Node user123 = hits.getSingle();
このuidプロパティの値はどのように作成しますか? – alexanoid
テスト目的のために、私はcypherステートメントを使ってノードを作成しました:CREATE(n:TEST {uid: "test"}) –