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

时间:2013-03-11 16:26:38

标签: neo4j cypher

我试图在我的本地控制台中重现shakespeare数据集和查询。 我创建了节点和关系。

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控制台创建索引的语法不是那么清楚。我究竟做错了什么?

1 个答案:

答案 0 :(得分:5)

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

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

  1. 使用Index命令
  2. ,使用Neo4j Shell手动索引节点
  3. 对您的节点执行无用的SET操作以强制它们被触摸(即SET myNode.prop = myNode.prop
  4. 删除节点并使用相同的属性和关系重新创建它们
  5. 您可以阅读有关neo4j索引in the documentation的更多信息。