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