Indexing Neo4j数据库索引

Indexing Neo4j数据库索引,indexing,neo4j,cypher,Indexing,Neo4j,Cypher,我有一个小图表: CREATE (Thing:Class {title:'Thing'}) CREATE (Places:Class{title:'Places'}) CREATE (Lemma:Class {title:'Lemma'}) CREATE (Country:Class {title:'Country'}) CREATE (Region:Class {title:'Region'}) CREATE (loc1:Index {title:'loc00001'}) CREATE (lo

我有一个小图表:

CREATE (Thing:Class {title:'Thing'})
CREATE (Places:Class{title:'Places'})
CREATE (Lemma:Class {title:'Lemma'})
CREATE (Country:Class {title:'Country'})
CREATE (Region:Class {title:'Region'})
CREATE (loc1:Index {title:'loc00001'})
CREATE (loc1_1:Index {title:'loc00001.01'})
CREATE (Abc:Placename {title:'Abc', gender:'n'})
CREATE
  (Thing)-[:HAS_SUBCLASS]->(Places),
  (Thing)-[:HAS_SUBCLASS]->(Lemma),
  (Places)-[:HAS_SUBCLASS]->(Country),
  (Country)-[:HAS_SUBCLASS]->(Region),
  (Country)-[:HAS_SUBCLASS]->(Region),
  (Places)-[:HAS_INDIVID]->(loc1),
  (loc1)-[:HAS_LA_VAR]->(loc1_1),
  (loc1_1) -[:HAS_VAR_NAME]->(Abc)


RETURN Thing
;
如果我想从特定节点(比如loc1)开始查询,我需要为其编制索引:

CREATE INDEX ON :Index(title)
然后我查询我的数据库:

START n=node:Index(title='loc00001') MATCH n RETURN n
这里我得到了一个错误:

索引不存在

Neo.ClientError.Schema.NoSuchIndex

我做错了什么

你在混音。由于Lucene索引在Neo4j中已被弃用,因此我不再进一步提及它们。如果您在:Indextitle上使用createindex,那么您正在尝试在标签'INDEX'及其属性'title'上创建架构索引。当您使用诸如类、索引、地名等标签时,您的语句应该如下所示:

CREATE INDEX ON :Class(title)
CREATE INDEX ON :Index(title)
... for every label you want to index ...
您不应该在查询中明确提到索引,它将自动使用

MATCH (n:Thing{title:'loc00001'}) 
RETURN n
虽然你可以暗示,如果你想

MATCH (n:Thing)
USING INDEX n:Thing(title)
WHERE n.title='loc00001'
RETURN n
你在混和和。由于Lucene索引在Neo4j中已被弃用,因此我不再进一步提及它们。如果您在:Indextitle上使用createindex,那么您正在尝试在标签'INDEX'及其属性'title'上创建架构索引。当您使用诸如类、索引、地名等标签时,您的语句应该如下所示:

CREATE INDEX ON :Class(title)
CREATE INDEX ON :Index(title)
... for every label you want to index ...
您不应该在查询中明确提到索引,它将自动使用

MATCH (n:Thing{title:'loc00001'}) 
RETURN n
虽然你可以暗示,如果你想

MATCH (n:Thing)
USING INDEX n:Thing(title)
WHERE n.title='loc00001'
RETURN n

非常感谢。你写的作品。所以,对于查询,我不能在数据库中使用START子句?您仍然可以使用START,但不能与模式索引结合使用。START可以与START n=node1这样的id一起使用,也可以与START n=node:nodeIndexNamekey={value}这样的遗留索引一起使用。谢谢!你写的作品。所以,对于查询,我不能在数据库中使用START子句?您仍然可以使用START,但不能与模式索引结合使用。START可以与START n=node1这样的id一起使用,也可以与START n=node:nodeIndexNamekey={value}这样的旧索引一起使用。