code: protected I_CmsSearchDocument appendFieldMappingsFromElementsOnThePage(
          I_CmsSearchDocument document,
          CmsObject cms,
          CmsResource resource,
          List<String> systemFields) {
  
          try {
              CmsFile file = cms.readFile(resource);
              CmsXmlContainerPage containerPage = CmsXmlContainerPageFactory.unmarshal(cms, file);
              CmsContainerPageBean containerBean = containerPage.getContainerPage(cms);
              if (containerBean != null) {
                  for (CmsContainerElementBean element : containerBean.getElements()) {
                      element.initResource(cms);
                      CmsResource elemResource = element.getResource();
                      Set<CmsSearchField> mappedFields = getXSDMappingsForPage(cms, elemResource);
                      if (mappedFields != null) {
  
                          for (CmsSearchField field : mappedFields) {
                              if (!systemFields.contains(field.getName())) {
                                  document = appendFieldMapping(
                                      document,
                                      field,
                                      cms,
                                      elemResource,
                                      CmsSolrDocumentXmlContent.extractXmlContent(cms, elemResource, getIndex()),
                                      cms.readPropertyObjects(resource, false),
                                      cms.readPropertyObjects(resource, true));
                              } else {
                                  LOG.error(
                                      Messages.get().getBundle().key(
                                          Messages.LOG_SOLR_ERR_MAPPING_TO_INTERNALLY_USED_FIELD_3,
                                          elemResource.getRootPath(),
                                          field.getName(),
                                          resource.getRootPath()));
                              }
                          }
                      }
                  }
              }
          } catch (CmsException e) {
              // Should be thrown if element on the page does not exist anymore - this is possible, but not necessarily an error.
              // Hence, just notice it in the debug log.
              if (LOG.isDebugEnabled()) {
                  LOG.debug(e.getLocalizedMessage(), e);
              }
          }
          return document;
      }
docs: Adds search fields from elements on a container page to a container page's document.
  @param document The document for the container page
  @param cms The current CmsObject
  @param resource The resource of the container page
  @param systemFields The list of field names for fields where mappings to should be discarded, since these fields are used system internally.
  @return the manipulated document