¡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 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.
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í.
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.
default, valor por defecto del campo si no se da ninguno.indexed, si se indexará.stored, si se devolverá en la búsqueda.compressed, si el valor ha de ser comprimido.compressedThreshold, a partir de qué tamaño se comprimirá.multiValued, si puede tener múltiples valores.omitNormsomitTermFreqAndPositionsomitPositionstermVectorstermPositionstermOffsetsDefinen 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"/>
Más configuraciones que aparecen en el schema…
<uniqueKey> indica que es un campo único, no puede haber otro igual en el índice. Si un documento se añade con el mismo valor en este campo que otro ya existente, el ya existente será eliminado.<defaultSearchField> indica que campo es en el que se hará la búsqueda si en la query no se indica.<solrQueryParser defaultOperator=“AND|OR” />, indica cual de los dos operadores (AND o OR) se utiliza en las queries.<copyField><similarity>
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']