索引和Cypher - 如何创建索引的节点

时间:2013-08-05 04:37:11

标签: neo4j

我在控制台的cypher中使用

create (SearchWord {word='car'})

这适用于创建节点,但我现在如何找到该节点?我尝试启动n = node但它似乎想要一个索引。从我的创建节点开始,索引是如何创建的?

我知道索引可以手动创建,但创建节点如何访问索引?

有什么想法吗?

1 个答案:

答案 0 :(得分:5)

当您像示例中那样创建节点时,将返回此节点的(内部)ID,例如1。然后,您可以像这样访问节点:

START n=node(1) RETURN n

但是,建议不要将内部节点ID用于临时访问,因为它们可能会更改(至少这是我所知道的状态)。因此,您有两个(实际上是三个,下面这个)选项,以便稍后查找您的节点。

  1. 间接或直接将新创建的节点连接到始终参考节点 id为0.然后你可以通过图遍历来访问你的节点。
  2. 通过服务器扩展或嵌入式Neo4j中的Java-API创建(遗留;见下文)索引。这不适用于Cypher。
  3. 好消息是,从Neo4j 2.x开始 - 即目前Neo4j 2.0.0-M03--有一个新的自动索引功能,它包含节点标签。在这里,您可以创建有关一对节点标签和节点属性的索引。获取标签的每个节点都将在相应的属性上编制索引。

    在Neo4j 2.0.0-M03中,索引创建如下:

    CREATE INDEX ON :<label>(<property>)
    

    然后,你可以这样得到你的节点:

    MATCH node:<label>
    WHERE node.<property> = <value>
    return node
    

    我知道这里有点抽象。我想建议你读一些。

    START Cypher条款的文档:http://docs.neo4j.org/chunked/milestone/query-start.html 有关新“架构”索引的文档:http://docs.neo4j.org/chunked/milestone/query-schema-index.html

    最后一些 - 正如我所发现的 - 关于模式索引的非常有用的幻灯片:http://www.neo4j.org/develop/labels,第二个演示文稿(在Neo4j 2.0中标题标签和索引)。有一些简短易懂的例子。

    我希望你能帮助你!