Подтвердить что ты не робот

Solr DIH - Как обрабатывать удаленные документы?

Я играю с Solr-powered для поиска моего webapp, и я решил, что лучше использовать DataImportHandler для обработки синхронизации с приложением через базу данных. Мне нравится элегантность просто проверки поля last_updated_date. Хорошая вещь. Однако я не знаю, как обращаться с удалением документов с помощью этого подхода. Как я его вижу, у меня есть два варианта. Я мог либо отправить явное сообщение Solr из клиента, когда документ был удален, либо я могу добавить "удаленный" флаг и оставить объект в базе данных, чтобы Solr заметил, что документ был изменен и теперь "удален" ". Я мог бы добавить фильтр запросов, который будет игнорировать результаты с удаленным флагом, но представляется неэффективным включать все удаленные документы в индекс Lucene. Что делают другие люди?

4b9b3361

Ответ 1

Это ваши варианты:

  • Используйте специальные команды DIH $deleteDocById или $deleteDocByQuery (требуется Solr 1.4 +)
  • Используйте очистить параметр DIH, чтобы удалить весь индекс перед импортом.
  • Используйте preImportDeleteQuery, чтобы определить, что будет очищено перед импортом. (требуется Solr 1.4 +)
  • Используйте триггеры базы данных вместо DIH для управления обновлением индекса.
  • Если вы используете какой-то ORM, используйте его возможности перехвата вместо DIH. Например, вы можете использовать hibernate events для обновления индекса при обновлении, вставке или удалении.

Ответ 2

Мне нравится иметь "удаленный" флаг, поэтому я фактически не удаляю свои данные! Зависит от того, насколько вы параноики. Мне нравятся предложения Маурисио...