首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Neo4j数据库索引

Neo4j数据库索引
EN

Stack Overflow用户
提问于 2014-04-10 09:20:43
回答 1查看 309关注 0票数 2

我有一张小图:

代码语言:javascript
复制
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 )开始查询,我需要对它进行索引:

代码语言:javascript
复制
CREATE INDEX ON :Index(title)

然后我查询我的DB:

代码语言:javascript
复制
START n=node:Index(title='loc00001') MATCH n RETURN n

这里我得到了一个错误:

索引Index不存在 Neo.ClientError.Schema.NoSuchIndex

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-10 09:28:15

你把使用Lucene的遗留索引模式索引混在一起。由于Lucene索引在Neo4j中不受欢迎,因此我将不再提及它们。如果使用CREATE INDEX ON :Index(title),则尝试在标签“index”及其属性“title”上创建架构索引。当您使用诸如类、索引、地名等标签时,您的语句应该如下所示:

代码语言:javascript
复制
CREATE INDEX ON :Class(title)
CREATE INDEX ON :Index(title)
... for every label you want to index ...

您不应该在查询中显式地提到索引,它将自动使用

代码语言:javascript
复制
MATCH (n:Thing{title:'loc00001'}) 
RETURN n

虽然你可以暗示如果你想

代码语言:javascript
复制
MATCH (n:Thing)
USING INDEX n:Thing(title)
WHERE n.title='loc00001'
RETURN n
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22983831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档