Dentro del script que he empleado para hacer el crawl de distintas páginas, decidí que los nuevos crawls se harían en directorios distintos y después de juntarían con uno general. Este es el código que utilizo para mezclar los crawldb.
Path crawlDb = new Path(dir + "/crawldb_"+id);
Path crawlDbDestino = new Path(dir+"/crawldb");
Path crawlDbNuevo = new Path(dir+"/crawldb2");
//Aquí hay más código, pero no relacionado con este tema
Path[] crawlDbs;
if (!fs.exists(crawlDbDestino))
{
crawlDbs = new Path[1];
crawlDbs[0] = crawlDb;
crawldbMerger.merge(crawlDbDestino, crawlDbs, false, false);
fs.delete(crawlDb,true);
}
else
{
crawlDbs = new Path[2];
crawlDbs[0] = crawlDb;
crawlDbs[1] = crawlDbDestino;
crawldbMerger.merge(crawlDbNuevo,crawlDbs,false,false);
fs.delete(crawlDbDestino, true);
fs.rename(crawlDbNuevo, crawlDbDestino);
fs.delete(crawlDb,true);
}
En el primer if se entrará con el primer crawl, es decir, cuando la carpeta crawldb no exista. Simplemente se mezclará la carpeta destino con la que se ha creado al hacer el nuevo crawl.
Si la carpeta crawldb ya existe, entrará por el else. En este caso se deben mezclar la carpeta crawldb y la nueva carpeta, en una tercera. Despues de juntarlas, se renombra esta última carpeta como crawldb para que el proceso sea correcto en futuras actualizaciones.
Espero que os sirva. Enjoy!


0 comentarios:
Publicar un comentario