使用neo4j中嵌入式api的数组索引

时间:2014-01-18 23:09:18

标签: neo4j

有没有办法使用嵌入式api中的数组索引?除了embedded index tutorial中列出的内容之外,我找不到任何其他内容。我可以使用cypher中的索引。

作为参考,这不起作用。

  val res = db.findNodesByLabelAndProperty(LNode,"etag","NP").iterator()

修改

好的直接1:1阵列比较工作。但我追求的是“数组中的值”语义。

编辑2:似乎无法通过旧版API搜索索引。难道我做错了什么 ? (见下面的评论)

    val db_loc = "/usr/local/Cellar/neo4j/2.0.0/libexec/data/graph.db"
    val inserter = BatchInserters.inserter(db_loc)

        try {

            val LNode = DynamicLabel.label("LNode")
            val ELNode = DynamicLabel.label("ENode")
            val SNode = DynamicLabel.label("sNode")
            val ESNode = DynamicLabel.label("ESNode")
            val SentenceL = DynamicLabel.label("Sentence")


            val nodeToNode = DynamicRelationshipType.withName("nodeToNode")
            val leafToNode = DynamicRelationshipType.withName("leafToNode")

            // Lots of code to populate gigantic database 

            inserter.createDeferredSchemaIndex(LNode).on("etok").create()
            inserter.createDeferredSchemaIndex(LNode).on("etag").create()
            inserter.createDeferredSchemaIndex(ESNode).on("etok").create()
            inserter.createDeferredSchemaIndex(ESNode).on("etag").create()
            }
            finally
                inserter.shutdown()

EDIT3

我放弃了neo4j,无法索引数组是一个交易破坏者。在orientdb上。经过一段时间的阅读后,设计似乎要好得多,并且更好的文档

edit4

Ok回到neo4j,OrientDB非常不成熟。文档和维基都写得很好,充实了。但API具有奇怪的无证语义,有很多极端情况。这通常没问题,但是例外很难理解,并且日志系统没有合理的日志来帮助完成这个过程。

Neo4j有一个更简单的架构和API,它可以在没有任何极端情况下工作,在嵌入模式下使用也更简单。我将深入挖掘并找到适合我的建模需求的方法。

1 个答案:

答案 0 :(得分:1)

索引不支持此语义。

legacy indexes支持这种语义,即将数组的每个单独元素添加到索引中,并且只允许单个数组元素进行查找。

但是imho语义被打破了,因为它无法解决唯一性。