在集合之间移动项目

Move items between collections

我需要在两个集合之间移动大量项目。我试图直接在数据库中更改表 "item" 和 "collection2item"、列 "owning_collection" 和 "item_id"。然后我重启了tomcat,清理了cocoon缓存,重建了索引,还是不行。

批量移动物品的过程metadata-export/metadata-import是否比上述过程更安全或更容易?

我还能做什么?

元数据导入过程非常可靠。它还提供了一个预览选项,允许您在应用更改之前查看更改。项目更新后,正确的重新索引过程将 运行.

您只需提供项目 ID 和您要编辑的数据字​​段。

如果您更喜欢手动或通过 SQL 查询构建 CSV 文件,那也可以。 CSV 顶部的列名称将决定要更新的字段。

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

如果您 运行 使用 -bf 标志重建索引(-f 可能就足够了),您的过程应该没问题。

没有 -f 标志,reindex(link 进入 DSpace 5.x 的代码)将检查 last_modified 值(在item table) 并且仅重新索引自上次重新索引以来该列中的值已更改的项目。这也意味着如果您还更新了 last_modified 时间戳,则没有 -f 的重新索引应该可以工作。

还是不行?

如果重新索引仍然没有发生,则一定是其他地方出了问题。检查您的 dspace.log -- 是否有类似于 "wrote item xyz to index" 的条目?如果不是,那么这些项目不会被重新索引。在您重新编制索引期间,dspace.log 中是否有任何错误消息? solr 日志文件中有任何错误消息吗?

此外,请确保您总是 运行 重新索引(以及所有其他 dspace 命令)与 tomcat 处于 运行 下的同一用户,以避免权限问题。如果您曾经 运行 作为不同用户执行命令,请更改 solr 数据目录(可能 [dspace]/solr/search/data)的权限,以便 tomcat 用户可以 create/write/delete 中的文件它。

总体推荐

在大多数情况下,我会自己编辑批量元数据以在集合之间移动项目,它避免了所有这些问题,并且会自动触发受影响项目的重新索引。