@Override public IndexHits<T> get( String key, Object value ) { return delegate.get( key, value ); }
@Override public IndexHits<T> query( Object queryOrQueryObject ) { return delegate.query( queryOrQueryObject ); }
@Override public String getName() { return delegate.getName(); }
@Override public Class<T> getEntityType() { return delegate.getEntityType(); }
@Override public Class<T> getEntityType() { return delegate.getEntityType(); }
public Representation getAutoIndexedNodes( String key, String value ) { ReadableIndex<Node> index = graphDb.index().getNodeAutoIndexer().getAutoIndex(); return toListNodeRepresentation( index.get( key, value ), null ); }
@Override public IndexHits<T> query( String key, Object queryOrQueryObject ) { return delegate.query( key, queryOrQueryObject ); }
/** * It is not allowed to add items manually to automatic indexes. */ @Test @Graph( nodes = {@NODE( name = "I", setNameProperty = true )}, autoIndexNodes = true ) public void items_can_not_be_added_manually_to_an_AutoIndex() { data.get(); String indexName; try ( Transaction tx = graphdb().beginTx() ) { indexName = graphdb().index().getNodeAutoIndexer().getAutoIndex().getName(); tx.success(); } gen.get() .expectedStatus( 405 ) .payload( createJsonStringFor( getNodeUri( data.get() .get( "I" ) ), "name", "I" ) ) .post( postNodeIndexUri( indexName ) ) .entity(); }
public Representation getAutoIndexedRelationships( String key, String value ) { final ReadableIndex<Relationship> index = graphDb.index().getRelationshipAutoIndexer().getAutoIndex(); return toListRelationshipRepresentation( index.get( key, value ), null ); }
public ListRepresentation getAutoIndexedRelationshipsByQuery( String query ) { final ReadableIndex<Relationship> index = graphDb.index().getRelationshipAutoIndexer().getAutoIndex(); final IndexHits<Relationship> results = query != null ? index.query( query ) : null; return toListRelationshipRepresentation( results, null ); }
/** * It is not allowed to remove entries manually from automatic indexes. */ @Test @Graph( nodes = {@NODE( name = "I", setNameProperty = true )}, autoIndexNodes = true ) public void autoindexed_items_cannot_be_removed_manually() { long id = data.get() .get( "I" ) .getId(); String indexName; try ( Transaction tx = graphdb().beginTx() ) { indexName = graphdb().index().getNodeAutoIndexer().getAutoIndex().getName(); tx.success(); } gen.get() .expectedStatus( 405 ) .delete( getDataUri() + "index/node/" + indexName + "/name/I/" + id ) .entity(); gen.get() .expectedStatus( 405 ) .delete( getDataUri() + "index/node/" + indexName + "/name/" + id ) .entity(); gen.get() .expectedStatus( 405 ) .delete( getDataUri() + "index/node/" + indexName + "/" + id ) .entity(); }
@Test public void testChangesAreVisibleInTransaction() { newTransaction(); AutoIndexer<Node> autoIndexer = graphDb.index().getNodeAutoIndexer(); autoIndexer.startAutoIndexingProperty( "nodeProp" ); autoIndexer.setEnabled( true ); Node node1 = graphDb.createNode(); node1.setProperty( "nodeProp", "nodePropValue" ); node1.setProperty( "nodePropNonIndexable", "valueWhatever" ); ReadableIndex<Node> nodeIndex = autoIndexer.getAutoIndex(); assertEquals( node1, nodeIndex.get( "nodeProp", "nodePropValue" ).getSingle() ); newTransaction(); Node node2 = graphDb.createNode(); node2.setProperty( "nodeProp", "nodePropValue2" ); assertEquals( node2, nodeIndex.get( "nodeProp", "nodePropValue2" ).getSingle() ); node2.setProperty( "nodeProp", "nodePropValue3" ); assertEquals( node2, nodeIndex.get( "nodeProp", "nodePropValue3" ).getSingle() ); node2.removeProperty( "nodeProp" ); assertFalse( nodeIndex.get( "nodeProp", "nodePropValue2" ).hasNext() ); assertFalse( nodeIndex.get( "nodeProp", "nodePropValue3" ).hasNext() ); newTransaction(); assertEquals( node1, nodeIndex.get( "nodeProp", "nodePropValue" ).getSingle() ); assertFalse( nodeIndex.get( "nodeProp", "nodePropValue2" ).hasNext() ); assertFalse( nodeIndex.get( "nodeProp", "nodePropValue3" ).hasNext() ); }
public ListRepresentation getAutoIndexedNodesByQuery( String query ) { if ( query != null ) { ReadableIndex<Node> index = graphDb.index().getNodeAutoIndexer().getAutoIndex(); return toListNodeRepresentation( index.query( query ), null ); } return toListNodeRepresentation(); }
@Override public String getName() { return delegate.getName(); }
@Test public void testDefaultIsOffIfExplicit() { stopDb(); config = new HashMap<>(); config.put( GraphDatabaseSettings.node_keys_indexable.name(), "nodeProp1, nodeProp2" ); config.put( GraphDatabaseSettings.relationship_keys_indexable.name(), "relProp1, relProp2" ); config.put( GraphDatabaseSettings.node_auto_indexing.name(), "false" ); config.put( GraphDatabaseSettings.relationship_auto_indexing.name(), "false" ); startDb(); newTransaction(); AutoIndexer<Node> autoIndexer = graphDb.index().getNodeAutoIndexer(); autoIndexer.startAutoIndexingProperty( "testProp" ); Node node1 = graphDb.createNode(); node1.setProperty( "nodeProp1", "node1" ); node1.setProperty( "nodeProp2", "node1" ); node1.setProperty( "testProp", "node1" ); newTransaction(); assertFalse( autoIndexer.getAutoIndex().get( "nodeProp1", "node1" ).hasNext() ); assertFalse( autoIndexer.getAutoIndex().get( "nodeProp2", "node1" ).hasNext() ); assertFalse( autoIndexer.getAutoIndex().get( "testProp", "node1" ).hasNext() ); }
@Override public IndexHits<T> query( Object queryOrQueryObject ) { return delegate.query( queryOrQueryObject ); }
@Test public void testDefaultIfOffIsForEverything() { newTransaction(); graphDb.index().getNodeAutoIndexer().setEnabled( true ); Node node1 = graphDb.createNode(); node1.setProperty( "testProp", "node1" ); node1.setProperty( "testProp1", "node1" ); Node node2 = graphDb.createNode(); node2.setProperty( "testProp", "node2" ); node2.setProperty( "testProp1", "node2" ); newTransaction(); AutoIndexer<Node> autoIndexer = graphDb.index().getNodeAutoIndexer(); assertFalse( autoIndexer.getAutoIndex().get( "testProp", "node1" ).hasNext() ); assertFalse( autoIndexer.getAutoIndex().get( "testProp1", "node1" ).hasNext() ); assertFalse( autoIndexer.getAutoIndex().get( "testProp", "node2" ).hasNext() ); assertFalse( autoIndexer.getAutoIndex().get( "testProp1", "node2" ).hasNext() ); }
@Override public IndexHits<T> query( String key, Object queryOrQueryObject ) { return delegate.query( key, queryOrQueryObject ); }
@Test public void nodeAutoindexingSupposedToWork() { String type = "node"; Response response = service.startAutoIndexingProperty( type, "myAutoIndexedProperty" ); assertEquals( 204, response.getStatus() ); response = service.setAutoIndexerEnabled( type, "true" ); assertEquals( 204, response.getStatus() ); service.createNode( "{\"myAutoIndexedProperty\" : \"value\"}" ); try ( Transaction ignored = graph.beginTx() ) { IndexHits<Node> indexResult = database.getGraph().index().getNodeAutoIndexer().getAutoIndex().get( "myAutoIndexedProperty", "value" ); assertEquals( 1, indexResult.size() ); } }
/** * Execute lucene query. * * @param m * the m * @param luceneQuery * the lucene query * @return the list */ public List<Object> executeLuceneQuery(EntityMetadata m, String luceneQuery) { log.info("Executing Lucene Query on Neo4J:" + luceneQuery); GraphDatabaseService graphDb = getConnection(); List<Object> entities = new ArrayList<Object>(); if (!indexer.isNodeAutoIndexingEnabled(graphDb) && m.isIndexable()) { Index<Node> nodeIndex = graphDb.index().forNodes(m.getIndexName()); IndexHits<Node> hits = nodeIndex.query(luceneQuery); addEntityFromIndexHits(m, entities, hits); } else { ReadableIndex<Node> autoNodeIndex = graphDb.index().getNodeAutoIndexer().getAutoIndex(); IndexHits<Node> hits = autoNodeIndex.query(luceneQuery); addEntityFromIndexHits(m, entities, hits); } return entities; }