Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用neo4j中嵌入api的数组索引_Neo4j - Fatal编程技术网

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

使用neo4j中嵌入api的数组索引,neo4j,Neo4j,有没有一种方法可以使用嵌入api中的数组索引?除了清单上所列的以外,我找不到任何东西。我可以使用cypher fine的索引 作为参考,这不起作用 val res = db.findNodesByLabelAndProperty(LNode,"etag","NP").iterator() 编辑 确定直接1:1数组比较工作。但我追求的是“数组中的值”语义 编辑2:似乎无法通过旧版API搜索索引。我做错什么了吗?(见下面的评论) edit3 我放弃了neo4j,不能为数组编制索引是一个破坏者。

有没有一种方法可以使用嵌入api中的数组索引?除了清单上所列的以外,我找不到任何东西。我可以使用cypher fine的索引

作为参考,这不起作用

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

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

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

edit3

我放弃了neo4j,不能为数组编制索引是一个破坏者。进入orientdb。经过一点阅读,它似乎设计得更好,记录得更好

edit4

好,回到neo4j,OrientDB非常不成熟。文档和wiki编写得很好,内容丰富。但是API有着奇怪的未记录的语义,有很多拐弯处。这通常是可以的,但是异常很难理解,并且日志系统中没有合理的日志来帮助处理


Neo4j有一个更简单的体系结构和API,它可以在没有任何转角的情况下工作,在嵌入式模式下使用也更简单。我将深入挖掘,找到一种适合我建模需要的方法。

索引不支持这种语义

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


但我认为语义是不正确的,因为它无法解决唯一性问题。

谢谢。文档确实让我想到了这一点,但我仍然无法让它工作。我怀疑我做错了什么。启动嵌入式数据库后,是否需要等待索引联机?我使用批处理插入器创建了数据库,并正确关闭了数据库。另外,shell表示索引正常。但是当我检查目录时,lucene目录似乎没有占用太多空间。
    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()