3 Replies Latest reply on Jan 19, 2006 8:53 AM by nigelwhite

    Hibernate and Lucene integration

    nigelwhite

      How?

      The documantation just says nothing. It's about 4 lines of actual explanation.

      http://www.hibernate.org/hib_docs/annotations/reference/en/html/lucene.html

      It mentions smoe annotations, mentions an analyzer class, and shows a fragment of XML and that's it!

      Anyone done this? I'd like to hook into creation, modificatino and deletion to keep the Lucene index updated.

        • 1. Re: Hibernate and Lucene integration
          tvan

          Just read the documentation of Lucene at http://lucene.apache.org/java/docs/. You may find down the Lucene index update. As my memory is good, you need to look up the index field name in the lucene indexed file and you can update it.
          Tvan

          • 2. Re: Hibernate and Lucene integration
            nigelwhite

            Using the Lucene API is not the problem. Looks fairly simple to get going.

            The problem is that it says that you can set up annotations to have Hibernate automagically maintain a Lucene index without writing a single line of Java!

            In fact, as well as hooking automatic Lucene updates in, you should be able to hook your own listening classes in to create/update/delete events on persisted objects for other reasons like security auditing.

            Fecked if I can make it work though!

            • 3. Re: Hibernate and Lucene integration
              nigelwhite

              OK, as usual, the docs are completely lacking.

              Here is what worked.

              In META_INF/persistence.xml in the .par file:

               <property name="hibernate.ejb.cfgfile" value="hibernate_config.xml"/>
              


              hibernate_config.xml goes in the root level in the .par file. It contains:

              <?xml version='1.0' encoding='utf-8'?>
              <!DOCTYPE hibernate-configuration PUBLIC
               "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
               "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
              <hibernate-configuration>
               <session-factory>
               <event type="post-commit-update">
               <listener class="org.hibernate.lucene.event.LuceneEventListener"/>
               </event>
               <event type="post-commit-insert">
               <listener class="org.hibernate.lucene.event.LuceneEventListener"/>
               </event>
               <event type="post-commit-delete">
               <listener class="org.hibernate.lucene.event.LuceneEventListener"/>
               </event>
               </session-factory>
              </hibernate-configuration>


              Why not just document it properly?