Prev |  | Next

## 33.4. User database with legacy index

| Note
Please read Section 33.5, “Managing resources when using long running transactions” on how to properly close ResourceIterators returned from index lookups.

You have a user database, and want to retrieve users by name using the legacy indexing system.

| Tip
The source code used in this example is found here: EmbeddedNeo4jWithIndexing.java

We have created two helper methods to handle user names and adding users to the database:

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

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

The next step is to start the database server:

    graphDb = new GraphDatabaseFactory().newEmbeddedDatabase( DB_PATH );
    registerShutdownHook();

It’s time to add the users:

    try ( Transaction tx = graphDb.beginTx() )
    {
        nodeIndex = graphDb.index().forNodes( "nodes" );
        // Create some users and index their names with the IndexService
        for ( int id = 0; id < 100; id++ )
        {
            createAndIndexUser( idToUserName( id ) );
        }

And here’s how to find a user by Id:

    int idToFind = 45;
    String userName = idToUserName( idToFind );
    Node foundUser = nodeIndex.get( USERNAME_KEY, userName ).getSingle();

    System.out.println( "The username of user " + idToFind + " is "
        + foundUser.getProperty( USERNAME_KEY ) );

Copyright © 2014 Neo Technology

Prev | Up | Next
| Home |