Introducción a
Solr
¿Solr?
🔍
búsqueda
¡Queremos buscar!
SELECT ...
FROM ...
WHERE ...
LIKE “%query%”
Primera solución
20minutosdespué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
Lucenees...
ynoes:
• un servidor, crawler o un sistema
IndiceInvertido
correlaciónentretérminosylosdocumentos
dondeaparece,posiciónrelativayfrecuencia.
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
IndiceInvertido
ademásseguardalaposición
deltérminoeneldocumento
• 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.
ConceptosFundamentales
¡Queremos buscar!
FuncionamientodeSolr
Web
secundario📸
Nutch ♥ Solr
spider
BD
Web
Instalando
Solr
JARsconfuncionesadicionales
JARsdeSolr,SolrJ(clienteJava)
ejemplosdeconfiguraciones
directorio“home”parael
ejemplo
distribución standard
nombredelcore/colección
subdirectoriodeconfiguración
subdirectoriodedatos
esquema(estructura)
configuraciónprincipalde
uncore
Estructuradeunacolección
➜ cd /path/a/solr/example
➜ java -jar start.jar
Iniciando Solr
⌨Ctrl+C#paradetenerelservidor
puertoenelqueseinicióSolr
http://localhost:8983/solr
InterfazWebdeSolr
➜ cd exampledocs/
➜ java -jar post.jar *.xml
Añadiendo documentos
http://localhost:8983/solr/
select?q=*:*
Endpoint
REST
Todoslos
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

Introducción a Solr