在密码查询中无法识别索引

use*_*018 4 neo4j cypher

我试图在我的本地控制台中重现莎士比亚数据集和查询.我创建了节点和关系.

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
Run Code Online (Sandbox Code Playgroud)

没有识别作者,场地和城市索引,所以我去添加和删​​除索引选项卡并创建这些索引.这是屏幕转储

neo4j-sh (0)$ index --indexes
==> Node indexes:
==>   venues
==>   cities
==>   authors
==> 
==> Relationship indexes:
Run Code Online (Sandbox Code Playgroud)

但是现在,相同的查询没有错误但没有返回任何内容.我究竟做错了什么.从Web控制台创建索引的语法不是那么清楚.我究竟做错了什么?

ean*_*533 5

创建新索引时,现有节点不会自动添加到索引中.将自动添加新创建/编辑的节点,但您必须手动处理现有节点.

有三种方法可以将现有节点放入索引中:

  1. 使用该Index命令使用Neo4j Shell手动索引节点
  2. SET对节点执行无用的操作以强制它们被触摸(即SET myNode.prop = myNode.prop)
  3. 删除节点并使用相同的属性和关系重新创建它们

您可以在文档中阅读有关neo4j索引的更多信息.

  • 但这仅适用于自动索引,本书中使用的索引是手动创建的,节点也是手动添加的.控制台使用技巧将您看到的索引名称转换为自动索引名称. (2认同)