diff --git a/Classes/Command/BaseCommand.php b/Classes/Command/BaseCommand.php
index a974be94f..71f822781 100644
--- a/Classes/Command/BaseCommand.php
+++ b/Classes/Command/BaseCommand.php
@@ -22,6 +22,7 @@
use Kitodo\Dlf\Domain\Model\Collection;
use Kitodo\Dlf\Domain\Model\Document;
use Kitodo\Dlf\Domain\Model\Library;
+use Kitodo\Dlf\Validation\DocumentValidator;
use Symfony\Component\Console\Command\Command;
use TYPO3\CMS\Core\Configuration\ExtensionConfiguration;
use TYPO3\CMS\Core\Utility\GeneralUtility;
@@ -216,71 +217,70 @@ protected function saveToDatabase(Document $document): bool
$doc->cPid = $this->storagePid;
$metadata = $doc->getToplevelMetadata($this->storagePid);
+ $validator = new DocumentValidator($metadata, explode(',', $this->extConf['general']['requiredMetadataFields']));
+
+ if ($validator->hasAllMandatoryMetadataFields()) {
+ // set title data
+ $document->setTitle($metadata['title'][0] ? : '');
+ $document->setTitleSorting($metadata['title_sorting'][0] ? : '');
+ $document->setPlace(implode('; ', $metadata['place']));
+ $document->setYear(implode('; ', $metadata['year']));
+ $document->setAuthor($this->getAuthors($metadata['author']));
+ $document->setThumbnail($doc->thumbnail ? : '');
+ $document->setMetsLabel($metadata['mets_label'][0] ? : '');
+ $document->setMetsOrderlabel($metadata['mets_orderlabel'][0] ? : '');
+
+ $structure = $this->structureRepository->findOneByIndexName($metadata['type'][0]);
+ $document->setStructure($structure);
+
+ if (is_array($metadata['collection'])) {
+ $this->addCollections($document, $metadata['collection']);
+ }
- // set title data
- $document->setTitle($metadata['title'][0] ? : '');
- $document->setTitleSorting($metadata['title_sorting'][0] ? : '');
- $document->setPlace(implode('; ', $metadata['place']));
- $document->setYear(implode('; ', $metadata['year']));
-
- // Remove appended "valueURI" from authors' names for storing in database.
- foreach ($metadata['author'] as $i => $author) {
- $splitName = explode(pack('C', 31), $author);
- $metadata['author'][$i] = $splitName[0];
- }
- $document->setAuthor($this->getAuthors($metadata['author']));
- $document->setThumbnail($doc->thumbnail ? : '');
- $document->setMetsLabel($metadata['mets_label'][0] ? : '');
- $document->setMetsOrderlabel($metadata['mets_orderlabel'][0] ? : '');
+ // set identifiers
+ $document->setProdId($metadata['prod_id'][0] ? : '');
+ $document->setOpacId($metadata['opac_id'][0] ? : '');
+ $document->setUnionId($metadata['union_id'][0] ? : '');
+
+ $document->setRecordId($metadata['record_id'][0]);
+ $document->setUrn($metadata['urn'][0] ? : '');
+ $document->setPurl($metadata['purl'][0] ? : '');
+ $document->setDocumentFormat($metadata['document_format'][0] ? : '');
+
+ // set access
+ $document->setLicense($metadata['license'][0] ? : '');
+ $document->setTerms($metadata['terms'][0] ? : '');
+ $document->setRestrictions($metadata['restrictions'][0] ? : '');
+ $document->setOutOfPrint($metadata['out_of_print'][0] ? : '');
+ $document->setRightsInfo($metadata['rights_info'][0] ? : '');
+ $document->setStatus(0);
+
+ $this->setOwner($metadata['owner'][0]);
+ $document->setOwner($this->owner);
+
+ // set volume data
+ $document->setVolume($metadata['volume'][0] ? : '');
+ $document->setVolumeSorting($metadata['volume_sorting'][0] ? : $metadata['mets_order'][0] ? : '');
+
+ // Get UID of parent document.
+ if ($document->getDocumentFormat() === 'METS') {
+ $document->setPartof($this->getParentDocumentUidForSaving($document));
+ }
- $structure = $this->structureRepository->findOneByIndexName($metadata['type'][0]);
- $document->setStructure($structure);
+ if ($document->getUid() === null) {
+ // new document
+ $this->documentRepository->add($document);
+ } else {
+ // update of existing document
+ $this->documentRepository->update($document);
+ }
- if (is_array($metadata['collection'])) {
- $this->addCollections($document, $metadata['collection']);
- }
+ $this->persistenceManager->persistAll();
- // set identifiers
- $document->setProdId($metadata['prod_id'][0] ? : '');
- $document->setOpacId($metadata['opac_id'][0] ? : '');
- $document->setUnionId($metadata['union_id'][0] ? : '');
-
- $document->setRecordId($metadata['record_id'][0] ? : ''); // (?) $doc->recordId
- $document->setUrn($metadata['urn'][0] ? : '');
- $document->setPurl($metadata['purl'][0] ? : '');
- $document->setDocumentFormat($metadata['document_format'][0] ? : '');
-
- // set access
- $document->setLicense($metadata['license'][0] ? : '');
- $document->setTerms($metadata['terms'][0] ? : '');
- $document->setRestrictions($metadata['restrictions'][0] ? : '');
- $document->setOutOfPrint($metadata['out_of_print'][0] ? : '');
- $document->setRightsInfo($metadata['rights_info'][0] ? : '');
- $document->setStatus(0);
-
- $this->setOwner($metadata['owner'][0]);
- $document->setOwner($this->owner);
-
- // set volume data
- $document->setVolume($metadata['volume'][0] ? : '');
- $document->setVolumeSorting($metadata['volume_sorting'][0] ? : $metadata['mets_order'][0] ? : '');
-
- // Get UID of parent document.
- if ($document->getDocumentFormat() === 'METS') {
- $document->setPartof($this->getParentDocumentUidForSaving($document));
+ return true;
}
- if ($document->getUid() === null) {
- // new document
- $this->documentRepository->add($document);
- } else {
- // update of existing document
- $this->documentRepository->update($document);
- }
-
- $this->persistenceManager->persistAll();
-
- return true;
+ return false;
}
/**
@@ -371,6 +371,12 @@ private function addCollections(Document &$document, array $collections): void
*/
private function getAuthors(array $metadataAuthor): string
{
+ // Remove appended "valueURI" from authors' names for storing in database.
+ foreach ($metadataAuthor as $i => $author) {
+ $splitName = explode(pack('C', 31), $author);
+ $metadataAuthor[$i] = $splitName[0];
+ }
+
$authors = '';
$delimiter = '; ';
$ellipsis = 'et al.';
diff --git a/Classes/Command/IndexCommand.php b/Classes/Command/IndexCommand.php
index c8dbd4ce6..746c3b258 100644
--- a/Classes/Command/IndexCommand.php
+++ b/Classes/Command/IndexCommand.php
@@ -180,20 +180,29 @@ protected function execute(InputInterface $input, OutputInterface $output): int
if ($dryRun) {
$io->section('DRY RUN: Would index ' . $document->getUid() . ' ("' . $document->getLocation() . '") on PID ' . $this->storagePid . ' and Solr core ' . $solrCoreUid . '.');
+ $io->success('All done!');
+ return BaseCommand::SUCCESS;
} else {
+ $document->setCurrentDocument($doc);
+
if ($io->isVerbose()) {
- $io->section('Indexing ' . $document->getUid() . ' ("' . $document->getLocation() . '") on PID ' . $this->storagePid . ' and Solr core ' . $solrCoreUid . '.');
+ $io->section('Indexing ' . $document->getUid() . ' ("' . $document->getLocation() . '") on PID ' . $this->storagePid . '.');
}
- $document->setCurrentDocument($doc);
- // save to database
- $this->saveToDatabase($document);
- // add to index
- Indexer::add($document, $this->documentRepository);
- }
+ $isSaved = $this->saveToDatabase($document);
- $io->success('All done!');
+ if ($isSaved) {
+ if ($io->isVerbose()) {
+ $io->section('Indexing ' . $document->getUid() . ' ("' . $document->getLocation() . '") on Solr core ' . $solrCoreUid . '.');
+ }
+ Indexer::add($document, $this->documentRepository);
- return BaseCommand::SUCCESS;
+ $io->success('All done!');
+ return BaseCommand::SUCCESS;
+ }
+
+ $io->error('ERROR: Document with UID "' . $document->getUid() . '" could not be indexed on PID ' . $this->storagePid . ' . There are missing mandatory fields (document format or record identifier) in this document.');
+ return BaseCommand::FAILURE;
+ }
}
/**
diff --git a/Classes/Validation/DocumentValidator.php b/Classes/Validation/DocumentValidator.php
new file mode 100644
index 000000000..82d3f0f37
--- /dev/null
+++ b/Classes/Validation/DocumentValidator.php
@@ -0,0 +1,141 @@
+
+ *
+ * This file is part of the Kitodo and TYPO3 projects.
+ *
+ * @license GNU General Public License version 3 or later.
+ * For the full copyright and license information, please read the
+ * LICENSE.txt file that was distributed with this source code.
+ */
+
+namespace Kitodo\Dlf\Validation;
+
+use TYPO3\CMS\Core\Log\Logger;
+use TYPO3\CMS\Core\Log\LogManager;
+use TYPO3\CMS\Core\Utility\GeneralUtility;
+
+/**
+ * Class for document validation. Currently used for validating metadata
+ * fields but in the future should be extended also for other fields.
+ *
+ * @package TYPO3
+ * @subpackage dlf
+ *
+ * @access public
+ */
+class DocumentValidator
+{
+ /**
+ * @access protected
+ * @var Logger This holds the logger
+ */
+ protected Logger $logger;
+
+ /**
+ * @access private
+ * @var array
+ */
+ private array $metadata;
+
+ /**
+ * @access private
+ * @var array
+ */
+ private array $requiredMetadataFields;
+
+ /**
+ * @access private
+ * @var ?\SimpleXMLElement
+ */
+ private ?\SimpleXMLElement $xml;
+
+ /**
+ * Constructs DocumentValidator instance.
+ *
+ * @access public
+ *
+ * @param array $metadata
+ * @param array $requiredMetadataFields
+ *
+ * @return void
+ */
+ public function __construct(array $metadata = [], array $requiredMetadataFields = [], ?\SimpleXMLElement $xml = null)
+ {
+ $this->logger = GeneralUtility::makeInstance(LogManager::class)->getLogger(static::class);
+ $this->metadata = $metadata;
+ $this->requiredMetadataFields = $requiredMetadataFields;
+ $this->xml = $xml;
+ }
+
+ /**
+ * Check if metadata array contains all mandatory fields before save.
+ *
+ * @access public
+ *
+ * @return bool
+ */
+ public function hasAllMandatoryMetadataFields(): bool
+ {
+ foreach ($this->requiredMetadataFields as $requiredMetadataField) {
+ if (empty($this->metadata[$requiredMetadataField][0])) {
+ $this->logger->error('Missing required metadata field "' . $requiredMetadataField . '".');
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Check if xml contains at least one logical structure with given type.
+ *
+ * @access public
+ *
+ * @param string $type e.g. documentary, newspaper or object
+ *
+ * @return bool
+ */
+ public function hasCorrectLogicalStructure(string $type): bool
+ {
+ $expectedNodes = $this->xml->xpath('./mets:structMap[@TYPE="LOGICAL"]/mets:div[@TYPE="' . $type . '"]');
+ if ($expectedNodes) {
+ return true;
+ }
+
+ $existingNodes = $this->xml->xpath('./mets:structMap[@TYPE="LOGICAL"]/mets:div');
+ if ($existingNodes) {
+ $this->logger->error('Document contains logical structure but @TYPE="' . $type . '" is missing.');
+ return false;
+ }
+
+ $this->logger->error('Document does not contain logical structure.');
+ return false;
+ }
+
+ /**
+ * Check if xml contains at least one physical structure with type 'physSequence'.
+ *
+ * @access public
+ *
+ * @return bool
+ */
+ public function hasCorrectPhysicalStructure(): bool
+ {
+ $physSequenceNodes = $this->xml->xpath('./mets:structMap[@TYPE="PHYSICAL"]/mets:div[@TYPE="physSequence"]');
+ if ($physSequenceNodes) {
+ return true;
+ }
+
+ $physicalStructureNodes = $this->xml->xpath('./mets:structMap[@TYPE="PHYSICAL"]/mets:div');
+ if ($physicalStructureNodes) {
+ $this->logger->error('Document contains physical structure but @TYPE="physSequence" is missing.');
+ return false;
+ }
+
+ $this->logger->error('Document does not contain physical structure.');
+ return false;
+ }
+}
diff --git a/Resources/Private/Language/de.locallang_labels.xlf b/Resources/Private/Language/de.locallang_labels.xlf
index b9101521e..597c15ac3 100644
--- a/Resources/Private/Language/de.locallang_labels.xlf
+++ b/Resources/Private/Language/de.locallang_labels.xlf
@@ -633,210 +633,214 @@
Standard-Namensräume für Metadaten
-
-
- Internen Proxy für Werkansicht aktivieren? (Standard ist "FALSE")
-
-
- DLF User-Agent: (Standard ist "Kitodo.Presentation")
-
-
-
- Verwende nur absolute Links für Seiten und Ressourcen?: Wird nur in speziellen Multi-Domain-Umgebungen benötigt; erfordert einen voll qualifizierten Einstiegspunkt in der Seitenkonfiguration (Standard ist "FALSE")
-
-
-
- Verwende HTTPS for absolute Links?: erfordert einen Einstiegspunkt mit "https://..." in der Seitenkonfiguration (Standard ist "FALSE")
-
-
-
- Eingelesene METS Dateien / IIIF-Manifeste zwischenspeichern: Dies kann die Geschwindigkeit geringfügig verbessern, führt aber zu einer sehr großen "fe_session_data" Tabelle (Standard ist "FALSE")
-
-
-
- Neue Kollektionen publizieren?: Sollen neue Kollektionen automatisch in der OAI-PMH-Schnittstelle veröffentlicht werden? (Standard ist "TRUE")
-
-
-
-
- Indexierte Dokumente einblenden?: Sollen ausgeblendete Dokumente bei der erneuten Indexierung wieder eingeblendet werden? (Standard ist "FALSE")
-
-
- Verwende externe APIs zum Abrufen von Metadaten?: (Standard ist "FALSE")
-
-
-
- Seiten fileGrps: Komma-getrennte Liste der @USE Attributwerte der Seitenansichten nach aufsteigender Größe sortiert (Standard ist "DEFAULT,MAX")
-
-
-
- Vorschau fileGrp: Komma-getrennte Liste der @USE Attributwerte der Vorschaubilder nach absteigender Priorität sortiert (Standard ist "THUMBS")
-
-
-
- Download fileGrp: Komma-getrennte Liste der @USE Attributwerte der Downloads nach absteigender Priorität sortiert (Standard ist "DOWNLOAD")
-
-
-
- Volltext fileGrp: Komma-getrennte Liste der @USE Attributwerte der Volltexte nach absteigender Priorität sortiert (Standard ist "FULLTEXT")
-
-
-
- Audio fileGrp: Komma-getrennte Liste der @USE Attributwerte der Audiodateien nach absteigender Priorität sortiert (Standard ist "AUDIO")
-
-
-
- IIIF-Annotationen mit Motivation "painting" als Volltext behandeln?: Als Volltext behandelte Annotationen werden im Suchid idiert (Standard ist "FALSE")
-
-
-
- Maximale Thumbnail-Breite für IIIF-Images: Gilt nur für Bilder ohne Thumbnail-Angaben (Standard ist "150")
-
-
-
- Maximale Thumbnail-Höhe für IIIF-Images: Gilt nur für Bilder ohne Thumbnail-Angaben (Standard ist "150")
-
-
-
-
- Solr Verbindung
-
-
- HTTPS verwenden: (Standard ist "FALSE")
-
-
-
- Solr Server Host: (Standard ist "localhost")
-
-
-
- Solr Server Port: (Standard ist "8983")
-
-
-
- Solr Server Pfad: ohne API-Endpunkt "/solr" (Standard ist "/")
-
-
-
- Solr Server Benutzername: (Standard ist "")
-
-
-
- Solr Server Kennwort: (Standard ist "")
-
-
-
- Solr Server Timeout: (Standard ist "10")
-
-
-
- Löschen von Solr Kern zulassen?: Soll beim Löschen eines Solr Kerns im TYPO3 Backend auch der entsprechende Index in Apache Solr gelöscht werden? (Standard ist "FALSE")
-
-
-
- Solr-Schema-Feld "id" : Unique identifier for the document in the id (Standard ist "id")
-
-
-
- Solr-Schema-Feld "uid" : Unique identifier for the document (or its top-level parent) in the TYPO3 database (Standard ist "uid")
-
-
-
- Solr-Schema-Feld "pid" : PageID for the document (or its top-level parent) in the TYPO3 database (Standard ist "pid")
-
-
-
- Solr-Schema-Feld "page" : Image number where this document starts (Standard ist "page")
-
-
-
- Solr-Schema-Feld "partof" : Unique identifier for the parent document in the TYPO3 database. Only if this is a multi-volume work! (Standard ist "partof")
-
-
-
- Solr-Schema-Feld "root" : Unique identifier for the root document in the TYPO3 database. Only if this is a multi-volume work! (Standard ist "root")
-
-
-
- Solr-Schema-Feld "sid" : XML ID of this document in the METS file. This is only unique within the METS file! (Standard ist "sid")
-
-
-
- Solr-Schema-Feld "toplevel" : Information if it is a top-level document (Standard ist "toplevel")
-
-
-
- Solr-Schema-Feld "type" : Type of document (eg. monograph, chapter, etc.) (Standard ist "type")
-
-
-
- Solr-Schema-Feld "title" : Title field is mandatory for identifying documents (Standard ist "title")
-
-
-
- Solr-Schema-Feld "volume" : Volume field is mandatory for identifying documents (Standard ist "volume")
-
-
-
- Solr Schema Field "date" : The date a resource was issued or created. Used for datesearch (Standard ist "date")
-
-
-
- Solr-Schema-Feld "thumbnail" : URL of thumbnail image for the document (Standard ist "thumbnail")
-
-
-
- Solr-Schema-Feld "default" : CatchAll field (Standard ist "default")
-
-
-
- Solr-Schema-Feld "timestamp" : (Standard ist "timestamp")
-
-
-
- Solr-Schema-Feld "autocomplete" : Autocomplete field for search form (Standard ist "autocomplete")
-
-
-
- Solr-Schema-Feld "fulltext" : Fulltext field for OCR results (Standard ist "fulltext")
-
-
-
- Solr-Schema-Feld "record_id" : Record ID of the document (required for OAI_DC output) (Standard ist "record_id")
-
-
-
- Solr-Schema-Feld "purl" : Permanent URL of the document (required for EPICUR output) (Standard ist "purl")
-
-
-
- Solr-Schema-Feld "urn" : URN of the Document (required for EPICUR output) (Standard ist "urn")
-
-
-
- Solr-Schema-Feld "location" : Location of METS XML (required for METS output) (Standard ist "location")
-
-
-
- Solr-Schema-Feld "collection" : Associated collection(s) of the document (Standard ist "collection")
-
-
-
- Solr-Schema-Feld "license" : License (should be URI) (Standard ist "license")
-
-
-
- Solr-Schema-Feld "terms" : Term of Use (should be URI) (Standard ist "terms")
-
-
-
- Solr-Schema-Feld "restrictions" : Access Restrictions (should be URI) (Standard ist "restrictions")
-
-
-
- Solr-Schema-Feld "geom" : GeoJSON geometry for spatial search (Standard ist "geom")
-
-
+
+
+ Internen Proxy für Werkansicht aktivieren? (Standard ist "FALSE")
+
+
+ DLF User-Agent: (Standard ist "Kitodo.Presentation")
+
+
+
+ Verwende nur absolute Links für Seiten und Ressourcen?: Wird nur in speziellen Multi-Domain-Umgebungen benötigt; erfordert einen voll qualifizierten Einstiegspunkt in der Seitenkonfiguration (Standard ist "FALSE")
+
+
+
+ Verwende HTTPS for absolute Links?: erfordert einen Einstiegspunkt mit "https://..." in der Seitenkonfiguration (Standard ist "FALSE")
+
+
+
+ Eingelesene METS Dateien / IIIF-Manifeste zwischenspeichern: Dies kann die Geschwindigkeit geringfügig verbessern, führt aber zu einer sehr großen "fe_session_data" Tabelle (Standard ist "FALSE")
+
+
+
+ Neue Kollektionen publizieren?: Sollen neue Kollektionen automatisch in der OAI-PMH-Schnittstelle veröffentlicht werden? (Standard ist "TRUE")
+
+
+
+
+ Indexierte Dokumente einblenden?: Sollen ausgeblendete Dokumente bei der erneuten Indexierung wieder eingeblendet werden? (Standard ist "FALSE")
+
+
+ Verwende externe APIs zum Abrufen von Metadaten?: (Standard ist "FALSE")
+
+
+
+ Für die Indexierung von Dokumenten erforderliche Metadatenfelder
+
+
+
+ Seiten fileGrps: Komma-getrennte Liste der @USE Attributwerte der Seitenansichten nach aufsteigender Größe sortiert (Standard ist "DEFAULT,MAX")
+
+
+
+ Vorschau fileGrp: Komma-getrennte Liste der @USE Attributwerte der Vorschaubilder nach absteigender Priorität sortiert (Standard ist "THUMBS")
+
+
+
+ Download fileGrp: Komma-getrennte Liste der @USE Attributwerte der Downloads nach absteigender Priorität sortiert (Standard ist "DOWNLOAD")
+
+
+
+ Volltext fileGrp: Komma-getrennte Liste der @USE Attributwerte der Volltexte nach absteigender Priorität sortiert (Standard ist "FULLTEXT")
+
+
+
+ Audio fileGrp: Komma-getrennte Liste der @USE Attributwerte der Audiodateien nach absteigender Priorität sortiert (Standard ist "AUDIO")
+
+
+
+ IIIF-Annotationen mit Motivation "painting" als Volltext behandeln?: Als Volltext behandelte Annotationen werden im Suchid idiert (Standard ist "FALSE")
+
+
+
+ Maximale Thumbnail-Breite für IIIF-Images: Gilt nur für Bilder ohne Thumbnail-Angaben (Standard ist "150")
+
+
+
+ Maximale Thumbnail-Höhe für IIIF-Images: Gilt nur für Bilder ohne Thumbnail-Angaben (Standard ist "150")
+
+
+
+
+ Solr Verbindung
+
+
+ HTTPS verwenden: (Standard ist "FALSE")
+
+
+
+ Solr Server Host: (Standard ist "localhost")
+
+
+
+ Solr Server Port: (Standard ist "8983")
+
+
+
+ Solr Server Pfad: ohne API-Endpunkt "/solr" (Standard ist "/")
+
+
+
+ Solr Server Benutzername: (Standard ist "")
+
+
+
+ Solr Server Kennwort: (Standard ist "")
+
+
+
+ Solr Server Timeout: (Standard ist "10")
+
+
+
+ Löschen von Solr Kern zulassen?: Soll beim Löschen eines Solr Kerns im TYPO3 Backend auch der entsprechende Index in Apache Solr gelöscht werden? (Standard ist "FALSE")
+
+
+
+ Solr-Schema-Feld "id" : Unique identifier for the document in the id (Standard ist "id")
+
+
+
+ Solr-Schema-Feld "uid" : Unique identifier for the document (or its top-level parent) in the TYPO3 database (Standard ist "uid")
+
+
+
+ Solr-Schema-Feld "pid" : PageID for the document (or its top-level parent) in the TYPO3 database (Standard ist "pid")
+
+
+
+ Solr-Schema-Feld "page" : Image number where this document starts (Standard ist "page")
+
+
+
+ Solr-Schema-Feld "partof" : Unique identifier for the parent document in the TYPO3 database. Only if this is a multi-volume work! (Standard ist "partof")
+
+
+
+ Solr-Schema-Feld "root" : Unique identifier for the root document in the TYPO3 database. Only if this is a multi-volume work! (Standard ist "root")
+
+
+
+ Solr-Schema-Feld "sid" : XML ID of this document in the METS file. This is only unique within the METS file! (Standard ist "sid")
+
+
+
+ Solr-Schema-Feld "toplevel" : Information if it is a top-level document (Standard ist "toplevel")
+
+
+
+ Solr-Schema-Feld "type" : Type of document (eg. monograph, chapter, etc.) (Standard ist "type")
+
+
+
+ Solr-Schema-Feld "title" : Title field is mandatory for identifying documents (Standard ist "title")
+
+
+
+ Solr-Schema-Feld "volume" : Volume field is mandatory for identifying documents (Standard ist "volume")
+
+
+
+ Solr Schema Field "date" : The date a resource was issued or created. Used for datesearch (Standard ist "date")
+
+
+
+ Solr-Schema-Feld "thumbnail" : URL of thumbnail image for the document (Standard ist "thumbnail")
+
+
+
+ Solr-Schema-Feld "default" : CatchAll field (Standard ist "default")
+
+
+
+ Solr-Schema-Feld "timestamp" : (Standard ist "timestamp")
+
+
+
+ Solr-Schema-Feld "autocomplete" : Autocomplete field for search form (Standard ist "autocomplete")
+
+
+
+ Solr-Schema-Feld "fulltext" : Fulltext field for OCR results (Standard ist "fulltext")
+
+
+
+ Solr-Schema-Feld "record_id" : Record ID of the document (required for OAI_DC output) (Standard ist "record_id")
+
+
+
+ Solr-Schema-Feld "purl" : Permanent URL of the document (required for EPICUR output) (Standard ist "purl")
+
+
+
+ Solr-Schema-Feld "urn" : URN of the Document (required for EPICUR output) (Standard ist "urn")
+
+
+
+ Solr-Schema-Feld "location" : Location of METS XML (required for METS output) (Standard ist "location")
+
+
+
+ Solr-Schema-Feld "collection" : Associated collection(s) of the document (Standard ist "collection")
+
+
+
+ Solr-Schema-Feld "license" : License (should be URI) (Standard ist "license")
+
+
+
+ Solr-Schema-Feld "terms" : Term of Use (should be URI) (Standard ist "terms")
+
+
+
+ Solr-Schema-Feld "restrictions" : Access Restrictions (should be URI) (Standard ist "restrictions")
+
+
+
+ Solr-Schema-Feld "geom" : GeoJSON geometry for spatial search (Standard ist "geom")
+
+