4

シェイクスピアのデータ セットとクエリをローカル コンソールで再現しようとしていました。ノードと関係を作成しました。

neo4j-sh (0)$ START theater=node:venues(theatre = 'Theatre Royal'), newcastle=node:cities(city = 'Newcastle'), bard=node:authors('firstname:William AND lastname:Shakespeare') MATCH (newcastle)<-[:IN*1..4]-(theater)<-[:VENUE]-(performance)-[:PERFORMED]->(play)<-[w:WROTE]-(bard)  WHERE w.date > 1608  RETURN play;
==> MissingIndexException: Index `authors` does not exist

著者、会場、都市のインデックスを認識できなかったので、 [インデックス] タブを追加および削除して、これらのインデックスを作成しました。これはスクリーンダンプです

neo4j-sh (0)$ index --indexes
==> Node indexes:
==>   venues
==>   cities
==>   authors
==> 
==> Relationship indexes:

しかし、今では、同じクエリにエラーはありませんが、何も返されません。私は何を間違っていますか。Web コンソールからインデックスを作成する構文はそれほど明確ではありません。私は何を間違っていますか?

4

1 に答える 1

5

新しいインデックスを作成しても、既存のノードはインデックスに自動的に追加されません。新しく作成/編集されたノードは自動的に追加されますが、既存のノードは手動で処理する必要があります。

既存のノードをインデックスに登録するには、次の 3 つの方法があります。

  1. Indexコマンドを使用して、Neo4j Shell で手動でノードにインデックスを付けます。
  2. ノードに無用なSET操作を行って、強制的にノードに触れさせます(つまりSET myNode.prop = myNode.prop
  3. ノードを削除し、同じプロパティと関係でノードを再作成します

ドキュメントでneo4jのインデックス作成の詳細を読むことができます。

于 2013-03-11T19:03:02.533 に答える