ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

节点属性的手动索引

2022-03-28 09:31:09  阅读:155  来源: 互联网

标签:USERNAME 手动 private 索引 static KEY neo4j import 节点


package com.fly.demo;

import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.Transaction;
import org.neo4j.graphdb.factory.GraphDatabaseFactory;
import org.neo4j.graphdb.index.Index;
import org.neo4j.io.fs.FileUtils;

import java.io.File;
import java.io.IOException;

/**
 * 节点属性 手动索引
 */
public class ManualIndex {
    private static final File DB_PATH = new File("demo/neo4j-db");
    private static final String USERNAME_KEY = "name";
    private static GraphDatabaseService graphDb;
    private static Index<Node> nodeIndex;

    public static void main(String... args) throws IOException {
        FileUtils.deleteRecursively(DB_PATH);
        graphDb = new GraphDatabaseFactory().newEmbeddedDatabase(DB_PATH);
        registerShutdownHook();
        try (Transaction tx = graphDb.beginTx()) {
            nodeIndex = graphDb.index().forNodes("nodes");
            for (int id = 0; id < 100; id++) {
                createAndIndexUser(idToUserName(id));
            }
            int idToFind = 45;
            String userName = idToUserName(idToFind);
            Node foundUser = nodeIndex.get(USERNAME_KEY, userName).getSingle();
            System.out.println("The name of user " + idToFind + " is "
                    + foundUser.getProperty(USERNAME_KEY));
            // * 通配符查询所有节点
            for (Node user : nodeIndex.query(USERNAME_KEY, "*")) {
                nodeIndex.remove(user, USERNAME_KEY, user.getProperties(USERNAME_KEY));
                user.delete();
            }
            tx.success();
        }
        shutdown();
    }

    private static Node createAndIndexUser(final String userName) {
        Node node = graphDb.createNode();
        node.setProperty(USERNAME_KEY, userName);
        nodeIndex.add(node, USERNAME_KEY, userName);
        return node;
    }

    private static String idToUserName(final int id) {
        return "user" + id;
    }

    private static void shutdown() {
        graphDb.shutdown();
    }

    private static void registerShutdownHook() {
        Runtime.getRuntime().addShutdownHook(new Thread(ManualIndex::shutdown));
    }
}

标签:USERNAME,手动,private,索引,static,KEY,neo4j,import,节点
来源: https://www.cnblogs.com/fly-book/p/16065613.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有