Hibernate Search has a new beta out and comes with a bunch of interesting new features:
- Named filters: custom filters on query results (transparently cacheable)
- Automatic index optimization
- Access to query metadata (Score, ...)
- Support for the Java Persistence API
- Index Sharding (indexing an entity into several underlying Lucene indexes)
Based on Lucene filters, named filters provide the ability to apply custom filter restrictions to the query results. Enabled by name and parameters (very much like Hibernate Core filters), filters are cacheable to improve performance. Some noticeable use cases are security, temporal data, restriction by population, query within query results.
Hibernate Search can transparently optimize your index after a certain amount of operations (add, delete) or transactions.
The projection API has been enhanced to return query specific data like the document score (relevance) and a few other metadata.
There is now a FullTextEntityManager and FullTextQuery (extending javax.persistence.Query). No need to access entityManager.getDelegate() anymore.
In extreme cases, Lucene indexes need to be split into several physical indexes. Hibernate Search can now index a given entity to several underlying Lucene indexes.
There are a few more additional features:
- Ability to index a given property in multiple different fields with different settings (without the need for a custom FieldBridge)
- Fine grained analyzers (global, per entity, per property or per field)
- Expose Lucene merge factor, max merge doc and max buffered docs
- Ships with Lucene 2.2
Thanks to John Griffin and Hardy Ferentschik for stepping up on this release. The feature set is up to what was envisioned for the final release (much more actually) and has proven very stable. We expect a short CR cycle and the GA soon after.