Ошибка Zend_Lucene

Я новичок в использовании Zend framework. Я хотел использовать Zend_Lucene для создания небольшого книжного движка на своем веб-сайте. Я загрузил полный пакет и включил его в свой Netbeans 7, и все прошло нормально, затем я прочитал руководство по началу работы на официальном сайте Zend_Lucene, я смог выполнить индексирование, но с некоторыми ошибками: Вот мой код:

require_once('ZendFramework-1.11.7/library/Zend/Search/Lucene.php');
$indexPath = 'C:\wamp\www\witswork\Documents';
$index = Zend_Search_Lucene::create($indexPath);

$index = Zend_Search_Lucene::open($indexPath);

$query = new Zend_Search_Lucene_Search_Query_MultiTerm();
$doc = new Zend_Search_Lucene_Document();
$doc->addField(Zend_Search_Lucene_Field::UnIndexed('url', "Plan.docx"));
$doc->addField(Zend_Search_Lucene_Field::Text('title', "Plan"));

$hits = $index->find($query);
$index->addDocument($doc);
$index->commit();

Эти файлы были созданы: И вот ошибка: _0.cfs, segments_2, optimization.lock.file, read.lock.file, read-lock-processing.lock.file, write.lock.file и segments.gen.

И это ошибка появляется после запуска моего кода и создания индексатора:

Warning: require_once(Zend/Search/Lucene/Storage/File/Filesystem.php) [function.require-once]: failed to open stream: No such file or directory in C:\wamp\www\witswork\Zend\Search\Lucene\Storage\Directory\Filesystem.php on line 349

Fatal error: require_once() [function.require]: Failed opening required 'Zend/Search/Lucene/Storage/File/Filesystem.php' (include_path='.;C:\php5\pear;ZendFramework-1.11.7/library/Zend') in C:\wamp\www\witswork\Zend\Search\Lucene\Storage\Directory\Filesystem.php on line 349

Я читал, что для этого требуется включить библиотеку в мой include_path, я прокрался по своим Netbeans и подумал, что понял, вот скриншот: введите здесь описание изображения Пожалуйста, поддержите мою проблему, она мне нужна для выпускного проекта! Заранее спасибо! С Уважением!


person Nadjib Mami    schedule 23.06.2011    source источник


Ответы (2)


Не используйте этот «глобальный путь включения» в Netbeans. Вместо этого используйте функцию set_include_path() в вашем начальном файле php (index.php).

person Arek Jablonski    schedule 23.06.2011
comment
Вы имели в виду следующее: set_include_path(dirname(__FILE__).';'.get_include_path()); require_once 'Zend/Loader.php'; В моем index.php? Я сделал, но ничего не изменилось. Заметьте, мой проект стандартный, Zend я не включал через мастер создания проекта. - person Nadjib Mami; 23.06.2011
comment
Я всегда делаю в своем стартовом скрипте что-то вроде этого: define( 'ROOT_PATH', realpath( dirname( __FILE__ ) . '/..' ) ); define( 'LIB_PATH', ROOT_PATH . '/lib/' ); set_include_path( LIB_PATH . PATH_SEPARATOR . get_include_path() ); // Setting autoloader require_once 'Zend/Loader/Autoloader.php'; $autoloader = Zend_Loader_Autoloader::getInstance(); $autoloader->registerNamespace( 'Zend_' ); - person Arek Jablonski; 24.06.2011

У меня только что была похожая проблема, и я понятия не имел, почему Zend_Lucene просто не работает. Всегда придумывал

Warning: require_once(Zend/Search/Lucene/Storage/File/Filesystem.php) [function.require-once]: failed to open stream: No such file or directory in C:\wamp\www\witswork\Zend\Search\Lucene\Storage\Directory\Filesystem.php on line 349

проблема заключалась в том, что мой путь включения (set_include_path) вызвал эту проблему, поскольку я предоставил только относительную ссылку на Zend Framework.

Я решил эту проблему, указав абсолютный путь к библиотеке Zend Framework, поэтому мой самый маленький пример кода, чтобы увидеть, работает ли Lucene, выглядит следующим образом:

<?php

$zendPath = realpath('../_lib/ZendFramework-1.11.11/library/');

set_include_path($zendPath.PATH_SEPARATOR.get_include_path());
include 'Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::getInstance(); 

$index = Zend_Search_Lucene::create('test');

?>
person Briareos386    schedule 29.12.2011