Ваш процесс должен быть хорошо, если вы запустите REINDEX с -bf
флагами (только -f
может быть тоже достаточно).
Без -f
флага, то reindex (ссылка идет на код от DSpace 5.x) будет проверять значение last_modified
(в item
таблице) и только индексировать элементы, значение в этом столбце изменилось с момента последнего REINDEX. Это также означает, что reindex без -f
должен работать, если вы также обновили временную метку last_modified
.
Все еще не работает?
Если reindex все еще не происходит, что-то еще должно идти не так. Проверьте свой dspace.log - есть ли записи, которые выглядят как «написал xyz для индексации»? Если нет, то элементы не переиндексируются. Есть ли сообщения об ошибках в dspace.log, когда вы делаете reindex? Любые сообщения об ошибках в файле журнала solr?
Кроме того, убедитесь, что вы всегда запускаете команду reindex (и все остальные команды dspace
) как один и тот же пользователь, с которым работает tomcat, чтобы избежать проблем с разрешениями. Если вы когда-либо выполняли команды как другой пользователь, измените разрешения каталога данных solr (возможно, [dspace]/solr/search/data
), чтобы пользователь tomcat мог создавать/записывать/удалять файлы в нем.
Общая рекомендация
В большинстве случаев я бы с пакетной метаданным редактирования себя для перемещения элементов между коллекциями, это позволяет избежать всех этих проблем и вызовет повторное индексирование пораженных элементов автоматически.
Спасибо за объяснение. Просто для любопытства, знаете ли вы, как работает рейндекс? Есть ли где-нибудь, что я могу найти в исходном коде? – Chittolina
Столбец last_modified после того, как я изменил owning_collection, не изменился, поэтому я сделал это вручную. Затем я попробовал флаг -bf, и он все еще не работает. – Chittolina
Я добавил ссылку на код переиндексации на мой ответ. – schweerelos