1

44 ページまたはNeo4J bookから、クエリが機能するようにサンプル データに必要なインデックスを作成するにはどうすればよいですか?

neo4j.properties で自動インデックス作成を設定し、関連する ..._keys_indexable をリストしましたが、シェルでは常に「インデックス作成者が定義されていません」という行に沿ってエラーが発生します

次に、REST インターフェイスを使用してインデックスを手動で追加し、クエリが実行するサンプル データを削除して再インポートしようとしましたが、結果はゼロでした。

START theater=node:venue(name='Theatre Royal'), newcastle=node:city(name='Newcastle'), bard=node:author(lastname='Shakespeare') MATCH (newcastle)<-[:STREET|CITY*1..2]-(theater) <-[:VENUE]-()-[:PERFORMANCE_OF]->()-[:PRODUCTION_OF]-> (play)<-[:WROTE_PLAY]-(bard) RETURN DISTINCT play.title AS play;
==> +------+
==> | play |
==> +------+
==> +------+
==> 0 row 

それ以外の場合、これは Neo4j エンタープライズ 1.9 のすぐに使えるインストールです。

明らかに私はここに何かが欠けていますか?または、Java経由でこれを行う必要がありますか?

4

2 に答える 2

3

この質問をしていただきありがとうございます。これは確かに一部の人々が遭遇するものであり、おそらく書籍の Web サイトで説明する必要があります。

Ian と Jim は Java API を使用してデータセットを作成したため、インデックス作成フレームワークを使用してノードを手動で追加しました。

ただし、自動インデックスもうまく機能します。名前と姓の両方のプロパティを次のように設定してください。node_keys_indexable

データを挿入するに有効にするだけです。

それ以外の場合は、次の方法でインデックスを再作成する必要があります。

start n=node(*)
where has(n.name)
set n.name=n.name

start n=node(*)
where has(n.lastname)
set n.lastname=n.lastname

その後、 node_auto_index をインデックス名として使用でき、機能するはずです

START theater=node:node_auto_index(name='Theatre Royal'), 
newcastle=node:node_auto_index(name='Newcastle'), 
bard=node:node_auto_index(lastname='Shakespeare') 

MATCH (newcastle)<-[:STREET|CITY*1..2]-(theater) <-[:VENUE]-
      ()-[:PERFORMANCE_OF]->()-[:PRODUCTION_OF]-> 
      (play)<-[:WROTE_PLAY]-(bard) 

RETURN DISTINCT play.title AS play;
于 2013-05-27T07:29:46.170 に答える
0

新しいラベル機能を使用するために例を作り直しました。

CREATE (shakespeare:author { firstname: 'William', lastname: 'Shakespeare' }),                  (juliusCaesar { title: 'Julius Caesar' }), 
                 (shakespeare)-[:WROTE_PLAY { year: 1599 }]->(juliusCaesar),
                 (theTempest { title: 'The Tempest' }), 
                 (shakespeare)-[:WROTE_PLAY { year: 1610}]->(theTempest),
       (rsc { name: 'RSC' }),
       (production1 { name: 'Julius Caesar' }),
       (rsc)-[:PRODUCED]->(production1),
       (production1)-[:PRODUCTION_OF]->(juliusCaesar),
       (performance1 { date: 20120729 }),
       (performance1)-[:PERFORMANCE_OF]->(production1),
       (production2 { name: 'The Tempest' }),
       (rsc)-[:PRODUCED]->(production2),
       (production2)-[:PRODUCTION_OF]->(theTempest),
       (performance2 { date: 20061121 }),
       (performance2)-[:PERFORMANCE_OF]->(production2),
       (performance3 { date: 20120730 }),
       (performance3)-[:PERFORMANCE_OF]->(production1),
       (billy { name: 'Billy' }),
       (review { rating: 5, review: 'This was awesome!' }),
       (billy)-[:WROTE_REVIEW]->(review),
       (review)-[:RATED]->(performance1),
       (theatreRoyal:theatre { name: 'Theatre Royal' }),
       (performance1)-[:VENUE]->(theatreRoyal),
       (performance2)-[:VENUE]->(theatreRoyal),
       (performance3)-[:VENUE]->(theatreRoyal),
       (greyStreet { name: 'Grey Street' }),
       (theatreRoyal)-[:STREET]->(greyStreet),
       (newcastle:city { name: 'Newcastle' }),
       (greyStreet)-[:CITY]->(newcastle),
       (tyneAndWear { name: 'Tyne and Wear' }),
       (newcastle)-[:COUNTY]->(tyneAndWear),
       (england { name: 'England' }),
       (tyneAndWear)-[:COUNTRY]->(england),
       (stratford { name: 'Stratford upon Avon' }),
       (stratford)-[:COUNTRY]->(england),
       (rsc)-[:BASED_IN]->(stratford),
       (shakespeare)-[:BORN_IN]->stratford

クエリ

MATCH (theater:theatre),
        (newcastle:city),
        (bard:author),
        (newcastle)<-[:STREET|CITY*1..2]-(theater)<-[:VENUE]-()-[p:PERFORMANCE_OF]->()-[:PRODUCTION_OF]->(play)<-[:WROTE_PLAY]-(bard)
WHERE theater.name = "Theatre Royal" AND
            newcastle.name = "Newcastle" AND
            bard.lastname = "Shakespeare"
RETURN DISTINCT play AS play,count(p) AS performance_count
于 2013-12-16T21:05:52.003 に答える