Вот способ:
При условии, что каждый документ имеет идентификатор, а дубликаты документов имеют одинаковый идентификатор:
mark the indexes by I1..Im.
for i in 1..m, let Ci = all the indexes but Ii
for all the documents Dj in Ii,
let cur_term = "id:<Dj's id>"
for Ik in Ci
Ik.deleteDocuments(cur_term)
merge all indexes
Суть: удалить все документы, имеющие тот же идентификатор, что и текущий документ, из других индексов. Сделав это для всех индексов, объедините их.
Я знаю, что это не элегантно, но я не знаю лучшего алгоритма.