Serarch engines y Solr, JUG Argentina

1,397 views

Published on

These are the slides used for the presentation of Search Engines and Solr at the Java Users Group Argentina, in June 2011. See http://www.jugargentina.org/events/19524971/

Estas son las diapositivas utilizadas en mi presentación de Search engines y Solr, en la Java Users Group de Argentina. http://www.jugargentina.org/events/19524971/

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,397
On SlideShare
0
From Embeds
0
Number of Embeds
66
Actions
Shares
0
Downloads
30
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Serarch engines y Solr, JUG Argentina

  1. 1. Search Engines + Solr<br />
  2. 2. Agenda<br /><ul><li> Introducción a SearchEngines
  3. 3. Qué es Lucene
  4. 4. Qué es Solr
  5. 5. Conceptos de Lucene y Solr
  6. 6. Cómo es una aplicación de búsqueda típica
  7. 7. Qué otros features ofrece Solr / Lucene
  8. 8. Escalando Solr</li></li></ul><li>¿Quées un Search Engine?<br />Un sistema dentro de la categoría de “InformationRetrivalSystems”, diseñado para buscar información.<br />
  9. 9. ¿Porquéusar un Search Engine?<br /><ul><li> Se puedentenertoneladas de documentos, pero no sirve de nada si no puedoencontrar lo quenecesito.
  10. 10. Yanadiepuedeimaginar internet sin Google o un buscadorequivalente.
  11. 11. Es dificilimaginarquealguiencompraríaalgo en Ebaysituvieraquerevisartodos los productosparaencontrar el quequiere.</li></li></ul><li>… entonces, quees lo importante?<br /><ul><li>Que el usuarioencuentre lo quebusca
  12. 12. Simplificar la tarea de encontraresoquebusca:
  13. 13. Eliminandoresultadosque no son de interés del usuario
  14. 14. Asegurandose de mostraraquellosresultadosque SI son de interés
  15. 15. Que los resultadostengan un ordenlógico, quefaciliteencontrar la mejoropcióndentro de los resultados
  16. 16. Velocidad en la respuesta
  17. 17. Escalabilidad en cantidad de usuarios y documentos</li></li></ul><li>¿Qué es Lucene?<br />
  18. 18. ¿QuéesLucene?<br /><ul><li>Biblioteca de busqueda y recuperación de texto
  19. 19. Escrita en Java
  20. 20. Muy Flexible
  21. 21. Usa un índiceinvertido
  22. 22. Muyestable</li></li></ul><li>¿Quées Lucene?<br /><ul><li>Biblioteca de busqueda y recuperación de texto
  23. 23. Escrita en Java
  24. 24. Muy Flexible
  25. 25. Usa un índiceinvertido
  26. 26. Muyestable</li></li></ul><li>¿QuéesLucene?<br /><ul><li>Biblioteca de busqueda y recuperación de texto
  27. 27. Escrita en Java
  28. 28. Muy Flexible
  29. 29. Usa un índiceinvertido
  30. 30. Muyestable</li></ul>Multi Platforma. También se <br />implementó en otroslenguajes<br />
  31. 31. ¿Quées Lucene?<br /><ul><li>Biblioteca de busqueda y recuperación de texto
  32. 32. Escrita en Java
  33. 33. Muy Flexible
  34. 34. Usa un índiceinvertido
  35. 35. Muyestable</li></ul>Puedeutilizarse en casi<br />cualquieraplicación Java<br />querequierabúsqueda<br />portexto<br />
  36. 36. ¿Quées Lucene?<br /><ul><li>Biblioteca de busqueda y recuperación de texto
  37. 37. Escrita en Java
  38. 38. Muy Flexible
  39. 39. Usa un índiceinvertido
  40. 40. Muyestable</li></ul>Optimizadapararealizar<br />búsquedas de texto<br />
  41. 41. ¿Quées Lucene?<br /><ul><li>Biblioteca de busqueda y recuperación de texto
  42. 42. Escrita en Java
  43. 43. Muy Flexible
  44. 44. Usa un índiceinvertido
  45. 45. Muyestable</li></ul>10+ años de desarrollo open<br />source. Utilizada en muchas<br />aplicacionesproductivas<br />(porejemplo: Twitter, <br />Linked-in)<br />
  46. 46. ¿Qué es Solr?<br />
  47. 47. Primero el Nombre…<br />S<br />O<br />L<br />R<br />earch<br />over<br />ucene at<br />esin<br />
  48. 48. ¿Quées Solr?<br /><ul><li>Plataforma de Enterprise Search Open Source
  49. 49. Escrita en Java
  50. 50. Lucene essunúcleo
  51. 51. Agregaalgunos features
  52. 52. Muyescalable
  53. 53. APIs “REST-like” HTTP/XML y JSON
  54. 54. Configuraciónexterna
  55. 55. Extensible mediante plug-ins</li></li></ul><li>¿QuéesSolr?<br />Es unaaplicación web, <br />corredentro de un servlet <br />container cualquiera, como<br />ser Tomcat, Jetty, etc.<br /><ul><li>Plataforma de Enterprise Search Open Source
  56. 56. Escrita en Java
  57. 57. Lucene essunúcleo
  58. 58. Agregaalgunos features
  59. 59. Muyescalable
  60. 60. APIs “REST-like” HTTP/XML y JSON
  61. 61. Configuraciónexterna
  62. 62. Extensible mediante plug-ins</li></li></ul><li>¿Quées Solr?<br /><ul><li>Plataforma de Enterprise Search Open Source
  63. 63. Escrita en Java
  64. 64. Lucene essunúcleo
  65. 65. Agregaalgunos features
  66. 66. Muyescalable
  67. 67. APIs “REST-like” HTTP/XML y JSON
  68. 68. Configuraciónexterna
  69. 69. Extensible mediante plug-ins</li></ul>Multi plataforma<br />
  70. 70. ¿Quées Solr?<br /><ul><li>Plataforma de Enterprise Search Open Source
  71. 71. Escrita en Java
  72. 72. Lucene essunúcleo
  73. 73. Agregaalgunos features
  74. 74. Muyescalable
  75. 75. APIs “REST-like” HTTP/XML y JSON
  76. 76. Configuraciónexterna
  77. 77. Extensible mediante plug-ins</li></ul>Incluyetodaslascaracterísticas<br />y features de Lucene<br />
  78. 78. ¿Quées Solr?<br /><ul><li>Plataforma de Enterprise Search Open Source
  79. 79. Escrita en Java
  80. 80. Lucene essunúcleo
  81. 81. Agregaalgunos features
  82. 82. Muyescalable
  83. 83. APIs “REST-like” HTTP/XML y JSON
  84. 84. Configuraciónexterna
  85. 85. Extensible mediante plug-ins</li></ul>Simplifica el análisis, highlighting, <br />faceting, spell-checking, integración<br />con bases de datos, extracción de <br />contenido de documentoscomo<br />word, pdf, etc<br />
  86. 86. ¿Quées Solr?<br /><ul><li>Plataforma de Enterprise Search Open Source
  87. 87. Escrita en Java
  88. 88. Lucene essunúcleo
  89. 89. Agregaalgunos features
  90. 90. Muyescalable
  91. 91. APIs “REST-like” HTTP/XML y JSON
  92. 92. Configuraciónexterna
  93. 93. Extensible mediante plug-ins</li></ul>Replicación, Sharding <br />Integración con Zookeeper<br />
  94. 94. ¿Quées Solr?<br /><ul><li>Plataforma de Enterprise Search Open Source
  95. 95. Escrita en Java
  96. 96. Lucene essunúcleo
  97. 97. Agregaalgunos features
  98. 98. Muyescalable
  99. 99. APIs “REST-like” HTTP/XML y JSON
  100. 100. Configuraciónexterna
  101. 101. Extensible mediante plug-ins</li></ul>Es simple de usardesde<br />cualquieraplicaciónescrita<br />en cualquierlenguaje. No es<br />necesario saber Java parausarlo. <br />Desacopla la búsqueda de la <br />aplicación.<br />
  102. 102. ¿Quées Solr?<br /><ul><li>Plataforma de Enterprise Search Open Source
  103. 103. Escrita en Java
  104. 104. Lucene essunúcleo
  105. 105. Agregaalgunos features
  106. 106. Muyescalable
  107. 107. APIs “REST-like” HTTP/XML y JSON
  108. 108. Configuraciónexterna
  109. 109. Extensible mediante plug-ins</li></ul>Podríanconstruirsecientos de <br />aplicacionescompletamente<br />distintas sin tocarunalínea de <br />código Java.<br />
  110. 110. ¿Quées Solr?<br /><ul><li>Plataforma de Enterprise Search Open Source
  111. 111. Escrita en Java
  112. 112. Lucene essunúcleo
  113. 113. Agregaalgunos features
  114. 114. Muyescalable
  115. 115. APIs “REST-like” HTTP/XML y JSON
  116. 116. Configuraciónexterna
  117. 117. Extensible mediante plug-ins</li></ul>Se pueden extender o crear<br />nuevoscomponentes y <br />agregarlos de manera simple<br />
  118. 118. ¿Quées Solr?<br />
  119. 119. Algunasdefiniciones...<br />Documents, Fields y Terms<br />Document: <br /><ul><li>La unidad de indexación y resultado.
  120. 120. Conceptualmente, es lo que el usuariova a buscar en la aplicación. Porejemplo, en Google, un documentoseríaunapágina web, en unabiblioteca, podría ser un libro, etc. Se define dependiendo del negocio de la aplicación.
  121. 121. Un conjunto de Fields</li></ul>Field:<br /><ul><li>Unasección del documento
  122. 122. Contiene un conjunto de terminos (terms)
  123. 123. Estáformadopor un nombre, un tipo, masunaserie de propiedadesque lo definen.</li></ul>Term:<br /><ul><li>Unapalabra
  124. 124. La unidad de búsqueda</li></li></ul><li>Algunasdefiniciones...<br />Documents, Fields y Terms<br />id: 12345<br />Album: The Dark Side of the Moon<br />Artist: Pink Floyd<br />Genere: Progressive Rock<br />Release_Date: March 1973<br />Un Documento o “Document”<br />
  125. 125. Algunasdefiniciones...<br />Documents, Fields y Terms<br />id: 12345<br />Album: The Dark Side of the Moon<br />Artist: Pink Floyd<br />Genere: Progressive Rock<br />Release_Date: March 1973<br />Un campo o Field<br />
  126. 126. Algunasdefiniciones...<br />Documents, Fields y Terms<br />id: 12345<br />Album: The Dark Side of the Moon<br />Artist: Pink Floyd<br />Genere: Progressive Rock<br />Release_Date: March 1973<br />Un Término o “Term”<br />
  127. 127. Algunasdefiniciones...<br />ÍndiceInvertido<br />ÍndiceInvertido: Unaestructura de datosquemapeatodos los términosexistentes con los documentos en los quedichosterminosaparecen.<br />
  128. 128. Algunasdefiniciones...<br />Analysis<br />Analysis: <br /><ul><li>Un procesoaplicadoparaconvertir un texto en un conjunto de términos.
  129. 129. Aplicado a los documentos al indexarcontenido.
  130. 130. Aplicado a la query del usuario al realizarbúsquedas.
  131. 131. Lucene proveediferentestipos de análisisparadiferentestipos de dato.
  132. 132. Importanteparamejorar la…findability</li></li></ul><li>Un ejemplo...<br />Analysis<br />Searching with Solr<br />
  133. 133. Un ejemplo...<br />Analysis<br />Searching with Solr<br />Tokenization<br />Searching <br />with<br />Solr <br />
  134. 134. Un ejemplo...<br />Analysis<br />Searching with Solr<br />Tokenization<br />Searching <br />with<br />Solr <br />Lowercase Filter<br />searching <br />with<br />solr <br />
  135. 135. Un ejemplo...<br />Analysis<br />Searching with Solr<br />Tokenization<br />Searching <br />with<br />Solr <br />Lowercase Filter<br />searching <br />with<br />solr <br />Steming Filter<br />search <br />with<br />solr <br />
  136. 136. Un ejemplo...<br />Analysis<br />Searching with Solr<br />Tokenization<br />Searching <br />with<br />Solr <br />Lowercase Filter<br />searching <br />with<br />solr <br />Steming Filter<br />search <br />with<br />solr <br />Stop Filter<br />search <br />solr <br />
  137. 137. Un ejemplo...<br />Analysis<br />Searching with Solr<br />Tokenization<br />Searching <br />with<br />Solr <br />Lowercase Filter<br />Analysis<br />searching <br />with<br />solr <br />Steming Filter<br />search <br />with<br />solr <br />Stop Filter<br />search <br />solr <br />
  138. 138. Un ejemplo...<br />Analysis mal hecho<br />
  139. 139. Un ejemplo...<br />Analysis mal hecho<br />
  140. 140. Un ejemplo...<br />Analysis mal hecho<br />
  141. 141. El Proceso en unaaplicación de búsqueda<br />Adquirir Contenido<br />Interfaz de Usuario<br />Construir Documento<br />Construir Query<br />Armar Resultados<br />Analizar Documento<br />Ejecutar la Query<br />Indexar Documento<br />Índice<br />
  142. 142. El Proceso en unaaplicación de búsqueda<br />Interfaz de Usuario<br />Realizar Búsquedas: <br />El objetivo<br />Construir Query<br />Armar Resultados<br />Ejecutar la Query<br />Índice<br />
  143. 143. El Proceso en unaaplicación de búsqueda<br />Adquirir Contenido<br />Construir Documento<br />Indexar:<br />El mal necesario<br />Analizar Documento<br />Indexar Documento<br />Índice<br />
  144. 144. ¿Quehace Lucene?<br />Adquirir Contenido<br />Interfaz de Usuario<br />Construir Documento<br />Construir Query<br />Armar Resultados<br />Analizar Documento<br />Ejecutar la Query<br />Indexar Documento<br />Índice<br />
  145. 145. ¿Queagrega Solr?<br />Adquirir Contenido<br />Interfaz de Usuario<br />Construir Documento<br />Construir Query<br />Armar Resultados<br />Analizar Documento<br />Ejecutar la Query<br />Indexar Documento<br />Índice<br />
  146. 146. ¿Queagrega Solr?<br />También agrega:<br /><ul><li> Esquema
  147. 147. Consola de Administración
  148. 148. Cache
  149. 149. Algunas estadísticas
  150. 150. Casi todo se puede hacer por configuración
  151. 151. Interfaz via REST-API
  152. 152. Escalabilidad integrada
  153. 153. Algunos features, pero de ser posible se intentan migrar a Lucene</li></li></ul><li>Features<br />
  154. 154. Features<br />Filter Queries<br /><ul><li> Filtran el universo de documentos
  155. 155. No afectan el score del resultado
  156. 156. Se pueden almacenar en cache y reutilizar
  157. 157. Ejemplo:
  158. 158. Sólo quiero ver artículos usados
  159. 159. Sólo mostrar artículos en stock</li></li></ul><li>Features<br />Faceting<br /><ul><li> Cuenta los resultados de una búsqueda que cumplen con cierto criterio.
  160. 160. Muy útiles para la navegabilidad, junto con los FilterQueries</li></li></ul><li>Features<br />Highlighting<br /><ul><li> Obtiene el mejor snipet del resultado.
  161. 161. Resalta aquellas secciones donde la querymatcheó el documento</li></li></ul><li>Features<br />Spell Checking<br /><ul><li> Sugiere correcciones a palabras que interpreta mal escritas</li></li></ul><li>Features<br />More Like This<br /><ul><li> Sugiere documentos similares a alguno en particular</li></li></ul><li>Features<br />Result Grouping<br /><ul><li> Agrupa resultados por un campo en particular
  162. 162. Ejemplo:
  163. 163. Libros de un mismo autor
  164. 164. Productos de un mismo vendedor</li></li></ul><li>Features<br />Spatial Search<br /><ul><li> Filtrar resultados por distancia a un punto.
  165. 165. Dar relevancia a resultados mas cercanos a un punto.
  166. 166. Ordenar por distancia a un punto.</li></li></ul><li>Features<br />Otros…<br /><ul><li> Impulsar ciertos documentos al inicio.
  167. 167. Clusterizar resultados
  168. 168. Múltiples índices dentro de una instancia Solr</li></li></ul><li>Escalabilidad<br />
  169. 169. Escalabilidad<br />Solr provee dos métodosdistintosparaescalar:<br />Replicación: <br /><ul><li>Necesariacuando la cantidad de consultases mayor a la quepuede responder un solo servidor.
  170. 170. Útilcomo back-up y altadisponibilidad</li></ul>Sharding:<br /><ul><li>Necesariocuando la cantidad de documentos en el índicees mayor a la quepuedemanejar un solo servidor.</li></li></ul><li>Escalabilidad<br />Replicación<br />El casomas simple de replicación<br />Updates<br />Index Server (Master)<br />Queries<br />Search Server (Slave)<br />
  171. 171. Escalabilidad<br />Replicación<br />Cuando la cantidad de queries porsegundocrece<br />Updates<br />Index Server (Master)<br />Search Servers<br />(Slaves)<br />Queries<br />Queries<br />Queries<br />
  172. 172. Escalabilidad<br />Sharing<br />Updates<br />Updates<br />Unamitad del Índice<br />La otramitad del Índice<br />Podríapartirse el índice en N partes<br />
  173. 173. Escalabilidad<br />Sharing<br />Updates<br />Updates<br />Queries<br />Queries<br />Queries<br />Solr se encarga de que las consultas vayan a todos los “shards” <br />que se le indican y de “mergear” los resultados luego<br />
  174. 174. Escalabilidad<br />Sharing<br />Una Query Distribuida<br />q<br />q<br />q<br />Resultadosparciales<br />Merge<br />resultados<br />Resultado Final<br />
  175. 175. Escalabilidad<br />Tambiénpuedehacersetodojunto<br />Master 1<br />Master 2<br />Slaves<br />
  176. 176. NotasAleatorias<br /><ul><li> Lucene y Solr avanzan muy rápido. Así de rápido se desactualiza la documentación.
  177. 177. Los números de versiones, sobre todo de Solr, pueden parecer raros… es porque son raros.
  178. 178. Si les interesó la charla, prueben el ejemplo de Solr</li></li></ul><li>Referencias<br /><ul><li>http://lucene.apache.org/
  179. 179. http://lucene.apache.org/solr
  180. 180. Lucene in Action, SecondEdition
  181. 181. Solr 1.4 Enterprise Search Server
  182. 182. Mailing Lists:
  183. 183. solr-user@lucene.apache.org.
  184. 184. general-subscribe@lucene.apache.org</li></li></ul><li>¿Preguntas?<br />

×