Zend Framework — php-Zendframework выполняет полнотекстовый поиск только для ряда файлов.

Я использую php-Zendframework для полнотекстового поиска в некоторых документах PDF. Я включаю их следующим образом:

ini_set('include_path', '/var/www/html/php-ZendFramework-1.10.6-1.fc14.src/ZendFramework-1.10.6/library');
require_once('/var/www/html/php-ZendFramework-1.10.6-1.fc14.src/ZendFramework-1.10.6/library/Zend/Search/Lucene.php');
require_once('/var/www/html/php-ZendFramework-1.10.6-1.fc14.src/ZendFramework-1.10.6/library/Zend/Pdf.php');

После этого для каждого имеющегося у меня pdf я применяю следующий код в цикле:

if(strcmp(strtolower($link),"pdf")==0){
$fileName = '/var/www/html/tmp/'.$id.'.'.$link;
$result = pdf2text ($fileName);
$index = Zend_Search_Lucene::create('/var/www/html/tmpindex');
$doc = new Zend_Search_Lucene_Document();
$doc->addField(Zend_Search_Lucene_Field::Text('path', '/var/www/html/tmpindex'));
$doc->addField(Zend_Search_Lucene_Field::UnStored('contents', $result,'utf-8'));
$index->addDocument($doc);
$index->commit();
$index = Zend_Search_Lucene::open('/var/www/html/tmpindex');
$write = 1;

if ((sizeof($hits)<=0) && ($h == 0))
$write = 0;

for($h=0;$h<sizeof($givenwords);$h++){
$hits = $index->find('contents:' . $givenwords[$h]);
if ($h != 0){

if (strcmp(strtolower($conditions[$h-1]),"and") == 0)
$write = ($write && (sizeof($hits)>0) );
else if (strcmp(strtolower($conditions[$h-1]),"or") == 0)
$write = ($write || (sizeof($hits)>0) );
else
$write = ($write && (sizeof($hits)<=0) );

}
}
$removePath = '/var/www/html/tmpindex';
$hits = $index->find('path:' . $removePath);
foreach ($hits as $hit) {
$index->delete($hit->id);
}
}

Однако после поиска некоторых файлов (который возвращает правильные результаты) он прекращает поиск следующих файлов. В файле error.log появляется следующее уведомление php:

iconv():Detected an illegal character in input string in /var/www/html/php-ZendFramework-1.10.6-1.fc14.src/ZendFramework-1.10.6/library/Zend/Search/Lucene/Analysis/Analyzer/common/Text.php on line 58

Мой вопрос:
Как применить код, который говорит, что:

if (file cannot be read) wrtite_the_cause and skip to search other files;

0

Решение

Я думаю, что try..catch должен помочь вам. Просто оберните свой код.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]