Да, есть «инструмент» (фактически полноценный сервер баз данных), который делает это автоматически: eXist . При правильной настройке это позволяет смешивать полнотекстовые запросы XQuery и Lucene, например
for $hit in collection("/db/my-stuff")//hello/world[ft:query("hi")]
order by ft:score($hit) (:uses Lucene scoring formula:)
return $hit
Анализаторы указываются в файле конфигурации коллекции для каждого документа.
Более легкий подход с использованием Apache Digester описан в (старой) статье IBM DeveloperWorks .
РЕДАКТИРОВАТЬ После двух лет работы с eXist я хотел бы добавить, что интеграция с Lucene не идеальна. Для простых запросов это обычно работает нормально, но когда полнотекстовые запросы выполняются в середине сложных запросов XPath, похоже, что оптимизатор запросов запутывается, и вы можете получить либо неверный результат, либо ужасную производительность. Возможно, eXist 2.0 исправил это, YMMV.