Я использую 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
Любая помощь будет действительно оценена
fopen(indecies/_1.fnm):
должен быть соответствующий текст, объясняющий, почемуfopen()
не удалось. - person Mike B   schedule 26.04.2012$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