Desarrollo de motores de búsqueda utilizando herramientas open source. Jose Manuel Ortega Candel
reúne información de su base de datos y la muestra al usuario según la relevancia que cada motor pueda definir. Como resultado final, devuelve al usuario los resultados en un listado de páginas que contienen las palabras de la consulta realizada.
1.2 ¿POR QUÉ NECESITO UN MOTOR DE BÚSQUEDA?
En primer lugar, sería interesante analizar las preguntas que deberíamos responder sobre sus datos y los casos de uso para decidir si un motor de búsqueda sería lo más adecuado para el problema que trata de resolver. Al final, se trata de entender los datos y los usuarios y elegir una tecnología que funcione para ambos.
Una característica distintiva de las arquitecturas de aplicaciones modernas es hacer coincidir el motor de almacenamiento y procesamiento con los datos. Si es un programador, debe seleccionar la mejor estructura de datos en función de cómo se utilizarán los datos en un algoritmo. El mismo principio se aplica con los motores de búsqueda.
Los motores de búsqueda están optimizados para manejar datos que tienen las siguientes características:
• Extracción de texto en documentos
• Operaciones de lectura
• Orientación a documentos
• Esquema de documentos flexible a los cambios
Una posible quinta característica es la de tener un gran volumen de datos para tratar, es decir, Big Data. Pero sería interesante estudiar lo que hace que un motor de búsqueda sea especial para manejar grandes volúmenes de datos. Por ahora, nos centraremos en los conceptos de alto nivel.
1.2.1 Extracción de texto en documentos
Esta característica hace referencia a que un motor de búsqueda está específicamente diseñado para extraer la estructura implícita del texto a partir de la información que almacena en los índices. Los datos centrados en el texto implican que el texto de un documento contiene información que los usuarios están interesados en encontrar. Por supuesto, un motor de búsqueda también admite datos sin texto, como fechas y números, pero su principal ventaja reside en su capacidad de manejar textos basados en lenguaje natural.
1.2.2 Operaciones de lectura
Otro aspecto clave es que los motores de búsqueda manejan de manera efectiva la información en modo lectura y, por lo tanto, están optimizados para acceder con eficiencia a la información de los índices. Esto significa que las operaciones de lectura son más óptimas si las comparamos con operaciones de creación o actualización. Esto no quiere decir que no se puedan escribir grandes cantidades de datos o que existan límites sobre la frecuencia con la que se pueden escribir otros nuevos. De hecho, una de las características clave de los motores de búsqueda es la capacidad que tienen, casi en tiempo real, de indexar miles de documentos por segundo y hacer que se puedan buscar casi de inmediato.
El punto más importante es que cuando escribe datos en los índices de un motor de búsqueda, estos datos están destinados a ser leídos en algún momento y releídos muchas veces a lo largo de su vida útil. Piense en un motor de búsqueda como en una herramienta optimizada para ejecutar consultas, en lugar de almacenar datos. Además, si las operaciones de actualización van a ser más frecuentes que las operaciones de lectura, esto podría ser un indicador de que un motor de búsqueda podría no ser la mejor solución para sus necesidades. Existen otras tecnologías NoSQL, como MongoDB o Cassandra, que podrían ser mejores opciones si necesitara escrituras aleatorias rápidas de los datos existentes.
1.2.3 Esquema flexible
La última característica destacada de los motores de búsqueda es que tienen un esquema flexible. Esto significa que los documentos, en un índice de búsqueda, no necesitan una estructura uniforme. En una base de datos relacional, cada fila de una tabla tiene la misma estructura.
La mayoría de los motores de búsqueda se basan en que los documentos pueden tener diferentes campos y no hay una estructura fija. Piense, por ejemplo, en bases de datos NoSQL orientadas a documentos como Mongo-DB o CouchDB.
El beneficio de disponer de una variedad de opciones para almacenar y procesar datos es que no tiene que encontrar una tecnología única para todos. En la mayoría de los casos, podrá complementar el uso de motores de búsqueda tanto con bases de datos relacionales como con bases de datos NoSQL.
1.3 FUNCIONAMIENTO DE UN MOTOR DE BÚSQUEDA
Un motor de búsqueda es un programa que permite localizar en un conjunto de documentos aquellos relacionados con una palabra o palabras clave seleccionadas. Para ofrecer esta funcionalidad, se exploran los ficheros existentes en el sistema de forma eficiente, registrando información relevante sobre ellos en una base de datos. Esta base de datos es empleada por el motor para permitir a los usuarios realizar consultas y localizar esos documentos de forma más sencilla.
Así pues, para conseguir esta funcionalidad, existen varios componentes principales que permiten al motor de búsqueda realizar estas operaciones:
• Crawler o Spider: así se denomina el proceso que recorre el conjunto de documentos almacenados, ya sea en una máquina o en una red, que recoge los metadatos y la ubicación de los mismos para, posteriormente, guardar un registro de todos ellos y permitir su rápida localización y presentación al usuario. En colecciones de documentos reducidas, esta operación no le supone una gran cargabilidad al proceso. Sin embargo, en entornos como Internet, se precisa de un proceso que esté de forma continuada verificando los enlaces que forman una web, dado que la situación de los elementos es más dinámica y varía con el tiempo.
• Índice: el índice se puede describir como el conjunto de información recopilada por el crawler y que se almacena en un registro; se denomina índice de búsqueda. Estos datos son los que emplea posteriormente el motor para escoger los elementos que cumplen con la petición del usuario a través de las palabras clave que conforman la consulta.
• Algoritmo de ordenación: si el índice es el corazón del motor de búsqueda, el algoritmo de ordenación es el cerebro, ya que es el responsable de recoger los datos del índice de la forma más adecuada posible, devolviendo al usuario los resultados por orden de relevancia. Es interesante que los datos más relevantes sean siempre los primeros en aparecer, según diferentes criterios de ordenación. Se permite que estos criterios, en ocasiones, sean personalizables bajo ciertos requisitos, lo cual dota al algoritmo de cierta flexibilidad y adaptación. Esto permite al motor adaptarse a las necesidades reales del entorno empresarial o del usuario.
De los elementos comentados, el índice se puede considerar como el corazón del motor de búsqueda. El índice y el algoritmo de ordenación empleado son los elementos diferenciadores que actualmente permiten la existencia de una gran diversidad de motores de búsqueda.
1.3.1 Buscadores de directorios
Los buscadores de directorio buscan información sobre contenidos de la página, y los resultados se presentan haciendo referencia a los contenidos y temática del sitio. Los algoritmos para este tipo de motor de búsqueda son más sencillos, y los sitios se presentan como enlaces, los cuales representan los sitios registrados. Estos tipos de buscadores no recorren los sitios web ni almacenan sus contenidos; lo que hacen es registrar algunos de los datos de la página web, como el título y la descripción (que normalmente se introducen en el momento de registrar el sitio en el directorio).
1.3.2 Buscadores jerárquicos
Este tipo de motor de búsqueda recorre las páginas coleccionando información sobre sus contenidos. Cuando se inicia una búsqueda de información concreta en los buscadores, ellos consultan su base de datos y presentan resultados clasificados por su distinción para esa búsqueda concreta. Los