Будет ли несколько приложений записывать в базу данных? Если так, это немного сложно; у вас должен быть какой-то механизм для определения новых записей для подачи в индексатор Lucene.
Еще один момент, который необходимо учитывать: хотите ли вы, чтобы один индекс покрывал все ваши таблицы, или один индекс на таблицу. В общем, я рекомендую один индекс с полем в этом индексе, чтобы указать, из какой таблицы произошла запись.
Hibernate имеет поддержку полнотекстового поиска, если вы хотите искать постоянные объекты, а не неструктурированные документы.
Существует проект OpenSymphony под названием Compass , о котором вы должны знать. Я сам держался от этого подальше, в первую очередь потому, что, кажется, это способ более сложный, чем должен быть поиск. Кроме того, как я могу судить из документации (признаюсь, я не нашел времени, необходимого для ее прочтения), он хранит сегменты Lucene в виде двоичных объектов в базе данных. Если вы знакомы с архитектурой Lucene, Compass реализует Lucene Directory поверх базы данных. Я думаю, что это неправильный подход. Я бы использовал встроенную поддержку базы данных для индексации и вместо этого реализовал Lucene IndexReader. Такая же критика относится к реализациям распределенного кэша и т. Д.