Zend Lucene删除文档问题

时间:2012-12-21 15:03:00

标签: zend-lucene

我正在尝试使用zend lucene删除文档。以下是我的代码

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

当我运行它并检查我的索引文件夹时,有一个像这样创建的新文件 _f4t5_1.del

但是当我进行搜索时,删除的文档在搜索中可用,并且还检查了

$索引 - > numDocs();

此方法在删除前后也会返回相同的计数。

感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

刚刚发现了这个问题。问题是由于我的代码中存在逻辑错误。删除后,我正在调用另一个函数,该函数再次将文档添加到索引中。当我检查文档ID时,如果发现它在删除后有所不同,这有助于我跟踪问题。谢谢你的帮助

答案 1 :(得分:2)

这可能会有所帮助:php lucene how to update and delete rows in index file

您是否检查过以确保文件已被删除。

  

Zend_Search_Lucene :: isDeleted($ id)方法可用于检查是否   文件已删除。

for ($count = 0; $count < $index->maxDoc(); $count++) {
    if ($index->isDeleted($count)) {
        echo "Document #$id is deleted.\n";
    }
}

您是否尝试过index optimization

  

索引优化会删除已删除的文档并挤压文档   ID在较小的范围内。因此,文档的内部标识可能是   在索引优化期间进行更改。