1.6.3 Apache Solr
Apache Solr es un motor de búsqueda de código abierto basado en la librería de búsqueda, escrita en Java, Lucene. Al haber sido desarrollado durante varios años y con las colaboraciones de la comunidad de desarrolladores, ha conseguido mejorar sus funcionalidades con el paso del tiempo. Apache Solr, además, provee diversas API para realizar desarrollos que precisen del uso del motor de búsqueda para recuperar información, y es muy sencillo trabajar con él gracias a su funcionalidad transparente al usuario. Para su ejecución, requiere de una máquina o servidor local y tener instalada la JVM (Java virtual machine) en el sistema.
1.6.4 ElasticSearch
ElasticSearch es un motor de búsqueda open source y, al igual que Apache Solr, está basado en la librería de búsqueda de Java Lucene. Sin embargo, ElasticSearch ha centrado su desarrollo en optimizar su funcionamiento y ha intentado ofrecer siempre funcionalidades que operan como motor de búsqueda de forma óptima. Esto quiere decir que, aunque provee numerosas API de desarrollo, intenta dejar la funcionalidad ajena al proceso de búsqueda a selección del desarrollador. Aun así, ElasticSearch es hoy en día uno de los mejores motores de búsqueda debido a lo bien construido que está y a una gran comunidad de usuarios que respalda el proyecto.
El hecho de que ElasticSearch utilice Lucene para resolver las búsquedas supone una ventaja en comparación con otros sistemas de consulta de bases de datos SQL. Una llamada a una API nos permite realizar búsquedas utilizando objetos JSON, lo cual resulta mucho más flexible y da a cada parámetro de búsqueda dentro del objeto un peso, importancia y/o prioridad diferentes.
Por ejemplo, insertar un documento en ElasticSearch es tan fácil como llamar al API REST que proporciona y enviar un objeto JSON mediante el método POST; si va a actualizar un documento, se utiliza el método PUT. Entre las ventajas que ofrece ElasticSearch destacamos:
• Podemos añadir un documento sin crear un índice.
• Si el índice no ha sido creado, ElasticSearch creará automáticamente el tipo de asignación y los campos al añadir un documento.
• ElasticSearch lo que hace internamente es deducir los tipos de datos basados en los del documento.
• En ElasticSearch, todas las conversiones de tipos se gestionan automáticamente. La búsqueda de un término es archivada por ElasticSearch utilizando el formato correcto para el campo.
1.6.5 Otros motores de búsqueda
Dentro del mercado IT podemos encontrar otros motores de búsqueda, entre los que podemos destacar:
• Splunk (https://www.splunk.com) es una plataforma y un motor de búsqueda orientado a las anaĺíticas para el Big Data.
• Algolia (https://www.algolia.com). Algolia’s Search es un producto que se ofrece como un SaaS (software as a service). Se trata de un servicio al que se accede a través de una plataforma web y que permite al usuario subir colecciones de documentos y realizar consultas sobre ellos. Para interactuar con la plataforma, aparte del propio servicio web, el servicio ofrece API (interfaz de programación de aplicaciones) de acceso para poder acceder desde otras aplicaciones a los recursos de Algolia.
• Amazon CloudSearch (http://aws.amazon.com) es un motor de búsqueda para soluciones software con servicio cloud que se oferta desde Amazon Web Services. Es el producto más conocido de computación de servicios en la nube de la compañía Amazon. Este motor de búsqueda permite, tras registrarse en la plataforma, subir documentos y realizar búsquedas en ellos. Para construir aplicaciones que empleen los recursos de Amazon CloudSearch, la plataforma provee una API que permite el desarrollo de aplicaciones diversas, aunque principalmente de tipo web.
• SearchBlox (https://www.searchblox.com) es un producto de pago, que sus distribuidores definen como el mejor sustituto para ElasticSearch o Google Search Appliance. El servicio se ofrece como búsqueda en la nube, al igual que entornos como Microsoft Azure Search o Algolia. Sin embargo, ofrecen también la instalación del servicio en local en cierto tipo de servidores. El servicio provee también un potente sistema de búsqueda accesible a través de una API para desarrolladores, que permite a los usuarios que lo deseen emplear este servicio en caso de necesitarlo.
• Sphinx Search Server (http://sphinxsearch.com) es otro motor de búsqueda de código abierto desarrollado en C++. A pesar de ser muy potente, es relativamente complejo de manejar, debido a que se ha diseñado para ser altamente configurable y porque la mayor parte de la documentación y recursos que aporta son muy escasos. Sin embargo, es un motor de búsqueda muy completo y versátil, que puede actuar en ocasiones de gestor de bases de datos, y con una fuerte comunidad detrás que lo mantiene actualizado. Sphinx es una de las alternativas recomendadas para aquellos que busquen personalizar su motor de búsqueda ya que, a través de diferentes opciones, ofrece la posibilidad de afinar el algoritmo de relevancia, así como de indicar índices o determinar parámetros que deberán ser tenidos en cuenta en cada búsqueda.
1.7 HERRAMIENTAS DE PROCESAMIENTO DE LENGUAJE NATURAL (PLN)
Las tecnologías de procesamiento de lenguaje natural son un conjunto de herramientas lingüísticas que permiten extraer información relativa a características léxicas, morfosintácticas y semánticas de un determinado texto.
Existen muchas propuestas en este ámbito, y entre ellas destacan las siguientes:
• OpenNLP (https://opennlp.apache.org) es un proyecto de la fundación Apache que consiste en una librería de aprendizaje automático cuyo objetivo es el procesamiento del lenguaje humano en texto. Posee soporte para las tareas de procesamiento de lenguaje natural (PLN) más comunes. No tiene soporte para el uso de distintos idiomas, pero posee una serie de modelos entrenados en diferentes idiomas para propósitos específicos. En el caso del español, encontramos cuatro modelos entrenados en reconocimiento de entidades: personas, organizaciones, localizaciones y misceláneo. Cualquier extractor de interés que no esté en los modelos tendría que ser entrenado para su objetivo específico.
• CoreNLP (https://stanfordnlp.github.io/CoreNLP) es un proyecto de la Universidad de Stanford que provee una serie de herramientas de análisis de lenguaje humano (figura 1.5). Proporciona instrumentos para un amplio análisis gramático, además de diferentes elementos de extracción de la información. Posee soporte oficial para seis idiomas, aunque no todos tienen disponibles todas las funciones. La integración con otros proyectos se realiza a través de una serie de API en distintos lenguajes. A nivel práctico, esta herramienta es utilizada por la Biblioteca Virtual Miguel de Cervantes, concretamente en el componente correspondiente al analizador sintáctico: http://data.cervantesvirtual.com/analizador-sintactico-automatico.
• FreeLing (http://nlp.lsi.upc.edu/freeling/node/1) es un proyecto de la Universitat Politècnica de Catalunya (figura 1.6). Se trata de una librería con una serie de herramientas open source para el análisis de lenguaje humano. Está escrita en C++ y tiene soporte para