0

我对删除索引文件中的文档有疑问。

我有这个:

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

我用卢克(它可以打开索引文件)

所以在删除之前我在我的索引条目中看到。删除此条目后,索引文件中仍然存在,但在文件夹中我看到了文件,例如 _c0_del。所以如果这是正常的,那么删除后我可以在索引文件中看到我的条目吗?还是我的代码中有一些错误?我试着做

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

ZendSearch/library/ZendSearch/Lucene/Index.php中删除方法。它给了我null。正常吗?如果删除方法从索引中物理删除文档或只是设置该文档已删除的标志?我可能在 2 年前使用 lucene,它从索引文件中物理删除了文档。因此,删除后,我无法通过 Luke 看到我在索引中的条目。

4

1 回答 1

0

如果 Luke 没有显示您已删除的文档,那么即使该文档仍在索引中也没关系 - 已删除的文档已被 Lucene 搜索引擎从考虑中删除,并将在索引过程的后期物理删除。

于 2014-01-06T18:48:26.570 回答