/** * Return fields to be indexed in Solr (an alternative to an XSL transformation) * * @return string[] */ public function toSolrArray() { $data = parent::toSolrArray(); if (isset($data['publishDate'])) { $data['main_date_str'] = MetadataUtils::extractYear($data['publishDate']); $data['main_date'] = $this->validateDate($this->getPublicationYear() . '-01-01T00:00:00Z'); } if ($range = $this->getPublicationDateRange()) { $data['search_sdaterange_mv'][] = $data['publication_sdaterange'] = metadataUtils::dateRangeToNumeric($range); $data['search_daterange_mv'][] = $data['publication_daterange'] = metadataUtils::dateRangeToStr($range); } // language, take only first $languages = array_filter(explode(' ', (string) $this->doc->language), function ($value) { return preg_match('/^[a-z]{2,3}$/', $value) && $value != 'zxx' && $value != 'und'; }); $data['language'] = array_shift($languages); $data['source_str_mv'] = $this->source; $data['datasource_str_mv'] = $this->source; return $data; }