2013-12-23 3 views
0

인덱스 파일에서 문서 삭제에 대한 질문이 있습니다.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/루씬/Index.php는을 시도합니다. 그리고 그것은 나에게 널 준다. 정상입니까? 물리적 인 삭제 방법이 인덱스에서 문서를 제거하거나이 문서가 삭제되었다는 플래그를 설정하면? 아마 2 년 전에 lucene을 사용했고, 물리적으로 인덱스 파일에서 문서를 제거합니다. 그래서 삭제 후 Luke를 통해 색인에 항목을 볼 수 없습니다.

답변

0

Luke가 삭제 된 문서를 표시하지 않는 경우 문서가 여전히 색인에 포함되어 있어도 문제가되지 않습니다. 삭제 된 문서는 Lucene 검색 엔진에 의해 삭제 된 것으로 나중에 물리적으로 제거됩니다. 색인 생성 프로세스.