我需要在两个集合之间移动大量的项目。我试图直接在数据库中更改表“item”和“collection2item”,列分别为“owning_collection”和“item_id”。然后我重新启动了tomcat,清理了cocoon缓存,重建了索引,它仍然没有工作。
流程元数据导出/元数据导入比上面的项目大规模移动更安全或更容易吗?
我还能做什么?
答案 0 :(得分:2)
元数据导入过程非常可靠。它还提供了一个预览选项,允许您在应用之前查看更改。更新项目后,将运行正确的重新索引过程。
您只需提供要编辑的项ID和数据字段。
如果您希望手动或从SQL查询构建CSV文件,那么也可以。 CSV顶部的列名称将决定要更新的字段。
https://wiki.duraspace.org/display/DSDOC5x/Batch+Metadata+Editing#BatchMetadataEditing-CSVFormat
答案 1 :(得分:2)
如果你使用-bf
标志运行reindex,你的过程应该没问题(只有-f
也可能就够了)。
如果没有-f
标志,reindex(链接到DSpace 5.x的代码)将检查last_modified
值(在item
表中)和仅重新索引自上次重新索引以来该列中的值已更改的项目。这也意味着,如果您还更新了-f
时间戳,则无last_modified
的重新索引应该有效。
仍然无效?
如果重新索引仍未发生,则必须出现其他问题。检查你的dspace.log - 是否有任何条目看起来像"将项目xyz写入索引"?如果没有,那么这些项目不会被重新编制索引。在您执行reindex时,dspace.log中是否有任何错误消息? solr日志文件中的任何错误消息?
此外,请确保始终以运行tomcat的同一用户身份运行reindex(以及所有其他dspace
命令),以避免权限问题。如果您曾以不同的用户身份运行命令,请更改solr数据目录(可能是[dspace]/solr/search/data
)的权限,以便tomcat用户可以在其中创建/写入/删除文件。
总体建议
在大多数情况下,我自己使用批量元数据编辑来在集合之间移动项目,它可以避免所有这些问题并自动触发受影响项目的重新索引。