Zend Lucene удалить документ

У меня вопрос об удалении документа в индексном файле.

У меня есть это:

$index = Zend_Search_Lucene::open('data/index');
foreach ($index->find('pk:' . $this->getId()) as $hit) {
        $index->delete($hit->id);
    }
$index->commit();

И я использую Luke (он может открывать индексный файл)

Поэтому перед удалением я вижу в своей записи индекса. И после удаления эта запись все еще существует в индексном файле, но в папке я вижу файл, например, _c0_del. Итак, если это нормально, что после удаления я могу увидеть свою запись в индексном файле? Или в моем коде какая-то ошибка? я пытаюсь сделать

 var_dump($segmentInfo->delete($id - $segmentStartId));

В ZendSearch/библиотеке/ZendSearch/Lucene/Index.php в методе удаления. И это дает мне ноль. Это нормально? Если метод удаления физически удаляет документ из индекса или просто устанавливает флаг, что этот документ удален? Я использую Lucene, может быть, 2 года назад, и он физически удаляет документ из индексного файла. Поэтому после удаления я не вижу свою запись в индексе через Люк.


person denys281    schedule 23.12.2013    source источник


Ответы (1)


Если Люк не показывает ваш удаленный документ, то даже если документ все еще находится в индексе, это не имеет значения — удаленный документ был исключен из рассмотрения поисковой системой Lucene и будет физически удален позже в процессе индексации.

person Mark Leighton Fisher    schedule 06.01.2014