In this thesis we design and implement a distributed architecture to perform Information Retrieval. The developed architecture is a general purpose Information Retrieval System that can be used in colaborative distributed network in a central serverless fashion and can use central server to make load distribution in a high performance Information Retrieval network. The architecture was designed to operate in heterogeneus and faulty environment. In order to achieve our purposes, we create a framework and object request broker, called “Simple Python Remote Objects” (SPyRO). SPyRO allows the communication between remote process using objects. In addition, SPyRO allows the execution of remote methods hosted in remote objects. SPyRO creates minimum cost network connections, due to its algorithm to perform connections. Even more, SPyRO is tightly integrated in the Python language. Allowing fast prototyping and simple development of distributed computing applications. The architecture implementation was called “Simple Python Distributed Indexing” (SPyDI). SPyDI supports mobility code, and it has been proved its usefulness in two specializations. We call them “A Fully Federated Academic Information Retrieval System” (AFFAIRS) and “Universal Index” (U-Index), each of them are applications to perform Distributed Information Retrieval, and both have its own characteristics and properties.
En ésta tesis se diseña e implementa una arquitectura distribuida para realizar Recuperación de Información, funcionando en una amplia gama de Sistemas Operativos (FreeBSD, GNU/Linux, Mac OS X, entre otros). La arquitectura define un Sistema de Recuperación de Información de propósito general y soporta redes distribuidas colaborativas sin servidores centralizados y redes distribuidas con servidores centralizados para redes de alto rendimiento con distribución de carga como punto primordial. La arquitectura está diseñada para operar en ambientes heterogéneos con altas fallas en los nodos. Para alcanzar estos propósitos, se ha creado una infraestructura de manejo de objetos remotos, llamada “Simple Python Remote Objects” (SPyRO), la cual permite la comunicación entre procesos remotos utilizando objetos. A su vez, también permite la ejecución de métodos sobre objetos seleccionados. SPyRO crea redes de costo mínimo, gracias a su algoritmo de selección de conexiones. Adem´as, SPyRO está integrado dentro de Python, permitiendo el desarrollo rápido y sencillo de aplicaciones de cómputo distribuidas. La implementación de la arquitectura, llamada “Simple Python Distributed Indexing” (SPyDI), tiene soporte para código móvil y se ha probado su utilidad en dos especializaciones “A Fully Federated Academic Information Retrieval System” (AFFAIRS) y “Universal Index” (U-Index), aplicaciones para Recuperación de Información Distribuida, con sus propias características y propiedades.