Lucene AddIndexes (слияние) - как избежать дубликатов?

2

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

Спасибо

Теги:
lucene
lucene.net

1 ответ

1
Лучший ответ

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

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 id>"
  for Ik in Ci
    Ik.deleteDocuments(cur_term)
merge all indexes

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

  • 0
    Спасибо, я надеялся избежать перебора всего временного индекса ...
  • 0
    Что, если идентификатор один и тот же, его содержимое отличается. Может быть, стоит использовать какой-то таймфрейм

Ещё вопросы

Сообщество Overcoder
Наверх
Меню