Lucene AddIndexes (слияние) - как избежать дублирования? - PullRequest
2 голосов
/ 13 июля 2009

Как мне убедиться, что при объединении нескольких временных индексов (которые могут содержать или не содержать дубликаты документов) я получу одну копию в главном индексе?

Спасибо

1 Ответ

1 голос
/ 13 июля 2009

Вот способ: При условии, что каждый документ имеет идентификатор, а дубликаты документов имеют одинаковый идентификатор:

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

Суть: удалить все документы, имеющие тот же идентификатор, что и текущий документ, из других индексов. Сделав это для всех индексов, объедините их. Я знаю, что это не элегантно, но я не знаю лучшего алгоритма.

...