Sistema integral de búsqueda en Internet basado en servicios Web Alfonso Capella D’alton, Juan Carlos Monllor Pérez y Francisco Maciá Pérez La Word Wide Web se ha constituido en una fuente de información de primera magnitud, abarcando un amplio abanico de contenidos sobre múltiples temáticas y en diferentes formatos. No obstante, debido precisamente a la inmensa cantidad de información que alberga y a su naturaleza multimedia y entrelazada, con frecuencia es difícil encontrar exactamente la información que buscamos. Para resolver este problema, surgen los buscadores en Internet, como mecanismos que nos permiten obtener los contenidos que se ajustan a nuestros criterios de búsqueda. En este trabajo se realiza un análisis de los diferentes enfoques y tecnologías que facilitan la inclusión de buscadores en nuestros sitios Web y se propone una implementación basada en servicios Web; en concreto, en el motor de búsqueda que proporciona el conocido buscador de Internet, Google. Finalmente, se presenta como caso de uso la implementación realizada en el nuevo sitio Web del Departamento de Tecnología Informática y Computación de la Universidad de Alicante. 1 Introducción La Word Wide Web (WWW) se ha constituido en una fuente de información de primera magnitud, abarcando un amplio abanico de contenidos sobre múltiples temáticas y en diferentes formatos. No obstante, debido precisamente a la inmensa cantidad de información que alberga, a lo heterogéneo de su contenido, y a su dispersión en múltiples servidores y sitios Web —relacionados mediante una difusa y no siempre coherente jerarquía de enlaces—, con frecuencia es difícil encontrar exactamente la información que buscamos. Para resolver este problema, surgen los buscadores genéricos en Internet, como mecanismos que nos permiten realizar consultas – de forma análoga a los sistemas de bases de datos —y obtener un conjunto de direcciones URL cuyos contenidos se ajustan a nuestros criterios de búsqueda. Para multitud de organizaciones que se incorporan a Internet, e introducen su información en la WWW, disponer de un servicio de búsqueda es una ventaja que genera gran valor añadido, pues el acceso rápido y en línea a la información relevante se perfila como la característica crucial para el éxito de cualquier sitio Web. No obstante, el dotarse de un sistema de búsqueda propio conlleva un coste en middleware) infraestructuras y personal (servidores, para su plataformas desarrollo, software implantación y y mantenimiento; asimismo, su ámbito de búsqueda estaría en principio mucho más restringido que el de los buscadores genéricos, abarcando tan sólo la Web corporativa de la organización. Este escenario está cambiando en la actualidad, debido a la evolución de una nueva tecnología: los servicios Web, un estándar para la integración de aplicaciones Web mediante el uso de lenguajes y protocolos abiertos como XML y TCP/IP. Esta tecnología hace posible que el servicio de búsqueda de una organización sea proporcionado por una empresa externa, de forma totalmente transparente a los usuarios, que reciben los resultados a través de la aplicación Web corporativa. En este capítulo expondremos las diversas opciones tecnológicas que podemos utilizar a la hora de proporcionar el servicio de búsqueda. Finalmente, abordaremos un caso práctico: el servicio de búsquedas implantado en el nuevo portal del Departamento de Tecnología Informática y Computación de la Universidad de Alicante, que utiliza la avanzada tecnología del buscador Google gracias al sistema de servicios Web ofrecido por éste. 2 El problema de la búsqueda de información en Internet La red mundial de servidores HTTP conocida como World Wide Web (WWW) alberga una enorme cantidad de información, plasmada en documentos de distintos formatos. Entre estos formatos, destaca el lenguaje de marcación de hiper-texto (HTML), el cuál permite representar contenidos textuales en múltiples idiomas, incluir elementos multimedia tales como imágenes, audio o video así como establecer referencias (hiper-enlaces) a otros documentos presentes http Nombre del documento Puerto del servidor Ruta de directorios Protocolo Nombre DNS del servidor (o dirección IP) en la Web. :// www.dtic.ua.es : 80 /grupoM/ index.htm Fig. 1. Elementos básicos que constituyen una URL. Distintos estudios han tratado de medir el tamaño de la WWW, y aunque con ligeras variaciones, la mayoría estiman dicho tamaño en más de mil millones de páginas [1]. Teniendo en cuenta que el tamaño medio de cada página HTML es de aproximadamente 10 kilobytes, ello supone un volumen de 10 terabytes sólo en código HTML. Y las previsiones de crecimiento son espectaculares: el tamaño de la Web se ha duplica en menos de dos años, y parece que este ritmo continuará en los próximos años [2]. ¿Cómo se organiza tal cantidad de información en la WWW? Todo documento presente en la misma es accesible a través de su URL (localizador uniforme de recursos), la cuál está formada básicamente por el protocolo a utilizar (normalmente HTTP), la dirección DNS (nombre de dominio) o IP del servidor que lo aloja (junto al número de puerto) y la ruta de directorios donde reside más el nombre del propio documento (fig. 1). Así, los nombres DNS suelen representar organizaciones y departamentos, las rutas de directorios grupos y secciones y por último, el nombre del propio documento suele referenciar su contenido (por ejemplo, lista-aprobados.html). No obstante, la nomenclatura y estructura concretas no se encuentran estandarizadas, sino que cada sitio Web adopta sus propias convenciones para organizar los documentos que ofrece. Esta organización es lógica desde el punto de vista de la arquitectura de sistemas informáticos cliente/servidor, no obstante en algunos casos resulta inadecuada e ineficiente, particularmente desde el punto de vista semántico y de categorías temáticas. Por el contrario, otros esquemas organizativos, como el índice CDU aplicado en biblioteconomía, han sido concebidos para permitir una catalogación pormenorizada de cada documento, siguiendo una elaborada jerarquía de áreas temáticas en las que se encuadra dicho documento. Estos esquemas, aunque no reflejan la arquitectura cliente/servidor, resultan mucho más adecuados para la búsqueda de información, ya que el usuario sólo necesita saber el área temática donde se encuadra el documento que busca. En cambio, en la organización de la WWW, el usuario debe conocer detalles como el nombre DNS del servidor que aloja el documento, y la ruta de directorios que lleva al mismo; detalles que pertenecen a la infraestructura tecnológica de Internet y que por tanto deberían ser transparentes para el usuario. Otro obstáculo a la hora de buscar es la volatilidad de la Web: los documentos son modificados, trasladados a otras ubicaciones o eliminados con gran frecuencia [3,4,5], lo cuál hace aún más difícil encontrarlos. Por último, aunque la mayoría de documentos se encuentran en formato HTML, cada vez es mayor la presencia de otros formatos (PDF, Word) y de contenido multimedia, lo que requiere de un esfuerzo adicional a la hora de extraer la información. Este escenario plantea el conocido problema de la búsqueda de información en Internet: si el usuario desconoce a priori la URL del documento que contiene dicha información, ¿cómo podrá acceder a ella? La respuesta está en los motores de búsqueda, sistemas informáticos capaces de resolver la consulta del usuario presentándole una lista de URLs que contienen información relacionada con el objeto de la consulta. Estas consultas suelen basarse en la búsqueda de palabras clave unida a un conjunto de operadores lógicos (ej: “tabla Y periódica”), de dominio (ej: “EN_EL_SITIO dtic.ua.es”) y categorías (ej: “CATEGORÍA turismo”). Asimismo, el resultado de la consulta, es decir, la lista de URLs, suele ordenarse en función del grado de proximidad o emparejamiento (matching) del contenido de cada URL con los términos de la búsqueda, colocando en primer lugar los más próximos (este ordenamiento se conoce como ranking [1]). Por último, junto a cada URL se incluye de forma habitual un pequeño extracto, lo más significativo posible, del documento referenciado por dicha URL. 3 Las tecnologías de búsqueda en Internet En función del ámbito y la forma de llevar a cabo las búsquedas en Internet, podemos clasificar los motores de búsqueda en las siguientes categorías: • Buscadores genéricos • Buscadores ad hoc (a medida) • Buscadores basados en módulos de servidor Web • Buscadores basados en servicio de red • Buscadores basados en dispositivo de red (network appliance) Cada una de estas categorías se ajusta mejor a un determinado tipo de búsqueda y entorno de implantación: ámbito local/general, tecnología Web empleada, coste de desarrollo/mantenimiento… características que habremos de valorar a la hora de decidir qué motor de búsqueda adoptar para nuestro sitio Web. 3.1 Buscadores genéricos Los motores genéricos permiten realizar búsquedas que abarcan todos los dominios (DNS) y por tanto, en la práctica, todos los sitios Web existentes en Internet. Debido a que, como mencionamos en la introducción, cada sitio Web posee sus propias normas para organizar los documentos que contiene, un motor genérico debe ser capaz de analizar cada sitio Web por separado, inferir su estructura, extraer la información relevante de sus documentos y clasificar los mismos de acuerdo con sus propios criterios de búsqueda (áreas temáticas, palabras clave, relevancia...) Para ello, el motor de búsqueda debe dotarse de una infraestructura tecnológica como la observada en la figura 2. La pieza clave de dicha arquitectura consiste en los crawlers o robots de exploración, los cuáles llevan a cabo una navegación continua por la Web: recorren los hiper-enlaces presentes en los documentos Web, obteniendo los documentos referenciados por estos últimos y así recursivamente. Estos robots de exploración son coordinados desde el módulo de control de crawlers, el cuál les indica qué URLs deben seguir. Si el dominio de búsqueda es la WWW, entonces las URLs de partida serán los directorios raíz de cada servidor WWW presente en Internet (los cuáles pueden ser localizados gracias a los registros DNS). El módulo de control distribuirá dichas URLs entre los robots exploradores. A medida que los crawlers obtienen documentos, los van depositando en un almacén conocido como repositorio de páginas. Desde dicho almacén, los documentos son recuperados por el módulo de indexado para elaborar los correspondientes índices. Existen diversos tipos de indexación: textual (basada en palabras clave), estructurales (que reflejan los enlaces entre documentos), de utilidad (indexan en función de características como el idioma, el dominio DNS, el autor, la categoría…). Estos índices son utilizados posteriormente por el motor de búsqueda para resolver las consultas del usuario, de manera que a partir de un conjunto de palabras clave relacionadas con operadores de búsqueda (booleanos, de dominio, categoría, etc.) se obtiene el conjunto de URLs que encajan con dichos criterios. Crawlers Usuario GET C l ta su on Motor de búsqueda s Cliente os ltad P HTT Repositorio de páginas u Res Internet Ranking HTTP GET HTT P GE Módulo de indexado T Servidores HTTP (World Wide Web) a Re Control de crawlers t en lim ión ac b ad as a en o us de ot lm or Módulo de análisis de recopilaciones Índices Texto Estructura Utilidad Retroalimentación texto/estructura Fig. 2. Arquitectura de un motor de búsqueda genérico [1]. Finalmente, este conjunto es ordenado por el módulo de ranking en función de los índices de utilidad, por orden decreciente de proximidad a los criterios de búsqueda. Los índices de utilidad proporcionan una valiosa información para establecer el orden; por ejemplo, el número de documentos de la misma temática (o con similares palabras clave) que referencian una determinada URL constituye una buena estimación de la importancia de dicha URL (ej: documentos sobre sistemas operativos que referencian la página de Andrew S. Tanenbaum). Por último, una revisión de esta tecnología de búsqueda no estaría completa sin hablar de los costes. El coste en recursos tecnológicos (red, disco, memoria y CPUs) de un buscador genérico puede ser medido en base a tres factores: • Ancho de banda consumido en la exploración Web (crawling) • Coste espacial del almacenamiento de documentos (repositorio de páginas) • Coste temporal de los procesos aplicados a documentos e índices Estos tres factores dependen esencialmente del ámbito de búsqueda; si dicho ámbito es la WWW, entonces habremos de dimensionarlos en función del tamaño de la misma (1000 millones de páginas y 10 terabytes sólo en código HTML [1]), con la consiguiente escalada en recursos necesarios. Si el ámbito es local a un sitio Web, entonces los costes serán más fácilmente asumibles por la organización que lo gestiona, pues el tamaño del sitio Web suele ser proporcional al tamaño de la propia empresa. En cuanto al coste de desarrollo y mantenimiento, éste vendrá dado fundamentalmente por la complejidad de los algoritmos de exploración, almacenamiento, indexado y resolución de consultas (el coste software). A ello habría que sumar el coste adicional de los conversores de formato, si deseamos que nuestro buscador sea capaz de encontrar información en documentos PDF, Word, etc. Además, es preciso tener en cuenta que la WWW es un entorno en continua transformación, por lo que probablemente será necesario modificar los algoritmos para adaptarlos a dichas transformaciones. No obstante, existen proyectos de código abierto [6,7,8] que podríamos utilizar para nuestro buscador (ya sea en su totalidad o aprovechando componentes), ahorrándonos su desarrollo y mantenimiento. 3.2 Buscadores ad hoc Los buscadores ad hoc o propios son aquellos desarrollados a medida para un sitio Web concreto, ajustándose a las necesidades específicas de dicho sitio. Aunque en ocasiones aplican ideas, principios y técnicas tomados de los buscadores genéricos, no lo hacen de manera sistemática. En su lugar, desarrollan algoritmos y heurísticas propias, válidas exclusivamente en el ámbito del sitio Web para el que son creados, lo cuál conlleva la pérdida de generalidad. En compensación, y dado que normalmente se dispone de un gran conocimiento sobre los datos contenidos en el sitio, dicho conocimiento puede ser aplicado a la hora de diseñar el motor para aumentar el nivel de información de los algoritmos de búsqueda, mejorando así su rendimiento y calidad. Este es el caso del motor de búsqueda empleado en el antiguo (19952005) sitio Web del Departamento de Tecnología Informática y Computación de la Universidad de Alicante (desarrollado por Francisco Maciá Pérez y Juan Antonio Gil Martínez-Abarca), en el cuál el algoritmo conocía perfectamente la importancia de las columnas en cada tabla de la base de datos, importancia que podía ponderar a la hora de valorar (ranking) los resultados de la búsqueda. Así, si buscáramos el término “Jerónimo”, el algoritmo encontraría coincidencias en la tabla de profesores (los datos del profesor Jerónimo Mora) así como en la tabla docencia de asignaturas (las asignaturas impartidas por dicho profesor); dependiendo del contexto de la búsqueda (personas o asignaturas), el algoritmo colocaría en primer lugar la entrada de profesor o las correspondientes a asignaturas impartidas. La información más valiosa a la hora de diseñar los algoritmos a medida es con frecuencia el propio esquema del sistema de información, expresado a través de modelos como el entidad-relación extendido [9], el cuál nos proporciona un conocimiento cuya inferencia a partir de la estructura y contenido extremadamente difícil cuando no imposible. del sitio Web sería En cuanto a los costes de desarrollo y mantenimiento de un buscador propio, al igual que en el caso de los buscadores genéricos, dependen en gran medida de la complejidad de los algoritmos. Sin embargo, dado que los algoritmos son diseñados a medida del sitio Web, su complejidad estará en función del tamaño y la estructura del propio sitio Web; y como este último normalmente es proporcional a la dimensión de la empresa, se deduce que dichos costes serán asumibles para la organización, siempre que no se sobredimensione el sitio Web con respecto al tamaño de la empresa. Tal era el caso del buscador original para el sitio dtic.ua.es, mencionado anteriormente. Por supuesto, el coste de mantenimiento dependerá también de la frecuencia y magnitud de los cambios introducidos en la Web, los cuáles a su vez vendrán dados por la dinámica de la propia empresa. En sistemas de información donde las pautas están ya suficientemente acotadas, donde no son previsibles grandes cambios, el coste de mantenimiento será mínimo —como en el caso de los sistemas financieros. Por último, la portabilidad o capacidad de migración a otras plataformas tecnológicas de los motores de búsqueda ad hoc suele estar limitada por su estrecha vinculación a las tecnologías empleadas en el sitio Web. Es decir, los algoritmos diseñados a medida del sistema de información propio suelen implementarse también a medida de las tecnologías propias del sitio (utilizando los mismos lenguajes de programación, bibliotecas de funciones, etc.). Esta limitación se diluye a medida que empleamos lenguajes y bibliotecas más generales y portables (como Java, JDBC, JNDI, …). 3.3 Buscadores basados en módulos de servidor Web Tales buscadores consisten en módulos de componentes que se acoplan al servidor HTTP del sitio Web donde proporcionarán el servicio de búsqueda. A partir de dicho instante, el buscador comienza el análisis del sitio Web a fin de crear una base de datos (similar al recopilatorio de páginas de la fig. 2) sobre los contenidos del sitio (digging o extracción de información) [6]. A continuación, tiene lugar la creación de otra base de datos especializada, optimizada para las búsquedas, similar a la base de datos de índices de los buscadores genéricos; este proceso se conoce como merging (combinación). Ambas bases de datos se actualizarán periódicamente para recoger los cambios en el contenido y la estructura del sitio Web. A su vez, otro componente del módulo proporciona al usuario el interfaz Web a través del cuál realizar sus consultas. Dicho componente recoge los criterios de búsqueda especificados por el usuario y los confronta con la base de datos combinada (merged), obteniendo los correspondientes emparejamientos (matching) y a través de ellos relacionadas). el resultado de la búsqueda (lista de URLs Por otra parte, el coste de desarrollo y mantenimiento de este tipo de buscadores es cercano a cero, pues tan sólo es necesario proporcionarles la configuración básica e incorporarlos al servidor Web para el que fueron creados (al estilo plug & play). En ocasiones, estos buscadores no son desarrollados para un servidor específico, sino que se basan en una tecnología de interfaz (como CGI [10]), permitiendo su integración con cualquier servidor Web que incorpore dicha tecnología. Por último, en cuanto a las posibilidades de migración, los buscadores basados en módulo para servidor Web son portables entre distintas plataformas, siempre y cuando mantengamos el mismo servidor Web (o tecnología de interfaz) para el que fueron diseñados. 3.4 Buscadores basados en servicio de red En este tipo de buscadores, el motor de búsqueda es proporcionado por un proveedor de servicio, a través de un interfaz estandarizado basado en servicio de red - como los servicios Web [12]. Así, nuestra aplicación Web de búsqueda se limitará a recoger la consulta del usuario, encapsularla en una petición con el formato especificado por el interfaz del servicio de red y enviarla al proveedor del servicio. Adicionalmente, un servicio de descubrimiento (como UDDI [12]) puede hacer de intermediario, proporcionándole a nuestra aplicación la dirección del proveedor y la especificación del interfaz. Una vez resuelta la consulta por el motor de búsqueda externo, el proveedor del servicio responderá a nuestra aplicación con el resultado de la búsqueda, mediante una respuesta encapsulada conforme al interfaz pactado. A partir de este instante, nuestra aplicación dispone del resultado en un formato de datos portable que podrá procesar, filtrar, transformar en formato visual, etc. Finalmente, la aplicación de búsqueda de nuestro sitio Web enviará al usuario el resultado procesado, filtrado y con formato visual. Una consecuencia importante de este sistema es que permite integrar las capacidades de búsqueda externas a nuestra aplicación Web corporativa, de forma totalmente transparente para el usuario. En efecto, el usuario final desconoce los detalles acerca de quién lleva a cabo la búsqueda o cómo se comunica la aplicación Web con el motor de búsqueda externo; para él, es como si fuera la propia Web corporativa la que realizara todo el proceso. De esta manera, la Web corporativa gana en coherencia en cuanto a su interfaz de usuario, que sigue siendo exactamente el mismo a pesar de que un servicio, en este caso el de búsqueda, es prestado por otra organización. Otra consecuencia importante de este sistema es la posibilidad de incorporar servicios de búsqueda avanzados, incluso en todo el dominio de Internet, a sitios Web de organizaciones que no pueden asumir el coste de la tecnología necesaria para prestar tales servicios, pero en cambio sí pueden contratarlos a un proveedor externo (como Google). A la hora de implantar un buscador de este tipo, es preciso tener en cuenta que sólo la parte pública de nuestro sitio Web será accesible por el proveedor del servicio de búsqueda, por tanto las búsquedas estarán restringidas a dicha parte pública, no siendo posible buscar información en la intranet corporativa. Por otro lado, los costes de desarrollo y mantenimiento de este tipo de buscadores son mínimos, centrándose en la integración del servicio externo dentro de la propia aplicación Web. La facilidad con que lograremos dicha integración dependerá del interfaz del servicio, del soporte disponible para el mismo en el propio servidor Web (o la plataforma sobre la cuál está basado) y de la disponibilidad de bibliotecas de clases o funciones que encapsulen los detalles del interfaz. Por último, es necesario añadir el coste económico del servicio de búsqueda externo. Así, el proveedor del servicio fijará una tarifa determinada, que normalmente estará en función del número de consultas a satisfacer. Como ejemplo de servicio de red de búsquedas, está el servicio Web ofrecido por Google [11], el cuál permite enviar las consultas encapsuladas a través del protocolo SOAP [12] y recibir los resultados del mismo modo. 3.5 Buscadores basados en dispositivo de red (network appliance) En ellos, el motor de búsqueda es proporcionado por un conjunto altamente integrado de hardware y software, encapsulado en un dispositivo de red (network appliance), el cuál incorpora la tecnología de búsqueda genérica (crawlers, conversores de formato, bases de datos de índices, ranking, …) Tales dispositivos se caracterizan por un funcionamiento similar a los electrodomésticos, del tipo conectar y listo (plug & play) y con unas necesidades mínimas de administración (zero administration). Es decir, para poner en marcha el sistema de búsqueda resulta suficiente con alimentar el dispositivo y conectarlo a la red; a partir de dicho instante, el dispositivo se autoconfigurará y comenzará a ofrecer el servicio de búsqueda. En algunos casos, el dispositivo puede requerir una ligera configuración inicial para ajustar ciertos parámetros, como el dominio de búsqueda. Adicionalmente, los dispositivos de red – que se conectan a la red privada del sitio Web – pueden acceder a la parte privada del mismo, permitiendo búsquedas en la intranet corporativa. El propio dispositivo gestiona la seguridad de las búsquedas, garantizando que cada usuario puede acceder únicamente a la información para la cuál está autorizado. Los buscadores basados en dispositivo de red presentan un coste de desarrollo cero desde el punto de vista de la empresa que lo adquiere, y un coste de implantación y mantenimiento mínimos gracias a las capacidades de autoconfiguración y administración de los dispositivos de red. Como ejemplo de este tipo de buscadores está el search appliance [13] de Google, el cuál incorpora la tecnología de búsqueda del motor de Google encapsulada en un dispositivo de red, permitiendo buscar entre 15 millones de documentos con más de 220 formatos de archivo y garantizando la seguridad en el acceso a tales documentos (se mantienen los privilegios de acceso del usuario que realiza la búsqueda). Fig. 3. Dispositivo de red search appliance de Google. 4 Servicios Web Los servicios Web [12] constituyen una tecnología estándar para la integración de aplicaciones que se comunican entre sí a través de redes de computadores. Esta tecnología utiliza lenguajes y protocolos abiertos como XML, SOAP, WSDL, UDDI y TCP/IP, y permite el intercambio de información entre las aplicaciones de forma transparente a las mismas, es decir, sin que cada aplicación deba conocer los detalles de implementación de su contraparte. Gracias al uso de servicios Web, las aplicaciones pueden compartir lógica de negocio y datos por medio de un interfaz programático a través de la red. Cabe destacar que esta tecnología representa uno de los estándares más importantes para la provisión y consumo de servicios de red, siendo respaldada por el W3C (World Wide Web Consortium). Registro UDDI Service Broker 1 Publicación 3 Hoja WSDL 2 Búsqueda 1 Solicitud UDDI 2 3 Descubrimiento Hoja WSDL 4 Consumo Mensajes SOAP 4 Servicio Web Service Provider Aplicación Web Service Requester Fig. 4. Secuencia de interacciones requeridas para acceder a un servicio Web. Los diversos lenguajes y protocolos que forman parte de los servicios Web se utilizan con los siguientes fines: • XML es el lenguaje para el intercambio de datos transparente (formato portable) • SOAP es el protocolo que permite al cliente del servicio invocar métodos de objetos remotos proporcionados por el proveedor del servicio. • WSDL es el lenguaje de descripción de los servicios Web, que sirve para especificar el interfaz que deben usar las aplicaciones para comunicarse con cada servicio. • UDDI es el protocolo de descubrimiento utilizado por los clientes del servicio Web para obtener la dirección del proveedor del servicio, gracias a la intervención de un tercer actor: el registro UDDI (que actúa como intermediario). • TCP/IP es el protocolo de comunicaciones utilizado por los protocolos anteriores para la transmisión de datos a través de la red. 5 Servicio Web del buscador Google Google ofrece el uso de su motor de búsqueda a través de servicio Web [11]. Como mencionamos anteriormente, la tecnología de los servicios Web es fácilmente integrable en aplicaciones Web, lo que convierte a este servicio en candidato idóneo para implantar un sistema de búsquedas en cualquier sitio Web. El primer paso para acceder a este servicio consiste en registrarse en el sitio de Google [11], donde obtendremos una clave de licencia que nos autoriza a realizar hasta mil consultas diarias a través de su servicio Web. Posteriormente, desde el mismo sitio, descargaremos un paquete software que contiene • La descripción del servicio Web (WSDL) • El Google Java API. Se trata de una biblioteca de clases Java que sirven de envoltorio (wrapper) al servicio Web, encapsulando los detalles de los protocolos SOAP y UDDI y del lenguaje WSDL. Con esta biblioteca, es posible programar el acceso al servicio de Google sin conocer ninguno de estos protocolos o lenguajes. • La documentación del Google Java API • Ejemplos de uso del servicio a través del Java API, de aplicaciones .NET y mediante el uso directo del protocolo SOAP. El Java API nos provee de un conjunto de clases y métodos muy útiles para acceder al motor de Google, permitiendo realizar búsquedas avanzadas (consultas con operadores), restringir el dominio de búsqueda, realizar filtrados (por ejemplo para aislar el contenido que pueda herir la sensibilidad del usuario) e incluso obtener las sugerencias ortográficas de Google (“usted quiso decir…”). A continuación ofrecemos un pequeño ejemplo de código fuente Java que lleva a cabo una búsqueda, utilizando el Java API de Google: // CREAR OBJETO PARA BÚSQUEDA EN GOOGLE GoogleSearch googleSearch = new GoogleSearch(); // ESPECIFICAR PARÁMETROS DE BÚSQUEDA googleSearch.setKey(claveLicencia); googleSearch.setQueryString(cadenaBuscar); googleSearch.setStartResult(1); googleSearch.setMaxResults(10); // LLAMAR AL SERVICIO WEB GOOGLE // REALIZAR LA BÚSQUEDA Y RECOGER SU // RESULTADO GoogleSearchResult googleResults = googleSearch.doSearch(); // OBTENER ELEMENTOS RESULTANTES DE LA BÚSQUEDA GoogleSearchResultElement[] googleElems = googleResults.getResultElements(); Por supuesto, el Java API puede utilizarse tanto desde una aplicación Web como desde una aplicación cliente (de consola, gráfica e incluso applets siempre y cuando posean permisos para acceder al Java API y enviar los mensajes SOAP). 6 Propuesta para el buscador del nuevo sitio Web D:TIC Durante el mes de abril de 2005, el equipo técnico del Departamento de Tecnología Informática y Computación de la Universidad de Alicante, en colaboración con el grupo de redes del mismo departamento, estaba ultimando la nueva Web corporativa. Por aquel entonces, nos faltaba una pieza clave en cualquier sitio Web: el buscador del sitio. No podíamos utilizar directamente el buscador original de la Web anterior debido a que había cambiado la tecnología del sistema de información, desde el sistema original de bases de datos UNIX a un sistema basado en servidor SQL. Migrar el buscador original para adaptarlo a la nueva tecnología requería un tiempo del que no disponíamos. Descartada esta opción, comenzamos a sopesar distintas alternativas, teniendo en cuenta los diferentes tipos de buscador analizados en este mismo capítulo. Finalmente, decidimos optar por un buscador basado en servicio de red, concretamente el servicio Web ofrecido por Google. Las razones que motivaron esta decisión son: • La posibilidad de incorporar la avanzada tecnología del motor de búsqueda Google en el buscador del propio Departamento • La confianza en el proveedor del servicio (Google) • La facilidad y rapidez previstas tanto para el desarrollo como para el mantenimiento • La posibilidad de ofrecer búsquedas en distintos dominios: el Departamento, la Escuela Politécnica Superior, la Universidad de Alicante o la WWW. • La opinión colectiva del equipo técnico y grupo de redes, favorable al modelo de servicios de red y los sistemas emergentes Una vez tomada la decisión, tras realizar algunas pruebas sencillas con el API de Google, comenzó la fase de desarrollo del buscador, que se completó en apenas una semana de dedicación (no exclusiva) de una persona. El desarrollo consistió en integrar el API de Google en la aplicación Web corporativa, lo cuál se vio enormemente facilitado por la existencia de una biblioteca de acceso al API disponible para la plataforma tecnológica del servidor Web (basada en Java). Finalmente, tras otra semana de pruebas, una vez observada su estabilidad y corrección y dado que el buscador era la única pieza que faltaba, se trasladó a producción la nueva Web corporativa, en substitución de la original (1995-2005). 7 Infraestructura tecnológica Para implantar el servicio de búsquedas Google en nuestra aplicación Web, necesitamos de una serie de infraestructuras, que mencionamos a continuación junto a la opción elegida para su implantación en el sitio Web DTIC: • Servidor Web: Apache 2 • Servidor contenedor de servlets y JSPs: Tomcat • Conector entre servidor Web y servidor contenedor de servlets y JSPs: mod_jk2 • Máquina virtual + bibliotecas y compiladores Java: JDK 1.5 El código necesario para acceder al servicio Web de Google se encuentra en clases Java que son llamadas desde páginas JSPs, requiriendo para su ejecución del servidor contenedor. Este último recibe peticiones del servidor Web para invocar las páginas JSP, las ejecuta y devuelve el resultado (que ya es código HTML estático) al servidor Web para que este lo remita al cliente o navegador Web. El kit de desarrollo de Java (JDK) es la base sobre la que se sustenta toda la aplicación, y permite su migración a cualquier otro sistema operativo siempre y cuando exista una versión del JDK disponible para dicho sistema. 8 Conclusiones Debido a la inmensa cantidad de información presente en la Web, a su continuo crecimiento y actualización, y a la organización dispersa y no orientada a categorías de la misma, resulta imprescindible proporcionar a los usuarios herramientas de búsqueda que les permitan acceder de forma rápida y efectiva a los documentos con la información deseada, sin necesidad de que conozcan a priori su dirección electrónica. Esta necesidad impulsó la creación y evolución de los actuales motores de búsqueda en Internet (como Google), capaces de resolver las consultas del usuario proporcionando una lista de direcciones de documentos que se ajustan a los criterios de búsqueda (palabras clave, dominio, área temática…). Tales motores requieren grandes infraestructuras tecnológicas para analizar el gran volumen de información presente en Internet con el objetivo de crear índices, establecer categorías temáticas, etc. Junto a estos motores genéricos, diseñados para la WWW, surgen otros sistemas de búsqueda de ámbito reducido, restringidos a un solo sitio Web, pero más sencillos de desarrollar, implantar y mantener, y con un coste mucho menor en infraestructuras tecnológicas. Se trata de motores de búsqueda específicos para cada sitio Web, y que en ocasiones se elaboran a medida para aprovechar el conocimiento intrínseco sobre el sistema de información del sitio, aumentando así su calidad y rendimiento. Hasta ahora, las organizaciones que deseaban ofrecer un sistema de búsqueda en su sitio Web debían hacerlo a través de motores de búsqueda de ámbito reducido, o soportar la escalada de costes que supone emplear un buscador genérico. Además, debían proveer ellas mismas el servicio de búsqueda, mediante sistemas ligados directamente a su sistema de información (por ejemplo, módulos de servidor Web). En la actualidad, las organizaciones cuentan con más opciones gracias a las tecnologías de servicios de red. Así, una empresa que desea ofrecer un servicio de búsqueda en su Web puede integrar en ella un buscador basado en servicios Web, donde el motor de búsqueda es proporcionado por el proveedor del servicio de forma totalmente transparente para el usuario de dicha Web. Adicionalmente, esta posibilidad amplía las capacidades de búsqueda a otros ámbitos, otros sitios Web e incluso la WWW por completo. La única limitación derivada de este método es la incapacidad de realizar búsquedas en zonas privadas del sitio Web, pues los robots exploradores del motor de búsqueda externo no tendrán acceso a ellas. Por otra parte, para facilitar las búsquedas en zonas privadas y gestionar dichas búsquedas con los niveles adecuados de seguridad, es posible recurrir a los dispositivos de red de búsqueda (search appliance), los cuáles incorporan la avanzada tecnología de un buscador genérico encapsulada en un dispositivo de tipo “conectar y listo”. Finalmente, la experiencia obtenida en el desarrollo del nuevo buscador para el Departamento de Tecnología Informática y Computación nos ha permitido constatar sobre el terreno las ventajas de un buscador basado en servicios Web: potencia, amplio espectro de búsqueda, flexibilidad, facilidad de integración y mantenimiento mínimo; gran fiabilidad (gracias al proveedor) y ahorro sustancial en mantenimiento —ya no es preciso reescribir el antiguo motor de búsqueda ad hoc. 9 Referencias 1. Arasu A., Cho J., García-Molina, H., Paepcke, A., Raghavan, S. (Stanford University): Searching the Web. ACM Transactions on Internet Technology, (Vol. 1, No. 1, August 2001) 2–43. 2. Albert, R., Barabasi, A.-L., Jeong, H.: Diameter Of The World Wide Web. 3. Pitkow, J., Pirolli, P.: Life, death, and lawfulness on the electronic frontier. Nature (Sept. 1999) 401, 6749 Proceedings of the ACM Conference on Human Factors in Computing Systems (CHI ’97, Atlanta, GA, Mar. 22–27), S. Pemberton, Ed. ACM Press, New York, NY, (1997) 383–390. 4. Wills, C. E., Mikhailov, M.: Towards a better understanding of web resources and server responses for improved caching. Proceedings of the Eighth International Conference on The World-Wide Web (1999). 5. Douglis, F., Feldmann, A., Krishnamurthy, B.: Rate of change and other metrics: a live study of the world wide web. Proceedings of the USENIX Symposium on Internetworking Technologies and Systems. USENIX Assoc., Berkeley, CA (1999). 6. Scherpbier, A. et al: ht://Dig – Internet Search Engine Software. WWW. 7. Cutting, D. et al: Apache Lucene Open-Source Search Software. WWW 8. Mohr, G. et al: Heritrix open-source, extensible, web-scale, archival- 9. Chen, Peter P.: The Entity-Relationship Model: Toward a Unified View of http://www.htdig.org http://lucene.apache.org/ quality web crawler project. WWW http://crawler.archive.org/ Data. ACM Transactions on Database Systems (Vol.1, Nº.1, March 1976) 9-36. 10. Ken A. L. Coar: The WWW Common Gateway Interface Version 1.2 (unpublished Internet draft), (29 May, 1998). 11. Page, L., Brin S.: Google Web APIs. WWW http://www.google.com/apis/ 12. Monson-Haefel, R: J2EE Web Services. Addison-Wesley (2004). 13. Page, L., Brin S.: Google Search Appliance. WWW http://www.google.com/enterprise/