Использование fopen Zend_Search_Lucene приводит к сбою файлов .fnm

Я использую Zend_Search_Lucene в отдельном проекте, не основанном на ZF. Я успешно индексирую контент и также ищу его, но проблема в том, что он не может создавать файлы .fnm.

вот код, который я использую

Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8());
Zend_Search_Lucene_Search_QueryParser::setDefaultEncoding('utf-8');
Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive());

$this->index = Zend_Search_Lucene::create(self::PATH_INDEX);

$doc = new Zend_Search_Lucene_Document();

$doc->addField(Zend_Search_Lucene_Field::keyword('id',$content['id'],'UTF-8'));
$doc->addField(Zend_Search_Lucene_Field::text('summary',$summary,'UTF-8'));
$doc->addField(Zend_Search_Lucene_Field::keyword('module',$module,'UTF-8'));

$this->index->addDocument($doc);

я тоже пробовал

$doc->addField(Zend_Search_Lucene_Field::keyword('module',utf_encode($module),'UTF-8'));

Мой контент доступен для поиска, но я не знаю, почему он не создает файлы fnm, он создает остальные, такие как файлы cfs и fdx, блокировки, сегменты ... и т. д., так что это не проблема каталога или разрешений, проблема с блокировками. предполагать.

Вот исключение

Fatal error: Uncaught exception 'Zend_Search_Lucene_Exception' with message 'fopen(dict/_1.fnm): failed to open stream: No such file or directory' in Zend/Search/Lucene/Storage/File/Filesystem.php on line 67

Zend_Search_Lucene_Exception: fopen(dict/_1.fnm): failed to open stream: No such file or directory in Zend/Search/Lucene/Storage/File/Filesystem.php on line 67

Call Stack:
    0.0882    7819976   1. Zend_Search_Lucene_Proxy->__destruct() Zend/Search/Lucene/Proxy.php:0
    0.0882    7819976   2. Zend_Search_Lucene->removeReference() Zend/Search/Lucene/Proxy.php:63
    0.0882    7819976   3. Zend_Search_Lucene->_close() Zend/Search/Lucene.php:607
    0.0882    7819976   4. Zend_Search_Lucene->commit() Zend/Search/Lucene.php:569
    0.0882    7819976   5. Zend_Search_Lucene_Index_Writer->commit() Zend/Search/Lucene.php:1419
    0.0882    7819976   6. Zend_Search_Lucene_Index_SegmentWriter_DocumentWriter->close() Zend/Search/Lucene/Index/Writer.php:757
    0.0882    7819976   7. Zend_Search_Lucene_Index_SegmentWriter->_dumpFNM() Zend/Search/Lucene/Index/SegmentWriter/DocumentWriter.php:212
    0.0882    7820112   8. Zend_Search_Lucene_Storage_Directory_Filesystem->createFile(???) Zend/Search/Lucene/Index/SegmentWriter.php:280
    0.0882    7820912   9. Zend_Search_Lucene_Storage_File_Filesystem->__construct(???, ???) Zend/Search/Lucene/Storage/Directory/Filesystem.php:184

Любая помощь будет действительно оценена


person Omar S.    schedule 25.04.2012    source источник
comment
Вы намеренно пропустили остальную часть сообщения об исключении? После двоеточия fopen(indecies/_1.fnm): должен быть соответствующий текст, объясняющий, почему fopen() не удалось.   -  person Mike B    schedule 26.04.2012
comment
@MikeB обновил трассировку стека   -  person Omar S.    schedule 26.04.2012
comment
Если это поможет, я отладил метод __construct() в Zend_Search_Lucene_Storage_File_Filesystem, который создает файл, он сначала успешно создает _0.fnm, но затем пытается создать _1.fnm и терпит неудачу, хотя оба находятся в одном каталоге с тот же режим 'w+b', разница только в имени файла. @МайкБ   -  person Omar S.    schedule 26.04.2012
comment
Есть ли шанс, что вы могли бы распечатать параметры этого метода построения с помощью «пройдено/не пройдено»? Что-то вроде $filename=dict/_0.fnm, $mode='r+b', success, $filename=dict/_1.fnm, $mode='r+b', fail.. Я не могу воссоздать это, или я бы отладил это сам. Как только вы прибьете его к параметрам ... попробуйте сделать это самостоятельно с новым файлом в том же каталоге, который только пытается сделать что-то вроде <?php fopen('dict/_1.fnm', 'r+b');. Если вы сможете убрать Zend_Lucene из уравнения и сузить проблему до простого вызова fopen(), вы получите больше помощи.   -  person Mike B    schedule 26.04.2012
comment
Успех: $filename='dict/_0.fnm',$mode='w+b', сбой: $filename='dict/_1.fnm',$mode='w+b' @MikeB Я попробую fopen с теми же параметрами я также проверил разрешения на dict перед созданием _1.fnm и его того же rwx   -  person Omar S.    schedule 26.04.2012
comment
Это не имеет ничего общего с fopen, пробовал отдельно, и он работал :S с теми же параметрами   -  person Omar S.    schedule 26.04.2012


Ответы (1)


Наконец-то сработало после того, как каталог стал абсолютным.

person Omar S.    schedule 26.04.2012