Hi Anton,
well, i guess you have seen the manual indexing section in the Hibernate Search Docs (
http://www.hibernate.org/hib_docs/search/reference/en/html_single/#search-batchindex). This gives you the how. I recommend to build some sort of admin interface (be it a HTML page, web service or JMX ...) where you could trigger the rebuilding of the indexes, including an initial index. I donĀ“t think there is a general one pattern fits all here. It depends on your overall application architecture. Personally I would not use a singleton, especially since the Singleton pattern comes with its own set of problems. What's about implementing an IndexService class?
Regarding rebuilding the index on each startup - why would you like to do this? Provided you use a file based Lucene index you don't have reindex all the time. Depending on the number and size of the entities you want to index it would also take a lot of time. I would recommend to boostrap the index once via manual indexing and then rely on Hibernate Search's automatic indexing. Then you get the most leverage out of the Hibernate Search. One of the most tedious things to implement yourself is manual index synchronisation.
Ok, I hope this helps you a little with your evaluation.
--Hardy