Ошибка счетчика Zend_Search_Lucene () после добавления addDocument () в другом месте - PullRequest
2 голосов
/ 23 ноября 2011

в моей начальной загрузке:

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. Разве нельзя разместить addDocument () и find () в разных местах? / функции, так как я планирую поместить find () в testAction и test2?

пожалуйста, помогите мне определить проблему

p.s. я пробовал следующее:

  • Превращение $ myMapper в статическое
  • перемещение кода из картографа в контроллер

оба не имеют значения

1 Ответ

0 голосов
/ 24 ноября 2011

Обнаружена проблема !!

Невозможно инициализировать lucene / :: create при загрузке, поэтому вам нужно инициализировать / :: create в другом месте.В моем случае я использовал init () indexController:)

...