Я уже прочитал этот вопрос Создание и обновление индексов Zend_Search_Lucene.
Но он не дал ответа на мою проблему. В этой статье zend говорится, что обновление документ не возможен. Для эффективного обновления каждый документ должен быть удален и повторно проиндексирован.
$removePath = ...;
$hits = $index->find('path:' . $removePath);
foreach ($hits as $hit) {
$index->delete($hit->id);
}
Теперь это не работает для меня. Я указал путь индекса в $removePath
и попробовал код. Это не сработало. Если я использую что-то, относящееся к моему конкретному индексу, например $index->find("title:test");
, он бросает
Fatal error: Exception thrown without a stack frame in Unknown on line 0
Я также пробовал использовать
$query = new Zend_Search_Lucene_Search_Query_Term(new Zend_Search_Lucene_Index_Term('test', 'title'));
$hits = $this -> index->find($query);
Но результат был тот же.
Я даже не знаю, как отлаживать такой тип ошибок. И даже если он будет отлажен, я получу только найденные элементы, а не все документы. Итак, не все документы удаляются.
Может кто-нибудь подскажите, что я делаю не так. Как обновить поисковые индексы?