¡Esta es una revisión vieja del documento!
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.
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…
$ java -jar post.jar solr.xml monitor.xml
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>"
q=video&fl=name,id, consulta por video sólo retornando los campos name e id.q=video&fl=name,id,score, lo mismo que la anterior pero además mostrando el score dado.q=video&fl=*,score, todos los campos indexados más el score.q=video&wt=json, respuesta en formato json.q=video&sort=price desc, respuesta devolviendo por precio descendente.q=video&sort=inStock asc, price descq=video&sort=score desc
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']