Un motor de búsqueda o buscador es un sistema informático que busca archivos almacenados en servidores web gracias a su spider (también llamado araña web). Para encontrar tales archivos, los buscadores recurren a la identificación de la palabra clave empleada por la persona que realiza la búsqueda y, como resultado, el usuario obtiene una lista de enlaces que direccionan a sitios web en los que se mencionan los temas relacionados a la palabra clave, aunque no siempre se utilizan para obtener enlaces de sitios web, sino que utilizan los datos digitales almacenados, ya sean estructurados o no estructurados ejemplo: bases de datos, archivos en directorios, archivos en la nube, entre otros para recuperar y conformar índices a partir de su propio criterio de búsqueda.
Los motores de búsqueda se clasifican principalmente en 3 tipos:
• Buscadores jerárquicos: Este tipo de buscadores son interfaces de interrogación textual. Revisan las bases de datos de las páginas web a través de sus arañas y estas recopilan la información sobre los contenidos compatibles con la búsqueda del usuario. Una vez realizan la consulta, clasifican los resultados por la relevancia respecto a la búsqueda concreta y según el historial de navegación que tenga el usuario.
• Directorios: Los buscadores del tipo directorio son enlaces de páginas que se agrupan por categorías. Son muy sencillos, pero requieren de un soporte humano y de continuo mantenimiento para funcionar. Estos buscadores no recorren los sitios ni almacenan los contenidos, solo agrupan enlaces por categorías y se organizan por fecha de publicación y no por relevancia o concordancia con una búsqueda hecha por el usuario.
• Metabuscadores: Estas interfaces funcionan haciendo reenvíos de las búsquedas a varios motores al mismo tiempo. Es decir, remiten la consulta a otros sitios para analizar los resultados que estos presentan, para así, ampliar la margen de los mismos resultados, presentar sus propias conclusiones y ordenar los enlaces de acuerdo con el orden definido por el sistema estructural del metabuscador.
Cuando hablamos de motores de búsqueda lo primero que se nos ocurre es el poderoso Google aunque existen muchísimos más que a veces la mayoría de internautas no conocen como Yahoo!, Bing, Ask, MSN Search, Go, entre otros.
NoSQL la nueva tendencia de desarrollo
Con el crecimiento rápido de tecnologías como redes sociales, los foros, los sistemas de almacenamientos en la nube, aplicaciones de móviles, los famosos sistemas big data. Ha demandado un gran desafío para los ingenieros de software mantener una alta disponibilidad de los sistemas informáticos que manejan este volumen de información. De esta problemática se derivan las denominadas tecnologías NoSQL (Not only SQL). Estas tienen la capacidad de no solo establecer toda la información en un único modelo relacional para acabar ajustando la información a lo que es cada una de ellas: un tipo de dato; sino que están optimizadas para resolver un problema específico para tipos de datos específicos. La nueva tendencia es implementar arquitecturas hibridas compuestas de una variedad de bases de datos NoSQL y relacionales a la par, eliminando la antigua filosofía de un sistema único y grande que pueda con todo.
Entre de las tecnologías NoSQL están los motores de búsqueda y es que ya sea para poder hacer frente al famoso big data, construir servicios basados en la nube o desarrollar aplicaciones web con alto tráfico, es vital tener un buscador rápido, fiable y optimizado.
Elasticsearch vs Solr
Lucene (1999) se ha convertido en la base de dos de los mejores motores de búsqueda de código abierto en nuestros días: Solr (2004) y Elasticsearch (2010). Lucene es una librería de recuperación de información y se encarga de construir y gestionar lo que se denomina índice invertido, una estructura de datos especializada en emparejar documentos de texto con términos de consulta.
A continuación, se muestra una comparación entre dos grandes motores de búsquedas que vienen liderando el mercado desde hace ya un tiempo. Siendo muy utilizados y preferidos por grandes empresas y siguiendo la política de código abierto Apache Lucene, por lo que varias de sus funcionalidades son muy similares. Sin embargo, también existen grandes diferencias en términos de facilidad de implementación, escalabilidad y otras funcionalidades, estos son Elasticsearch y pache Solr como ya se mencionaba con anterioridad.
Apache Solr es una plataforma de búsqueda de código abierto construida en una biblioteca Java llamada Lucene. Ofrece las capacidades de búsqueda de Apache Lucene de una manera fácil de usar. Después de haber sido un jugador de la industria durante casi una década, es un producto maduro con una comunidad de usuarios sólida y amplia. Ofrece indexación distribuida, replicación, consulta balanceada de carga y failover y recuperación automatizados. Si se implementa correctamente y luego se gestiona bien, es capaz de convertirse en un motor de búsqueda altamente confiable, escalable y tolerante a fallas. Bastantes gigantes de Internet como Netflix, eBay, Instagram y Amazon usan Solr por su capacidad de indexar y buscar en varios sitios.
Entre las características principales incluye:
• Búsqueda de texto completo.
• Destaca los términos de búsqueda.
• Facetas de búsqueda que pueden incluir análisis, filtrado, tokenizado y otras opciones.
• Indexación en tiempo real.
• Agrupaciones y agreagaciones.
• Funciones NoSQL y manejo rico de documentos como archivos de Word, PDF, entre otros.
Elasticsearch es una plataforma de búsqueda de código abierto (licencia Apache 2), distribuida, un motor de búsqueda RESTful construido sobre la biblioteca Apache Lucene.
Elasticsearch se introdujo unos años después de Solr. Ofrece un motor de búsqueda de texto completo distribuido y con capacidad para múltiples nodos con una interfaz web HTTP (REST) y documentos JSON sin esquema. Las bibliotecas oficiales de Elasticsearch están disponibles en Java, Groovy, PHP, Ruby, Perl, Python, .NET y JavaScript.
El motor de búsqueda distribuido incluye índices que pueden dividirse en fragmentos, y cada fragmento puede tener múltiples réplicas. Cada nodo Elasticsearch puede tener uno o más fragmentos, y su motor también actúa como un coordinador para delegar operaciones a los fragmentos de forma correcta.
Elasticsearch es escalable con una búsqueda casi en tiempo real. Una de sus características clave es multi-tenancy.
Características principales:
• Búsqueda distribuida.
• Multi indexación.
• Una cadena de analizadores.
• Búsqueda analítica.
• Agrupación y agregación.
• Destaca los términos de búsqueda
Opinión
La verdad es que ambas son herramientas muy completas, con una comunidad muy dedicada y utilizan tecnologías muy importantes como se mencionaba en el post. Cualquiera de los dos motores de búsquedas son sin dudas una muy buena alternativa para sus proyectos y cumplirán con las espectativas.