Я написал ужасный пост о том, как распараллелить индекс Lucene. Это действительно ужасно написано, но вы найдете это здесь (есть некоторый пример кода, на который вы, возможно, захотите взглянуть).
Во всяком случае, основная идея заключается в том, что вы разбиваете свои данные на большие части, а затем работаете над каждой из этих частей в отдельном потоке. Когда каждая из частей закончена, вы объединяете их все в один индекс.
С подходом, описанным выше, я могу индексировать более 4 миллионов записей в прибл. 2 часа.
Надеюсь, это даст вам представление о том, куда идти дальше.