private static Set<DcsManifestationFile> getManifestationFileSet(SolrDocument doc) {
    Set<DcsManifestationFile> set = new HashSet<DcsManifestationFile>();

    String[] filerefs = setgetAll(doc, ManifestationFileField.FILE_REF);
    String[] paths = setgetAll(doc, ManifestationFileField.PATH);

    for (int i = 0; i < filerefs.length; i++) {
      DcsManifestationFile mf = new DcsManifestationFile();

      if (filerefs[i] != null) {
        mf.setRef(new DcsFileRef(filerefs[i]));
      }

      if (paths[i] != null && paths[i].length() > 0) {
        mf.setPath(paths[i]);
      }

      // <doc
      // field="mf_rel_urn:dataconservancy.org:file/4326762_hasRelationship">urn:dataconservancy.org:rel/isMetadataFor</doc>
      // <doc
      // field="mf_rel_urn:dataconservancy.org:file/4326762_relatedTo">http://dataconservancy.org/dcs/entity/article_du</doc>

      String[] relations =
          setgetAll(
              doc,
              ManifestationFileField.DYNAMIC_MF_REL_PREFIX.solrName()
                  + filerefs[i]
                  + "_"
                  + RelationField.RELATION.solrName());

      String[] targets =
          setgetAll(
              doc,
              ManifestationFileField.DYNAMIC_MF_REL_PREFIX.solrName()
                  + filerefs[i]
                  + "_"
                  + RelationField.TARGET.solrName());

      for (int j = 0; j < relations.length; j++) {
        if (relations[j] != null && targets[j] != null) {
          DcsRelation rel = new DcsRelation(relations[j], targets[j]);
          mf.addRel(rel);
        }
      }

      set.add(mf);
    }

    return set;
  }
  private static void addManifestationFileSet(
      SolrInputDocument doc, Collection<DcsManifestationFile> set, ArchiveStore store)
      throws IOException {
    for (DcsManifestationFile mf : set) {

      final String fileRef = mf.getRef() == null ? null : mf.getRef().getRef();
      setadd(doc, ManifestationFileField.FILE_REF, fileRef);
      setadd(doc, ManifestationFileField.PATH, mf.getPath());

      final Collection<DcsRelation> rels = mf.getRelSet();

      if (rels != null && !rels.isEmpty() && fileRef != null) {

        addRelationSet(doc, rels);

        for (DcsRelation rel : rels) {

          // <doc
          // field="mf_rel_urn:dataconservancy.org:file/4326762_hasRelationship">urn:dataconservancy.org:rel/isMetadataFor</doc>
          setadd(
              doc,
              ManifestationFileField.DYNAMIC_MF_REL_PREFIX.solrName()
                  + fileRef
                  + "_"
                  + RelationField.RELATION.solrName(),
              rel.getRelUri());

          // <doc
          // field="mf_rel_urn:dataconservancy.org:file/4326762_relatedTo">http://dataconservancy.org/dcs/entity/article_du</doc>
          setadd(
              doc,
              ManifestationFileField.DYNAMIC_MF_REL_PREFIX.solrName()
                  + fileRef
                  + "_"
                  + RelationField.TARGET.solrName(),
              rel.getRef().getRef());
        }
      }
    }
  }