Zend framework Zend_Search_Lucene count()在另一个位置添加文档()后失败

Zend framework Zend_Search_Lucene count()在另一个位置添加文档()后失败,zend-framework,zend-search-lucene,Zend Framework,Zend Search Lucene,在我的引导程序中: protected function _initLucene() { Zend_Search_Lucene::create(APPLICATION_PATH . '/lucene')->setDefaultSearchField('userName'); } 在我的数据映射器中: public function test1() { $lucene = Zend_Search_Lucene::open(APPLICATION_PATH . '/lucene');

在我的引导程序中:

protected function _initLucene()
{ Zend_Search_Lucene::create(APPLICATION_PATH . '/lucene')->setDefaultSearchField('userName'); }
在我的数据映射器中:

public function test1() {
  $lucene = Zend_Search_Lucene::open(APPLICATION_PATH . '/lucene');
  $document = new Zend_Search_Lucene_Document();
  $document->addField(Zend_Search_Lucene_Field::Text('userName', 'someValue'));
  $lucene->addDocument($document);
  $lucene->commit();
  return $lucene->count(); # returns 1, correct
}
public function test2() {
  $lucene = Zend_Search_Lucene::open(APPLICATION_PATH . '/lucene');
  return $lucene->count(); # returns 0, incorrect!!
}
在我的indexController中:

public function indexAction() {
  echo $myMapper->test1() # prints 1
}
public function testAction() {
  echo $myMapper->test2() # prints 0 ??
}
作为信息,我使用的是windows/ntfs/xampp和zf 1.11.11。因此,当我首先将浏览器指向/index/index时,lucene正确地打印1,但当我继续指向/index/test时,lucene错误地打印0。当我计划将查找放在testAction和test2中时,是否不可能将addDocument和find放在单独的位置/函数中

请帮我找出问题所在

p、 美国。 我尝试了以下方法:

将$myMapper转换为静态 将代码从映射器移动到控制器 两者没有区别

找到了问题

无法在引导时初始化lucene/::create,因此必须在其他地方初始化/::create。在我的例子中,我使用了indexController的init:

发现了问题


无法在引导时初始化lucene/::create,因此必须在其他地方初始化/::create。在我的例子中,我在引导中使用了indexController:

的init,尝试使用$lucene=new Zend\u Search\u lucene application\u PATH/卢塞恩,没错;而不是::create,然后添加$lucene=new Zend\u Search\u lucene application\u PATH/lucene';::打开,然后使用Zend_Registry Zend_Registry::set'lucene',$lucene;并在test1和test2中调用注册的对象。结果没有变化..在引导中,尝试使用$lucene=new Zend\u Search\u lucene application\u PATH/卢塞恩,没错;而不是::create,然后添加$lucene=new Zend\u Search\u lucene application\u PATH/lucene';::打开,然后使用Zend_Registry Zend_Registry::set'lucene',$lucene;并在test1和test2中调用注册的对象。结果没有变化。对不起,回答不正确。但这一个是:试着把这个放在引导程序中,而不是尝试{$lucene=Zend_Search_lucene::openAPPLICATION_PATH./lucene';}捕捉Zend_Search_lucene_Exception$e{$lucene=Zend_Search_lucene::createAPPLICATION_PATH./lucene'}$lucene->setDefaultSearchField'userName';对不起,回答不正确。但这一个是:试着把这个放在引导程序中,而不是尝试{$lucene=Zend_Search_lucene::openAPPLICATION_PATH./lucene';}捕捉Zend_Search_lucene_Exception$e{$lucene=Zend_Search_lucene::createAPPLICATION_PATH./lucene'}$lucene->setDefaultSearchField'userName';