Introducción a Solr

Post on 29-Jul-2015

124 views 0 download

Transcript of Introducción a Solr

Introducción a

Solr

¿Solr?

🔍 búsqueda

¡Queremos buscar!

SELECT ... FROM ... WHERE ... LIKE “%query%”

Primera solución

20 minutos después …

No tan así ...

• lento con muchas tuplas •mayúsculas/minúsculas • longitud del campo •match parciales •análisis textuales

1) la uci 2) bienvenido la uci 3) esta es la uci

Match parciales

query=“la uci”

query=“esta uci”

Análisis textuales

ABCD123 ➜ [“ABCD”, “123”]

“la casa” ➜ [“casa”]

“drinking, learning” ➜ [“drink”, “learn”]

No tan así ...• lento con muchas tuplas •mayúsculas/minúsculas • longitud del campo •match parciales •análisis textuales •¿relevancia?

Características

• servidor de indexación • comunica a través HTTP (REST) • soporta formatos XML y JSON • configuración vía ficheros • caché a diferentes niveles • basado en Lucene • orientado a documentos (NoSQL) • extensible • distribuido, escalable, etc.

Lucene

• librería de búsqueda full-text • muy utilizada y extendida • desarrollada desde el 2000 • pertenece a la Fundación Apache • open source

Lucene es...

y no es:• un servidor, crawler o un sistema

Indice Invertido

correlación entre términos y los documentos donde aparece, posición relativa y frecuencia.

Término Documentos

a doc1[2x]

brown doc2[1x],doc3[1x]

cat doc4[1x]

cow doc2[1x]

… …

once doc1[1x]

over doc2[1x]

the doc2[1x],doc3[1x] doc4[1x]

Documento Contenido

doc1 once upon a time, in a land

doc2 the brown cow jumped over...

doc3 the quick brown fox…

doc4 the cat in the hat

Indice Invertido

además se guarda la posición del término en el documento

• Documento: Cualquier fragmento de información enviado a Solr.

• Campo: Unidad lógica que compone a los documentos (columnas en un SGBD).

• Término: Es la unidad básica que compone cada campo de un documento.

Conceptos Fundamentales

¡Queremos buscar!

Funcionamiento de SolrWeb

secundario📸

Nutch ♥ Solr

spider

BD

Web

Instalando Solr

JARs con funciones adicionales

JARs de Solr, SolrJ (cliente Java)

ejemplos de configuraciones

directorio “home” para el ejemplo

distribución standard

nombre del core/colección

subdirectorio de configuración

subdirectorio de datos

esquema (estructura)configuración principal de un core

Estructura de una colección

➜ cd /path/a/solr/example ➜ java -jar start.jar

Iniciando Solr

⌨ Ctrl+C# para detener el servidor

puerto en el que se inició Solr

http://localhost:8983/solr

Interfaz Web de Solr

➜ cd exampledocs/ ➜ java -jar post.jar *.xml

Añadiendo documentos

http://localhost:8983/solr/select?q=*:*

Endpoint REST

Todos los documentos

Respuesta de Solr

<response> <lst name="responseHeader"> <int name="status">0</int> <int name="QTime">1</int> </lst> <result name="response" numFound="32"> <doc> <str name="id">belkin</str> <arr name="compName_s"> <str>Belkin</str> </arr> <arr name="address_s"> <str>12045 E. Waterfront Drive</str> </arr> </doc> </result> </response>

XML

<doc> <str name="id">belkin</str> <arr name="compName_s"> <str>Belkin</str> </arr> <arr name="address_s"> <str> 12045 E. Waterfront Drive </str> </arr> </doc>

<doc></doc>

{ "responseHeader":{ "status":0, "QTime":15}, "response":{ "numFound":32, "docs":[ { "id":"belkin", "compName_s":["Belkin"], "address_s":["12045 E. Waterfront Drive Playa Vista, CA 90094"] } ] } }

JSON

Bibliografía adicional

http://sunshine.prod.uci.cu/search/solr