13ª Convocatoria de Apoyo a Experiencias de Innovación Docente Curso 2015/2016 Informe de resultados del proyecto Simulador de motor de búsqueda Web Presentado por José Tomás Nogales Flores El proyecto se centra en la "Línea 1: Nuevas formas de presentación de materiales educativos", para aplicarlo en los grupos de la asignatura "Búsqueda y Recuperación de Información" del Grado en información y Documentación, en sus modalidades presencial (13383) y semipresencial (15870). El presente informe responde a lo dispuesto en el punto 9 de la Convocatoria: 8. Reconocimiento de los proyectos seleccionados e Informe final En los casos en los que se apruebe una propuesta, el profesor coordinador del proyecto seleccionado, deberá presentar, hasta el 31 de mayo de 2016 incluido, un informe final o memoria justificativa de las actividades realizadas y de los resultados alcanzados. 1 Presentación Este informe se ha estructurado en dos partes: una primera en la que se ponen en relación los resultados obtenidos con los objetivos detallados en la propuesta, destacándose que en general los resultados exceden los objetivos propuestos. La segunda parte del informe es una descripción somera de la aplicación desarrollada en cuanto a su uso y funcionalidades, ilustrada con una serie de capturas de pantalla que pretenden facilitar la comprensión de estos aspectos. La aplicación, desarrollada en JavaScript/ECMAScript + HTML + CSS, se ha probado con éxito en los navegadores Mozilla Firefox, Opera, Safari, Internet Explorer y Google Chrome, para diversos sistemas operativos (Windows, Mac OS, iOS, Android y entornos Linux) y para diversos dispositivos (ordenadores y tablets; también en smartphones, aunque la interacción y la visualización son algo incómodas). Al margen de la integración en AG de la aplicación como un recurso didáctico para los distintos grupos de la asignatura mencionada, puede accederse a ella de forma abierta en http://www.bib.uc3m.es/~nogales/doc/bri/bri-mot.html. La aplicación de ha desarrollado bajo una Licencia Creative Commons Atribución-NoComercial-SinDerivadas 3.0 Unported, de manera que puede usarse libremente. 2 Resultados obtenidos en relación con los objetivos propuestos En el punto 2.2 de la propuesta, "Breve descripción del proyecto", figuraban los principales objetivos del proyecto en los siguientes términos, que entre líneas se van comentando para describir su grado de consecución. En general todos ellos se han alcanzado o superado. La finalidad del proyecto es desarrollar una aplicación que ayude al alumno a entender cómo funciona un motor de búsqueda Web (Google, Bing, Yahoo!...), tanto al seleccionar los resultados como al ordenarlos según su relevancia, aspecto que determina en gran medida su éxito. El proyecto ha cumplido este objetivo general. Se han desarrollado los subsistemas de indización y de búsqueda propios de un motor de búsqueda, con las peculiaridades de este caso particular de Sistema de Recuperación de Información (SRI) en el que la ponderación de los resultados de búsqueda es su principal característica y su buen ajuste es determinante para la satisfacción del usuario. Así, se desarrollará un simulador de motor de búsqueda Web, a base de JavaScript + HTML + CSS, que podrá usarse en cualquier navegador, incluidos dispositivos móviles, respetando estos estándares (validación W3C) y las directrices WCAG de accesibilidad Web, y bajo licencia CC-BY que permita su uso libre. Tal como se proponía, la aplicación se ha programado en JavaScript, sin hacer uso de librerías adicionales, generando XHTML 1.0 válido y accesible en la medida en que puede serlo una aplicación de este tipo. Se acompaña de una hoja de estilo externa CSS2 y de un fichero externo RDF con metadatos Dublin Core. Como se ha comentado en la presentación de este informe, la aplicación se ha probado con éxito en las últimas versiones de los cinco navegadores más usados, Mozilla Firefox, Opera, Internet Explorer, Safari y Chrome, y también en Safari para un iPad de Apple; también se ha probado en Google Chrome para un teléfono con Android, aunque la visualización es más incómoda. Algunos voluntarios han realizado pruebas, también satisfactorias, en otras plataformas. La aplicación tendrá como entrada el texto de varias páginas web aportadas por el alumno. Tal como se pretendía, el simulador permite al alumno generar una BD simple, con entre 3 y 20 registros (más, si estos proceden de un fichero de exportación que ha sido ampliado), que puede alimentar, a base de formularios HTML, con datos de páginas web reales o ficticias de su elección, o bien con registros preparados al efecto si prefiere no introducir registros propios para hacer las pruebas. Además, se ha incorporado un módulo de exportación-importación que permite al alumno reutilizar una BD que haya generado y exportado previamente desde la misma aplicación; es especialmente importante si la BD contiene registros introducidos por el propio alumno o modificados por éste desde los registros de prueba precargados. Se usa XML como formato de intercambio; el alumno podría usar esta vía para introducir directamente los 3 registros (nuevos o adicionales a los exportados) en lugar de hacerlo usando los formularios HTML habituales, y también si desea superar el límite en el número de registros impuesto en principio por la aplicación para su introducción mediante formularios HTML. Generará los índices (y por tanto permitirá la búsqueda) según la ubicación de las palabras significativas (no vacías) en la página (título, metadatos, encabezados, dominio + URL, resto del texto). La aplicación desarrollada ofrece al alumno una estructura sencilla de los registros con cinco campos que se corresponde con los datos básicos de una página web: su URI (URL) incluyendo el dominio de Internet, su título (elemento <title> de HTML), sus metadatos (valor de los atributos @content de elementos <meta> cuyo atributo @name tome el valor "keywords" o "description"), sus encabezados (elementos <h1> a <h6>) y el resto del texto del cuerpo (descendientes de <body> excepto encabezados). Sin embargo, la aplicación ha sido programada con el grado de abstracción suficiente como para poder ampliar esta estructura básica hasta donde sea necesario. Esta extensibilidad y flexibilidad constituye un principio de diseño básico de la aplicación en todos sus aspectos. El índice generado tiene un alto grado de granularidad, remitiendo cada entrada del índice (cada palabra significativa) al registro (página web), campo (ubicación en la página), frase o sentencia y posición del término en la sentencia o frase, y constituyendo por tanto un índice completo que permitirá búsquedas por proximidad de términos. Además, para cada entrada del índice (para cada ocurrencia de cada palabra), se recogen los pesos asignados según en qué registro (página web) y en qué campo (posición en la página) aparece, junto con el peso global asignado, que combina los dos pesos indicados por vías diferentes que elige el usuario y se comentarán más adelante. El índice, de extensión considerable, se representa como una tabla que se visualiza en un espacio reducido con scroll vertical y que, a elección del usuario puede mostrarse u ocultarse, y fijarse a la página o la ventana (en este último caso para tenerlo siempre a la vista). Además, la aplicación ofrece inicialmente al alumno una lista de palabras vacías estándar (palabras en español e inglés, que no serán indizadas y por tanto no podrán ser objeto de búsqueda), que éste puede modificar a su gusto hasta el momento en que el índice es generado. Sin necesidad de eliminar la lista de palabras vacías, el alumno puede optar por no usarla, de manera que la aplicación la ignora y todas las palabras presentes en los registros son indizadas y por tanto pueden buscarse. Además, si las palabras vacías no se indizan, el alumno puede decidir si la posición de una palabra vacía debe o no tenerse en cuenta en el índice generado, alternativa que se encuentra en los diversos SRI del mundo real. Respecto al tipo de indización, la aplicación contempla la posibilidad de hacerla por palabra, frase o mixta, ya a este efecto los campos tienen asociado un indicador para señalar el tipo de indización que se le aplicará aunque, como es habitual en motores de búsqueda, todos los campos están indizados por palabra. Al margen, para cada campo se ha fijado un carácter separador de frase, que es aprovechado también para distinguir frases en todos los campos (separando así un metadato de otro, un encabezado de otro, y los distintos elementos del cuerpo entre sí), de manera que el índice pueda contabilizar la posición de la palabra en la frase, aumentando así su granularidad. 4 También en este punto es de destacar la flexibilidad de la aplicación, que permite modificar con facilidad el tipo de indización al que se someterá cada campo, así como los caracteres que actuarán como separadores de frase. Contará con las interfaces de búsqueda típicas de un motor (básica y avanzada), permitiendo búsquedas booleanas. Una vez generado el índice a partir del contenido de los registros, al alumno se le ofrecen dos interfaces diferentes para la consulta de la BD basadas en formularios HTML: la típica de búsqueda avanzada (en realidad, búsqueda asistida), con cuatro cajas de búsqueda que puede usar para indicar si los términos de búsqueda deben ser contiguos, si deben estar todos, si debe figurar al menos uno o si ninguno debe estar presente. Otra interfaz es la de búsqueda básica, simple o sencilla (en realidad, próxima al modo comando), en la que sólo existe una caja de búsqueda pero en la que puede utilizar funciones avanzadas de búsqueda con gran flexibilidad. Puede usar indistintamente una u otra, para comprender mejor que se trata justamente de interfaces distintas aunque el lenguaje interno de consulta sea (realmente es) el mismo. La de búsqueda simple le permite limitar la búsqueda a campos concretos (como sufijos de los términos de búsqueda en la forma término/campo) y expresar entre cada par de criterios los operadores que se aplicarán (ocho distintos: OR, XOR, NOT, AND, SAME, WITH, NEAR y ADJ, aunque los motores de búsqueda no suelen usar más de cuatro: OR, AND, NOT y ADJ); caso de faltar el operador se usará por defecto OR. Esta interfaz sólo limita el número de criterios de búsqueda al de caracteres previsto para la caja de texto, que por mantener la simplicidad se ha limitado a 200. Sin embargo, la aplicación podría trabajar virtualmente con cualquier número de criterios. Las prioridades de los operadores se han fijado al orden de proceso puro de izquierda a derecha. En ambas interfaces puede usarse un carácter de truncamiento (el asterisco) para buscar familias (raíces) de palabras, expresado a la derecha de la plantilla o patrón. Su salida será un listado con datos básicos de las páginas web encontradas y el enlace a la original. Además de este listado de resultados, que se comentará más adelante, la aplicación muestra previamente, en forma de tabla, un módulo muy completo de resultados del proceso de la instrucción de búsqueda que ningún motor de búsqueda ofrece y que el usuario puede ocultar o mostrar. No sólo indica, en las primeras filas de la tabla, el número de documentos que cumplen cada criterio de búsqueda por separado, sino que también muestra los identificadores concretos de los documentos, así como el número de ocurrencias. Cada criterio de búsqueda individual usado en la instrucción de búsqueda se resalta con un color diferente (hay previstos hasta 16 para otros tantos criterios individuales), y dispone de un enlace que remite a la primera ocurrencia del índice; todas las ocurrencias de un criterio dado se resaltan en ese mismo color. Además, en las siguientes filas de la tabla, la aplicación muestra paso a paso algunos de estos mismos datos (número de registros e identificadores de los mismos) para cada combinación de dos criterios (o un resultado parcial y un criterio) con un operador, algo que también ayuda a los alumnos a comprender el funcionamiento de éstos. 5 En la última fila de la tabla, ofrece el resultado final, incluyendo, además del número de registros que cumplen con la instrucción completa de búsqueda, los identificadores de estos registros. Ahí el alumno puede ver cómo el sistema ha traducido a su lenguaje interno la instrucción completa de búsqueda a partir de los datos expresados en cualquiera de las dos interfaces. En todos los casos los identificadores de los registros disponen de un enlace que permite al alumno examinar el registro completo para comprobar que en efecto cumplen el criterio o criterios afectados. Los resultados de cada instrucción búsqueda quedan asociados a un identificador (un número natural secuencial) que remite al conjunto de documentos recuperados. Finalmente, la aplicación presenta de forma sucinta algunos datos significativos de cada una de las páginas web recuperados por la instrucción completa de búsqueda, al estilo de una SERP (Search Engine Results Page, página de resultados del motor de búsqueda) y alcanzando así el objetivo que aquí se comenta. En concreto se muestra su título (un enlace asociado permite al alumno acceder al registro, que además queda resaltado en otro color), su URI (que remite por otro enlace a la página web original, si se trata de un registro basado en una real) y, como suelen hacer los motores de búsqueda, un fragmento de la página web que incluye al menos la primera ocurrencia de uno de los términos de búsqueda, que queda resaltada en su contexto. Además, la aplicación muestra otros datos que generalmente los motores de búsqueda no ofrecen: el peso global que se ha atribuido a cada página web recuperada en función de la presencia en ella de los términos de búsqueda y que determinará el orden en que se presentarán al usuario. Se ordenarán atendiendo a una combinación ponderada de diversos criterios de relevancia habituales en los motores de búsqueda, cuyos pesos fijará el alumno: A) Página web: autoridad/fiabilidad, visitas, número de enlaces desde otras páginas (dos grados), y clics recibidos tras una búsqueda similar, y B) Términos de búsqueda: posición en lugares privilegiados de la página, número de ocurrencias, frecuencia inversa del término y del documento e indicador tf*idf. Las páginas web recuperadas por la búsqueda aparecen ordenadas atendiendo a ese peso global, que es mostrado al usuario junto a los pesos parciales por cada ocurrencia de un término de búsqueda. Cada peso parcial remite por un enlace a la entrada del índice donde puede verse a qué ocurrencia del término corresponde y de dónde deriva ese valor. El peso total se ha simplificado como logaritmo del sumatorio de los pesos asignados a cada ocurrencia de un término de búsqueda en la página en cuestión. Tal como se pretendía en la propuesta, cuando se están introduciendo o modificando los registros de la BD, el alumno asigna a cada página web cinco pesos atendiendo a los cinco criterios mencionados en el bloque A (pesos de los registros), a saber, fiabilidad/autoridad, enlaces en primer y segundo grado, clics y visitas, y que determinarán (en principio, por simple suma) el peso intrínseco global de un registro (una página web). 6 Respecto al bloque B (pesos de los campos o ubicaciones en la página), el indicador tf*idf se ha sustituido por otro, más intuitivo y que permite elegir el método de combinación de los pesos del campo y del registro. Así, la aplicación permite al usuario decidir el peso de cada uno de los cinco campos contemplados en la propuesta y en la aplicación: el URI, título, metadatos, encabezados y resto del texto. Superando el objetivo previsto, la aplicación permite también al usuario decidir la forma en que se combinarán, para cada entrada del índice (para cada ocurrencia de un término de búsqueda), los pesos de ambos bloques (el asignado por la ubicación del término en un campo y en un registro concretos): mediante el producto, la suma, la media aritmética o geométrica, o eligiendo el valor más alto o más bajo de ambos, siendo el primero el valor por defecto y el más recomendable. El alumno comprenderá cómo, para una misma búsqueda, distintos motores aplican distintos algoritmos de ordenación que determinan diferentes posiciones de una misma página en su lista de resultados. Además, comprenderá mejor técnicas de SEO o posicionamiento web, aunque no son objeto de esta asignatura. Las funcionalidades descritas hasta ahora permiten esperar que el alumno comprenda mejor cómo trabaja internamente un motor de búsqueda de la Web como Google, Bing o Yahoo Search, como caso particular de un SRI. El alumno tiene la capacidad de parametrizar muchos factores que determinan el algoritmo de ponderación de los resultados de búsqueda, pudiendo asignar pesos a cada campo o ubicación en la página, y a cinco criterios por cada registro de la BD que conformarán el peso intrínseco de cada página web. Verá cómo el orden de los resultados queda determinado por muchos y muy diferentes factores. El simulador se acompañará de un vídeo o de un manual demostrativo y explicativo de su uso. Este documento constituye el mencionado manual demostrativo y explicativo de su uso. Sin descartar la realización de un vídeo como demostración de las funcionalidades de la aplicación, en ella se han incorporado módulos de ayuda para su manejo por los alumnos. Se entiende que estas ayudas son suficientes. Los ejercicios concretos a realizar sobre la aplicación formarán parte de los materiales docentes de la asignatura, y llamarán la atención sobre particularidades de la misma, que son particularidades de los SRI (en concreto los motores de búsqueda web) cuya mejor comprensión se pretende con este proyecto. La segunda parte de este informe describe brevemente las funcionalidades y modo de uso de la aplicación. 7 Breve descripción de la aplicación [Se recomienda seguir esta descripción accediendo a la ubicación provisional en que se encuentra la aplicación, http://www.bib.uc3m.es/~nogales/doc/bri/bri-mot.html.] Una vez cargado en el navegador el documento HTML que contiene la aplicación, el usuario encuentra en un principio sólo un formulario, el primer bloque de los diez que tendrá finalmente la página, que le permite generar la base de datos (BD). La banda vertical de la izquierda no tiene funciones asociadas; se trata de un mero recurso estético que pretende sugerir que se está usando una aplicación en un escritorio de ordenador y que puede usarla desde cualquiera de los cinco navegadores más extendidos. El documento HTML cargado irá adquiriendo nuevas secciones a medida que el usuario interactúa con la aplicación. Todas las secciones o bloques cuentan con textos de ayuda o de información adicional que el alumno puede mostrar, pulsando sobre las diversas anclas "+i" que acompañan a sus respectivos encabezamientos. Así, por ejemplo, si lo hace sobre la primera que se muestra en la figura, la página cambiará para mostrar lo siguiente: 8 Como puede verse, una vez desplegado el texto de ayuda o de información adicional, las anclas "+i" cambian a "-i", y pulsando sobre éstas últimas el texto de ayuda se oculta de nuevo y el texto del ancla pasa a ser otra vez "+i". 1. Creación de la base de datos Este primer bloque permite al alumno decidir el número de registros (páginas web) con el que quiere trabajar, y si quiere introducirlos él mismo, usar unos registros de muestra precargados o bien usar registros introducidos o modificados con anterioridad, importándolos. Como se indica en el texto de ayuda asociado al bloque (mostrado en la imagen anterior), en el supuesto de que el alumno opte por generar una nueva BD con registros vacíos (sin marcar la casilla de verificación para introducirlos él mismo), la página se ampliará incorporando un nuevo bloque con formularios en blanco que deberá cumplimentar: 9 Desaparece la opción de importar una BD, y el botón para generar una BD nueva, puesto que ya está generada, y se desactivan los controles de formulario del bloque. A partir de ese momento el alumno podrá cumplimentar los registros en blanco generados. En lugar de ello y como segunda opción, puede generar una BD con el número deseado de registros tomados de una base de datos precargada y que podrá modificar si lo desea; para ello le basta con tener marcada la casilla de verificación. En ese caso, el nuevo bloque generado tendría este aspecto: La tercera opción, la de importar una BD, requiere haber generado previamente alguna BD y haberla exportado. En ese caso, el alumno deberá pegar en el área de texto el resultado de tal exportación, como se muestra en la imagen siguiente: 10 Luego pulsará el botón asociado para realizar la importación. El resultado será éste: Desaparece la opción de generar una BD nueva y el botón para importar, se desactiva el área de texto con los datos de importación, y se informa al usuario del número de registros importados. Con cualquiera de las tres opciones se abren cinco bloques nuevos, del segundo (se ve en las imágenes) al sexto, con diversos formularios que permiten continuar el proceso de parametrización del sistema: carga o modificación de los registros o páginas web de la BD, establecimiento de pesos para los campos o ubicaciones de la página, decisión sobre el método de combinación de pesos del campo y el registro, gestión de las palabras vacías y confirmación del final del proceso de parametrización. 2. Edición de los registros 11 En el segundo bloque el alumno podrá, como se ha visto, introducir los datos de nuevos registros o modificar libremente los de registros precargados o importados. El texto de ayuda de este bloque es el siguiente: Así, pues, en este bloque se crea o modifica el contenido de los registros, que representan páginas web, y se asignan pesos a cada página web según una serie de criterios. Los datos de este segundo bloque, así como los de los bloques 3 a 5, se pueden modificar hasta que se da por terminada la parametrización en el bloque 6. 3. Asignación de pesos a los campos En el tercer bloque el alumno podrá asignar pesos distintos a cada uno de los campos contemplados en la aplicación, de manera que puede decidir cómo potenciar los términos de búsqueda según el lugar de la página en que aparecen. La siguiente imagen ilustra el formulario que le permite establecer tales pesos, con la información de ayuda desplegada. 12 4. Determinación del método de combinación de pesos de campo y registro El cuarto bloque permite al usuario elegir, para cada palabra buscada y encontrada en una página web, cómo se combinará su peso por la posición dentro de la página (especificado en el bloque 3) y su peso por encontrarse en una página web concreta (que posee un determinado peso específico, expresado en el bloque 2). Hay varias funciones predeterminadas que potencian más o menos la coincidencia de pesos altos. La imagen siguiente ilustra el formulario que le permite elegir esa función, con la información de ayuda desplegada. 13 5. Tratamiento de las palabras vacías El quinto es el último bloque de parametrización de la aplicación, que determinará si existirá una lista de palabras vacías (no indizadas y por tanto no susceptibles de ser buscadas), cuáles serán éstas y si la posición de una palabra vacía se tendrá o no en cuenta al indizar las demás (obviamente, el cuadro de verificación que permite esta última funcionalidad se marca automáticamente en el caso de que se desee indizar también las palabras vacías). El alumno puede modificar a su gusto la lista de palabras vacías, en los términos que se le explican en el texto de ayuda. Al pulsar el botón asociado, la aplicación reordena la lista de palabras vacías de forma automática en orden alfabético y elimina las duplicadas si las hubiera. La imagen que sigue muestra este bloque, con la información de ayuda desplegada. El alumno podrá modificar los datos de este formulario hasta el momento en que genere el índice o fichero inverso, lo que sólo podrá hacer después de dar por terminado el proceso de parametrización de la base de datos (BD), lo que podrá hacer en el sexto bloque de la aplicación. 6. Fin de la parametrización Este sexto bloque tiene sólo la función de informar a la aplicación de que se ha terminado de parametrizar el sistema. Lleva asociado un botón especialmente destacado 14 porque, una vez pulsado, los formularios previos de configuración dejarán de estar operativos. Se generará el índice de la BD sobre el que se realizarán las búsquedas. La siguiente imagen muestra este bloque con la ayuda desplegada. Una vez pulsado el botón cambia su texto y deja de tener función. La aplicación dará un mensaje de aviso si hay algún campo vacío en algún registro pero generará el índice a partir de los datos que sí estén presentes. La acción de generar el índice tiene diversos efectos inmediatos: quedan desactivados los controles de los formularios de introducción y modificación de registros (bloque 2), pesos de campos (bloque 3), combinación de pesos de campo y registro (bloque 4) y de gestión de palabras vacías (bloque 5), ya que el índice se genera siguiendo las especificaciones expresadas en ellos y no tendría sentido modificarlas. Otros efectos se reflejan en la aparición de nuevos bloques en la página de la aplicación. La siguiente imagen recoge el aspecto de la página desde la posición del botón, ahora inactivo, que dio por terminada la parametrización, permitiendo ver el bloque 7 sobre la exportación de la BD para uso futuro y el comienzo del bloque 8 que contiene el índice o fichero inverso (ambos se detallarán posteriormente): Tras el índice se habrá generado un noveno bloque con las interfaces de búsqueda que el alumno podrá usar para consultar la BD creada. La siguiente imagen muestra el final del índice (bloque 8) y la sección con las interfaces de búsqueda (bloque 9), que se comentarán también más adelante. 15 7. Exportación de la BD El texto de ayuda de este cuarto bloque contiene la siguiente información: Pulsando el botón asociado se mostrará debajo el resultado de la exportación de los registros, que el usuario podrá guardar como archivo de texto por medio de cualquier editor de texto. 16 El nombre del botón cambia para indicar que puede ocultarse el resultado de la exportación para simplificar la página; si se oculta, el nombre del botón vuelve a cambiar, indicando que puede volver a mostrarse el resultado de la exportación. El texto copiado directamente desde aquí, o desde el archivo de texto si se ha archivado, podrá ser pegado en el futuro en el área de texto descrita a propósito de la importación de registros (bloque 1). 8. El índice También este octavo bloque dispone de un texto de ayuda para comprender mejor la información que aparece en el índice de la BD sobre el cual se realizarán las búsquedas: 17 Como puede apreciarse, en el encabezado del bloque se informa del número de entradas del índice (el número de filas de la tabla), y en el texto de ayuda se recuerda al alumno usuario si se tiene o no en cuenta la posición de las palabras vacías, según haya establecido en el formulario sobre las palabras vacías (bloque 5). Con la misma BD de la que se han tomado las imágenes, se habrían generado 2.460 entradas en lugar de 2.023 si se hubiesen indizado también las palabras vacías. Por otro lado, los valores recogidos en la columna "Pal." de la tabla que refleja el índice variarían si en el formulario sobre las palabras vacías hubiera pedido que se contabilizara su posición. En la última columna, que recoge el peso final de cada entrada de índice, queda resaltada la función utilizada para combinar los pesos del campo y la página, de lo que también se informa en el texto de ayuda. De todas estas circunstancias se llamará la atención al alumno para que repare en las consecuencias tendrán sobre el módulo de búsqueda y recuperación del sistema. Y se insistirá en el hecho de que la búsqueda se realiza sobre el índice y no sobre los registros de la BD, esto es, no sobre las páginas web propiamente dichas. En el proceso de indización, como podrá verse en ejemplos posteriores, los términos del índice (palabras o frases) se pasan a minúsculas (caja baja) y son desprovistos de ciertos diacríticos (en concreto los acentos y diéresis; la "ñ" o la "ç" permanecen sin cambios). Evidentemente, en las interfaces de búsqueda que se comentarán posteriormente los términos de búsqueda sufrirán el mismo proceso. Al ser tan extensa la tabla que contiene el índice, se ha optado por mostrar a la vez sólo algunas entradas del índice (filas de la tabla); una barra de scroll permite desplazar la zona de visualización para ver el resto de las filas. Además, dado que para ciertas funciones de la 18 aplicación es conveniente tener el índice siempre a la vista, un botón asociado a la tabla permite anclarla tanto a la página (su posición inicial) como a la ventana del navegador (de manera que está siempre visible). Ambas formas de anclaje pueden apreciarse en las dos imágenes siguientes: Además, el botón de final del bloque permite ocultar o mostrar la tabla con el índice. 9. Las interfaces de búsqueda Para mostrar de la mejor manera posible de qué manera se lleva a cabo la búsqueda sobre los índices, se han desarrollado dos interfaces distintas, habituales en los distintos motores de búsqueda: la supuesta búsqueda avanzada y la básica o sencilla, en realidad más flexible y potente que la primera. Ambas permiten expresar un número elevado de criterios de búsqueda en una misma instrucción. Se insistirá al alumno en que los datos aportados en ambas interfaces son analizados y convertidos en una búsqueda formal de sintaxis única, que será la que se lance sobre los índices. También se le comentará cómo los analizadores sintácticos de estas interfaces pueden ser muy permisivos con ciertos errores en la instrucción de búsqueda, informando de ellos al usuario 19 pero completando el proceso de búsqueda, o, según su gravedad, informar del error sin llegar a realizar la búsqueda. El analizador de esta aplicación contempla supuestos de ambos tipos. Así, por ejemplo, en la interfaz básica, si el usuario expresa un indicador de campo que no existe, se le informa de ello y se busca el término en cualquier campo; si usa un operador al inicio o al final de la instrucción de búsqueda se le informa de que tal operador será ignorado; o si expresa dos operadores consecutivos se le informa de que el segundo es ignorado. En relación con errores que no llegan a lanzar la búsqueda, por ejemplo en la interfaz de búsqueda avanzada no puede usarse sólo la caja de texto para excluir términos de la búsqueda, y así se informa al usuario. El bloque de interfaces de búsqueda lleva el siguiente texto de ayuda: Los textos de ayuda de las interfaces concretas son los que se aprecian en las siguientes imágenes: 20 21 Según lo indicado en estos textos de ayuda, las búsquedas que se reflejan en la siguiente imagen (no pretenden ser reflejo de una búsqueda temática, sino sólo mostrar posibilidades de la aplicación) y que aparecen representadas en las dos interfaces, serían del todo equivalentes: Una búsqueda lanzada desde cualquiera de ambas interfaces sobre el índice genera los dos últimos bloques en la página: el décimo, con el historial detallado de la búsqueda, indicando los resultados parciales por cada criterio de búsqueda y por cada combinación de criterios, y el undécimo, con el resultado final de la búsqueda presentando un resumen de los registros encontrados. Ambos se tratan a continuación. Así, una variante de la búsqueda representada en la imagen anterior, pero limitando la búsqueda a campos, ampliaría la página con los dos bloques indicados: 22 Estos dos nuevos bloques se comentan a continuación. 7. Historial de la búsqueda Como puede apreciarse en la imagen anterior, el historial de la búsqueda muestra en una tabla toda una serie de detalles sobre las operaciones que haría el sistema a partir de la instrucción de búsqueda expresada por el usuario. El alumno podrá examinar cada uno de los pasos del proceso, cosa que un motor de búsqueda real no muestra. Si entrar en detalles, la información que se recoge en la tabla que se ve en la imagen anterior viene a estar explicada en el texto de ayuda de este bloque: 23 Los colores que resaltan cada criterio individual utilizado en la instrucción de búsqueda se corresponden con los de las entradas del índice que han sido seleccionadas por tal criterio. Así, puede observarse en la siguiente imagen una parte del índice con uno de los términos usados en la búsqueda resaltado. Además, cada término de búsqueda en la tabla que cumpla al menos un registro contiene un enlace a la primera ocurrencia en el índice del término en el índice, para facilitar al alumno comprobar en qué condiciones se cumple el criterio en cuestión. Por ejemplo, si hace clic sobre el criterio "algorithm*/HE" de la tabla del historial, verá la tabla del índice a partir de la primera ocurrencia del término (la raíz) "algorithm" en el campo de encabezamientos, como se aprecia en la siguiente imagen: 24 Por otro lado, todos los identificadores de los registros que aparecen en la última columna llevan asociado un enlace que permite al alumno acceder directamente al registro concreto para examinar sobre él el contexto en que aparecen los diferentes términos de búsqueda utilizados en la instrucción. Un botón, debajo del historial, permite ocultar o volver a mostrar el historial si se desea simplificar la interfaz de la aplicación. 11. Resultados de la búsqueda Este último bloque recoge un listado de resultados de la búsqueda, y seleccionando algunos datos especialmente significativos y representativos del registro en cuestión; en el caso de esta aplicación muestra, como suelen hacer los motores de búsqueda web, el título (con un enlace al registro de la BD), el URI (con un enlace a la página original en la web de la que se han extraído los datos) y una porción del contenido del registro donde figura al menos una ocurrencia de un término buscado. El texto de la ayuda de este bloque es el siguiente: 25 La siguiente imagen representa una porción del bloque de resultados para la búsqueda que se ha utilizado como ejemplo en la última captura de pantalla, con el texto de ayuda ya plegado: 26 Como se ha comentado, además del enlace asociado al URI de la página web, otro enlace de los datos mostrados para cada registro encontrado, concretamente el contenido del campo título, es un ancla con un enlace asociado que lleva directamente al registro concreto. La siguiente imagen, efecto de pulsar sobre el ancla del tercer documento, permite además ver cómo quedan resaltados (bloque 2) los documentos recuperados por una búsqueda: Pueden lanzarse tantas búsquedas como se desee. El contador del número de conjuntos generados irá incrementándose y se actualizará el resalte de los elementos implicados, tanto los términos del índice como los registros de la BD. No está implementada la posibilidad de referenciar conjuntos de registros generados previamente, pero ello es algo que ningún motor de búsqueda permite. Finaliza este informe llamando la atención sobre el hecho de que esta aplicación sugiere posibilidades y criterios de ponderación que podrían ser utilizados por un motor de búsqueda para ordenar los resultados. Sin embargo, muchos aspectos (los propios índices) son en la realidad mucho más complejos que como se han presentado aquí, y los algoritmos de ponderación mucho más ricos, incorporando hasta centenares de factores. Los aplicados aquí son mejorables, y se animará a los alumnos a que piensen formas de mejorarlos. La aplicación, por tanto, no es, ni pretende ser, un motor de búsqueda. Es un simulador que pretende acercar al alumno a algunas de las peculiaridades de estas poderosas herramientas. 27