SINAI: Ejemplos prácticos con Lucene y Yahoo! BOSS

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    1 Favorite & 1 Group

    SINAI: Ejemplos prácticos con Lucene y Yahoo! BOSS - Presentation Transcript

    1. En la práctica: Lucene y Yahoo! BOSS José Carlos Cortizo Pérez http://www.esp.uem.es/jccortizo josecarlos.cortizo@uem.es Departamento de Sistemas Informáticos Escuela Superior Politécnica Universidad Europea de Madrid
    2. Índice Lucene Yahoo! BOSS José Carlos Cortizo Pérez
    3. Sistemas Inteligentes de Acceso a la Información LUCENE
    4. Lucene ¿Qué es? Motor de búsqueda sobre texto Orientado a alto rendimiento Multiplataforma (Java) Open Source Con todas las características de un motor avanzado José Carlos Cortizo Pérez
    5. Lucene Búsqueda e Indización Lucene es rápido buscando porque utiliza índices Inverted Index (palabras --> documentos) En Lucene, un Document es la unidad de búsqueda e indización Un Document puede ser un texto, pero también una tabla, u otro tipo de documento estructurado José Carlos Cortizo Pérez
    6. Lucene Campos en Lucene Un Document consiste en uno o más Fields Un Field es un par nombre-valor P.e: title-King Kong La Indexación en Lucene, requiere crear un Documento agregando varios campos, y añadir ese Document al IndexWriter José Carlos Cortizo Pérez
    7. Lucene Búsqueda y consultas El proceso de búsqueda requiere que se haya creado algún índice Necesita que se cree una Query (habitualmente a partir de un QueryParser) y llevar esta Query a un IndexSearcher, que devuelve una lista de coincidencias (Hits) Lucene tiene su propio minilenguaje para realizar búsquedas, permitiendo restricciones booleanas y otras funcionalidades José Carlos Cortizo Pérez
    8. Pasos por Proyecto Determinar como quieres que se vean los resultados Es importante saber cómo quieres que se vean los resultados, porque en función de eso necesitaremos organizar algunas cosas. P.e: ¿Vas a mostrar snippets o no? ¿Cómo vas a enlazar a los documentos? ¿Qué orden vas a seguir con los resultados? ¿Qué forma de visualización? José Carlos Cortizo Pérez
    9. Pasos por Proyecto Ej. código visualización System.out.println(\"Found \" + hits.length() + \" hits.\"); for(int i=0;i<hits.length();++i) { System.out.println((i + 1) + \". \" + hits.doc(i).get(\"title\")); } José Carlos Cortizo Pérez
    10. Pasos por Proyecto Mapear tu aplicación al modelo de Lucene A partir de la página de resultados, determina los pasos necesarios para llevar tu aplicación a Lucene ¿Cuáles son los campos del documento? Si tus datos están en una BBDD, ¿qué tablas y columnas necesitas? ¿qué SQL vas a ejecutar para recuperar esos datos? José Carlos Cortizo Pérez
    11. Pasos por Proyecto Escribe el código de indexación Vengan de donde vengan los datos, lo primero es escribir tu propio Indexer Cuándo tengas creado el índice, puedes revisarlo con Luke José Carlos Cortizo Pérez
    12. Pasos por Proyecto Escribe el código de indexación Directory index = new RAMDirectory(); IndexWriter w = new IndexWriter(index, new StandardAnalyzer(), true); addDoc(w, \"Lucene in Action\"); addDoc(w, \"Lucene for Dummies\"); addDoc(w, \"Managing Gigabytes\"); addDoc(w, \"The Art of Computer Science\"); w.close(); José Carlos Cortizo Pérez
    13. Pasos por Proyecto Escribe el código de indexación private static void addDoc(IndexWriter w, String value) throws IOException { Document doc = new Document(); doc.add(new Field(\"title\", value,Field.Store.YES, Field.Index.TOKENIZED)); w.addDocument(doc); } José Carlos Cortizo Pérez
    14. Pasos por Proyecto Escribe el código de búsqueda, en otra clase Es mejor separar la indexación de la búsqueda, tanto conceptualmente como de forma práctica El Searcher recibirá un String (consulta) y devolverá una lista de Hits Alguna funcionalidad adicional: Limitar el número de resultados Devolver páginas José Carlos Cortizo Pérez
    15. Pasos por Proyecto Escribe el código de búsqueda (QUERY) String querystr = args.length > 0 ? args[0] : \"lucene\"; Query q = new QueryParser(\"title\", new StandardAnalyzer()).parse(querystr); José Carlos Cortizo Pérez
    16. Pasos por Proyecto Escribe el código de búsqueda (SEARCH) IndexSearcher s = new IndexSearcher(index); Hits hits = s.search(q); José Carlos Cortizo Pérez
    17. Pasos por Proyecto Implementar funcionalidades de búsqueda adicionales P.e. Filtrados por permisos Ordenar por fecha (o de otra forma) Buscar por tipo de fichero etc. José Carlos Cortizo Pérez
    18. Pasos por Proyecto Comprueba que tus resultados tienen sentido Una exhaustiva fase de pruebas siempre es necesaria José Carlos Cortizo Pérez
    19. ¿Alguna pregunta? José Carlos Cortizo Pérez
    20. Sistemas Inteligentes de Acceso a la Información Yahoo! BOSS
    21. Yahoo! BOSS ¿Qué es? BOSS = Build your Own Search Service Es una plataforma abierta para la construcción de servicios web de búsqueda Objetivo: Promover la innovación de la industria de búsqueda ¿Quién está detrás? Evidentemente Yahoo! :D José Carlos Cortizo Pérez
    22. Yahoo! BOSS ¿Por qué usar Yahoo! BOSS? Aprovechar El ‘know-how’ de Yahoo! Sus algoritmos Su infraestructura Pero... Pudiendo aportar nuestra propia innovación José Carlos Cortizo Pérez
    23. Yahoo! BOSS ¿Quién lo está usando? Hakia: Un buscador semántico Me.dium Search: Buscador social Daylife: Plataforma de publicación de contenidos Cluuz: Clusteriza y ordena de forma gráfica los resultados José Carlos Cortizo Pérez
    24. Yahoo! BOSS Limitaciones José Carlos Cortizo Pérez
    25. Yahoo! BOSS Requisitos Conseguir un BOSS App ID http://developer.yahoo.com/boss José Carlos Cortizo Pérez
    26. Yahoo! BOSS Ejemplo simple (PHP) José Carlos Cortizo Pérez
    27. Yahoo! BOSS Simple, ¿no? José Carlos Cortizo Pérez
    28. Yahoo! BOSS ¿Cómo funciona por detrás? El API de Yahoo! BOSS recibe una URL tipo http://boss.yahooapis.com/ysearch/web/v1/{query}?appid={youBOSSappid} [&param1=val1&param2=val2&etc] Ej: http://boss.yahooapis.com/ysearch/web/v1/sinai?appid= {youBOSSappid} La procesa y devuelve los resultados en formato XML, de forma que podemos procesarlos y extraer la info José Carlos Cortizo Pérez
    29. Yahoo! BOSS ¿Cómo funciona por detrás? José Carlos Cortizo Pérez
    30. Yahoo! BOSS ¿Cómo funciona por detrás? En función de la URL accedemos a diversos servicios (búsqueda sobre web, noticias, imágenes), diversos parámetros y diversas consultas José Carlos Cortizo Pérez
    31. Yahoo! BOSS URLS Web http://boss.yahooapis.com/ysearch/web/v1/{query}?appid={youBOSSappid} [&param1=val1&param2=val2&etc] Imágenes http://boss.yahooapis.com/ysearch/images/v1/{query}?appid=xyz[&param1=val1&param2=val2&etc Noticias http://boss.yahooapis.com/ysearch/news/v1/{query}?appid=xyz[&param1=val1&param2=val2&etc Spelling http://boss.yahooapis.com/ysearch/spelling/v1/{query}?appid=xyz[&param1=val1&param2=val2&etc José Carlos Cortizo Pérez
    32. Yahoo! BOSS Pero, si Yahoo! BOSS se encarga de casi todo, ¿yo qué hago? Innovar, por supuesto :D “Mezclar” las búsquedas de Yahoo! BOSS con las de otros, p.e. las de Google: http:// code.google.com/apis/ajaxsearch/ Reordenar los resultados Clusterizar Ordenar en líneas temporales Hacer buscadores específicos para medios sociales Etc. José Carlos Cortizo Pérez
    33. ¿Alguna pregunta? José Carlos Cortizo Pérez
    34. Bibliografía Adicional http://www.lucenetutorial.com Raymond Mooney. Basic Tokenizing, Indexing and Implementation of Vector-Space Retrieval. Tema 3, curso IR. http://www.cs.utexas.edu/~mooney/ir-course/slides/Evaluation.ppt Tutorial: Create a Yahoo BOSS powered Site Search Engine http://www.labnol.org/internet/tutorial-create-yahoo-boss-site-search/5636/ Yahoo! BOSS doc: http://developer.yahoo.com/search/boss José Carlos Cortizo Pérez
    35. ¿Alguna pregunta? José Carlos Cortizo Pérez

    + José Carlos Cortizo PérezJosé Carlos Cortizo Pérez, 11 months ago

    custom

    1217 views, 1 favs, 0 embeds more stats

    More info about this document

    CC Attribution License

    Go to text version

    • Total Views 1217
      • 1217 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 1
    • Downloads 9
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories