Sep 142014
 

En el motor de búsquedas solr, cada vez que se inserta o actualiza un documento en una colección de documentos, se lleva a cabo el proceso de indexación del mismo. En este proceso, se analiza el contenido de cada uno de los campos, descomponiendo los campos de texto en elementos (tokens), etc. conforme a la configuración establecida en el fichero schema.xml.

Normalmente, este proceso sólo es necesario realizarlo una vez para cada documento indexado. Pero en ocasiones puede ser necesario regenerar el índice de toda la colección. En este artículo se explica la manera de realizar esta operación de re-indexación, y las consideraciones que hay que tener en cuenta.

Cuándo hay que reindexar una colección solr

La reindexación es necesaria cada vez que se modifica de algún modo la estructura de los documentos, añadiendo o eliminando algún campo, o bien modificando las características de un campo configuradas en el fichero schema.xml o en alguno de los ficheros de configuración referenciados en el mismo.

Cómo reindexar una colección

Reindexar una colección implica volver a insertar todos los documentos en la colección, para que sean indexados de acuerdo con la nueva configuración.

Normalmente, la estructura de un documento incluye un campo «id» que contiene un identificador único para cada documento. En este caso, cuando se inserta un documento con el mismo «id» que otro previamente existente, se realiza una actualización del documento, que consiste en eliminar el documento anterior y reemplazarlo por el nuevo.

Pero si no existe un campo «id» que permita identificar cada documento de manera única, es necesario eliminar los documentos existentes antes de proceder a la reinserción, porque de otro modo se crearían duplicados.

Por esta razón, la manera más recomendable de reindexar una colección «collection1» es:

  1. Crear una nueva colección «collection1_reindex», copiando la configuración de la colección «collection1»
  2. Editar la configuración de «collection1_reindex», añadiendo, modificando o eliminando campos de la estructura de documento, como se estime oportuno
  3. Cargar todos los documentos en la colección «collection1_reindex»
  4. Intercambiar «collection1» con «collection1_reindex», de manera que la segunda pasa a ser la colección activa.

Crear una nueva colección, copiando la configuración de otra

Podemos crear una nueva colección «collection1_reindex» con la misma configuración que la configuración «collection1» que queremos reindexar, copiando el árbol de directorios de la colección original, excluyendo el directorio «data». Por ejemplo, en un sistema linux, podemos utilizar el comando «rsync» en línea de comandos:

Después de realizar la copia, debemos editar el fichero core.properties para indicar el nombre de la nueva colección:

Por último, reiniciamos el contenedor (Jetty, Tomcat,…) en el que se ejecuta solr. Si no se ha producido un error, la nueva colección debe aparecer en el frontend de administración de solr:

solr-reindex-collection

Editar la configuración de la colección

La configuración de una colección de documentos se encuentra recogida en los ficheros de configuración bajo el directorio conf. De ellos, los principales son solrconfig.xml y schema.xml. solrconfig.xml contiene parámetros genéricos de configuración, y schema.xml contiene la definición de la estructura de los documentos contenidos en la colección.

Cargar los documentos en la colección

Normalmente, los documentos a cargar se encuentran almacenados fuera de solr, en forma de ficheros, o bien contenidos en bases de datos, etc. El procedimiento a seguir para cargar los documentos en la colección es distinto en cada caso.

En general, la mejor manera de cargar los documentos en la nueva colección es reproducir exactamente el procedimiento que se utilizó para cargar los documentos en la colección original. Pero en algunas ocasiones, esto puede ser muy costoso o no ser posible. En estos casos, se puede evaluar la factibilidad de utilizar la colección solr original para recuperar los documentos, e insertarlos en la nueva colección. Esto sólo es posible si todos los campos de la colección original están definidos con el atributo stored="true", de manera que sea posible recuperar sus valores.

Intercambiar «collection1» con «collection1_reindex»

Una vez finalizada la carga de los documentos en la nueva colección, se pueden intercambiar ambas colecciones para que la nueva colección se convierta en la colección activa. Para ello, se puede utilizar la opción «swap» en el panel de administración de solr:

Seleccionamos «Core Admin» en el menú de la izquierda, y la colección «collection1» en el listado de colecciones. Al pulsar el botón «Swap», aparece un cuadro de diálogo en el que podemos seleccionar la colección «collection1_reindex» con la que queremos intercambiarla. Al pulsar «Swap Cores», se intercambian los nombres de las colecciones, y la nueva colección se convierte en la colección activa.

Nota: El comando «Swap» intercambia los nombres de las colecciones, pero no los nombres de los directorios que las contienen. Tras intercambiar las colecciones, la colección activa pasa a denominarse «collection1», pero está contenida en el directorio «solr/collection1_reindex». Del mismo modo, la colección antigua pasa a denominarse «collection1_reindex», pero se encuentra en el directorio «solr/collection1».

Referencias

Indice de artículos relacionados con solr

 Publicado por en 8:10 pm

 Deja un comentario

(requerido)

(requerido)