update solr index
This commit is contained in:
parent
7c6654398d
commit
535a9363cc
18 changed files with 773 additions and 90 deletions
79
app/Library/Search/SolrDocumentXslt.php
Normal file
79
app/Library/Search/SolrDocumentXslt.php
Normal file
|
@ -0,0 +1,79 @@
|
|||
<?php
|
||||
|
||||
namespace App\Library\Search;
|
||||
|
||||
use App\Models\Dataset;
|
||||
|
||||
class SolrDocumentXslt
|
||||
{
|
||||
/**
|
||||
* @var XSLTProcessor
|
||||
*/
|
||||
protected $processor;
|
||||
|
||||
public function __construct($options)
|
||||
{
|
||||
//parent::__construct($options);
|
||||
|
||||
try {
|
||||
$xslt = new \DomDocument;
|
||||
$xslt->load($options['xsltfile']);
|
||||
|
||||
$this->processor = new \XSLTProcessor;
|
||||
$this->processor->importStyleSheet($xslt);
|
||||
} catch (Exception $e) {
|
||||
throw new Exception('invalid XSLT file for deriving Solr documents', 0, $e);
|
||||
}
|
||||
}
|
||||
|
||||
public function toSolrDocument(Dataset $rdrDataset, \DOMDocument $solrDoc)
|
||||
{
|
||||
if (!($solrDoc instanceof \DOMDocument)) {
|
||||
throw new Exception('provided Solr document must be instance of DOMDocument');
|
||||
}
|
||||
|
||||
$modelXml = $this->getModelXml($rdrDataset);//->saveXML();
|
||||
|
||||
$solrDoc->preserveWhiteSpace = false;
|
||||
$solrDoc->loadXML($this->processor->transformToXML($modelXml));
|
||||
|
||||
// if (Opus_Config::get()->log->prepare->xml) {
|
||||
// $modelXml->formatOutput = true;
|
||||
// Opus_Log::get()->debug("input xml\n" . $modelXml->saveXML());
|
||||
// $solrDoc->formatOutput = true;
|
||||
// Opus_Log::get()->debug("transformed solr xml\n" . $solrDoc->saveXML());
|
||||
// }
|
||||
|
||||
return $solrDoc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves XML describing model data of provided RDR dataset.
|
||||
*
|
||||
* @param Dataset $rdrDataset
|
||||
* @return DOMDocument
|
||||
*/
|
||||
protected function getModelXml(Dataset $rdrDataset)
|
||||
{
|
||||
$rdrDataset->fetchValues();
|
||||
// Set up caching xml-model and get XML representation of document.
|
||||
$xmlModel = new \App\Library\Xml\XmlModel();
|
||||
//$caching_xml_model = new Opus_Model_Xml;
|
||||
|
||||
//$caching_xml_model->setModel($opusDoc);
|
||||
$xmlModel->setModel($rdrDataset);
|
||||
$xmlModel->excludeEmptyFields();
|
||||
//$xmlModel->setStrategy(new Opus_Model_Xml_Version1);
|
||||
//$cache = new Opus_Model_Xml_Cache($opusDoc->hasPlugin('Opus_Document_Plugin_Index'));
|
||||
//$xmlModel->setXmlCache($cache);
|
||||
$cache = ($rdrDataset->xmlCache) ? $rdrDataset->xmlCache : new \App\Models\XmlCache();
|
||||
$xmlModel->setXmlCache($cache);
|
||||
|
||||
$modelXml = $xmlModel->getDomDocument();
|
||||
|
||||
// extract fulltext from file and append it to the generated xml.
|
||||
//$this->attachFulltextToXml($modelXml, $opusDoc->getFile(), $opusDoc->getId());
|
||||
|
||||
return $modelXml;
|
||||
}
|
||||
}
|
Loading…
Add table
editor.link_modal.header
Reference in a new issue