Hibernate Search is enabled out of the box when using Hibernate
Annotations or Hibernate EntityManager. If, for some reason you need to
disable it, set
hibernate.search.autoregister_listeners
to false.
Note that there is no performance penalty when the listeners are enabled
even though no entities are indexed.
To enable Hibernate Search in Hibernate Core (ie. if you don't use
Hibernate Annotations), add the
FullTextIndexEventListener
for the following six
Hibernate events and also add it after the default
DefaultFlushEventListener
, as in the following
example.
Example 3.9. Explicitly enabling Hibernate Search by configuring the
FullTextIndexEventListener
<hibernate-configuration> <session-factory> ... <event type="post-update"> <listener class="org.hibernate.search.event.FullTextIndexEventListener"/> </event> <event type="post-insert"> <listener class="org.hibernate.search.event.FullTextIndexEventListener"/> </event> <event type="post-delete"> <listener class="org.hibernate.search.event.FullTextIndexEventListener"/> </event> <event type="post-collection-recreate"> <listener class="org.hibernate.search.event.FullTextIndexEventListener"/> </event> <event type="post-collection-remove"> <listener class="org.hibernate.search.event.FullTextIndexEventListener"/> </event> <event type="post-collection-update"> <listener class="org.hibernate.search.event.FullTextIndexEventListener"/> </event> <event type="flush"> <listener class="org.hibernate.event.def.DefaultFlushEventListener"/> <listener class="org.hibernate.search.event.FullTextIndexEventListener"/> </event> </session-factory> </hibernate-configuration>
By default, every time an object is inserted, updated or deleted through Hibernate, Hibernate Search updates the according Lucene index. It is sometimes desirable to disable that features if either your index is read-only or if index updates are done in a batch way (see Chapter 6, Manual indexing).
To disable event based indexing, set
hibernate.search.indexing_strategy manual
In most case, the JMS backend provides the best of both world, a lightweight event based system keeps track of all changes in the system, and the heavyweight indexing process is done by a separate process or machine.