Tabla de Contenidos

Solr

Básicos

Instalación e inicio

Solr es un sistema de recuperación de información. Se basa en un servidor de búsqueda REST donde se indexan los documentos en formato XML, JSON o HTTP para después realizar consultas sobre estos.
Podemos descargarlo desde aquí o, en una distribución Linux, instalando el paquete solr-common.
Requiere de un servidor de aplicaciones Java, aunque la descarga provee un pequeño servidor ya configurado que podemos ejecutar desde la carpeta examples mediante:

$ java -jar start.jar

Y al cual accederíamos a partir de la url: http://localhost:8983/solr/admin/
Si en cambio lo instalamos en una distribución linux se serviría mediante Tomcat, donde el puerto por defecto es 8080.
Podemos configurar solr a partir del fichero solrconfig.xml.

Acciones básicas

La acción de indexar crea el índice a partir de los ficheros indicados. Una vez realizado el índice podremos consultar por sus ficheros (acción de retrieval).
La descarga de Solr viene con aplicaciones (post.jar y post.sh) para la comunicación con el servidor. Por ejemplo…

Indexar

$ java -jar post.jar solr.xml monitor.xml

Eliminar

Tras eliminar un elemento deberemos hacer un commit ($ java -jar post.jar debería funcionar). Eliminar por identificador:

$ java -Ddata=args -Dcommit=no -jar post.jar "<delete><id>SP2514N</id></delete>"

Eliminar por nombre:

$ java -Ddata=args -jar post.jar "<delete><query>name:DDR</query></delete>"

Consulta de datos

Schema

Es el elemento que define cómo se trata el indexado y la recuperación de los datos. Podemos acceder a partir de: <url solr>/admin/schema.jsp.
En el paquete descargable de Solr encontramos este fichero en la ruta: solr/conf.

Tipos de datos

Los tipos de datos posibles los encontramos dentro de la sección <types>, en la lista <fieldtype>. Podemos configurar su comportamiento (si los strings se comprimirán, si serán indexados…) a partir de aquí.

Indicar que se filtren stopwords

Indicar que se tenga en cuenta las mayúsculas y minúsculas

Campos

En la sección <fields> se declaran elementos <field> que son lo que se utilizará en tu aplicación.
Cada <field> tiene un nombre y un tipo asociado.

Opciones comunes de los campos

Opciones avanzadas

Campos dinámicos

Definen campos que no están definidos (yeah!). Por ejemplo podríamos decir que, cuando llegase un campo que acabase en “_i” y no estuviese explícitamente definido se crease:

<dynamicField name="*_i"  type="integer"  indexed="true"  stored="true"/>

Otra configuración

Más configuraciones que aparecen en el schema…

Carga de documentos

Otros formatos

Archivos .csv

Archivos json

Retrieval

Formato de queries

Queries con relevancia

Queries avanzadas

Uso de Solr desde programación

SolrPy

Es una librería para el acceso a Solr desde Python. Es fácilmente instalable (con easy_install solrpy) y un ejemplo de uso sería:

import solr
# create a connection to a solr server
s = solr.SolrConnection('http://example.org:8083/solr')
# add a document to the index
s.add(id=1, title='Lucene in Action', author=['Erik Hatcher', 'Otis Gospodnetić'])
s.commit()
# do a search
response = s.query('title:lucene')
for hit in response.results:
    print hit['title']

Métodos útiles

Notas

Documentos