32.4. User database with legacy index
Note Please read Section 32.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 ) );