Solr DIH - Как обращаться с удаленными документами? - PullRequest
16 голосов
/ 12 октября 2009

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

Ответы [ 2 ]

22 голосов
/ 13 октября 2009

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

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

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

...