2012-12-21 10 views
5

Sto tentando di eliminare un documento utilizzando zend lucene. Quanto segue è il mio codiceZend Lucene Elimina documento Numero

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

Quando ho eseguito questo e controllato la mia cartella di indice che c'è un nuovo file creato in questo modo _f4t5_1.del

Ma quando faccio una ricerca, il documento eliminato è disponibile in la ricerca e anche controllato il

$ index-> ​​numDocs();

Questo metodo restituisce anche lo stesso conteggio prima e dopo l'eliminazione.

Qualsiasi aiuto è apprezzato.

risposta

3

Ho appena trovato il problema. Il problema era dovuto a un errore logico nel mio codice. Dopo l'eliminazione, stavo chiamando un'altra funzione che ha aggiunto di nuovo il documento all'indice. Quando ho controllato l'ID del documento se l'ho trovato diverso dopo l'eliminazione e questo mi ha aiutato a tenere traccia del problema. Grazie per l'aiuto

2

Questo potrebbe essere utile: php lucene how to update and delete rows in index file

Sono state prese per assicurarsi che i documenti sono in realtà cancellati.

Zend_Search_Lucene :: isDeleted ($ id) metodo può essere utilizzato per controllare se un documento viene eliminato.

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

Hai provato in esecuzione index optimization:

ottimizzazione Indice rimuove documenti cancellati e stringe gli ID dei documenti in un intervallo più piccolo. L'ID interno di un documento può quindi cambiare durante l'ottimizzazione dell'indice.

+0

Ho provato a ottimizzare l'indice. Una volta ottimizzato, ha rimosso i file come con estensione .del, ma quando è stato cercato nell'indice, i documenti eliminati vengono anche restituiti nei risultati della ricerca. –

+0

Perché non eseguire il ciclo e utilizzare '$ index-> ​​isDeleted ($ id)' per rimuovere i documenti eliminati dai risultati della ricerca. – JSuar