У меня есть огромное количество PDF/Word/Excel/и т.д. файлы для индексации (40 ГБ сейчас, но, возможно, до 1000 ГБ в некоторые месяцы), и я рассматривал возможность использования Solr с DataImportHandler и Tika. Я прочитал много тем на эту тему, но есть одна проблема, для которой я до сих пор не нашел решения: если я проиндексирую все файлы (полный или дельта-импорт), удалите файл в файловой системе и снова проиндексируйте (с дельта-импорт), то соответствующий файлу документ не будет удален из индекса.
Вот некоторые возможности:
- Сделайте полный импорт. Но я хочу избежать этого, насколько это возможно, поскольку я думаю, что это может занять очень много времени (несколько дней, но не очень важно) и потреблять трафик (основная проблема, поскольку файлы находятся на общем сетевом диске).
- Реализуйте сценарий, который будет проверять для каждого документа в индексе, существует ли соответствующий файл (намного меньше потребляемой полосы пропускания). Но я не знаю, буду ли я это делать внутри или вне Solr, и как.
У вас есть другая идея или способ выполнить второе решение? Заранее спасибо.
Некоторые детали:
- Я буду использовать параметр «newerThan» FileListEntityProcessor для выполнения дельта-импорта.
- Если я сохраняю дату, когда документ был проиндексирован, это мне не помогает, потому что, если я не проиндексировал один документ при последнем импорте, это может быть потому, что он был удален ИЛИ потому, что он не изменился (дельта-импорт)
- У меня есть как сохраненные, так и несохраненные поля, поэтому я не думаю, что использование новой возможности Solr 4.0 для изменения только одного поля в документе может быть решением.