【问题标题】:Searching only in undeleted documents using zend lucene使用 zend lucene 仅在未删除的文档中搜索
【发布时间】:2012-02-15 09:08:02
【问题描述】:

我不是 zend lucene 的新手,但我在搜索时遇到了麻烦。 我使用以下代码按数字搜索文档:

$term = new Zend_Search_Lucene_Index_Term($id, $idFieldName);
$docIds  = $index->termDocs($term);
foreach ($docIds as $id) {
    $doc = $index->getDocument($id);
    echo $doc->artist_name;
}
$index->commit();

并使用以下代码按编号删除文档:

$term = new Zend_Search_Lucene_Index_Term($id, $idFieldName);
$docIds  = $index->termDocs($term);
foreach ($docIds as $id) {

    $doc = $index->getDocument($id);
    $index->delete($doc->lyric_id);

}
$index->commit(); 

当我删除一个文档时,$index->numDocs() 显示该文档被删除,因为返回值不等于 $index->count() 的返回值。但问题是,删除文档后,我还可以在其中搜索,并且可以显示其字段的值。

我在优化索引后进行了检查,但问题仍然存在。我需要完全删除一个文档或搜索未从索引中删除的文档。

【问题讨论】:

    标签: search zend-lucene


    【解决方案1】:

    遍历搜索结果并检查文档是否被删除。如果是,请将其从搜索结果中删除。

    Zend_Search_Lucene::isDeleted($id) 方法可以用来检查一个 文档被删除。

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

    通过Building Indexes: Updating Documents

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 2010-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多