Oct 282015
 

Solr es un motor de búsqueda que permite realizar operaciones de búsqueda muy elaboradas sobre conjuntos de documentos. Cada documento de una colección solr es un conjunto de pares (campo,valor). Los documentos pueden ser de distintos tipos, y cada tipo de documento se define como el conjunto de campos que puede contener, y el tipo de datos de cada una de ellos.

Así, en una colección solr que almacenara información sobre libros publicados, cada documento recogería los datos de un determinado libro, y podría incluir campos ‘titulo’, ‘autor’, ‘fecha de publicación’, etc.

En las versiones de solr anteriores a la 4.3, al crear una colección para almacenar determinado tipo de documentos era necesario incluir un fichero de configuración ‘schema.xml’ en el que se definian los nombres de los campos y sus tipos de datos.

A partir de la versión 4.3 se introdujo la posibilidad de crear colecciones con esquema gestionado (“managed schema”), también conocidas como colecciones sin esquema (“schema-less”). En una colección de este tipo, cuando se insertan documentos en una colección, solr añade automáticamente a la configuración de la colección las definiciones de los campos que encuentra, determinando el tipo de datos que contienen a partir de los valores que encuentra en los primeros documentos en los que aparece el nuevo campo.

Esta funcionalidad hace muy sencillo crear una nueva colección a partir de un conjunto de datos de los que no se conoce con exactitud su contenido. Sin embargo, en ocasiones es necesario realizar ajustes a la configuración del esquema elaborado automáticamente. Para ello, hay que convertir la colección “schema-less” a una colección de “esquema clásico”, como se explica en este artículo.

En primer lugar, deberemos parar la instancia de solr, con el comando adecuado a la instalación de solr:

A continuación, deberemos editar el fichero solrconfig.xml de la colección que queremos modificar:

  • Comentar el elemento ‘<schemaFactory class=”ManagedIndexSchemaFactory”>’
  • Descomentar el elemento ‘<schemaFactory class=”ClassicIndexSchemaFactory”/>’
  • Buscar el elemento ‘<initParams>’ que hace referencia a “add-unknown-fields-to-the-schema” y comentar todo el bloque “<initParams>…</initParams>”
  • Cambiar el nombre del fichero “managed-schema” a “schema.xml”

Y con esto ya se puede arrancar de nuevo la instancia de solr

Como comprobación, podemos acceder desde un navegador a “http://localhost:8983/solr/#/micoleccion/documents” y verificar que solr da un error si se intenta indexar un documento que contenga un campo no definido en schema.xml.

Y eso es todo!.

Referencias

StackOverflow: How does Solr’s schema-less feature work? How to revert it to classic schema?

 Publicado por en 9:00 am

 Deja un comentario

(requerido)

(requerido)