【问题标题】:How to create indexes automatically in embedded neo4j?如何在嵌入式 neo4j 中自动创建索引?
【发布时间】:2015-10-13 09:31:00
【问题描述】:

我想自动索引特定节点的属性。 根据此文档,我们必须提供属性名称,并且该名称将被编入索引。 http://neo4j.com/docs/stable/auto-indexing.html

我有两个节点 node1node2,它们都具有与 name 相同的属性。我只想索引节点 node1 上的属性 name 而不是 node2。如何在运行时执行此操作而不使用 CYPHER?

任何帮助将不胜感激。

【问题讨论】:

    标签: java indexing neo4j


    【解决方案1】:

    我找到了使用 java 代码在特定节点的属性上创建模式索引的 neo4j 文档

    在此处添加代码。这可能会帮助像我这样的人:)

    IndexDefinition indexDefinition;
    try ( Transaction tx = graphDb.beginTx() ){
    Schema schema = graphDb.schema();
    indexDefinition = schema.indexFor( DynamicLabel.label( "node1" ) )
            .on( "name" )
            .create();
    tx.success();
    }
    

    http://neo4j.com/docs/stable/tutorials-java-embedded-new-index.html

    【讨论】:

      【解决方案2】:

      自动索引(顾名思义)会自动索引给定的属性名称。

      如果您只想为特定节点显式索引name,则使用架构索引是有意义的。这要求node1node2 带有不同的标签。

      如果这不是一个选项,您可以使用手动索引并决定每个节点应该将什么放入索引。在 Cypher 中无法写入手动索引,您需要使用 Java API 或相应的 REST Call

      我在blog post 中总结了 Neo4j 中不同类型的索引。

      【讨论】:

      • 感谢 Stefan 的回答。我想使用Java API而不是问题中提到的Cypher来实现模式索引。我找到了相同的 neo4j 文档。
      • 您的问题没有提到您正在使用标签。没有它们,您将无法使用模式索引。此外,您的问题也没有提到您正在寻找 java API 解决方案 - 所以我认为它是独立于平台的 - 很抱歉造成误解。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多