This project is an example you can use to build user defined procedures, functions and aggregation functions in Neo4j. It contains two procedures, for reading and updating a full-text index.
To try this out, simply clone this repository and have a look at the source and test code (including Test-Server-Setup).
This project requires a Neo4j 3.3.x dependency.
The user defined procedure allows you to index and search a explicit Lucene index within Neo4j.
Given properties of a node can be added to indexes named according to the labels of the node. After that the data can be searched with Lucene Syntax.
See FullTextIndex.java and the LegacyFullTextIndexTest.java.
MATCH (n:Person)
CALL example.index(id(n), ['name']);
CALL example.search('Person','name:Jo*') YIELD nodeIdThe user defined function is a simple join function that joins a list of strings using a delimiter.
See Join.java and the JoinTest.java.
RETURN example.join(['A','quick','brown','fox'],' ') as sentenceThe aggregation function example.last returns the last row of an aggregation.
MATCH (n:Person)
WITH n ORDER BY n.born
RETURN n.born, example.last(n) as lastSee Last.java and the LastTest.java.
This project uses maven, to build a jar-file with the procedure in this project, simply package the project with maven:
mvn clean package
This will produce a jar-file,target/procedure-template-1.0.0-SNAPSHOT.jar,
that can be deployed in the plugin directory of your Neo4j instance.