Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search 使用zend lucene仅在未删除的文档中搜索_Search_Zend Lucene - Fatal编程技术网

Search 使用zend lucene仅在未删除的文档中搜索

Search 使用zend lucene仅在未删除的文档中搜索,search,zend-lucene,Search,Zend Lucene,我对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;

我对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(); 
并使用以下代码按编号删除文档:

$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()的返回值。但问题是,删除文档后,我还可以在其中搜索,并显示其字段的值


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

循环搜索结果并检查文档是否已删除。如果是,请将其从搜索结果中删除

Zend_Search_Lucene::isDeleted($id)方法可用于检查 文档被删除

for ($count = 0; $count < $index->maxDoc(); $count++) {
if ($index->isDeleted($count)) {
    echo "Document #$id is deleted.\n";
} }
for($count=0;$count<$index->maxDoc();$count++){
如果($index->isDeleted($count)){
echo“文档#$id已删除。\n”;
} }
通过