2016-02-23 2 views
1

Мне нужно переместить большое количество предметов между двумя коллекциями. Я попытался изменить непосредственно в базе данных таблицы «item» и «collection2item», столбцы «owning_collection» и «item_id» соответственно. Затем я перезапустил tomcat, очистил кеш кокона, восстановил индекс и он все еще не работает.Перемещение предметов между коллекциями

Является ли процесс метаданных экспорта/метаданных более безопасным или более простым, чем указано выше, для массового перемещения элементов?

Что еще я могу сделать?

ответ

2

Ваш процесс должен быть хорошо, если вы запустите REINDEX с -bf флагами (только -f может быть тоже достаточно).

Без -f флага, то reindex (ссылка идет на код от DSpace 5.x) будет проверять значение last_modifieditem таблице) и только индексировать элементы, значение в этом столбце изменилось с момента последнего REINDEX. Это также означает, что reindex без -f должен работать, если вы также обновили временную метку last_modified.

Все еще не работает?

Если reindex все еще не происходит, что-то еще должно идти не так. Проверьте свой dspace.log - есть ли записи, которые выглядят как «написал xyz для индексации»? Если нет, то элементы не переиндексируются. Есть ли сообщения об ошибках в dspace.log, когда вы делаете reindex? Любые сообщения об ошибках в файле журнала solr?

Кроме того, убедитесь, что вы всегда запускаете команду reindex (и все остальные команды dspace) как один и тот же пользователь, с которым работает tomcat, чтобы избежать проблем с разрешениями. Если вы когда-либо выполняли команды как другой пользователь, измените разрешения каталога данных solr (возможно, [dspace]/solr/search/data), чтобы пользователь tomcat мог создавать/записывать/удалять файлы в нем.

Общая рекомендация

В большинстве случаев я бы с пакетной метаданным редактирования себя для перемещения элементов между коллекциями, это позволяет избежать всех этих проблем и вызовет повторное индексирование пораженных элементов автоматически.

+0

Спасибо за объяснение. Просто для любопытства, знаете ли вы, как работает рейндекс? Есть ли где-нибудь, что я могу найти в исходном коде? – Chittolina

+0

Столбец last_modified после того, как я изменил owning_collection, не изменился, поэтому я сделал это вручную. Затем я попробовал флаг -bf, и он все еще не работает. – Chittolina

+0

Я добавил ссылку на код переиндексации на мой ответ. – schweerelos

2

Процесс импорта метаданных очень надёжный. Он также предоставляет функцию предварительного просмотра, которая позволит вам увидеть изменения до их применения. После обновления элементов будут выполняться правильные процессы переиндексации.

Вам нужно только указать идентификаторы и поля данных, которые вы хотите изменить.

Если вы предпочитаете создавать свой файл CSV вручную или из SQL-запроса, это также сработает. Имя столбца в верхней части вашего CSV будет определять поля для обновления.

https://wiki.duraspace.org/display/DSDOC5x/Batch+Metadata+Editing#BatchMetadataEditing-CSVFormat

+0

Спасибо за внимание. Я думаю, что я собираюсь с редактором пакетных метаданных для массового перемещения элементов. Сценарий, который изменяет поля, которые я хочу переместить, должен работать. – Chittolina

Смежные вопросы