Lucene использует стратегию добавления только, что означает, что при добавлении новой версии старого документа старый документ помечается как удаленный, а новая добавляется в индекс. Этот способ позволяет Lucene избегать перезаписи всего индексного файла при добавлении документов за счет старых документов, которые физически все еще присутствуют в индексе, до тех пор, пока не произойдет слияние или оптимизация.
Когда вы запускаете expungeDeletes, вы говорите Solr выполнить слияние, если количество удаленных документов превышает определенный порог, что означает, что вы вынуждены выполнять оптимизацию за кулисами, если Solr сочтет это необходимым.
То, как вы можете обойти это, зависит от более конкретной информации о вашем случае использования - в общем случае достаточно просто оставить стандартные настройки для коэффициентов слияния и т. Д. Если вы не видите никаких слияний, возможно, вы отключили автоматическое слияние (в зависимости от размера вашего индекса и просмотра сотен тысяч удаленных документов может потребоваться много времени для обработки индексации, занимающей 2–30 с). В этом случае убедитесь, что вы правильно включили его и снова изменили его значения. Также есть изменения , которые были введены с 7.5 в TieredMergePolicy , что обеспечивает еще более подробный контроль (и, возможно, лучшие значения по умолчанию) для процесса слияния.
Если вы каждый раз реиндексируете свой полный набор данных, можно также выполнить индексацию в отдельную коллекцию / ядро, а затем переключить псевдоним или переименовать ядро, когда закончите, прежде чем удалять старый набор данных.