viernes, 3 de febrero de 2006

Indexación y motores de búsqueda

Uno de los temas que últimamente más me interesan es el de la indexación y los algoritmos de búsqueda. El interés viene del éxito que está teniendo Google. Además es uno de los temas que estudio en la carrera.

Por una parte tenemos la distinción entre algoritmo de búsqueda e indexación. Un algoritmo de búsqueda lo que pretende es encontrar entre un conjunto más o menos ordenado de elementos (me refiero por ejemplo a la diferencia entre un árbol y un conjunto sin ningún orden específico) uno en particular. La indexación, por otra parte, lo que hace es ordenar previamente el conjunto de datos (en cierto sentido en los árboles también se hace) para crear un índice en donde se puedan consultar posteriormente las búsquedas. Digamos que en la indexación el trabajo se hace por anticipado por si te lo piden, mientras que en las búsquedas hay que hacerlo en el momento en que te lo piden.

Otro de los temas que tienen relación con los sistemas de búsquedas como Google es la computación distribuida, que consiste en repartir el trabajo (realmente se llaman procesos) entre muchas máquinas, de manera que el rendimiento global es similar a tener una sóla máquina pero mucho más potente.

Para implementar un sistema de búsqueda tipo-Google lo que hay que conseguir por tanto es dominar la indexación y la computación distribuida.

Actualización: He leído un artículo donde explican la arquitectura de Google (o su filosofía de vida). Usan PCs normales como base para las agrupaciones de ordenadores en donde alojan sus aplicaciones (en inglés se llaman clusters). La fiabilidad y escalabilidad (paralelización) la consiguen por software. Están monitorizando continuamente sus equipos por si alguno se cae. Cuando esto ocurre balancean la carga de trabajo entre los equipos restantes. De esta forma el rendimiento global no se ve afectado. En todo caso dicen que aunque el coste por búsqueda se minimiza, sufren problemas de calentamiento (tienen que enfriar todos esos PCs para que no se tuesten). Uno de los lenguajes de programación que más usan es Python. Sin embargo es curioso que la aplicación principal del buscador esté desarrollada en C/C++.

No hay comentarios:

Publicar un comentario