Jun 282014
 

En nuestro anterior artículo de introducción a solr hemos visto como instalar una instancia de este motor de búsquedas, y los procedimientos básicos para la indexación de documentos y la realización de búsquedas sobre el contenido indexado.

Pero el uso eficiente de solr requiere adaptar su configuración a las características del contenido que va a ser indexado.

En este artículo explicamos la estructura del fichero de configuración schema.xml, que especifica los tipos de datos existentes en los documentos indexados en solr. Una buena manera de familiarizarse con la configuración contenida en schema.xml es analizar el contenido del fichero incluido en el paquete de instalación. La estructura del fichero schema.xml se puede representar, en pseudo-código XML, de la siguiente forma:

1. En primer lugar, se definen una serie de tipos de datos

2. A continuación, se definen los campos que pueden aparecer en un documento, indicando su tipo de datos

3. Normalmente, uno de los campos es definido como clave única

4. También, es habitual copiar el valor de varios campos en un mismo campo de destino, para simplificar las búsquedas «full-text».

Tipos de datos

En el fichero de configuración schema.xml hay una entrada <fieldType> para cada uno de los tipos de datos existentes en la colección. En dicha entrada, el atributo «name» asigna un nombre al tipo de datos, y el atributo «class» especifica la clase java que implementa la funcionalidad requerida para el tratamiento de dicho tipo de datos.

Adicionalmente, puede haber otros atributos que especifican distintos parámetros de configuración del tipo de datos.

Tipos de datos básicos

En el fichero schema.xml de la colección «collection1» están definidos los tipos básicos, que se corresponden con los tipos de datos que pueden existir en un lenguaje de programación, o en una base de datos:

Tipos de datos para el manejo de texto

Una de las características de solr es la posibilidad de realizar búsquedas «full-text». Para llevar a cabo este tipo de búsquedas, solr analiza el contenido de los documentos en un proceso denominado «tokenización», descomponiendo el texto en elementos («tokens»). Con ello, puede entregar como resultado de una búsqueda resultados que contienen sinónimos de los términos buscados, elementos que son fonéticamente equivalentes, o elementos que tienen la misma raíz (stem).

Este análisis es realizado sobre los campos cuyo tipo de datos está implementado por la clase «solr.TextField». Normalmente, la definición de un tipo de datos de texto requiere bastantes parámetros de configuración, para especificar en detalle el tipo de análisis a realizar.

En el fichero schema.xml de ejemplo aparecen numerosos tipos de dato de texto para implementar distintos tipos de análisis. Por ejemplo:

text_general

phonetic

Realiza un análisis fonético del texto

text_es

Realiza un análisis especializado para textos en idioma español.

Tipos de datos geoespaciales

También existen en solr una serie de clases que permiten definir tipos de datos especializados en el manejo de datos geométricos, como puntos y polígonos. El manejo de información geoespacial en solr será objeto de un artículo monográfico en esta serie.

 

 Campos

El fichero schema.xml de ejemplo incluido en el paquete de instalación define los campos que pueden contener los documentos en la colección «collection1», como sigue:

Atributos que se pueden utilizar en las definiciones de campo

Como vemos en el ejemplo, todas las definiciones de campo deben incluir un atributo «name» y un atributo «type». Adicionalmente, se pueden especificar los siguientes atributos en la definición de un campo:

  • indexed: true si este campo debe ser indexado (para realizar búsquedas u ordenaciones)
  • stored: true si el valor exacto de este campo debe poder ser recuperado.
  • docValues: true este campo debe tener doc values.
  • multiValued: true si puede haber más de un valor asignado a este campo en un documento.
  • omitNorms: (experto) se pone a true para omitir las normas asociadas con este campo. Para los tipos de datos primitivos, las normas se omiten por defecto.
  • termVectors: [false] se pone a true para almacenar el vector de términos de un campo. Cuando se utiliza MoreLikeThis, los campos utilizados para similaridad deberían ser almacenados para optimizar el rendimiento.
  • termPositions: Almacenar información de posición en el vector de términos (Aumenta el espacio requerido).
  • termOffsets: Almacenar información de desplazamiento en el vector de términos (Aumenta el espacio requerido).
  • required: El campo es obligatorio
  • default: Especifica el valor por defecto para el campo si un documento que está siendo indexado no contiene este campo.

Clave única

Es muy aconsejable que los documentos a indexar incluyan un campo identificador, que permita identificar a cada uno de ellos de manera única. De este modo se simplifican las operaciones de actualización y eliminación de documentos del índice. Normalmente, el nombre de este campo es «id». En el fichero schema.xml se indica el nombre del campo identificador mediante el elemento <uniqueKey>:

 

Referencias

http://www.solrtutorial.com/schema-xml.html http://wiki.apache.org/solr/SchemaXml https://cwiki.apache.org/confluence/display/solr/Field+Type+Definitions+and+Properties

 Publicado por en 6:49 pm

 Deja un comentario

(requerido)

(requerido)