add support for conversion service pass to IndexedDocument()

This commit is contained in:
Uwe Steinmann 2021-10-06 14:57:03 +02:00
parent 6d8dcd8125
commit 0f9fa74bbe
2 changed files with 64 additions and 38 deletions

View File

@ -179,9 +179,17 @@ class SeedDMS_Lucene_IndexedDocument extends Zend_Search_Lucene_Document {
if($version && !$nocontent) { if($version && !$nocontent) {
$path = $dms->contentDir . $version->getPath(); $path = $dms->contentDir . $version->getPath();
if(file_exists($path)) { if(file_exists($path)) {
$content = '';
$mimetype = $version->getMimeType(); $mimetype = $version->getMimeType();
$this->mimetype = $mimetype; $this->mimetype = $mimetype;
if(is_object($convcmd) && (get_class($convcmd) == 'SeedDMS_ConversionMgr')) {
if($convcmd->hasService($mimetype, 'text/plain')) {
$content = $convcmd->convert($path, $mimetype, 'text/plain');
if($content) {
self::setContent($content);
}
}
} else {
$content = '';
$cmd = ''; $cmd = '';
$mimeparts = explode('/', $mimetype, 2); $mimeparts = explode('/', $mimetype, 2);
if(isset($convcmd[$mimetype])) { if(isset($convcmd[$mimetype])) {
@ -196,7 +204,8 @@ class SeedDMS_Lucene_IndexedDocument extends Zend_Search_Lucene_Document {
try { try {
$content = self::execWithTimeout($cmd, $timeout); $content = self::execWithTimeout($cmd, $timeout);
if($content['stdout']) { if($content['stdout']) {
$this->addField(Zend_Search_Lucene_Field::UnStored('content', $content['stdout'], 'utf-8')); self::setContent($content['stdout']);
// $this->addField(Zend_Search_Lucene_Field::UnStored('content', $content['stdout'], 'utf-8'));
} }
if($content['stderr']) { if($content['stderr']) {
$this->errormsg = $content['stderr']; $this->errormsg = $content['stderr'];
@ -206,6 +215,7 @@ class SeedDMS_Lucene_IndexedDocument extends Zend_Search_Lucene_Document {
} }
} }
} }
}
} elseif($document->isType('folder')) { } elseif($document->isType('folder')) {
$this->addField(Zend_Search_Lucene_Field::Keyword('document_id', 'F'.$document->getID())); $this->addField(Zend_Search_Lucene_Field::Keyword('document_id', 'F'.$document->getID()));
$this->addField(Zend_Search_Lucene_Field::UnIndexed('created', $document->getDate())); $this->addField(Zend_Search_Lucene_Field::UnIndexed('created', $document->getDate()));

View File

@ -106,6 +106,9 @@ class SeedDMS_SQLiteFTS_IndexedDocument extends SeedDMS_SQLiteFTS_Document {
/** /**
* Constructor. Creates our indexable document and adds all * Constructor. Creates our indexable document and adds all
* necessary fields to it using the passed in document * necessary fields to it using the passed in document
*
* $convcmd can either be an array of conversion commands or
* an object of class SeedDMS_ConversionMgr
*/ */
public function __construct($dms, $document, $convcmd=null, $nocontent=false, $timeout=5) { /* {{{ */ public function __construct($dms, $document, $convcmd=null, $nocontent=false, $timeout=5) { /* {{{ */
$this->errormsg = ''; $this->errormsg = '';
@ -176,9 +179,20 @@ class SeedDMS_SQLiteFTS_IndexedDocument extends SeedDMS_SQLiteFTS_Document {
if($version && !$nocontent) { if($version && !$nocontent) {
$path = $dms->contentDir . $version->getPath(); $path = $dms->contentDir . $version->getPath();
if(file_exists($path)) { if(file_exists($path)) {
$content = '';
$mimetype = $version->getMimeType(); $mimetype = $version->getMimeType();
$this->mimetype = $mimetype; $this->mimetype = $mimetype;
if(is_object($convcmd) && (get_class($convcmd) == 'SeedDMS_ConversionMgr')) {
if($convcmd->hasService($mimetype, 'text/plain')) {
$content = $convcmd->convert($path, $mimetype, 'text/plain');
if($content) {
self::setContent($content);
}
$this->cmd = get_class($convcmd);
} else {
$this->cmd = 'No service to convert '.$mimetype.' to text/plain';
}
} else {
$content = '';
$cmd = ''; $cmd = '';
$mimeparts = explode('/', $mimetype, 2); $mimeparts = explode('/', $mimetype, 2);
if(isset($convcmd[$mimetype])) { if(isset($convcmd[$mimetype])) {
@ -193,7 +207,8 @@ class SeedDMS_SQLiteFTS_IndexedDocument extends SeedDMS_SQLiteFTS_Document {
try { try {
$content = self::execWithTimeout($cmd, $timeout); $content = self::execWithTimeout($cmd, $timeout);
if($content['stdout']) { if($content['stdout']) {
$this->addField(SeedDMS_SQLiteFTS_Field::UnStored('content', $content['stdout'])); self::setContent($content['stdout']);
// $this->addField(SeedDMS_SQLiteFTS_Field::UnStored('content', $content['stdout']));
} }
if($content['stderr']) { if($content['stderr']) {
$this->errormsg = $content['stderr']; $this->errormsg = $content['stderr'];
@ -203,6 +218,7 @@ class SeedDMS_SQLiteFTS_IndexedDocument extends SeedDMS_SQLiteFTS_Document {
} }
} }
} }
}
} elseif($document->isType('folder')) { } elseif($document->isType('folder')) {
$this->addField(SeedDMS_SQLiteFTS_Field::Keyword('document_id', 'F'.$document->getID())); $this->addField(SeedDMS_SQLiteFTS_Field::Keyword('document_id', 'F'.$document->getID()));
$this->addField(SeedDMS_SQLiteFTS_Field::Keyword('created', $document->getDate(), 'unindexed')); $this->addField(SeedDMS_SQLiteFTS_Field::Keyword('created', $document->getDate(), 'unindexed'));