Play framework is joining the Typesafe Stack — More information in the official announcement
Manual, tutorials & references
Get help with google
The Search module allows you to have basic full text search functionalities to your JPA Model. It is based on Lucene, and requires a real file system to store its indexes.
In the /conf/application.conf file, enable the Search module by adding this line:
# The search module
module.search=${play.path}/modules/search
Use the @Indexed annotation to mark your Model, and then use the @Field to mark the fields to be indexed.
@Indexed
public class Folder extends Model {
@Field
@Column(unique=true)
public Integer poseidonNumber;
@Field
public String object;
The @Field annotation currently supports only primitive types.
Use the Search helper to build your queries:
Search.search("object:dogs", Folder.class)
The first parameter is a lucene query and the second is your Model class. You may want to refer to the Lucene query documentation at this point, knowing that the Search maintains a separated index per class and adds the properties marked with @Field as a Lucene Field.
The Search.search returns a query object that you can tweak:
Query q = Search.search("object:dogs", Folder.class);
q.orderBy("object")
.page(2,5)
.reverse();
To finish your query, if you wish to retrieve your Model objects, use
List<Folder> folders = q.fetch();
or to get only ids (to use in a JPA query by example...):
List<Long> folderIds = q.fetchIds();
To get full informations (like relevance), you would use:
List<QueryResult> results = q.executeQuery();
Each time you create, update or delete your Model objects, the corresponding index is automatically updated.
Should you need to re-index your objects (like if you have manually modified your database), you will reboot your application with:
play.search.reindex=enabled
In your conf/application.conf. Don’t forget to remove it after!
You can use the following properties in your conf/application.conf file:
play.search.path=/tmp/myDevApplication
play.search.analyser=org.apache.lucene.analysis.standard.StandardAnalyzer
play.search.path is where the module stores it’s indexes
play.search.analyser is the lucene analyzer class used for indexation.
Comments
Use this form to add corrections, additions and suggestions about the documentation on this page. Please ask questions on the play-framework group instead. Support requests, bug reports, and off-topic comments will be deleted without warning.