2008-10-13 18 views
7

Quiero eliminar todos los índices creados anteriormente. estoy usando Lucene.net.Eliminar todos los índices en Lucene.net

He intentado lo siguiente:

Term term = new Term(); //empty coz i want to delete all the indices 
IndexReader rdr = IndexReader.Open(_directory); 

rdr.DeleteDocuments(term); 
rdr.Close(); 

pero me da error. alguna idea de cómo hacerlo?

Respuesta

16

La mejor manera de eliminar un índice es borrar el directorio del sistema de archivos. Sin embargo, si desea regenerar el índice, la forma más fácil es abrir un nuevo editor de índice con el parámetro create como verdadero. Comenzará un nuevo índice eliminando el contenido del existente.

1

Como dijo Jokin, lo más fácil era eliminar todos los archivos dentro del directorio. es decir.;

DirectoryInfo directoryInfo = new DirectoryInfo(@"IndexLocation"); 
Parallel.ForEach(directoryInfo.GetFiles(), file => { 
      file.Delete(); 
     }); 
0

Desde el Lucene.Net API Doc:

public static IndexReader Open(Directory);

Experto: Devuelve una lectura/escritura IndexReader leer el índice en el directorio dado, con un IndexDeletionPolicy personalizado. NOTA: Comenzando en 3.0 esto devolverá un readOnly Indexer Reader. Lanza CorruptIndexException si el índice está dañado. Lanza IOException si hay un error de IO de bajo nivel.

Creo que se debe tratar

IndexReader rdr = IndexReader.Open(_directory, true); 
6

aunque el hilo es viejo creo que es mejor dar respuesta .. podría ser útil para alguien más. El método deleteAll() de IndexWriter se puede utilizar para eliminar todos los documentos indexados.

Cuestiones relacionadas