首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何存储和检索neo4j索引

如何存储和检索neo4j索引
EN

Stack Overflow用户
提问于 2013-05-05 12:33:50
回答 1查看 939关注 0票数 0

我正在做一个与new4j相关的项目,我不太理解neo4j中的“索引”。在关系数据库中,我们在持久磁盘上有表和索引。

我假设neo4j也是如此,节点、关系(边)和索引都是持久的。在这一点上,我可能错了。

在本例中,https://github.com/mrhooray/neo4j-sample/blob/master/src/EmbeddedNeo4jWithIndexing.java

代码语言:javascript
复制
public class EmbeddedNeo4jWithIndexing {
    private static final String DB_PATH = "/home/mrhooray/Documents/neo4j_db/";
    private static final String USERNAME_KEY = "username";
    private static GraphDatabaseService graphDb;
    private static Index<Node> nodeIndex; 
    //...

    public static void main(String[] args) {
           //...
           // index is created as following
           nodeIndex = graphDb.index().forNodes("nodes");
    }

    // and used to insert data
    private static Node createAndIndexUser(final String username) {
        Node node = graphDb.createNode();
        node.setProperty(USERNAME_KEY, username);
        nodeIndex.add(node, USERNAME_KEY, username);
        return node;
    }
}

EmbeddedNeo4jWithIndexing是图形数据库的抽象。但是,如果我创建并填充了一个图形数据库,然后关闭了程序,会发生什么呢?然后,我想再次使用相同的索引访问相同的数据库,我只是创建EmbeddedNeo4jWithIndexing的另一个对象吗?如何才能恢复原始索引?

打电话

代码语言:javascript
复制
nodeIndex = graphDb.index().forNodes("nodes");

再次?它似乎不是这样工作的。

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-05 12:44:43

您的代码看起来是正确的。index().forNodes("nodes");基本上是一个create或get操作,如果索引不存在,它将创建索引,否则它将返回用于该索引名称的索引对象。

在你的代码中,确保你使用的是事务,因为如果你不这样做,你实际上不会持久化任何信息。否则,如果你下次需要执行查找,你只需执行nodeIndex.get(USERNAME_KEY, username),它将返回索引中映射到它的任何节点。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16381432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档