Hibernate Search is a library that integrates Hibernate ORM with Apache Lucene or Elasticsearch by automatically indexing entities, enabling advanced search functionality: full-text, geospatial, aggregations and more. For more information, see Hibernate Search on hibernate.org.

Version 5.0.0.Beta1 of Hibernate Search is now available for download!

This summer we've been slower than expected, and based on your feedback we decided that some features that we wished to have in the 5.0 release are going to be moved to future 5.x releases: the current codebase supports latest Apache Lucene 4 since a while and we believe it's in excellent shape already, so we're aiming now at a fast feedback loop to release a 5.0.0.Final in 4-6 weeks.

So in the following weeks we're going to aim at:

  • last needed future-proofing API changes to make it possible to introduce the postponed features without (hopefully) affecting public API down the road of the 5.x cycle,
  • polish documentation
  • react on your feedback!

Noteworthy changes

Those looking at our detailed changelogs might have seen a log of small changes, apparently not too interesting.. that's because we've been working closely with the Infinispan team and some great improvements are being introduced disguised as a simple micro version update of our dependencies.

Significant performance improvements: Async backend

The new async backend is various orders of magnitude more efficient than the previous one! If you are an async user, you will love the new design. Also, while the previous implementation was simply async and wouldn't give any timing guarantees, now we expose a new configuration property index_flush_interval which could make it possible for many more systems to use the async backend: you can decide to have it flush for example every 5 minutes, so to not have a big performance penalty on writes and guarantee that new items are visible in approximately 5 minutes.

The performance benefit of this backend is extremely high, and we're looking forward to apply the same principles for the sync backend too; in case you're interested, the design is described at HSEARCH-1699.

Infinispan integration improvements

With the Infinispan team we've worked on several areas:

Infinispan Directory

Was updated to latest Apache Lucene 4.10 and it is now significantly more reliable: we could finally resolve all known issues and added lots of new tests, and a lot of work on performance was done as well.

Infinispan Query

Infinispan includes a Query module which exposes Hibernate Search 5 capabilities to all Infinispan users: if you know how to use Hibernate Search with a regular Hibernate ORM application (JPA), it will be very easy for you to learn how to use the full-text capabilities of Infinispan Query. Of course this last release 5.0.0.Beta1 is included in Infinispan 7.

WildFly modules for Infinispan integration

The Infinispan project now also provides a nice to use pre-packaged zip file with all modules you might need to copy into WildFly 8, and we've been working together to make sure that Hibernate Search can use these latest modules rather than the ones included by the container: that would allow you to immediately benefit from all new features, and generally speaking not be constrained by the versions of Infinispan that the container might be having at any point in time. This subject is still work in progress, in particular better documentation is needed but essentially you just need to download and unzip the modules package from both projects.

Debugging capabilities

Apache Lucene has the notion of an InfoStream, which outputs lots of detailed information about index writing to the console. Via HSEARCH-1658 you can now configure Hibernate Search to capture all those details and forward it to your logging stream: see also Troubleshooting: enable Lucene’s Infostream in the Lucene configuration chapter of the documentation.

Critical issue resolved in the Avro based serializer

Early alpha versions of Hibernate Search 5 were affected by a critical threadsafety issue in the code managing the Serializer service based on Apache Avro, making it essentially unusable except in trivial unit tests. This is now resolved, and does not affect any (older) stable release.

Avro protocol: version bumped

The serializer backend based on Avro is now able to transmit Flush commands as well; this is mostly to allow transparent improvements but as a user you need to keep in mind that you'd need to upgrade a master node first, as older master nodes will not be able to decode messages sent by this new version of Hibernate Search.

Evolution of the @ContainedIn annotation

This annotation used to be simply a counter-part of @IndexedEmbedded, but as discussed on HSEARCH-1580 it is useful as well to define any other form of indexing dependency. This did work in the past, but was unintentional and therefore broken during recent development, so now the functionality is restored and we're making it an intentionally supported feature.

Thanks Guillaume Smet, for both bringing it up and providing the patches!

Component upgrades

This version was built and tested against Hibernate ORM 4.3.7.Final, JGroups 3.6.0.Final, Infinispan 7.0.0.CR2, WildFly 8.1.0.Final, Apache Lucene 4.10.1.

Feedback needed!

Please try it out and let us know if you have any trouble with it, or if any part of the documentation is not clear enough. As always, we'll be monitoring the Forums, the Mailing Lists, and StackOverflow if you use tag hibernate-search.

Back to top